A two-week compliance process, automated to hours
Three people spent a fortnight every cycle assembling regulatory paperwork by hand. The same job now runs on a schedule.
- Client
- A drinks manufacturer
- Sector
- Manufacturing
- Duration
- 9 weeks
- Year
- 2025

Staff per cycle
- Before
- 2 to 3
- Now
- Under 1
Time per cycle
- Before
- 2 to 3 weeks
- Now
- Hours
Records handled by hand
- Before
- All
- Now
- ~5%
Audit trail
- Before
- Assembled on request
- Now
- Automatic
The problem
Every production cycle generated a regulatory reporting obligation. Meeting it took two to three staff between two and three weeks, working from production records, batch data and delivery notes held in three different places.
The work was mechanical, it was deadline-driven, and it always landed at the same time as everything else. Errors were caught by checking, and checking was most of the two weeks.

What we found
The reporting was slow because the underlying records were inconsistent rather than because the reports were complicated.
Roughly one record in twenty needed a judgement call. The other nineteen were mechanical, and the team was treating all twenty the same way because there was no way to separate them.



How we got there
Nine weeks. Nobody signs a return they did not assemble themselves until they have watched it come out right, so most of the effort went into earning that.
Two packs for the same cycle
For the first two cycles the system built its pack while the team built theirs the old way, and we checked one against the other figure by figure. Every difference was traced back to the record it came from. Sometimes ours was wrong because a rule was missing, and sometimes theirs was because a delivery note had been counted twice. Either way the reason was written down.
The team wrote the rules for what gets held
Which records need a person was decided by the people who used to check them all. They began cautiously, holding back far more than they needed to, and relaxed the rules one at a time once they had seen what each rule was catching. It settled at about one record in twenty.

The pack had to read like the old one
Our first pack was tidier than theirs and nobody could find anything in it. We taped every page of both to the office wall and rearranged ours until each figure sat where the person signing it, and an inspector, expects to find it.
A person still signs it
The system assembles the return and shows where every figure came from. A person reads it and puts their name to it, as before. Nobody wanted that step automated, and neither did we.

What we built

Records pulled, not re-typed
Production, batch and delivery data collected automatically from the systems already holding it.

Documents generated on a schedule
The reporting pack assembles itself each cycle, with every figure traceable back to the record it came from.
Exceptions separated from the routine
Records needing a decision go to a queue for a person. Everything else completes without one, which is where the fortnight went.
An audit trail as a by-product
Every generated document carries its sources, so questions from an inspector are answered by opening the record.

Afterwards
The team did not shrink. The two people who had been doing this moved onto production planning, which had been neglected for two years because compliance always came first.

Built with
- TypeScript
- Node
- PostgreSQL
- Prisma
- BullMQ job queue
- React
- Puppeteer PDF generation
- S3 object storage
- Sage 200 integration
- Docker
Services used
More case studies
Is this your problem too?
If any of the above sounded familiar, describe your version of it. The first conversation is about whether software is the right answer at all.
From £10,000Most projects land between £15,000 and £55,000.