Legal Document Automation
A 25-attorney Paris law firm was drafting the same 14 contract types repeatedly — NDAs, service agreements, shareholder agreements — by copying from previous files and manually editing. Junior associates spent 30–40% of billable hours on document production rather than legal analysis. Partners wanted to reclaim that time and standardise clause libraries.
Build something similar →The Challenge
A 25-attorney Paris law firm was drafting the same 14 contract types repeatedly — NDAs, service agreements, shareholder agreements — by copying from previous files and manually editing. Junior associates spent 30–40% of billable hours on document production rather than legal analysis. Partners wanted to reclaim that time and standardise clause libraries.
Our Solution
We built a WeWeb intake form that collects deal parameters (parties, governing law, payment terms, special clauses). Xano processes the form submission against a clause library stored in Supabase, assembles the document structure as JSON, and triggers a Make.com scenario that merges the JSON into a Google Docs template, converts to PDF, stores in Supabase Storage, and dispatches a Docusign envelope. Attorneys receive a signing link within 90 seconds of form submission.
The clause library architecture
The clause library is the heart of the system. Each clause is a row in Supabase with a type, jurisdiction tags, risk_level, and the clause text with placeholder tokens (e.g. {{party_a_name}}). Xano's document assembly endpoint takes the form submission, runs a rule engine that selects the appropriate clauses based on contract type and deal parameters, orders them according to a structure template, and substitutes all placeholder tokens. The rule engine is configured through a WeWeb admin panel — attorneys can add new clauses, modify selection rules, and test the output without touching code.
Make.com as the document production pipeline
Once Xano returns the assembled clause list, a Make.com scenario takes over: it calls the Google Docs API to copy a master template into a client folder, makes all text substitutions via batch requests (a single batch call is faster than individual edits), exports the Doc as PDF, and uploads to Supabase Storage. This decoupled approach means if the firm wants to switch from Google Docs to Word in the future, only the Make.com scenario changes — the Xano assembly engine is format-agnostic.
Docusign integration and signing workflows
Different contract types have different signing orders. A shareholder agreement might require 6 signatories in a specific sequence; an NDA might be simultaneous. We modelled signing workflows as Supabase configuration records — the Make.com scenario reads the signing_order config for the contract type and creates the Docusign envelope with the appropriate routing. Completed envelopes trigger a Docusign Connect webhook to Xano, which updates the contract status and notifies the originating associate via Resend.
Adoption and outcomes
Adoption was the main risk — attorneys are cautious about changing established workflows. We ran a 2-week pilot with 3 associates generating real NDAs alongside their manual process, comparing clause accuracy. The automated output matched the manual version in 98% of cases; the 2% differences were improvements (the system caught outdated boilerplate the manual process had perpetuated for years). After the pilot, all 14 contract types were migrated. The firm now generates 300+ contracts monthly at negligible incremental cost.
Features delivered
Technology stack
Want similar results?
Book a free call and we'll scope your project and give you a fixed quote within 48h.
Get a free quote →Our junior associates went from spending Tuesday afternoons copying NDAs to doing actual legal work. The partners noticed the quality improvement within the first week.Maître François D.Managing Partner, Corporate Law Firm (Paris)
Ready to build yours?
Every project starts with a free 30-minute call. We'll scope your idea, answer your questions, and give you a fixed quote.
Book a free call →