Replacing a spreadsheet that had become the business
Quoting a holiday by hand takes an agent twenty minutes and produces a document that looks different every time. Multiply that by a team and it is both a cost and a brand problem.
Who this is for: Our own product, used daily inside our travel group.
Web appSupabaseRow-level securityMulti-tenant
See it live, quotegen.ioThe problem
Every travel agent had their own spreadsheet and their own way of formatting a quote. Prices were re-typed, which meant occasional errors reaching customers. The document a client received looked different depending on who sent it. Nobody could answer simple questions like how many quotes went out last week, or which ones converted.
This is the most common shape of custom-software project we see, and it rarely announces itself as a software problem. It announces itself as "everyone is really busy".
What we built
A web application the team logs into, which turns a set of inputs into a branded quote document and a shareable client link.
- Multi-tenant from the start, several brands run on one system, each seeing only its own data
- Row-level security in the database, so separation is enforced where the data lives rather than by remembering to filter in the application
- Brand-aware output: the same quote renders in the right brand's identity automatically
- A client-facing link, so the customer sees a live page rather than a PDF attachment that ages badly
- Agent accounts with their own scope, including a role for an automated assistant that can only see what it should
The part that mattered most
Enforcing access in the database rather than the interface. It is tempting to control what a user sees by filtering in the application, and it works right up until one query somewhere forgets to. With row-level security the rule lives with the data, so a mistake in the application cannot leak another brand's customers.
We verify this by trying to break it: logging in as a restricted account and attempting to read data that belongs to a different brand. A separation nobody has attacked is a separation nobody has tested.
What it replaced, concretely
It is worth being specific, because "we built a platform" tells you nothing about whether it was worth doing.
Before: an agent opened a spreadsheet template, re-typed the prices from supplier emails, formatted a document by hand, exported it, and attached it to an email. Roughly twenty minutes, and the output varied by person. Nobody could say how many quotes had gone out.
After: the agent fills in the parts that are genuinely specific to the trip, and the document, the branding and the client link are produced for them. The prices come from one place, so a correction happens once rather than in every future quote.
The gain is not only the minutes. It is that the customer receives something consistent, and that the business can finally see its own quoting activity, which is the thing a spreadsheet can never give you.
Honest limits
This is our own product, so we are not going to pretend it is a neutral case study. What it does demonstrate is the category, logins, roles, tenant separation, generated documents and a client-facing surface, and that we run the thing we built, daily, with real money attached to it being right.
Related case studies
Tell us what you need
Describe the project in a couple of sentences and we will come back with a fixed price and a realistic timescale. No obligation, and no sales sequence.
Start a build