INTERNAL[CRM]2026
CRM Platform
An internal CRM that keeps sales and support organised: quotes and invoices, who can see what, and automatic links to the company's other products. Internal tool, so described at a high level.
APIs + webhooks
Integrations
Signed, deduplicated events between products
Person to department
Access Control
Permissions at individual, team and department level, all audited
1-click
Quote → Invoice
With validation and PDF output
Engineered With
Next.jsTypeScriptNode.jsMongoDBGmail APIPDF generationWebhooks
The Problem & Context
Sales and support needed quotes and invoices that could be configured instead of hand-built, access that matched how the company is organised, and a dependable feed of events from the company's products so the CRM reflects reality without manual entry.
The Messy Part (Behind the Build)
A CRM holds live customer data, so every change has to be safe by default: previews before scripts touch production, immediate loss of access for deactivated users, and integrations that stay correct when events arrive twice or out of order.
Architecture & Design Decisions
A Node.js and TypeScript application with the same self-hosted foundation as the other platforms. Quotations convert to invoices with validation and PDF output; access is granted at individual, team and department level with audit trails; and signed webhooks plus a small API connect it to MarketBaaz in both directions.
What I built
- Quotations and invoices: configurable line items, taxes, discounts and currencies, reusable templates, PDF download and quote-to-invoice conversion with validation.
- Access control: permissions across individuals, teams, sub-departments and departments, with audit trails.
- Integrations: Gmail integration, and a signed API and webhook layer that connects the CRM to MarketBaaz, so a contact can be issued MarketBaaz access automatically and product events flow back.
- Safety and developer experience: previews and confirmations for data-changing scripts, and an isolated one-command local setup.
Note
This is an internal company system built by a two-person team, with me as the senior developer. There is no public link and the description is deliberately general.
What I'd Do Differently Today
I would write the integration contract and its tests before building either side. Several fixes came from discovering mismatches between the two systems after the fact.
Related Work & Systems
PERSONAL
BusinessOS
Commercial-grade financial operating system for SMEs with ledger-first accounting, immutable transaction journals, integer minor-unit money calculations, and multi-tenant audit logs.
PROFESSIONAL
Microsoft Teams & Calendar Engine
Hiding deep Microsoft Graph API complexity behind an automated calendar & meeting sync engine for 20K+ EdTech users.