Status · updated on every visit
What is running, and what we have not proved
The top half is the ordinary question: is the service up. The bottom half is the one that matters to a licensed DPCO — every limit this product still has, read from the code that decides it, so that nobody here can soften it in a copy edit.
Service
Measured when you loaded this page. A round trip to the database, the age of the worker’s heartbeat, and the depth of the job queues — not the presence of a configuration value, which proves nothing about availability.
All three probes answering.
Database
A real query, out and back.
Up — answering
Background worker
Reports, exports and the monthly billing sweep run here.
Up — heartbeat current
Job queues
Waiting and failed jobs across the active queues.
Up — clear
Email delivery
Signing up and signing in both work by a link sent to your inbox. Without a mailer, neither is possible.
Up — configured
Probes run at 31 Aug 2026, 11:03:45 (West Africa Time).
What this product does not yet do
A DPCO is licensed personally against the NDPA. Buying our reading of a statute is a real risk, and the only honest way to sell it is to publish the edge of what we know. Every line below is read from the file named beside it — none of it is written down here, so none of it can be quietly improved.
Nigerian legal review
Waiting on counsel
No Nigerian lawyer has signed off the sanctions, the deadlines or the DCMI thresholds. We read GAID 2025 and the NDPA ourselves, from the Commission’s own PDF, and reading a statute correctly is not the same as being told by counsel that you read it correctly.
Read from lib/legal/ng/sanctions.ts — NG_REVIEW.verified
Monetary figures on screen
Waiting on counsel
Because the review is pending, no fine, no penalty band and no filing fee renders anywhere in the product. The questionnaire, the score and the remediation plan work without them.
Read from lib/legal/pack.ts — figuresPublishable()
NDPC licence verification
Not built
Nothing here has ever contacted the NDPC public register. A licence number is stored exactly as the firm typed it, and shown as declared. There is deliberately no function in this codebase that can mark one verified.
Read from lib/dpco/ndpc.ts — ndpcRegisterConfigured()
CAR filing fees
Waiting on counsel
Schedule 10’s EHL band B reads “5,000-2,500 data subjects” descending, and band A starts at 10,000 — so 5,000 to 9,999 falls in no band at all. A DPCO quoting the wrong fee eats the difference, so no filing fee is encoded until counsel resolves it.
Read from lib/legal/ng/dcmi.ts — CAR_FILING_FEES_ENCODED
The CAR audit questions
Not built
The five Parts and eleven lettered subsections of Schedule 2 are encoded with their citations. The roughly one hundred individual audit questions inside them are not reproduced, and the generator says so on the screen.
Read from lib/legal/ng/car-template.ts — CAR_QUESTIONS_TRANSCRIBED
Filing the return
Not built
We assemble and seal a Compliance Audit Return. We do not file it — art. 10(12) puts filing on the Commission’s own portal. When you record a filing here, you are recording your own statement of what you did.
Read from lib/dpco/car.ts — recordFiling() stores the firm’s own statement
The rate per active paying client
Not built
No rate is encoded. The counter runs, the month closes and the basis freezes; a period with no rate carries its count and no amount. Year one is free per licence, so this blocks nothing until month thirteen.
Read from lib/billing/ng/rate.ts — NG_DEFAULT_RATE_PER_ACTIVE_CLIENT_KOBO
Taking payment
Not built
No payment rail is configured. Nothing in this product can currently charge anyone, and the paid and invoiced states exist in the schema with nothing able to write them.
Read from lib/billing/ng/rate.ts — collectionRail()
The review, counted
17 questions for counsel to close, and 17 obligations of twenty still carrying no section number. An empty citation is a task; an invented one is a liability that reads exactly like a fact.
Capabilities, by maturity
5 available · 11 in pilot · 7 planned. A capability nobody can reach from a screen is planned, however well the code behind it runs.
The same thing, for a machine
Everything on this page is available as JSON at /api/status, so you can watch it without watching us.