Multi-Tenant Accounting CRM
A multi-module practice-management platform built for an Irish accounting & professional-services practice, replacing spreadsheets, a shared inbox and a patchwork of point tools with one system of record.
Work
Clients
Compliance
Finance
Revenue under mgmt.
€48.2k
Active notices
126
Active clients
184
New clients · 30d
+12
Notices received: last 12 weeks
Illustrative interface with fictitious sample data, shown in place of confidential client screens.
The problem
A growing practice was running client work across spreadsheets, a shared WhatsApp/email inbox and a patchwork of point tools. Nothing tracked where a client's filing actually stood, compliance documents (AML, GDPR, signed contracts) went stale unnoticed, and every client message needed a person to read, triage and route it by hand.
A multi-module platform
Rather than one screen, it's a suite of modules under one roof: an ops dashboard and command center, client records and a client-facing portal, payroll, a unified inbox, compliance tracking, Irish Revenue (ROS) notices, revenue and bank reconciliation, and a CRO/company-registry lookup, all sharing the same client and document data instead of living in separate tools.
Staff sign in through the practice's own Google Workspace / Microsoft 365 tenant (SSO), and routine communication is automated from there: deadline and missing-document reminders go out by email on a schedule, instead of someone remembering to chase them manually.
Unified inbox
4 openMarcos Silva
WhatsAppCan you confirm the VAT number?
Bot
09:41
Studio Nunes Cleaning
WhatsAppSent the receipts, thanks!
Human
09:12
Ana Ferreira
TeamsPayroll for July looks correct
Human
Yesterday
Dunphy Landscaping
WhatsAppWhen is the return due?
Bot
Yesterday
Unified inbox: illustrative interface with fictitious sample data.
Unified inbox & chatbot triage
WhatsApp (via 360dialog) and Microsoft Teams messages land in one inbox. A bot handles the first pass, confirming simple requests like a VAT number or a deadline, and hands off to a human the moment a conversation needs judgement, so nothing simple eats staff time and nothing that matters goes unhandled.
Client compliance
2 missing docsClient compliance tracking: illustrative interface with fictitious sample data.
Compliance, automated
Every client's AML, GDPR and contract status is tracked in one grid instead of a spreadsheet someone updates by hand. When something goes missing or expires, the system flags it and sends the reminder itself.
Under the hood
FastAPI over PostgreSQL, with Redis and Celery handling background jobs (reminders, document processing, inbox routing, sync tasks), self-hosted on Hetzner behind Caddy in Docker, with OAuth2/JWT auth and automated daily backups. Client-model separation is enforced at the data layer, not just the UI, so the same platform safely serves every client on the books.
Impact
Delivery status, compliance state and client conversations all live in one place instead of three. Reminder emails, document chasing and first-line chat triage now run themselves, freeing staff time for the work that actually needs a person.