Contracts for people who aren't lawyers
DealDesk, Tambo's UI Strikes Back ยท Solo builder
DealDesk is a contract workspace for people who aren't lawyers. You drop in a contract and ask what you need in plain language. The interface then changes to fit the job: a risk chart, a clause you can tune, a checklist of what you owe and when.
I built it alone in six days for "UI Strikes Back", the Tambo x WeMakeDevs global generative UI hackathon. It won Grand Champion and $3,000, against 7,000+ participants from 20+ countries.
-
The landing page.
-
The desk: the contract on the left and Maven on the right, with four starters.
-
The same desk on a phone.
Chat is the wrong shape for a contract
The obvious build is a chat window next to the document. Ask about liability and you get paragraphs back, which means more reading about the thing you couldn't read in the first place.
DealDesk answers with a tool instead. The assistant, Maven, has a strict rule: when it shows a component, it writes zero words. Text replies are capped at 30 words, and most replies have none.
One chat box, five agents
Behind the single chat box, a coordinator reads each request, gives its guess a confidence score, and routes it to one of five agents. Each agent returns typed data that has to pass a Zod schema, and each schema belongs to one component.
Tap an agent.
A model can write anything. A component only renders if the data fits its schema, so a malformed answer gets caught before it reaches the screen.
Five tools
The risk radar scores a contract on five dimensions, each from 0 to 1.
An illustration of the idea with made-up scoring: tune the clause and the risk redraws. In DealDesk the model does the scoring and the tuner comes with the clause.
The clause tuner turns a clause into one to three sliders and up to two toggles, for things like a cap, a number of days or whether liability runs both ways. The checklist pulls out duties and deadlines with their priority and the section they came from, like "Section 4.1". The glossary gathers the defined terms into one place you can search.
Ask when it's unclear
The fifth agent doesn't answer anything. When a request is ambiguous, the scoping specialist puts up a card that asks, in one of three forms.
Tap a card.
This is the part I'd defend hardest. On a contract, a confident guess is worse than a question. It's also the idea I spent the next summer on at IBY: agents that stop and ask before they act.
A desk, not a dashboard
The workspace is meant to feel physical and calm, with layered paper textures, soft gradients and controls that have some weight. Components land on a canvas where you can drag them around and keep them while you work through the contract.
The editor knows what you've selected. Highlight a clause and ask about it, and the answer is about that clause. Editor, chat and canvas resize freely, and the whole thing still works on a phone.
What I'd build next
The coordinator routes on keywords with a confidence score. That was the right call for six days, and it's the first thing I'd replace, with a model doing the routing and a threshold below which it asks instead of guessing.
After that, I'd let the model see and move the controls already on screen instead of only adding new ones, and plug in clause libraries and approval rules over MCP.
Requests that reach the right tool first time
- Misroutesrequests sent to the wrong agent
- Schema failuresanswers that didn't fit their component
- Questions askedand how many of them were needed
- Words per replykept close to zero