A custom Laravel 11 CRM and client portal that took a tax & compliance firm off spreadsheets, WhatsApp and paper approvals — and now runs their office every day.
The Hook
A tax and compliance consultancy doesn't lose clients because the work is bad. It loses them in the gaps: a lead sitting in someone's WhatsApp, a task that lived in one partner's head, an expense waiting for a signature on a desk. CorpTax Solutions was growing, and every new client made those gaps wider.
The founders wanted one place where a lead becomes a client, a client becomes a set of tasks, and every payment in or out is visible — with the right people seeing the right things. Not a generic CRM with 300 unused features. Their process, in software.
Before: four disconnected tools. After: one portal with the full client and finance history.
Lead to client to approved expense — the portal in 20 seconds (illustrative data).
The Challenge
Why "just use a spreadsheet" stopped working
Leads arrived by phone, email and WhatsApp, and were tracked in whichever sheet the person who answered had open. Follow-ups were missed, and nobody could say how many deals were live.
Client records, filing deadlines and task ownership lived in separate files. When someone was off, their clients were effectively invisible.
Every expense and payment needed a paper approval. Turnaround depended on who was in the office, and there was no audit trail once the paper was filed.
The founders had zero real-time financial visibility — the numbers were assembled by hand at month end.
Off-the-shelf CRMs were priced per seat, built for sales teams, and would still leave finance and approvals outside the system.
The brief I set myself: build the system around how the firm actually works, put finance and approvals inside it with strict role-based visibility, and make it fast enough that staff prefer it to WhatsApp.
The Solution
1 · Operations Pipeline — lead to client to task, without re-typing
Every lead enters one pipeline. When it converts, the client record is created from the lead automatically, with the services they signed up for turned into recurring tasks and deadlines.
Kanban pipeline with stages the firm defined, not a template.
Convert-to-client in one click; nothing is re-entered.
Tasks carry owner, due date, client and status, with reassignment when someone is away.
Every change is logged against the client, so the full history is one scroll.
The operations pipeline — leads, conversion and task boards on one screen.
2 · Finance Dashboard with Approval Trails — gated by role
Money is the part most CRMs leave out. Here it's the centre. Income, expenses and client balances are recorded against the client, and any spend above the firm's threshold goes through an approval flow — with the trail kept forever.
Laravel gates decide who sees what: staff see their tasks, managers see their team's finance, founders see everything.
Approvals are requested, approved or rejected in the portal — no paper, no chasing.
Every approval stores who, when and why. Audit questions take seconds, not a search through folders.
Founders get live totals instead of a month-end reconstruction.
Finance dashboard with the approval trail — visible only to the roles that should see it.
3 · Real-Time Chat, Notifications and an AI Assistant
The reason people used WhatsApp was speed. So the portal had to be as fast.
Firebase real-time chat inside each client record, so conversations stay attached to the work.
Push notifications for approvals, assignments and deadlines.
An AI chatbot on custom LLM APIs that answers staff questions from the firm's own data — "what's pending for this client?", "who approved this?" — without opening five screens.
Laravel 11 core, MySQL for records, Firebase for real-time chat and push, LLM APIs for the assistant.
Built as the firm's system of record, not a demo
Role-based access enforced server-side with Laravel policies and gates — not hidden buttons.
Every financial action is append-only with an audit log.
Modular services layer so new workflows (a new service line, a new approval rule) are added without touching the core.
The Engineering
Laravel 11 / PHP — policies and gates for role visibility, queued jobs for notifications and reports, form requests validating every boundary.
MySQL — normalised client, task and finance schema with an append-only audit table.
Firebase — Realtime Database for in-portal chat, Cloud Messaging for push to staff devices.
LLM APIs — a scoped assistant that only reads what the requesting user's role allows.
JavaScript front-end — fast, form-heavy screens built for staff who live in the portal all day.
The Outcome
5.00 verified client review on Contra — "it runs our office every day."
One portal replaced spreadsheets, WhatsApp threads, paper approvals and month-end reconstruction.
Full client and finance history in one secure place, visible by role.
Paperwork eliminated; approval turnaround no longer depends on who's in the office.
Lead tracking automated — every lead is visible from first contact to conversion.
Verified client review on Contra: 5.00 — "Reliable, fast to respond, and he understood our workflow better than we had it written down."
Let's build yours
If your firm — or your client's — is running on spreadsheets, chat threads and paper sign-offs, this is the kind of system I build: a custom CRM and client portal around your real process, with finance, approvals and role-based access inside it, shipped on Laravel or Next.js.
I take on a small number of business-system builds at a time. Message me on Contra with the workflow you're trying to replace, and I'll reply within a few hours with how I'd approach it.