Skip to content

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
The quality manager in a white lab coat pointing at a held record on a tablet at a steel bench beside the filling line, while the project manager in a hi-vis vest listens.

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.

Two members of staff at an office desk stacked with printed batch sheets, lever arch files and a printing calculator, with the project manager standing behind them taking notes.

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.

The project manager at the packing line in a hi-vis vest, listening to a production manager who points at a batch sheet on a clipboard.
The project manager and a colleague at an office desk, reading a month's production records on a monitor beside a pile of printed batch sheets.
Bondkeeper
Laptop screen of the Bondkeeper web app showing the alcohol duty return for August 2025: £94,951.11 duty payable by 15 September, a table of duty declared for five spirits with strength, bottle size, bottles, litres of alcohol, rate and duty, the adjustments and totals, and a side panel working out the botanical gin's 1,228.9 litres of alcohol from still house runs, movements, lab samples and losses, with the records behind the figure.
The return the system put together, and the working behind one figure in it. Every figure opens this way, so a question from an inspector is answered by opening the record.

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 engineer at a desk seen through a glass office partition, explaining a printed pack to the project manager, who leans over the desk with his back to the camera.

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.

The project manager pointing at a page covered in sticky notes on a wall of taped-up draft pages, with colleagues round the meeting table looking on.

What we built

iPhone screen of the overnight run on Monday 1 September: finished at 04:02, 1,184 records read, 1,125 went into the return, 59 held for a decision and none typed in by hand, with the counts read from production records, batch records and delivery notes from Sage 200.

Records pulled, not re-typed

Production, batch and delivery data collected automatically from the systems already holding it.

iPhone screen for signing off the August 2025 alcohol duty return: £94,951.11 payable by 15 September, what the return contains (duty declared, adjustments, 59 of 59 decisions, 1,184 source records and an 11 page PDF pack), a handwritten signature and the sign-off button.

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.

iPad screen in split view: on the left, August's records held for a decision, 17 still to decide and 42 of 59 decided, each with the reason it was held; on the right, one botanical gin batch open with its label strength, two lab readings, the effect on duty if the higher reading stands, the records behind it, a note for the file and buttons to keep the label strength, accept the reading or send it back to the lab.

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.

A finance manager signing off the month's duty return on his phone in an office that overlooks the production hall, with two colleagues at a planning board behind him.

Built with

  • TypeScript
  • Node
  • PostgreSQL
  • Prisma
  • BullMQ job queue
  • React
  • Puppeteer PDF generation
  • S3 object storage
  • Sage 200 integration
  • Docker

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.