Retire the admin panel. Keep everything it could do.
Ask who this account is and four systems answer differently. Ask support to fix it and an admin page writes straight to production.
The systems you already run, the objects your product declares, and the work your team gets back.
These marks name the kinds of system a source declaration reaches — a picture of the ecosystem, not a fixed menu, and nothing here implies a partnership.
Stop patching production by hand. Declare the change.
Four answers become one record
Product database, billing, CRM and support desk join into one account object with declared links between them.
The admin page, declared
Every write that page could do becomes a named Action: declared effects, one author, a review rule.
One definition of churn risk
Churn risk has one definition, in a Function that hands back the figure with the rows it counted.
What teams build. On day one.
Four places this work turns into declared objects, governed reads, and reviewed changes.
Account lookup
One Function answers who this account is — plan, seats, usage, open tickets, unpaid invoices — instead of four systems answering their own part.
Plan changes
Extending a trial or moving a plan stops being a database update: past your threshold, the requester runs the Action but cannot approve it.
Usage against billing
Compare metered usage with what was billed as a governed read with the records attached, instead of the quarterly export somebody rebuilds by hand.
Incident follow-up
After an outage, a Function lists the accounts affected and their commitments; issuing the credits is one reviewed Action that records each.
How it runs. End to end.
The same path every product takes: connect what exists, declare what it means, then publish the reads and the changes.
- 01
Connect the systems you already ship with
Product database, billing, CRM, support desk: each becomes a read-only source captured on a schedule, so an answer is as of the last pull, not this second.
- 02
Declare the customer your company argues about
Account, workspace, subscription, seat and the links between them are modelled once, in product source that goes through review like the rest of your code.
- 03
Publish the reads and the writes
Entitlement and health become named Functions; credits and plan moves become Actions with declared effects. Your internal app, your team and your agents call the same ones.
- 04
Let agents work inside the same limits
An agent working your support queue gets the same Functions and Actions your team does — no database credential of its own, and no authority you lack.
Common questions.
A warehouse answers questions and cannot safely change anything, so the change still happens in the admin page. Here the read and the write are declared in one model, and each answer names the capture it came from. It does not replace the warehouse for analytics — keep your reporting there.
It will if nobody owns it. The model sits in product source beside your application code and changes through review, which is a commitment rather than a free lunch. Model the handful of objects your teams argue about and leave the rest in the systems that own them.
Review is a rule on each Action, not a setting on the platform. Declare which changes need a different approver — a plan move above a threshold, a credit over a limit — and let the routine ones run the moment support asks. Both leave the same record.
Bring us a process.
We'll build it with you.
A business process, the systems it touches, and the rules it needs to follow.