Legal requests arrive by email, Slack and a tap on the shoulder, and nobody can say what the team is working on. Here is the model behind an intake queue, the prompts to build it, and what it takes to run it.
Your private status link is on its way to your inbox.
A legal intake queue is four parts: a request form detailed enough to triage without a conversation, a triage step that sets type, priority and owner, status the requester can see, and a self-service path. The highest-value part is the last one. A large share of legal intake is a standard agreement with no changes, and routing those to a template with guardrails is what frees the team for the work that needs judgement.
Legal intake
18
Open requests
41%
Self-served
2.9 days
With legal
4.1 days
Waiting on the business
DPA, Brightsea
88K · low risk
NDA, Vantor
self-served
MSA, Halden Foods
410K · high risk · 2 days
Renewal, Northrise
240K · 4 days waiting
Termination, Kestrel
64K · 9 days
You run or support a legal function, or you run operations for one. You already know what your team spends its time on. What you want is one front door, a queue you can prioritise, and fewer requests that never needed a lawyer.
One front door, and what happens to a request behind it.
An NDA asks for less than a master agreement. One long form produces short answers on every field.
If the answers stay inside the guardrails, the agreement generates from an approved template and the execution is recorded.
With the answers already captured, so nothing is retyped.
Priority derived from deadline and value, overridable with a reason, so the loudest requester does not set the queue.
Which removes a real share of what a legal team's interruptions are made of.
Which is the report that changes the conversation about turnaround.
An intake queue is not a shared inbox with labels. It is four parts, and the fourth is where the capacity comes from.
Enough to triage without a conversation: request type, counterparty, contract value, deadline and why, the document if there is one, the business context, and whether a template was used.
Assign type, risk level, priority and owner, using rules where they are clear and a person where they are not. Priority from deadline and risk, not from who asked.
The requester sees where their request is and what it is waiting on, without emailing to ask. This removes a real share of the interruptions.
Standard agreements with no changes routed to an approved template with guardrails, a record that it was used, and an escalation route when the counterparty asks for edits.
These prompts start from a Helix project, which is what handles sign-in, credentials and hosting. Start with Helix
Paste these into Claude Code, Codex or Cursor in order. Each one leaves you with something that runs, so you can stop after any step.
Adaptive fields, and the four things every request needs.
In this Helix project, build me a legal contract intake queue.
One request record: requester and team, request type, counterparty name
and type, contract value, currency, deadline, the reason for that
deadline, business context, whether a template was used, the related
opportunity, and any documents.
Request types to seed: new agreement, review counterparty paper, renewal,
amendment, termination, NDA, data processing agreement, general question.
Make the form adapt to the type. An NDA needs far less than a master
services agreement, and asking for everything every time trains people to
submit nothing useful.
Require the counterparty, the value and the deadline on every request.
Each missing field is a round trip that costs a day.
Then a triage step that sets risk, priority, owner and target date.
Suggest a priority derived from deadline and value, and let the triager
override it with a reason. Prioritising by who asked means the loudest
requester sets the queue and the highest-risk contract waits behind a
routine NDA.
I sign in through Helix, so do not build a login page. Read the signed-in
user from the runtime. And do not put any key or connection string in the
code: if this needs to reach another system, tell me and I will create the
connection in my workspace. And make the waiting-on-the-business time visible.
Build the queue: open requests sorted by priority then deadline, showing
type, counterparty, value, requester, owner, age and days to deadline.
Add a per-owner workload view split by type and risk, so assignment is
based on capacity rather than on who replied first.
Let me edit the status list, and cover the states that actually happen:
received, triaged, in review, with counterparty, awaiting business input,
awaiting signature, completed, withdrawn.
Then track time in each status and report awaiting business input
separately from everything else. A large part of what gets called legal
delay is a request sitting with the person who raised it, and until that
is visible legal wears the blame for it.
Flag requests past their target date, and requests approaching a deadline
with no owner. Worth knowing. Splitting turnaround into time-with-legal and time-waiting-on-the-business is the single most useful report here, and it costs one field.
Self-service with guardrails, and a record of every execution.
Now the part that gives the team its capacity back.
Keep templates as records: name, type, when to use it, when not to, the
approved version, a document link, an owner, and a last reviewed date.
Build a guided path for standard requests. The requester answers a few
questions, and if the answers stay inside the guardrails, generate the
agreement from the approved template and record that it was used, by whom,
with which counterparty, on what date.
Any answer outside the guardrails routes into the normal queue with the
answers already captured.
Then track two numbers: how many requests were handled without a lawyer,
and how many escalated afterwards because the counterparty asked for
changes. The second tells me whether the guardrails are set correctly.
And flag templates not reviewed within a period I set. Worth knowing. Recording every self-service execution matters as much as enabling it. An agreement signed from a template legal cannot see is not a saving.
Obligations, and the reporting that shapes next year's paper.
Keep executed agreements: counterparty, type, effective date, term end,
notice period, auto renew, value, signatory, document link, and the
request it came from. Derive a notice deadline and sort by that rather
than term end.
Then obligations: what we committed to, an owner, a due date, whether it
recurs, and a status. Report by owner and flag overdue ones. This is the
part everybody means to do and nobody does.
Finally, report requests by type, team and month; turnaround by type with
the waiting-on-the-business time excluded and shown separately;
self-service share; and the counterparties we contract with most often,
which is usually where negotiating a standard form once pays for itself
many times. The step that turns a working prototype into something with your data in it.
Now connect it to the systems we actually run, so it works on real data
rather than the rows you seeded.
Anything in angle brackets is a placeholder. Swap it for whatever we use
instead, and have the app name the connection it wants rather than assume
a vendor, so changing my mind later is a config change and not a rewrite.
<Salesforce>. Read the opportunity behind a contract request, which is
where the value and deadline come from.
<Google Drive>. Keep drafts and executed agreements where the business
already looks for them.
<DocuSign>. Read signature status, so awaiting signature is a real state
rather than a guess.
<Slack>. Accept requests from wherever people send them, because they will
not all use the form.
<Okta>. Tell the app who is signing in and whether they are in the legal
group, which is what its visibility rules run on.
<Ironclad>. If contract lifecycle already lives somewhere, read and write
there rather than running a second system.
<NetSuite>. Read the spend behind a contract request, which is usually
what sets its priority.
<Google Sheets>. Export the obligations register, because whoever owns an
obligation will want it in a sheet.
Only write where I have said to write. Everything else is read only.
Do not write a key, a token or a connection string anywhere in the code,
and do not ask me to paste one. Tell me which connections you need and I
will create each as an authentication in my Helix workspace. Reference
them by alias. Worth knowing. Every name in angle brackets is a placeholder for whatever you run. Helix holds the credential as a workspace authentication, so the app references an alias and never the secret itself.
The last step of every build: a URL, and the right people on it.
Deploy my app. Worth knowing. Your assistant runs helix deploy underneath and the app comes back as a URL. Contracts and legal advice are confidential, so set Access Control before sharing: requesters see their own matters, legal sees the queue.
Legal work arrives from everywhere and ends in a document, so intake and storage are both connections.
Salesforce
Read the opportunity behind a contract request, which is where the value and deadline come from.
Google Drive
Keep drafts and executed agreements where the business already looks for them.
DocuSign
Read signature status, so awaiting signature is a real state rather than a guess.
Slack
Accept requests from wherever people send them, because they will not all use the form.
Okta
Tell the app who is signing in and whether they are in the legal group, which is what its visibility rules run on.
Ironclad
If contract lifecycle already lives somewhere, read and write there rather than running a second system.
NetSuite
Read the spend behind a contract request, which is usually what sets its priority.
Google Sheets
Export the obligations register, because whoever owns an obligation will want it in a sheet.
Each line says whether the app reads, writes or both. Anything not described as writing should be read only.
Named systems are the ones most teams actually run, not a list of the only ones that work. Swap in whatever you use.
Each connection is an authentication in your Helix workspace, referenced by alias. The app names the connection it wants and never holds the credential, so nothing here ends up in your code and any of it can be rotated or revoked without a redeploy.
The build gets you a working queue. It holds contracts and confidential commercial terms, so access control and ownership are part of the design rather than an addition.
AI Deployment
One command takes the app from your assistant to a live address, so the people who need it get a link rather than instructions for running it locally.
App Security
Contracts and legal advice are confidential. SSO means people sign in with their existing account, and access is scoped so a requester sees their own matters while the legal team sees the queue.
App Security
Pulling opportunity data, pushing executed contracts to a document store, and reading signature status needs real access. Granting it to the app rather than pasting keys into it means credentials can be rotated or revoked without a redeploy.
App Registry
Every app carries a named owner and an entry IT can see, so the tool does not become nobody's problem when the person who built it changes role.
Cost Management
Per-app spend visibility, with budgets and caps, so an internal tool cannot quietly become a line item nobody can explain.
A single front door for legal requests that captures enough detail to triage without a conversation, assigns type, priority and owner, shows the requester the status, and routes standard requests to a self-service template path.
Request type, counterparty, contract value, deadline and the reason for it, the business context, and the document if one exists. Adapt the fields to the type, because a single long form produces short answers on everything.
Start by measuring it correctly. Split the elapsed time into time with legal and time waiting on the requester, because a large share of perceived delay is the second. Then move standard agreements to a self-service template path.
Guardrails on the answers, an approved template, an automatic route into the normal queue when an answer falls outside them, and a record of every execution. An agreement signed from a template that legal never sees is not a saving.
By deadline and risk, derived automatically and overridable with a reason. Prioritising by who asked means the loudest requester sets the queue, and the highest-risk contract waits behind a routine NDA.
Yes. The prompts here are written for Claude Code, Codex or Cursor and stage the build. The judgement calls are your request types, your guardrails, and which agreements are safe to self-serve.
Legal and Compliance
Tier vendors by the risk they actually carry, ask each tier only what it warrants, track findings to closure, and re-review on a schedule. Prompts to build it, and what it takes to run it.
Legal and Compliance
Version your policies, assign them to the right people, collect attestations with evidence, and produce the completion report an audit asks for. Prompts to build it, and what it takes to run it.
Sales and RevOps
Route discount requests by depth and deal size, give approvers the context to decide in minutes, and keep a record of every exception granted. Prompts to build it, and what it takes to run it.
Last reviewed September 2026.
Helix is the governed runtime for AI-built apps. Deploy what you build, put SSO in front of it, connect it to your systems with managed credentials, and give it a named owner.
Your private status link is on its way to your inbox.