The tradesperson walks off the job site, describes what they saw out
loud, and thirty seconds later receives a PDF quote on their own
letterhead, ready to send to the customer. The app then takes care of the
invoice, payment tracking and reminders.
Tradespeople write their quotes in the evening, tired, or three days after
the visit. By then the job has often been signed with somebody else.
A plumber or a tiler spends the day standing up, hands busy, at a
customer's place. The quote waits until they get home, after a full day of
work. So it goes out late, sometimes not at all, while the competitor who
answered the next morning wins the job.
The software on the market asks you to sit down at a screen and fill in
the line items one by one. That assumes a quiet moment during the day,
which does not exist on a job site.
02
What I built
The application asks the tradesperson for one thing: to talk, while they
are still on site.
Guided recording
A plain record button produces a monologue that is hard to work with. So
the app splits the dictation into three steps: the customer, the job, the
line items. The tradesperson knows what to say at each step, and the model
receives material that is already segmented.
That split is an interface decision rather than a model setting. Input
that arrives already structured reduces the amount of correction needed on
the finished quote.
The processing chain
The audio goes to storage, a server function transcribes it, then a second
pass turns the transcript into structured data: line items,
quantities, units, unit prices, customer details. Processing is
asynchronous and the interface shows progress. The tradesperson can close
the app and find the finished quote waiting when they come back.
The PDF, built in the browser
The final document is produced in the browser rather than on a server.
Logo, legal notices, taxes, payment terms: everything is composed on the
client side. There is no rendering infrastructure to maintain, no per-unit
cost, and the PDF still generates when the connection is poor.
What comes after the quote
A quote counts mainly once it becomes a paid invoice. So the product
covers what follows: converting the quote into an invoice, a customer
list, detection of late payments, a revenue dashboard. The subscription
and the free trial are handled end to end inside the application.
03
What was hard
The way people talk on a job site
Nobody on a job site dictates "line one, supply and install, quantity
twelve". The real sentence sounds more like "right, so there's the
bathroom, the tiling needs redoing, that's about twelve metres, and then
swap out the mixer tap", with background noise, hesitations and trade
vocabulary.
Getting priced quote lines out of that takes a strict output schema and an
accepted margin of correction. The model proposes, the tradesperson fixes
it in two clicks, and writing a quote goes from forty minutes to two.
Numbers, units and taxes
"Twelve metres": is that square metres or linear metres? "Two hundred and
fifty": is that the total or the unit price? No instruction given to the
model resolves those ambiguities reliably. So the proposed quote stays
fully editable, with default values pulled from the tradesperson's
profile.
A user who does not like software
The main constraint was the interface. Passwordless sign-in, a single
visible action on the home screen, no accountant vocabulary. A good part
of the work went into removing screens rather than adding features.
What I take from it
In Vocadevis, the model works as a data-entry shortcut. What brings the
tradesperson back is that the quote looks presentable, that the invoice
follows, and that the app tells them which customer has not paid. The
model portion is a small fraction of the code, the rest is ordinary
product work.
04
The stack
Front endReact 19, Vite, Tailwind CSS, accessible component library, light and dark themes
Back endSupabase: PostgreSQL with row-level security, storage, server functions in Deno
AuthenticationMagic link by email, no password
VoiceAutomatic transcription, then extraction into structured data by language model
DocumentsPDF generated in the browser, custom letterhead and legal notices
SEOLanding pages per trade, sitemap, indexable content
Is your business out in the field?
If your teams or your customers fill in forms in the evening because there
is no time during the day, the same approach applies. Write to me and
we'll look at what could be dictated instead of typed.