Services · Multi-tenant backend engineering
Multi-tenant backends that keep tenants apart
One codebase, many tenants, and no way for one of them to see another's data. Tenant-scoped queries, per-resource RBAC, configurable forms, and the audit trail a regulated customer will ask for.
Who it is for
The teams this suits
- SaaS teams adding tenants faster than the data model was designed for
- Products selling to regulated customers who ask for audit trails and per-role permissions
- Platforms where each customer wants their own forms and fields without a deployment
Deliverables
What you get
- Tenant scoping enforced at the query level, not left to each endpoint to remember
- RBAC with per-resource CRUD, APPROVE, and REJECT permissions, checked in route guards
- A configurable form engine on PostgreSQL JSONB, with conditional fields and tenant overrides
- Revision snapshots and field-level diffs, so every change carries an audit trail
Proof
Where I have done it
See tenant-scoped RBAC and a JSONB form engine serving 24 cities and counties
Building RAG over twenty years of grant compliance
How I built retrieval-augmented answers over a multi-tenant compliance platform — tenant-scoped retrieval, record-shaped chunks, pgvector plus Elasticsearch, Cohere reranking on Bedrock, and citations that are checked before they are shown.
What a JSONB form engine cost us
Notes on backing a multi-tenant form engine with PostgreSQL JSONB — where it bought configuration without deployments, and where it quietly bought a sequential scan.
Boundaries
What this is not
- General staff augmentation or open-ended long-term support
- Pure front-end work
- Work with no agreed target at the end of it
Questions
Before you write
Can tenants configure forms without a deployment?
That is what the Balio form engine does: agencies configure conditional fields and tenant overrides themselves. The cost is that anything you filter on needs an expression index or a real column.
Can you work inside our existing codebase?
Usually, yes. Most of this work is inside a codebase someone else owns, alongside engineers who will keep it after I leave.
What stack do you work in?
Node and TypeScript with NestJS and Express, PostgreSQL and MySQL, Elasticsearch, AWS, Docker. Python where parsing or migration is the job.
Next
Tell me what is under strain
The system, the problem, and the constraints. I read everything and reply myself, usually within a day.