Context
A financial services business needed to take will drafting off paper. Advisors were completing wills in Word documents, printing them for signature, and storing scans in a folder structure that only one person fully understood.
The risk was obvious to everyone. Nobody had built the alternative.
The problem
Wills are not a CRUD app.
A will has legal structure — beneficiaries, bequests, residue, executors, guardians, conditions — and those parts interact. Change a beneficiary and three other clauses may become invalid. The document has to be generated correctly, versioned so that an earlier will can be produced years later, and access-controlled so that an advisor sees their clients and only their clients.
And it had to be usable by advisors who were not technical and were not enthusiastic about the change.
What I did
I modelled the will itself rather than the form. Clauses became structured data with their own validation rules, so the document is generated from the model and the model is what gets versioned. Every material change writes a new immutable version with a full audit trail — who changed what, when, from where.
The interface was Angular, deliberately: the clause builder needed real interactivity, and a page-reload-per-step flow would have been abandoned by the advisors inside a week. The rest was server-rendered PHP, because it didn’t need to be anything cleverer.
Role-based access ran three levels deep — advisor, branch, administrator — with the executor handover as a separate, tightly scoped flow. PDF generation was templated so the legal team could adjust wording without a developer.
The result
The platform went from first conversation to production in six months, and replaced the paper process entirely.
I then maintained it for four years. In that time it never needed a rewrite, never had a data loss incident, and absorbed two rounds of legal wording changes and one full rebrand without structural change.
At the end of that period the business sold the system to an insurance consortium. It was bought as a working asset, with its code and its four-year operating history — which is the only endorsement of a build that actually counts.

