For every legal problem, Genie builds a new plan, a team of specialists, the tools they may use and the checks their work must pass. This is how it works, and why we built it that way.
Legal problems do not arrive as task types
A general counsel forwards three things on a Friday afternoon: a supplier's contract, a long email chain about late deliveries, and the company playbook. The ask is one line. Tell me where we stand, and send them a letter.
That one line is three jobs. Find the facts in the emails. Review the contract against the playbook. Draft a letter that relies on both. Most legal AI is built as a menu of fixed workflows, one for review, one for drafting, one for questions. A request like this does not fit any single item on the menu, so the parts that fall outside it are dropped or handed back to the lawyer.
Genie takes a different approach. For every request it builds a new harness: the plan, the team of specialists, the expertise each one loads, the tools each one may use and the checks the result must pass. We call it a self-building harness. This post explains what that means, how it works in the code, and why we think it is the right way to build legal AI.
What a harness is
In an AI agent, the model is the part that reasons. The harness is everything around it: the instructions it is given, the tools it may call, the documents it can read, the loop that runs it and the checks that decide when it is finished. Two products built on the same model can behave very differently because their harnesses differ.
Most AI products hard-code one harness per feature. That works when every task has the same shape. Legal work does not. A contract review, a playbook built from thirty past agreements and a letter of claim need different reading, different writing and different checks. So Genie generates the harness from the request, at run time, out of parts we have built and tested: ten specialists running in five seats, 27 expertise modules and 20 tool servers holding 88 tools.
The model never improvises the parts themselves. It chooses and arranges them, and the code around it enforces the rules: which specialist may take which kind of work, which tools each one can reach, and what has to be true before work moves on.
Six things Genie builds for every problem
Take one request and follow what the harness assembles for it before a single clause is read.
The requestReview this SaaS supplier agreement against our playbook and give me an issues table in Excel.
Two operations: a review against your playbook, then an export of the issues to Excel. Genie asks only what it cannot find in your documents.
The operations in order, each with its own definition of done, saved before any work starts. The server refuses a plan that gives an operation to the wrong specialist.
Playbook review, with its order for conflicts: policy, then playbook, then clause library. Excel formatting. The rules for reporting figures and quotes.
Document reading, review findings, Excel operations and the delivery record. Everything else stays out of reach.
Every playbook position assessed as satisfied, violated, partial, risky, missing or not assessable, with a severity and a link to its clause.
None of this comes from a fixed recipe. Ask for the same review followed by a redline, and an edit operation joins the plan, the Editor joins the team with the Word editing guide, and QA adds a check on the edited document. Ask a question across fifty contracts instead, and the plan shrinks to a single search with a different definition of done.
How a specialist is briefed matters as much as who is chosen. The Project Lead passes known facts as structured lines, each marked verified, unverified or open, with its source. It describes the objective and the data available, never which tools to call. Anything longer than about 2,000 characters is passed by reference, so a brief never becomes a second copy of the documents.
Above all, the Project Lead never tells a specialist what to conclude. A check runs on every brief, looking for phrases such as "conclude that" or "present this as", and sends a correction back when it finds one. The specialists are told to set any conclusion in a brief aside and reach their own from the evidence.
Name what was found and where it is saved; what it means is the specialist's output, not your input.
How a task runs
Four phases, with QA, a specialist that did not do the work, checking between them.
Every full task moves through requirements, plan, execution and delivery. Each phase has its own instructions, and loading them is what moves the Project Lead into that phase, so the order is part of the system rather than a suggestion. The instructions are blunt about it: there is no path that skips planning because a request looks simple.
- Requirements. The Project Lead works out what you want and asks only what it must, with proper forms: choices, dates, file uploads and a jurisdiction picker covering more than 150 jurisdictions.
- Plan. One plan can hold several operations, such as drafting an NDA and then reviewing it against your playbook. There are six kinds: search, review, create, edit, create a playbook, and create a playbook with your own columns.
- Execution. The specialists work inside the real Word and Excel files. You see live steps naming who is doing what, and you can stop Genie or redirect it mid-task. Your message reaches whichever specialist is working, at its next step.
- Delivery. The Coordinator writes one summary in a consistent format, where quotes are taken from the source and every clause reference opens the paragraph it names.
The checks
QA checks the requirements, the plan and the output against the definition of done. Its verdict is a strict, schema-checked record of ten fields, including which documents it loaded and any tool errors it hit. A pass that loaded nothing, or ran into an error, counts as inconclusive, and the Project Lead treats inconclusive as not yet checked.
A failed check sends the work back with the changes required. Drafts and edits get two attempts; plans, searches and reviews get three. When the attempts run out, Genie does not press on. It asks you whether to try again, deliver with the known issues listed, or stop. Searches and reviews skip the first two checks, because for a review the judging is the work itself, and it is measured against its own definition of done.
Simple requests take a fast path. Accepting every tracked change or a clear find and replace runs with no phases and no specialists, with a target of under 30 seconds. Advisory questions get a direct answer. When the Project Lead is unsure, it is told to run the full process, because the full process is always safe.
Ten specialists, five seats
A specialist is a seat, plus the expertise and tools it is given for the job.
Under the ten specialists sit five seats in the code: one that plans, one that searches, one that writes, one that checks and one that delivers. Each seat has a fixed set of tools and its own model. What turns a seat into a specialist is what the harness loads into it for the task: the Drafter and the Editor run in the same writing seat with different expertise, and the Reviewer, the Risk Analyst and QA run in the checking seat with different rubrics.
Showing each specialist in turn. Choose one to look at it yourself.Choose any specialist to see what it carries.
Project Lead
Plans the work, builds the harness, and asks you when a call needs a person.
- Runs in
- Planning seat
Loads for the task
- The four phase guides
- Playbook calibration
- E-signature
Can
- Assign work to specialists
- Ask you questions
- Read document outlines
- Whole-document edits, such as accepting all changes
Cannot
- Draft or redline
- Record a verdict
- Run code
- Shell or open web
Who checks it. QA checks its requirements and its plan.
Drafter
Drafts contracts, letters and notices from scratch or from your templates.
- Runs in
- Writing seat
Loads for the task
- Contract drafting
- Letter drafting
- Drafting from a template
Can
- Create and edit Word and Excel files
- Read documents
- Run code in a sandbox
- Call QA on its own draft
Cannot
- Ask you questions
- Record a verdict
- Publish the summary
- Shell or open web
Who checks it. QA validates every draft before it is handed back.
Editor
Edits your Word documents in place, with tracked changes, comments, numbering and formatting.
- Runs in
- Writing seat
Loads for the task
- The Word editing guide
- Excel formatting
Can
- Create and edit Word and Excel files
- Read documents
- Run code in a sandbox
- Call QA on its own draft
Cannot
- Ask you questions
- Record a verdict
- Publish the summary
- Shell or open web
Who checks it. QA checks the edited file, which must also open cleanly.
Reviewer
Reviews a document against your playbook, clause by clause, and writes the findings.
- Runs in
- Checking seat
Loads for the task
- Playbook review and its order for conflicts
- The playbook review rubric
Can
- Read documents
- Record a verdict and save findings
- Run code in a sandbox
Cannot
- Edit a document
- Ask you questions
- Shell or open web
Who checks it. Checked against its definition of done; the Analyst gathers its evidence.
Risk Analyst
Scores and explains risk when there is no playbook to review against.
- Runs in
- Checking seat
Loads for the task
- The general review rubric and its risk score
Can
- Read documents
- Record a verdict and save findings
- Run code in a sandbox
Cannot
- Edit a document
- Ask you questions
- Shell or open web
Who checks it. Checked against its definition of done.
Knowledge
Turns your past contracts into a playbook of positions, fallbacks and red lines.
- Runs in
- Searching seatWriting seat
Loads for the task
- Building a playbook from documents
- Excel formatting
Can
- Read every document in the project
- Run code in a sandbox
- Compile the playbook workbook
Cannot
- Record a verdict
- Ask you questions
- Shell or open web
Who checks it. QA checks the compiled playbook.
Analyst
Answers one question across hundreds of documents, writing code when no tool fits.
- Runs in
- Searching seat
Loads for the task
- Finding documents
- Writing safe analysis code
Can
- Read every document in the project
- Save search results
- Run code in a sandbox
Cannot
- Edit a document
- Record a verdict
- Shell or open web
Who checks it. Its answer is checked against the definition of done.
Researcher
Researches the law with official sources first, and cites each source and the date it was read.
- Runs in
- Planning seat
Loads for the task
- The research perimeter: one tool
- 15 jurisdiction groups
Can
- Run legal research, official sources first
- Cite each source and its retrieval date
Cannot
- Browse the open web
- Use a figure it did not read in this run
Who checks it. A figure counts only if it was read in this run.
QA
Checks the requirements, the plan and the output before anything moves on. In the task plan it appears as the reviewer gate.
- Runs in
- Checking seat
Loads for the task
- The requirements and plan rubric
- The artefact validation rubric
Can
- Read documents
- Record a verdict
- Run code to test a claim
Cannot
- Edit a document
- Pass work it did not read
- Shell or open web
Who checks it. It never checks work it did itself.
Coordinator
Writes the summary you receive, and prepares the signature envelope for you to send.
- Runs in
- Delivery seat
Loads for the task
- Delivery templates
- The rules for reporting figures and quotes
Can
- Read the delivery record
- Publish the summary
- Prepare a signature envelope
Cannot
- Edit a document
- Send an envelope for you
- Shell or open web
Who checks it. The summary passes the fidelity check before it is published.
| Seat | Assign work | Ask you questions | Read documents | Edit Word and Excel | Run code in a sandbox | Record a verdict | Legal research | Prepare signatures | Publish the summary | Shell or open web |
|---|---|---|---|---|---|---|---|---|---|---|
| Planning seat | ||||||||||
| Searching seat | ||||||||||
| Writing seat | ||||||||||
| Checking seat | ||||||||||
| Delivery seat |
Full accessLimitedNone
The pattern in that table is deliberate. The seat that writes cannot approve its own work, the seat that approves cannot change the document, and only one seat speaks for the team at the end. Built-in shell, file-writing and open web tools are switched off for the whole session, so no specialist can reach them however it is prompted.
Tools are also loaded on demand. Five tool servers are always present. The other fifteen stay out of the Project Lead's context until it searches for them, which keeps its prompt short and its attention on the request. Each seat gets the model and reasoning effort its job needs: the seats that read and write legal text run on a larger model, while planning, the plan checks and the final summary run on a faster one.
Nesting is restricted too. The only seat that can call another is the writing seat, and it can only call QA, one level deep, to check a draft before handing it back. Even then, the Project Lead does not take its word for it. It looks up the stored verdict, tied to the content of the document it was given for, and trusts that instead.
A receipt is a claim; only a fresh record is evidence.
The team changes with the work
Eight real requests and the teams Genie staffs for them, as the routing rules in the code define them.
Review, then redline
"Review this supplier agreement against our playbook and redline anything non-standard."
Project Lead
Plans a review and then an edit, each with its own definition of done.
Analyst
Gathers the evidence for every playbook position.
ReviewerDefinition of done
Judges each position and writes the findings with a severity.
Editor
Makes the amendments as native tracked changes in Word.
QAGate
Checks the edited document before it is handed back.
Coordinator
Writes the summary, with a link to every clause.
You get Findings with a risk score, and the redlined .docx.
Draft, then check
"Draft a mutual NDA with Example Retail under English law, then check it against our NDA playbook."
Project Lead
Asks only what it cannot infer, such as each party's full legal name.
QAGate
Checks the requirements, then the plan, before drafting starts.
Drafter
Drafts the NDA in a new Word document.
QAGate
Validates the draft: parties, execution block, governing law.
ReviewerDefinition of done
Judges the new draft against your NDA playbook.
Coordinator
One summary covering both operations.
You get A drafted .docx and a playbook check of your own draft.
Build a playbook
"Here are 30 of our past consultancy agreements. Build a playbook of our standard positions, fallbacks and red lines."
Project Lead
Calibrates the request, and checks your own columns make sense together.
Analyst
Works through all 30 agreements, clause family by clause family.
Knowledge
Compiles the playbook: position, fallbacks, risk and why each matters.
QAGate
Checks the compiled playbook before it is handed back.
Coordinator
Summarises what the playbook covers and what your contracts never address.
You get An Excel playbook the next review can run against.
Letter of claim
"Using the correspondence and contract in this project, draft a letter of claim for late delivery."
Project Lead
Puts a search before the drafting: the letter must rest on your documents.
Analyst
Pulls the dates, parties and events, each with its source.
Drafter
Drafts the letter from those facts.
QAGate
Validates the letter before it is handed back.
Coordinator
Summarises, and flags the litigation points to check.
You get A letter grounded in your own documents.
Risk without a playbook
"We have no playbook for this one. Tell me how risky this distribution agreement is."
Project Lead
Plans a review against market practice, as there is no playbook.
Analyst
Gathers the evidence, clause by clause.
Risk AnalystDefinition of done
Scores the risk out of 100 and explains each finding by severity.
Coordinator
Writes the summary, with the score and a link to every clause.
You get A risk score, findings by severity and clause links.
One question, every document
"Which of our contracts contain force majeure language, and in which clauses?"
Project Lead
Plans a single search operation.
Analyst
Writes a short script that reads every document and asks for judgements in one batch.
The sandboxPre-run checks
Checks the script before it runs, then runs it over a read-only copy.
Coordinator
Lists every match with a link to its clause.
You get A complete answer across the project, not a sample.
Research the law
"What must a UK GDPR processor agreement include?"
Project Lead
Answers directly: this is a question, not a document.
ResearcherDefinition of done
Searches with official sources first, and uses only figures read in this run.
You get An answer with each source and the date it was read.
Send for signature
"Send the final version to the two directors for signature."
Project Lead
Loads the e-signature expertise. No phases, no drafting team.
Coordinator
Prepares the envelope in the e-signature account you connected.
You
Check the envelope and press Send. Genie never sends it for you.
You get An envelope ready for you to send.
Two things stay fixed across all eight. Every team is staffed from the same ten specialists in the same five seats, so a new kind of request does not need a new kind of agent. And the server, not the model, decides who may do what: a plan that gives a drafting operation to the searching seat is refused when it is saved, whatever the Project Lead intended.
When no tool fits, it writes one
Some questions are too big for a fixed tool. The specialist writes a small program, and the harness decides whether it may run.
A question like "where in this correspondence did the supplier admit it approved the change?" across a few hundred emails and letters is not one search. It is a loop: list the documents, find the passages that might matter in each one, read them, and judge each against a test. No fixed tool covers every version of that loop, so the Analyst, the Drafter and QA can each write one as a short JavaScript module and run it.
const docs = await api.listDocuments();
const excerpts = [];
for (const doc of docs) {
for (const hit of await api.locate(doc.id, "approved")) {
excerpts.push(await api.slice(hit, { around: 400 }));
}
}
const judged = await api.invokeLLM({
items: excerpts,
criteria: [
"the speaker is a party",
"the statement is against their own interest",
"it concerns approval",
],
});
return judged.filter((r) => r.allMet).map((r) => r.source);What the script can touch
The script runs as a separate process whose environment holds four variables and nothing else, so no API key or database credential ever reaches it. Network modules and file access are denied. The project's documents are a snapshot with read-only files. Database queries are read-only, scoped to the project on the server, refused if they join, write or run code, and capped at 1,000 rows. Calls for judgements are batched and capped. A script that runs too long is killed.
Why the gates exist
The coverage gate exists because, when we audited stored scripts, 46 of them had silently looked only at contracts, missing letters and emails. The field path gate exists because a database query on a field that does not exist returns an empty result rather than an error, which looks exactly like "nothing found". A model also reviews every script and gives advice, which the specialist must answer on its next run. The review may point at where to look. It is never allowed to decide the answer.
A script narrows where to look. It does not form the verdict.
Checked before you see it
The gates check the work. A last set of checks runs on the words you will read.
The summary you receive goes through its own pipeline before it is published. Specialists never type a quotation. They write a marker that points at a paragraph, and the server swaps in the stored text of that paragraph, so a quote cannot drift from the source. A marker that does not resolve is removed. Clause references are resolved against the document's clause map, so each one opens the paragraph it names.
- Research has one door. No specialist can browse the web. Legal research goes through a single tool that drops about 99 blocked domains, including sites whose terms forbid AI use, and ranks official sources first across 15 jurisdiction groups.
- Statutory figures are read, not remembered. A research answer only counts as found if it cites a page fetched in that run, and every money or percentage figure in it appears on that page. A document edit that states a statutory value nothing in the run supports is refused.
- Untouched text stays untouched. Genie edits the Word package itself. Every part it did not change is passed through byte for byte, and the main document is tested for equivalence after each edit.
- Every edit must open cleanly. Before new bytes are saved, an independent office engine opens the file. If it does not open cleanly, it is not saved.
- Outside content is data, never an instruction. Research results, emails and files are wrapped and labelled as untrusted, so an instruction hidden inside them cannot trigger a tool call or an edit. Each project's agents run in their own container, and each conversation in its own working directory.
When in doubt, fail and provide guidance. It's safer to iterate than to pass problematic work downstream.
Why a self-building harness is the right design
A fixed workflow is easier to build and easier to demo. We chose the harder path for six reasons.
1Real requests are mixed
Contracts arrive with emails, playbooks and a deadline. A plan built from the request covers every part of it, not only the part that matches a menu item.
2Focus produces depth
Each specialist sees one part of the problem, the expertise for that part and the tools for that part. Less in view means fewer distractions and clearer accountability.
3The check fits the problem
Each operation carries its own definition of done, written for this request and applied by QA, which did not do the work.
4Duties are separated by construction
In a single-prompt system, "do not approve your own work" is a request the model may or may not honour. In the harness it is a fact about tool access: the writing seat has no tool for recording a verdict, and the checking seat has no tool for editing a document. The same goes for the plan, where the server refuses an operation assigned to the wrong seat.
5New parts multiply
When a fixed-workflow product adds a capability, it usually adds one feature. When the harness gains a new part, every plan that can use it gains it too. Adding e-signature did not create a send-for-signature product. It made every drafting, review and template task able to end with an envelope.
6Every change is measured
A harness that assembles itself has more ways to go wrong than a script, so we test it end to end. Our agents are tested with hundreds of end-to-end evaluations built with practising legal experts. A persona agent plays the client and answers Genie's questions as a real user would. An independent judge grades each run on two lanes of evidence: what the client saw, and every specialist and tool call behind it. Hard gates, such as inventing no case law, statute or contractual term, void a run outright. Results go through significance tests across repeated trials, so a regression can be told apart from noise.
The same discipline applies to the prompts. Our optimiser proposes changes from several angles, a council of reviewers checks each one, and a candidate is only accepted if no scenario gets worse and the average improves. In an internal benchmark, Genie reviewed an NEC4 subcontract against a 75-criterion playbook with zero under-flagged risks.
What the harness does not do
A self-building harness is a design for breadth and checking, not magic. These are its edges today.
- It does not invent new kinds of specialist. Every team is staffed from the same ten specialists in five seats. What changes is the plan, the expertise and the tools.
- Depth varies by area. Drafting structures are deepest for NDAs and SaaS agreements; other contract types are drafted with general structures. There is no dedicated negotiation mode yet.
- Judgement comes back to you. When a call needs a person, Genie asks you in the conversation. It does not route work to a named approver.
- It does not learn from your past conversations on its own. It carries what you tell it about yourself, your company and the matter into every answer.
- It is not a lawyer. The harness is built so that a lawyer spends their time on the calls that need one.