← All selected work

Case study / IPRA Suite

Make the commercial handoff traceable.

A CRM workflow that connects enquiry, quotation approval, signed agreements, and client creation.

My role

Product & full-stack implementation

Built with

Next.js · NestJS · PostgreSQL

Context

Internal platform; controlled workflow

Workflow diagram; no client data is shown.

01 / The problem

The workflow behind the request.

A commercial opportunity passes between reception, sales, approvers, and operations. If quotation revisions, issued documents, and signed agreements drift apart, the next team cannot reliably tell what was agreed.

02 / What I built

Connect the complete path.

I implemented the connected CRM journey: enquiry intake, qualification, quotation drafting and revision, approval, document generation, and signed-PDF upload. The API associates the signed file with the agreement and quotation snapshot, records its hash, and writes an audit event before the opportunity completes the client-conversion workflow.

Enquiry Approved quotation Signed agreement Canonical client

03 / Engineering decision

A tradeoff that shaped the system.

Make the signed agreement a server-enforced gate, rather than a checkbox in the interface. A convenient shortcut to “Won” is less useful if operations receives a client record without the accepted commercial scope.

The upload validates the PDF and file-size limit. The database keeps the file hash and linked revision snapshot, while organisation and role checks limit who can perform the transition. Draft recovery is scoped to the lead so unfinished work does not overwrite another opportunity.

04 / Result & evidence

What the implementation enables.

The workflow connects an issued quotation to a signed agreement and a canonical client record. Repository release notes document an authenticated production walkthrough of that CRM journey, including the audit event after signed upload.

Evidence and scope

The source includes server-side signed-agreement validation and audit logging. The September 2026 release notes record a specific CRM acceptance journey; this is not a claim that every module in the wider suite has completed production acceptance.

05 / What I learned

The lesson I take into the next build.

An exported PDF, a saved record, and a completed business handoff are three different things. Reliable software makes each transition explicit and preserves the evidence connecting them.