RevAssist
An AI deal-desk built around a simple position: structured output is the product. The prompt is plumbing.
Most AI products treat the prompt as the surface. RevAssist treats the prompt as plumbing and the schema as the surface.
A dealership runs on messy notes. A salesperson types a few lines about a deal — make, model, trim, trade-in, financing — and somewhere in those lines are the things the desk needs to act on: a deal summary worth reviewing, a set of add-ons worth recommending, a compliance flag worth raising, a follow-up message worth sending. RevAssist is the layer that turns those lines into a typed object that the rest of the system can read.
The schema is the product. It's defined in Zod, validated on the server, persisted to Postgres, and rendered as four discrete surfaces on the page — summary, recommendations, flags, message — each of which the user can edit, regenerate, or accept independently. The model is asked, structurally, to fill out the shape. When it fails the schema, the failure is the bug, not the user's problem. When it succeeds, the rest of the application doesn't have to know there was a model involved.
Everything risky lives on the server. Rate limits, identity, persistence, eval runs, and the model key all sit behind route handlers. The client renders a form. The work of trusting the model — and the work of recovering when it disappoints — is hidden from the surface on purpose.
“When the schema fails, the failure is the bug. When it succeeds, the rest of the application doesn't have to know there was a model involved.”
The schema is the contract
Zod definitions live next to the route handler. The model is asked to fill a shape. If it can't, the surface treats it as a system fault, not a user problem.
Risky things live on the server
Identity, rate limits, persistence, the model key, and the eval pipeline are all behind a route handler. The client renders a form and trusts what comes back.
Outputs are independently editable
Summary, add-ons, flags, and message are four discrete surfaces. The user can accept one, regenerate another, edit a third, and ignore the fourth. The AI's job is to make a first draft, not a final answer.