One place to run clients, projects and the people between them.
A B2B operations platform for businesses that deliver work through partners and across many client sites. It combines an account CRM, a request workflow, project management with real scheduling, and a role-scoped knowledge base — behind one permission model.
This is a working demo, not a mockup. It is populated with a retail rollout scenario — chains, stores and in-store screens — as a worked example; the same structure fits any business that manages clients, sites and delivery teams.
Choose who to sign in as
Each role sees a genuinely different system. Sign in as two of them and compare the very same screen.
An approved request becomes a scheduled project in one step, carrying its account, contacts and context across.
Access registry with audit
Which platform account exists, for which client, in which environment — and a record written every time one is revealed.
Portfolio map
Delivery health across every territory, drilling down from country to partner to individual site.
Engineering notes
The source is private, so here are the decisions worth knowing about — each one is visible in the demo above.
Authorization in three layers
Middleware gates the route, every API handler re-checks the session server-side, and business rules live in named predicates rather than inline role checks. Read and write permissions are deliberately separate functions — so widening who can view the project portfolio can never accidentally grant everyone the ability to rewrite a plan.
Row-level scoping
Roles decide which screens you reach; scope decides which rows you see. An account executive is bound to a territory and a partner to their own organisation, expressed once as a query filter and applied at the data layer instead of being re-derived in each endpoint.
A real scheduling engine
Tasks link with finish-to-start, start-to-start, finish-to-finish and start-to-finish dependencies, with lag counted in working days so the planner skips weekends. Locking a baseline freezes the planned dates — after that, recalculation can only move forecasts.
Infrastructure that fails loudly
A production deployment refuses to boot if its database URL does not match the environment it claims to be. That guard exists because the opposite once happened silently, and a wrong-database incident is far cheaper as a failed deploy than as a support ticket.