Case Study
Sales Co-pilot & Client Portal
3 Systems In Production
Overview
Residential Construction & Remodelling
A remodelling firm was losing the detail between the sales call and the job site. Every scope of work was written by hand from memory, and nothing tracked whether what was promised on the call matched what got built. Three systems now run that loop in production.
The Problem
Sales conversations were recorded but never processed. Writing a scope of work meant a rep listening back through an hour of audio, and estimates drifted between reps because nothing enforced a shared pricing structure. Operations ran on a group chat with no memory, so an open item could be raised on Monday and re-raised, unresolved, six days later — no one could tell the difference between a thing being handled and a thing being forgotten.
The Co-pilot
A recorded sales call goes in; a scope of work, an estimate, a follow-up email, and a per-rep call score come out. The pricing bands, contract clauses and rep checklists live in a per-customer configuration rather than in the prompt, so the same engine serves a different company by swapping a config file. A deterministic scope checker and a permit-compliance guard run over every generated document, so nothing goes to a client claiming work that would need a permit it does not name.
The Portal
A Next.js and Supabase application, live on its own domain, giving the owner a single control surface over the generated documents and the underlying records. Deployment and rollback are both documented procedures — rollback is an alias move onto a build that already exists, so recovery takes seconds rather than a rebuild.
The Operations Monitor
An event-driven service that turns an unstructured team chat into scheduled briefs. It verifies each brief actually arrived rather than assuming a send succeeded, resends once when delivery fails, and runs a preflight check ten minutes before each scheduled send so a failure surfaces before the brief is due rather than after it is missed.
The Architecture
Built engine-versus-config from the first commit: the engine is identical for every customer, and brand, pricing, clauses and checklists are per-customer configuration. Nothing hardcodes the client. That decision is what makes the system an asset the owner can resell to other firms rather than a one-off build, and it was made before a single line of customer-specific logic existed.