Skip to content
Brainwave Technologies logo

Subscription dairy delivery business

Subscription deliveries that schedule, route and bill themselves

A recurring-delivery business where the operational load is not the deliveries themselves but the arithmetic around them: who gets what today, who paused, who owes, and what changes when one customer skips a week.

Client
Subscription dairy delivery business
Industry
Logistics
Services
Custom Software Development, Web Application Development, SaaS Development
Stack
Next.js, React, Express, MySQL, JWT authentication, Scheduled jobs
Screen from the case study: Subscription deliveries that schedule, route and bill themselves
  1. The day's deliveries are built overnight from every active plan, so nobody types the list in the morning.
  2. Each drop is marked delivered or missed, and that record is the bill. A missed drop is not charged.
  3. The operations portal on a phone. Customers use a second portal built from the same code and rules.

2

Portals (customer and operations) from one codebase

One codebase serves the customer and operations portals

0

Manual list-building each morning

A scheduled job builds each day's deliveries before the day starts

The challenge

Recurring delivery looks simple until you write down the rules. A customer takes two litres daily, another takes three on alternate days, a third pauses for a fortnight and expects the bill to reflect it.

Someone has to decide, every morning, exactly what leaves the building and on which route, and then reconcile what actually got delivered against what gets charged. Done by hand, that job scales badly and gets more expensive precisely when the business is growing.

What we did

  • Modelled the subscription itself as the source of truth (quantity, frequency, and the specific weekdays it runs), so the daily delivery list is derived, never typed.
  • Generated each day's deliveries with a scheduled job that runs before the day starts, so the operations team opens the morning with the run already built.
  • Made the delivery record the billing record, so a missed drop reduces the bill without anyone remembering to adjust it.
  • Built the customer portal and the operations portal from one codebase, so a change to how a plan works cannot mean two different answers in two different places.
  • Kept every balance derived from movements rather than stored as a number, so a disputed bill can be walked back through the exact deliveries behind it.

Outcome. Daily delivery runs are generated automatically from active plans, with no manual list-building. Missed and completed deliveries feed billing directly, so what is charged matches what was delivered. Customer and operations experiences ship from a single codebase and a single set of rules.

Screens are shown with demonstration data.

Let’s talk

Tell us about a similar problem in your business. A senior specialist replies within one business day.

We set analytics and live chat cookies only if you accept. Essential cookies keep the site working. Privacy Policy