
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
What I learned
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
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.
Experiment
AI-assisted decision log
A lightweight framework for turning rough product thinking into reusable decision records.
Prototype
Portfolio experimentation system
Testing modular layouts, storytelling, and signal design for a product portfolio.