Client Intake Automation Workflow: Enquiry to Engagement Letter
New enquiries arrive by email, form and phone note, and each one is typed into the matter system, conflict-checked by hand and answered whenever someone gets to it. The workflow classifies each enquiry by matter type, extracts the parties, dates and facts a conflict check needs, checks them against the existing client and adverse-party lists, drafts the engagement letter or the polite decline from the firm's templates, and puts the whole file in front of the responsible person for approval. Nothing is sent unreviewed; everything arrives ready to review.
- Built and run for you$247/month
- Custom build$3,500–6,000 one-time
- TriggerNew enquiry (email, web form, phone note)
- Reference stackClaude + n8n
Per firm, one intake inbox, one matter system, up to 300 enquiries a month. Several practice areas with different intake rules, a client portal, or a matter system without an API are a custom build.
Written by Max Zeshut
Founder at Agentmelt · Last updated Sep 14, 2026
Intake is the least billable hour in the firm and the one that decides whether the client comes. Enquiries wait a day for a reply, conflict checks are a spreadsheet search, and the engagement letter is copied from the last one and edited under time pressure.
Every enquiry is acknowledged within minutes, classified and conflict-checked within the hour, and the engagement letter is a tap away for the person who owns the matter. The firm answers in the same day it is asked, every time.
How the workflow runs
Trigger, then 8 steps.
Trigger — New enquiry (email, web form, phone note). An email to the intake address, a website form submission, or a phone note typed into the shared inbox starts intake for that enquiry.
- 01Receive the enquiryIntake & triggersGmail TriggerEmail body and attachments, form fields, or the phone note; sender details and the time received.
- 02Classify the matterClassification & triageAI AgentMatter type from the firm's own taxonomy (employment, commercial, family, conveyancing…), urgency, and whether it is within the firm's practice at all.
- 03Extract the conflict-check factsData extractionAI AgentNames of parties and related entities, addresses, dates, the other side's counsel if named — structured, with the source sentence for each.
- 04Run the conflict checkMatching, validation & reconciliationCodeParties checked against the client list, former-client list and adverse-party list in the matter system, with fuzzy matching on names and companies; hits are listed with the matter they came from.
- 05AcknowledgeNotifications & escalationGmailA same-day acknowledgement to the enquirer from the firm's address: received, who will respond, by when. No advice, no fee quote.
- 06Draft the next documentDrafting & generationAI AgentEngagement letter from the firm's template for that matter type with fees from the schedule, or a decline where the matter is out of scope or conflicted — variables highlighted.
- 07ApproveApprovals & human-in-the-loopSlackThe responsible person sees the classification, the conflict result, the extracted facts and the draft; approve, edit, reassign or decline.
- 08Open the matterWrite-back & actionsHTTP RequestOn approval: the matter is created in the practice-management system with the parties and documents, the letter is sent for signature, and the intake is closed.
Each capability page explains the pattern and lists every automation that uses it.
The template is built on n8n. The same steps run on Make, Zapier or plain code; the tool is chosen to fit your accounts, and you own the result.
- 01 Receive the enquiry —
Gmail Trigger - 02 Classify the matter —
AI Agent - 03 Extract the conflict-check facts —
AI Agent - 04 Run the conflict check —
Code - 05 Acknowledge —
Gmail - 06 Draft the next document —
AI Agent - 07 Approve —
Slack - 08 Open the matter —
HTTP Request
Data it touches
- Intake inbox and web form
- Matter system (Clio, PracticePanther, a spreadsheet)
- Client, former-client and adverse-party lists
- Engagement letter templates and fee schedule
- Firm matter taxonomy
Guardrails
- Nothing is sent to an enquirer except the acknowledgement until a person approves; no advice or fee is ever quoted automatically.
- Conflict results are shown with their evidence; a hit blocks the engagement letter until a person clears it.
- Enquiry content is processed through an API with no data retention and stored only in the firm's own systems.
- Out-of-scope or conflicted matters get a courteous decline drafted for approval, never an automatic one.
- Every intake keeps an audit line: received, classified, checked, approved by whom, when.
Standard or custom
When this becomes a custom build.
The subscription covers the standard version — $247/month, setup and maintenance included. Three things move it to a custom build ($3,500–6,000 one-time), delivered into your accounts to keep. If one of them is you, say so on the audit and the plan prices both.
Several practice areas with their own intake rules, templates and approvers.
A client portal for intake and document collection, rather than email and forms.
A matter system without an API, or conflict data spread across several systems.
Running the standard version first is the usual path: the exceptions it logs in the first month are the scope of the custom build, with your own numbers. How custom builds work.
The conflict check is the step that cannot be sloppy
A missed conflict is a professional problem, not an efficiency problem. The workflow does the tedious part — extracting every party from the enquiry, including the ones mentioned in passing, and checking them with fuzzy matching against every list the firm keeps — and presents hits with the evidence. A person still decides. What changes is that the check happens on every enquiry, within the hour, with nothing skipped because the day was busy.
Same-day acknowledgement wins the client
Enquirers contact three firms. The one that replies first, even just to say who will call and when, is usually the one they hire. The acknowledgement goes out in minutes and commits to nothing beyond a name and a time; it is the cheapest thing in the workflow and the one most firms cannot do consistently by hand.
Engagement letters from the template, not from the last one
Copying the previous letter carries the previous client's fee, scope and name. Drafting from the template for the matter type, with the fee schedule applied and every variable highlighted, produces a letter that needs a read, not a rewrite — and one that is the same across the firm.
Tools in the stack
What it connects to.
| Tool | Role in this workflow |
|---|---|
| n8n | Intake, conflict check, approvals, matter creation |
| Claude | Classification, fact extraction, letter drafting |
| Clio / PracticePanther | Matter system, client lists, documents |
| Gmail / Outlook | Intake inbox and acknowledgements |
| DocuSign / PandaDoc | Engagement letter signature |
Building it in Zapier instead? The step-by-step recipe.
Zapier has no importable file, so this is the build guide: the same process as the n8n template and the Make blueprint, one Zap step per line. Expect 10–14 steps; the AI steps use the Anthropic (Claude) app, rules go in Code by Zapier, and every AI step is followed by a Filter that stops the Zap when Claude flags the item for a person.
Before you start
– Keep the values from "Config (edit me)" somewhere the steps can read them — a Storage by Zapier key each, or a Formatter → Utilities step at the top of the Zap: your name, your email, company, time zone, quiet hours (21–8), approver (channel or email), test mode.
– Connect the apps once: Anthropic (an API key), plus Clio / PracticePanther, Gmail / Outlook, DocuSign / PandaDoc.
– Turn the Zap on with test mode on; read the first runs in Zap History before switching it off.
Steps
- Trigger — Gmail — New Email Matching Search (trigger). An email to the intake address, a website form submission, or a phone note typed into the shared inbox starts intake for that enquiry.
- Anthropic (Claude) — Send Message. Model
claude-sonnet-5, max tokens 2000, temperature 0.2. Paste the system prompt below; the user message is the fields from the previous step.You are the "Classify the matter" step of the Client Intake Automation Workflow workflow run by Agentmelt. Task: Matter type from the firm's own taxonomy (employment, commercial, family, conveyancing…), urgency, and whether it is within the firm's practice at all. Rules: - Nothing is sent to an enquirer except the acknowledgement until a person approves; no advice or fee is ever quoted automatically. - Conflict results are shown with their evidence; a hit blocks the engagement letter until a person clears it. - Enquiry content is processed through an API with no data retention and stored only in the firm's own systems. - Out-of-scope or conflicted matters get a courteous decline drafted for approval, never an automatic one. - Every intake keeps an audit line: received, classified, checked, approved by whom, when. - Answer only from the data provided in the input. If something is missing, say so in the output instead of guessing. - If this step produces a message or a document, put the full text in `draft` (and a `subject` if it is an email); put a one-line summary in `summary`. - Set `needs_human` true whenever you are unsure, the input is unusual, or a rule above applies; a person will look at it. - Return valid JSON matching the output schema; no prose outside the JSON. Reply with a single JSON object and nothing else: the fields the task needs, plus "needs_human" (true when unsure), "confidence" (0–1) and "summary" (one line).
- Code by Zapier (JavaScript) — parse Claude's JSON. Input
text= Claude's reply; codereturn JSON.parse(inputData.text);so the fields become mappable in later steps. - Filter by Zapier. Only continue if
needs_human(from the previous step) *does not exactly match*true. Everything Claude is unsure about stops here — check Zap History for those, or add a Paths step whose second path posts the item to your approver. - Anthropic (Claude) — Send Message. Model
claude-sonnet-5, max tokens 2000, temperature 0.2. Paste the system prompt below; the user message is the fields from the previous step.You are the "Extract the conflict-check facts" step of the Client Intake Automation Workflow workflow run by Agentmelt. Task: Names of parties and related entities, addresses, dates, the other side's counsel if named — structured, with the source sentence for each. Rules: - Nothing is sent to an enquirer except the acknowledgement until a person approves; no advice or fee is ever quoted automatically. - Conflict results are shown with their evidence; a hit blocks the engagement letter until a person clears it. - Enquiry content is processed through an API with no data retention and stored only in the firm's own systems. - Out-of-scope or conflicted matters get a courteous decline drafted for approval, never an automatic one. - Every intake keeps an audit line: received, classified, checked, approved by whom, when. - Answer only from the data provided in the input. If something is missing, say so in the output instead of guessing. - If this step produces a message or a document, put the full text in `draft` (and a `subject` if it is an email); put a one-line summary in `summary`. - Set `needs_human` true whenever you are unsure, the input is unusual, or a rule above applies; a person will look at it. - Return valid JSON matching the output schema; no prose outside the JSON. Reply with a single JSON object and nothing else: the fields the task needs, plus "needs_human" (true when unsure), "confidence" (0–1) and "summary" (one line).
- Code by Zapier (JavaScript) — parse Claude's JSON. Input
text= Claude's reply; codereturn JSON.parse(inputData.text);so the fields become mappable in later steps. - Filter by Zapier. Only continue if
needs_human(from the previous step) *does not exactly match*true. Everything Claude is unsure about stops here — check Zap History for those, or add a Paths step whose second path posts the item to your approver. - Code by Zapier (JavaScript) — Run the conflict check. Parties checked against the client list, former-client list and adverse-party list in the matter system, with fuzzy matching on names and companies; hits are listed with the matter they came from. Start from
return { ...inputData };and add the rule. - Gmail — Send Email — Acknowledge. A same-day acknowledgement to the enquirer from the firm's address: received, who will respond, by when.
- Anthropic (Claude) — Send Message. Model
claude-sonnet-5, max tokens 2000, temperature 0.2. Paste the system prompt below; the user message is the fields from the previous step.You are the "Draft the next document" step of the Client Intake Automation Workflow workflow run by Agentmelt. Task: Engagement letter from the firm's template for that matter type with fees from the schedule, or a decline where the matter is out of scope or conflicted — variables highlighted. Rules: - Nothing is sent to an enquirer except the acknowledgement until a person approves; no advice or fee is ever quoted automatically. - Conflict results are shown with their evidence; a hit blocks the engagement letter until a person clears it. - Enquiry content is processed through an API with no data retention and stored only in the firm's own systems. - Out-of-scope or conflicted matters get a courteous decline drafted for approval, never an automatic one. - Every intake keeps an audit line: received, classified, checked, approved by whom, when. - Answer only from the data provided in the input. If something is missing, say so in the output instead of guessing. - If this step produces a message or a document, put the full text in `draft` (and a `subject` if it is an email); put a one-line summary in `summary`. - Set `needs_human` true whenever you are unsure, the input is unusual, or a rule above applies; a person will look at it. - Return valid JSON matching the output schema; no prose outside the JSON. Reply with a single JSON object and nothing else: the fields the task needs, plus "needs_human" (true when unsure), "confidence" (0–1) and "summary" (one line).
- Code by Zapier (JavaScript) — parse Claude's JSON. Input
text= Claude's reply; codereturn JSON.parse(inputData.text);so the fields become mappable in later steps. - Filter by Zapier. Only continue if
needs_human(from the previous step) *does not exactly match*true. Everything Claude is unsure about stops here — check Zap History for those, or add a Paths step whose second path posts the item to your approver. - Slack — Send Channel Message (approval). Send the summary to your approver with what would be written. Zapier has no wait-for-reply step: with approval mode on, stop the Zap here and re-run the write-back by hand (or from a second Zap triggered by a Slack reaction on the message). With approval mode off, the next step runs immediately.
- Filter by Zapier. Only continue if the stored
approval_modeisfalse. - Webhooks by Zapier — Custom Request. POST
https://app.clio.com/api/v4/matters.json(Clio API; add the API key header). On approval: the matter is created in the practice-management system with the parties and documents, the letter is sent for signature, and the intake is closed.
Guardrails to keep
– Nothing is sent to an enquirer except the acknowledgement until a person approves; no advice or fee is ever quoted automatically.
– Conflict results are shown with their evidence; a hit blocks the engagement letter until a person clears it.
– Enquiry content is processed through an API with no data retention and stored only in the firm's own systems.
– Out-of-scope or conflicted matters get a courteous decline drafted for approval, never an automatic one.
– Every intake keeps an audit line: received, classified, checked, approved by whom, when.
Full blueprint: https://agentmelt.com/workflows/client-intake-automation/ · n8n template and Make blueprint: https://github.com/zeshutmax/agentmelt-blueprints
Want this running without building it?
Automation workflow
$247/month
We set up, host and maintain this workflow on n8n and connect it to your tools. Setup included, cancel monthly, you keep the JSON.
Custom build
$3,500–6,000 one-time
Your systems, your rules, your edge cases. A one-off build on Claude and n8n, delivered with documentation and a walkthrough.
Per firm, one intake inbox, one matter system, up to 300 enquiries a month. Several practice areas with different intake rules, a client portal, or a matter system without an API are a custom build.
Also sold one-time, installed in your own accounts, as part of the legal professionals package — kit $49 · install $249 · package $490.
FAQ
Frequently asked questions.
Is this only for law firms?
It is written for them, but accountancy, architecture and consulting intake have the same shape: classify, check for conflicts, acknowledge, draft the engagement. The lists and templates change; the workflow does not.
Where does the enquiry data go?
Into your own inbox and matter system, nowhere else. Model calls use an API with no data retention, and the workflow keeps no copies.
Can it quote fees?
It fills the fee schedule into the letter for a person to approve. It never quotes to an enquirer on its own.
Sources
What this blueprint is built on.
Vendor documentation the steps rely on, and the rules the guardrails are written against.
- ABA — Model Rule 1.7: Conflict of interest, current clients www.americanbar.org/groups/professional_responsibility/publications/model_rules_of_professional_conduct/rule_1_7_conflict_of_interest_current_clients/
- Clio — API documentation docs.developers.clio.com/
- n8n docs — Wait node (approval steps) docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/