Admin panels
Internal tooling with roles, permissions, audit logs and bulk operations.
- Engagement
- Fixed-scope build
- Typical timeline
- 5 weeks
- Starts with
- A list of the last fifty things support asked an engineer to do.
Support cannot correct a customer’s email address without asking an engineer to run a query. Two people get interrupted, no record of the change survives, and your production database sits one typo away from a difficult afternoon.
Support and operations solving problems without a developer.
What we build
Concrete artefacts, handed over and documented.
- 01
A role and permission matrix agreed with support, finance and engineering before anything gets built
- 02
The panel itself: search, view, edit, and the twenty operations your team currently requests by message
- 03
An audit log on every write, who, when, previous value, new value, readable without a developer
- 04
Bulk actions with a dry run that shows precisely which records will change before any of them do
- 05
Account impersonation with consent and a visible trail, so support can see what the customer sees
What changes
Engineers stop working as a help desk, which typically returns several hours a week to the roadmap
Every sensitive change carries a name and a timestamp
New support staff become useful without being given production database access
How it runs
- Week 1
01Catalogue the asks
We collect every request engineering received last quarter and sort it by frequency and by risk.
- Weeks 2–4
02Build
Frequent, low-risk operations first, so the panel is genuinely useful in its second week.
- Week 5
03Permissions and audit
Roles applied, destructive actions gated, and the audit log verified by breaking something deliberately in staging.
Chosen per project. Named here so you can see the shape of it.
- Next.js
- Prisma
- Postgres
- Keycloak
Questions we get asked
Tell us the outcome, not the tooling.
Send us the situation you are in. We will tell you which discipline it belongs to, what we would do first and what it costs, including when the answer is to wait.


