Skip to main content
Get in Touch
Back to Portfolio
Web ApplicationsReactNode.jsPostgreSQL

CRM System

A custom CRM built from the ground up to manage customer interactions, sales pipelines, and automated follow-ups — replacing a patchwork of spreadsheets and disconnected tools.

ClientUK-Based SME (Confidential)
Duration14 weeks
StackReact, Node.js, Express, PostgreSQL, Redis, SendGrid, AWS EC2
CRM System

Results

−68%
Lead response time
100%
Pipeline visibility
~200/month
Manual follow-up emails eliminated
+22%
Deal close rate

The Challenge

The client, a UK-based professional services firm with 30 staff, was running their entire sales operation from Excel. Leads fell through the cracks, follow-up emails were sent manually, and there was no visibility over pipeline health. Off-the-shelf CRMs like Salesforce and HubSpot were either too expensive or too generic for their workflow.

Our Solution

We designed and built a bespoke CRM tailored precisely to the client's sales process. A Kanban-style pipeline gave managers real-time visibility. Automated email sequences triggered by deal stage changes replaced manual follow-ups. A reporting dashboard surfaced conversion rates, average deal length, and revenue forecasts. The system integrated with their existing Microsoft 365 environment via the Graph API.

The Problem with Generic CRMs

Every major CRM assumes a certain sales model. The client's process did not match. They needed a non-linear pipeline where deals could re-enter earlier stages, custom fields that matched their industry terminology, and automated sequences that paused when a client replied — something most platforms charge enterprise tier for.

Pipeline Design

We ran discovery workshops with the sales team before writing a line of code. The resulting pipeline had seven stages, each with configurable entry and exit criteria. Drag-and-drop cards used optimistic UI updates for a snappy experience. Deal history, call notes, and email threads were all visible in a single timeline view per contact.

Automation Engine

A Node.js background worker processed automation rules on a queue. When a deal moved to 'Proposal Sent', the system automatically scheduled a follow-up email for 48 hours later via SendGrid — but only if no inbound reply had been received. If the contact replied, the sequence paused and the account manager was notified by Slack webhook.

Reporting

The management dashboard pulled live data from PostgreSQL materialized views, refreshed every 15 minutes. Charts showed pipeline value by stage, win/loss ratios by team member, and a rolling 90-day revenue forecast. CSV exports gave the finance team the data they needed without requiring system access.

Outcome

Three months after go-live, the client reported a 22% increase in deal close rate, attributed largely to consistent and timely follow-up. The sales manager described it as the first tool that actually matched how their team worked, rather than forcing the team to adapt.

Have a similar project in mind?

Tell us what you are building. We will give you an honest assessment and a free quote.

Start a Conversation