
PROTOTYPE·1 WEEK BUILD·JUL 2026
Joist Trust Sandbox
Voice-to-invoice for contractors: verified when matching is solid, amber review when it isn’t.
Overview
Contractors dictate invoices in parking lots. For a Joist interview, I built a sandbox that turns spoken or typed field notes into a draft invoice, with a clear split between a verified path when catalog matching is solid and an amber path when a human needs to step in before anything sends. Speech-to-text was the easy part. The harder problem was what happens when the catalog does not line up perfectly: accents, noise, slang, and partial phrases break naive matching, and a wrong SKU on an invoice is worse than a blank line.
The problem
Automating invoicing sounds clean until you are on a job site. If the product auto-fills with low confidence, people learn not to trust it. If it blocks on every ambiguity, it is slower than typing. The product question was how to stay out of the way when matching is strong, and be explicit about needing a human when it is not, without turning every draft into a review chore.
Approach
I put trust in the UI instead of 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. 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: stay out of the way when matching is solid, ask before a bad line item ships when it is not.
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
BENCH | from rep counter to verified local leaderboard
A phone-camera rep counter that turned into a verified local bench leaderboard, with computer vision assisting the evidence instead of pretending to be the judge.
Experiment
SOXL market-monitoring agent
A scheduled agent that sends a morning SOXL brief to Telegram and WhatsApp, so I stop opening the same charts every day.
Experiment
Building my portfolio like a product
Designed, built, and shipped a personal portfolio with AI-assisted development, as a living product system rather than a static résumé archive.
Prototype
Calmo Cafe | reservations, ordering, and café operations
A branded site and operator tooling for a Toronto café: table requests, whole-pie advance ordering, wholesale and event inquiries, pickup scheduling, and Square-friendly payment tradeoffs without enterprise reservation SaaS.