← Work
02·Client system

U&I Renewables CRM

£580k+ of customer revenue managed through a bespoke CRM.

BUILD verified 20 Jun 2026
979
customers
1,043
jobs tracked
805
invoices raised
£580k+
revenue managed

The problem

U&I Renewables install heat pumps, solar, batteries and cylinders - and ran the whole operation on spreadsheets and mail-merge. Customers sat in one workbook, jobs in another, invoices were assembled by hand, and the business actually bills under three different identities (U&I, UK Cylinders and Telford) that had to be untangled by eye. Website enquiries landed in an inbox and got copied across manually; cashflow was worked out by hand; field engineers rang the office for job details. It all worked when the business was smaller. By the time they had hundreds of customers, it was the bottleneck - and every hand-off was a chance to drop something.

Before and after

BeforeAfter
Customers, jobs and invoices in separate spreadsheetsOne system with shared records and live status
Invoices built by mail-merge, VAT worked out by handBranded per-account-type PDFs, VAT auto-calculated, emailed from the record
Three billing identities tangled across workbooksAccount type on every customer, flowing into invoicing, calendar and statements
Website enquiries copied from an inboxForms feed a drag-and-drop sales pipeline automatically
Cashflow worked out manuallyLive 12-month forecast with a per-line monthly breakdown
Engineers ringing the office for detailsTheir own role-based view: calendar, jobs, servicing, attachments, holidays

The build

I built U&I a single, consolidated web app that covers the whole operation. A sales pipeline - fed directly by their website's enquiry forms - where dragging a lead through the stages creates the real quote, job and invoice behind it. Customer profiles that pull together everything linked to a person. Quoting with automatic VAT, and invoicing that knows the difference between a U&I, UK Cylinders and Telford bill - each with its own template, terms, numbering and branded PDF - including part-payment tracking. Purchase orders wired into an expense ledger, a service book that flags work coming due, a multi-engineer calendar that won't let you book someone who's on holiday, a live cashflow forecast, printable statements, staff and holiday management, file attachments on jobs and leads, global search, and an in-app notification bell that lets the team "claim" a follow-up so nobody gets chased twice. Their existing spreadsheets weren't thrown away - they were imported, so the system started life already knowing the business.

The result

The system holds 979 customers, 1,043 jobs and 805 invoices - over £580k of invoiced revenue - plus 274 service records and a 765-line expense ledger, all carried across from U&I's own data. Website enquiries now arrive in the pipeline on their own, and office staff, field engineers and management each get the view their role needs. It's in active development, shaped by the team's feedback as it takes over more of the day-to-day.

The human bit

The job was never to make U&I learn new software - it was to meet them where they already were. The migration carried their real customers, jobs and money across, so day one felt familiar rather than like starting over. And nothing here was specced once and frozen: every change ships to a review system they can open within hours, so the CRM is shaped by their actual feedback - right down to which engineer shows up in which colour on the calendar.

Under the hood

Next.js 16 (App Router, Turbopack), React 19, TypeScript and Tailwind v4 - one consolidated app rather than a separate API, chosen to deploy cleanly on the client's shared host. Prisma 7 on MySQL via a driver adapter. JWT sessions (jose + bcrypt) with role-based middleware gating office, field and admin users. Branded A4 documents render through the browser's own print engine - no headless Chrome needed on the host - and uploaded photos are auto-compressed to WebP. Brevo for transactional email, SheetJS for the Excel import, and a public webhook that ingests enquiries from the marketing site's forms. Runs under PM2 behind LiteSpeed at uni.gairware.com. Status: in active development.

Need something like this?