The short version
The challenge
Campaigns were booked across several channels and dozens of placements using shared spreadsheets, email and phone. Availability was out of date the moment it was checked, double bookings slipped through, and confirming a simple quote could take days.
What we built
A booking platform for the sales team and a self-service portal for advertisers: a live inventory calendar across channels and placements, rule-based pricing with instant quotes, approval flows, and an integration that sends confirmed bookings straight to invoicing.
The result
Bookings are confirmed in minutes instead of days, double bookings are blocked by the system, and the sales team spends its time selling instead of reconciling spreadsheets.

What we built
We started with the sales team’s busiest week of the year and designed the platform to make that week calm.
- Live availability across channels, placements and dates
- Holds and options that expire automatically
- Rule-based pricing, discounts and instant PDF quotes
- Approval flow for large or discounted bookings
- Self-service portal where advertisers book and follow their campaigns
- Integration with invoicing and reporting
Built with
- Next.js
- TypeScript
- Node.js
- PostgreSQL
- AWS
How we worked
- Weeks 1–2 — Discovery with sales, finance and two advertisers
- Weeks 3–4 — Clickable prototype, tested with the sales team
- Weeks 5–12 — Weekly releases and migration from the old spreadsheets
- After launch — Advertiser portal and invoicing integration
By the numbers
Minutes
To confirm a booking — down from days
0
Double bookings since launch
12 weeks
From kick-off to the first release
Confidential client
Client names are kept confidential at our clients’ request. We are happy to tell you more about this project on a call.
