
PROTOTYPE·1 WEEK BUILD·2026
Joist Trust Sandbox
Voice-to-invoice for contractors — verified when matching is solid, amber review when it isn’t.
Overview
For a Joist interview, I built a sandbox that turns spoken or typed field notes into a draft invoice. Speech-to-text was the easy part; the harder problem was what happens when catalog matching is incomplete. Contractors talk fast, catalogs are messy, and a wrong SKU on an invoice is worse than a blank line, so the prototype centers a trust pipeline — intake, normalize, catalog, pricing, then a trust score — with a clear verified path versus an amber path that surfaces gaps before anything is sent.
The problem
Automating invoicing sounds clean until you’re on a job site, where accents, noise, slang, and partial phrases break naive NLP. If the product auto-fills with low confidence, people learn not to trust it; if it blocks on every ambiguity, it’s slower than typing. The product question was how to make automation useful when matching is strong, and explicit about needing a human when it isn’t, without turning every draft into a review chore.
Approach
I put trust in the UI rather than burying it as a backend score. The handshake engine streams phase logs so you can watch matching happen; high-confidence paths go straight to a clean phone invoice; and gaps — quantity weirdness, missing price, fuzzy catalog hits — surface as amber review, where a mediation UI lets someone fix line items before send. Demo shortcuts inject verified and amber scenarios so the story still works without a perfect mic, which mattered for interview delivery.
What I built
A three-column sandbox with voice/text intake and a parts playground of about 69 contractor SKUs across trades, live handshake trust logs, and a smartphone invoice preview. It includes catalog browse, mediation cards for physical and labor lines, and a success state when the draft clears. Presenter scripts cover interview delivery for the happy path, crew slang, and noisy speech-to-text, so the trust story is demoable under pressure.



1
Speak or type a field note
Capture template
2
Watch handshake match SKUs
Decision log
3
Verified draft or amber review
Layout module
4
Confirm on the phone preview
Capture template
Step 1 of 4: Speak or type a field note
Key takeaway
Key takeaway
In field software, autonomy only helps when the product is honest about uncertainty. The trust score matters less than whether the UI makes the handoff obvious — when matching is solid, stay out of the way; when it isn’t, ask before a bad line item ships.
What's next
A real STT model beyond browser Web Speech, richer gap types, multi-invoice sessions, and tighter coupling to actual Joist catalog and pricing rules if this ever left sandbox land.
Tech stack
- RReact
- VVite
- TTypeScript
- TTailwind
- FFramer Motion
- WWeb Speech API
- VVitest
More from the Playground
Experiment
SOXL market-monitoring agent
A scheduled AI agent that monitors a leveraged semiconductor ETF and delivers structured market updates through Telegram and WhatsApp.
Experiment
Building my portfolio like a product
Designed, built, and shipped a personal portfolio using AI-assisted development—not as a static collection of work, but as a living product system.
Prototype
Calmo Cafe — a reservation flow that skips the early SaaS bill
I built a branded site and request-to-confirm booking flow for a friend opening a café in Toronto, both to keep him off OpenTable fees before the room was proven and to learn a real stack end to end.