What it is
Kravios is the same domain as my internal tool, taken apart and rebuilt as something I can actually show people: a compliance operating platform for MAS-regulated fund managers. Every firm, person and document in the demo is invented. Every MAS form, deadline and notice number is real and was checked against primary sources rather than against my memory of them.
The split matters. The internal build holds live data and never leaves the building. Kravios is the argument, in working software, that the internal build is right.
How it works
The centre of it is the deadline engine. Obligations are computed from licence class and financial-year end: never hand-entered, never stored as a due date somebody typed. Overdue is derived from the clock. That decision is why 105 of the unit tests belong to that engine alone: leap years, quarter boundaries, financial-year-end variants, licence classes, firms licensed mid-year. If the engine is wrong, everything downstream is confidently wrong.
Around it sit the filing calendar, the registers (outsourcing with the materiality rule enforced server-side, conflicts, gifts and entertainment, PA dealing pre-clearance), a regulatory-change feed where nothing publishes without a named human approval enforced in the data layer, an attestation builder with separate LFMC and VCFM variants, and a dashboard whose health score explains every deduction it makes.
It is multi-tenant throughout: three seeded firms, one of which is a consultancy managing the other two. Cross-tenant isolation is proven by dedicated tests across every repository, in both the read and the write direction, because a leak on write is the one nobody writes a test for.
Details I’m pleased with
The document vault sniffs uploaded content rather than trusting extensions, stores files outside the web root, holds them for five years, and exports the lot as a ZIP with a manifest in one click.
Production guardrails live in code, not in a runbook: startup refuses to proceed with SQLite or demo identities in a production environment. The whole product runs fully offline: no keys, no external services.
The outsourcing register is the one I’d point at first: the materiality rule is enforced server-side, not left to memory.
Where it stands
333 unit tests plus Playwright end-to-end coverage. Roughly 33,700 lines across 402 files, built in about two weeks by an orchestrated team of around twenty specialised Claude Code agents working to a written brief.