NNile Builds AI
← Blog
Legal AI

Draft an Engagement Letter from Client Intake with AI

A single-prompt pipeline that turns client intake information into a complete engagement letter — scope, fees, obligations, and signature block included.

The intake call goes well. The client is ready to move forward. Then you hang up and realize you still have to write the engagement letter before they change their mind.

Most solo attorneys have a template. But the template still needs the client's name, the right matter description, the correct fee structure, and the appropriate scope language filled in accurately. Get the scope too broad and you have taken on obligations you did not intend. Get the fees wrong and you have a billing dispute before the matter even starts.

The engagement letter is not a formality. It is the contract. I built a pipeline that drafts a complete, ready-to-review engagement letter from basic intake information in under 30 seconds.


The pipeline

Engagement letter pipeline diagram

One API call. Fill in the client name, matter type, and fee terms, and a single structured prompt produces the full letter — all 10 required sections — with [ATTORNEY REVIEW REQUIRED] flags on anything missing or ambiguous.

This one is deliberately different from the intake pipeline and contract date extractor, both of which use two chained calls. The reason is the input. Those tools start from unstructured text — messy phone notes, a raw contract — where the first pass needs to surface and organize facts before anything can be structured. The engagement letter starts from a form: the data is already clean when it hits the prompt. Adding an intermediate extraction pass would just slow things down without improving the output.

The rule is simple: use multiple steps when your input is unstructured and needs interpretation. Use a single well-crafted prompt when your data is already organized.


The prompt

The prompt specifies all 10 sections by number so nothing gets omitted. Without explicit enumeration, the model will sometimes merge sections or skip client obligations entirely.

Draft Engagement Letter
You are a legal writing assistant. A solo attorney has provided structured client intake information. Draft a complete attorney-client engagement letter and return it as a JSON object.

The letter must include all of these sections in order:

1. Header: today's date (use [DATE]), attorney name and firm (use [ATTORNEY NAME] and [FIRM NAME]), client name and address (use [CLIENT ADDRESS] if not provided)
2. RE line: matter type and client name
3. Opening: one paragraph confirming you are writing to establish the terms of representation
4. Scope of representation: specific description of what the attorney will handle; include one sentence on what is explicitly excluded if applicable
5. Fee arrangement: fee type, specific rate or percentage, retainer amount if applicable, billing frequency, payment terms (invoices due within 30 days unless otherwise stated)
6. Costs and expenses: client is responsible for out-of-pocket costs (filing fees, court costs, expert fees) in addition to attorney fees
7. Client obligations: cooperate fully, provide requested documents promptly, notify attorney of any changes in contact or circumstances
8. Termination: either party may terminate with written notice; client remains responsible for all fees earned to date
9. Confidentiality: one sentence confirming attorney-client privilege applies to communications
10. Agreement: "Please sign and return a copy of this letter to confirm your agreement to these terms."
11. Signature block: attorney signature line, then client signature and date line

Tone: professional, plain English. Short paragraphs. No unnecessary legalese.
Format: plain text suitable for letterhead, with blank lines between sections.

Add [ATTORNEY REVIEW REQUIRED] immediately after any term that is missing or ambiguous.

Return a JSON object with this exact schema — no explanation, no markdown, only valid JSON:
{
  "letter": string,
  "missing_info": string[]
}

missing_info should list each gap or ambiguity that needs attorney attention before sending, as plain English phrases. Do not return an empty array if any [ATTORNEY REVIEW REQUIRED] markers were added.

Client intake information:
{client_info}

The [ATTORNEY REVIEW REQUIRED] marker convention is the same pattern used in the demand letter generator. Every missing or ambiguous term gets flagged inline in the letter, and a separate missing_info array surfaces them as a list. You see exactly what needs attention before you sign and send.

The JSON return format makes the output easy to use in any interface: letter gives you the full text, missing_info gives you the review checklist.


Try it on your own intake

Fill in the client details below. The pipeline generates a complete engagement letter in 15–25 seconds.

▶ Generate an engagement letter5 free runs/day · no account needed
Client name
Matter type
Fee arrangement
Fee rate / amount
Retainer (optional)
Matter description
1 Draft letter
Free · 5 runs/day

Works for any matter type: personal injury, business disputes, employment, estate planning, immigration, family law, or general representation.


What to do with the output

The letter is a first draft, not a final document. Once you have it:

  1. Check every [ATTORNEY REVIEW REQUIRED] marker. These are the gaps. Fill them in before sending.
  2. Verify the scope paragraph. Make sure it matches exactly what you discussed on the call.
  3. Confirm the fee terms are accurate. The model writes what you give it. If you typed $350/hr and meant $375/hr, the letter says $350.
  4. Add your letterhead and signature block. The letter uses [ATTORNEY NAME] and [FIRM NAME] as placeholders.
  5. Have the client sign and return a copy before beginning any substantive work.

The pipeline saves the drafting. The attorney still owns the review.


Copy the prompt

The prompt is copyable above. To use it in your own setup: replace {client_info} with a structured text block containing the client name, matter type, fee arrangement, and matter description. The prompt returns a JSON object with letter and missing_info fields.

If you are building this into a script or app, it is a single API call with response_format: json_object — the simplest pattern in the series.

Want to talk?
I'm building NileLegal — a product that runs these pipelines automatically, without the API key setup. If you want to see it on your actual case files, have questions about the pipeline, or want to discuss a custom build, book a call.
Book a callSee demo
← OlderExtract Every Key Date from a Contract with AI
Newer →Summarize a Deposition Transcript with AI in Under a Minute