Introduction
Legal document review consumes enormous amounts of billable hours. A partner spends forty minutes reading through a contract, a junior associate makes a summary, it gets reviewed again, and finally a client receives a three-page explanation of what could have been extracted in ten minutes. The repetition is inefficient and the manual handoff points introduce errors and delays.
Most law firms still handle this process through email attachment chains and shared drives. Someone downloads a PDF, reads it manually or uses a basic tool, copies key points into a document, and sends it to the next person. Each step represents friction, and friction costs money. If you handle even a modest volume of document reviews, a workflow that removes these handoffs will recover its costs within weeks.
This guide shows you how to connect three specific AI tools into a complete system: one that ingests a legal document, extracts and summarises its contents, and generates a polished client-ready summary, all without anyone touching a keyboard between the upload and the final output.
The Automated Workflow
The workflow operates in four stages: document intake, content extraction, intelligent summarisation, and formatted output. We'll use n8n as the orchestration platform because it handles file uploads cleanly, supports all three tools through their APIs, and gives you good visibility into where things fail.
Here's the data flow:
-
A PDF arrives (via email, cloud storage webhook, or manual upload to n8n).
-
Chat with PDF by Copilotus reads and extracts the document's key sections.
-
Resoomer AI compresses the extracted content into essential points.
-
Wordsmith AI rewrites the summary in plain language suitable for client communication.
-
The final output lands in your preferred destination: email, Google Drive, Slack, or a database.
Setting up n8n
Create a new workflow in n8n and add a Webhook node to receive incoming documents. This gives you a URL that can be triggered from elsewhere or called directly by your document management system.
POST https://your-n8n-instance.com/webhook/legal-review
Configure the webhook to accept multipart form data with a file parameter. This allows you to upload PDFs directly or have them sent programmatically.
Next, add an HTTP Request node that will pass the document to Chat with PDF by Copilotus. You'll need an API key from Copilotus; retrieve this from your account settings.
POST https://api.copilotus.ai/v1/documents/upload
Headers:
Authorization: Bearer YOUR_COPILOTUS_API_KEY
Content-Type: application/json
Body:
{
"file_url": "{{ $node.Webhook.json.file_url }}",
"document_type": "legal_contract",
"extract_sections": ["terms", "obligations", "termination", "liability"]
}
The Copilotus endpoint returns a document_id and extracted content. Store this for the next step.
{
"document_id": "doc_abc123xyz",
"extracted_text": "Party A agrees to provide services...",
"key_sections": {
"terms": "36 months from effective date",
"obligations": "Service Level Agreement 99.9% uptime",
"liability": "Limited to fees paid in prior 12 months"
}
}
Extraction and Summarisation
Add a second HTTP Request node targeting Resoomer AI. This tool takes the extracted text and produces a compressed version that retains essential information.
POST https://api.resoomer.com/api/summarize
Headers:
Authorization: Bearer YOUR_RESOOMER_API_KEY
Content-Type: application/json
Body:
{
"text": "{{ $node.Copilotus_Extract.json.extracted_text }}",
"summary_level": "medium",
"language": "en",
"output_format": "bullet_points"
}
Resoomer returns a structured summary with key topics and their importance scores. This becomes your middle layer: compressed but still technical.
{
"summary": "Agreement for 36-month service engagement. Provider commits to 99.9% uptime SLA. Liability capped at 12 months of fees. Termination allowed with 90 days notice.",
"topics": [
{
"topic": "Duration and Renewal",
"importance": 0.95,
"content": "36 months from effective date"
},
{
"topic": "Service Levels",
"importance": 0.92,
"content": "99.9% uptime required"
}
]
}
Client-Ready Generation
Now add a third HTTP Request node for Wordsmith AI. This service transforms technical summaries into accessible language suitable for your clients.
POST https://api.wordsmithapi.com/generate
Headers:
Authorization: Bearer YOUR_WORDSMITH_API_KEY
Content-Type: application/json
Body:
{
"input_text": "{{ $node.Resoomer_Summary.json.summary }}",
"tone": "professional_accessible",
"length": "short",
"audience": "non_technical",
"style_guide": {
"avoid_jargon": true,
"explain_terms": true,
"use_examples": false
}
}
Wordsmith returns polished prose ready to send to a client without further editing.
{
"output": "This 3-year service agreement sets clear expectations for both parties. The service provider guarantees their system will be available 99.9% of the time, meaning minimal downtime. If disputes arise about the service, financial responsibility is limited to the fees you've paid over the past year, protecting both parties from excessive claims.",
"reading_grade": 8.2,
"estimated_read_time": "2 minutes"
}
Delivery and Storage
Add a final node to deliver your results. For most law firms, this means sending an email to a designated reviewer or client, plus saving the output somewhere searchable. Use n8n's Gmail or SendGrid node for email, and Google Drive or a database node for storage.
POST https://api.sendgrid.com/v3/mail/send
Headers:
Authorization: Bearer YOUR_SENDGRID_API_KEY
Content-Type: application/json
Body:
{
"personalizations": [
{
"to": [{"email": "{{ $node.Webhook.json.recipient_email }}"}],
"subject": "Legal Document Summary: {{ $node.Webhook.json.document_name }}"
}
],
"from": {"email": "legal-automation@yourfirm.com"},
"content": [
{
"type": "text/html",
"value": "<h2>Document Summary</h2><p>{{ $node.Wordsmith_Output.json.output }}</p>"
}
]
}
For storage, add a Google Drive node to save both the original PDF and the generated summary as a text file.
Create file in Google Drive:
- Folder: /Legal Document Reviews/2024
- Filename: {{ $node.Webhook.json.document_name }}_summary.txt
- Content: {{ $node.Wordsmith_Output.json.output }}
This completes the chain. A document uploaded to the webhook is processed entirely without human intervention until the summary arrives ready for review or client delivery.
Alternative:
Using Zapier or Make
If you prefer Zapier's simpler interface, the logic remains identical. Create a Zap with these steps:
-
Trigger: Dropbox file added to a specific folder.
-
Action: Call Copilotus API using a Webhook step.
-
Action: Call Resoomer API using a second Webhook step.
-
Action: Call Wordsmith API using a third Webhook step.
-
Action: Send email with the output.
Make (Integromat) works similarly but offers more granular flow control and better error handling at the free tier. The exact node names differ, but the API calls remain the same.
The Manual Alternative
If you want tighter control over specific summaries, or if you handle only a few documents monthly, skip orchestration entirely and use the tools individually.
Upload a PDF directly to Chat with PDF by Copilotus's web interface, review the extracted sections, then copy the relevant text. Paste that into Resoomer's web app, adjust the summarisation level, and copy the output. Finally, paste the Resoomer summary into Wordsmith's interface and adjust the tone and audience parameters until the output matches your preference.
This takes roughly fifteen to twenty minutes per document. It's slower than automation, but it gives you a chance to catch edge cases where the tools misinterpret a clause or miss important context. For high-value contracts or unusual scenarios, this hands-on approach is often worth the time.
Many firms use a hybrid model: automation for routine NDAs and service agreements, manual review for complex M&A documents or heavily negotiated terms.
Pro Tips
Rate Limiting and Quotas
Copilotus allows 100 API calls per day on their standard plan. If you're processing more than five documents daily, you'll hit this limit. Monitor your usage in the Copilotus dashboard and either upgrade to their Professional plan (250 calls daily) or stagger submissions across days. In n8n, add a Rate Limit node between your webhook and Copilotus to queue excess requests automatically.
Rate Limit node settings:
- Max requests per minute: 5
- Queue requests: enabled
Error Handling
One of the three APIs will eventually time out or return unexpected JSON. Wrap each HTTP Request node with an Error node. When Copilotus fails, send yourself a Slack message with the document name and failure reason, rather than leaving the workflow hanging.
Error node:
- Trigger on: error in HTTP Request (Copilotus Extract)
- Action: Send Slack message
- Message: "PDF extraction failed for {{ $node.Webhook.json.document_name }}. Manual review required."
Cost Optimisation
Resoomer's API charges by the number of characters summarised. If you're processing large documents, compress them first with Copilotus's extraction to key sections only. This reduces the text Resoomer receives by 60–70%, cutting costs proportionally.
Copilotus request:
"extract_sections": ["terms", "obligations", "termination", "liability"]
By extracting only these four sections instead of passing the full document, you'll send roughly 3,000 characters to Resoomer instead of 12,000.
Testing and Monitoring
Before running this on real client documents, test the entire workflow with sample PDFs. Capture the outputs at each stage and inspect them manually. Does Copilotus extract the right sections? Does Resoomer preserve the key facts? Does Wordsmith's output read naturally? Adjust API parameters if results fall short.
Once in production, log every run to a spreadsheet. Track the document name, submission time, completion time, and any errors. This helps you spot patterns: perhaps Wordsmith struggles with technical jargon from certain document types, or Resoomer occasionally drops important dates. Use these observations to refine your prompts and parameters.
Handling PDFs from Scanned Documents
If your incoming PDFs are scanned images rather than text-based, they'll fail at Copilotus because the API can't extract text. Use an OCR tool first. Many orchestration platforms offer built-in OCR, or integrate a service like CloudConvert or Adobe PDF Services before passing the document to Copilotus.
n8n workflow with OCR:
1. Webhook receives file
2. CloudConvert node: convert PDF to searchable PDF (OCR)
3. Copilotus node: extract text from OCR'd PDF
4. Resoomer and Wordsmith follow as normal
Cost Breakdown
| Tool | Plan Needed | Monthly Cost | Notes |
|---|---|---|---|
| Chat with PDF by Copilotus | Professional (250 API calls/day) | £25 | Essential for extraction. Standard plan sufficient if under 100 calls/day. |
| Resoomer AI | API Plan (pay per use) | £15–40 | Varies with document volume. Average 5p per 1,000 characters summarised. |
| Wordsmith AI | Starter (10,000 API calls/month) | £20 | Covers roughly 50 documents monthly at average length. |
| n8n (self-hosted) | Free (open source) | £0 | Alternative: cloud n8n at £20/month for higher reliability. |
| SendGrid or Gmail API | Free tier or Basic (£20) | £0–20 | Free tier sufficient for under 100 emails daily. |
| Google Drive API | Free (included with Google Workspace) | £0–60 | Cost depends on your existing Workspace subscription. |
| Total | £60–165 | Scales with document volume; fixed costs around £60/month. |
For a small practice processing ten documents monthly, the total cost is roughly £80. At billing rates of £150 per hour, even a 50% time saving per document pays for the system. Larger firms processing fifty documents monthly save considerably more.
The workflow pays for itself almost immediately.