Product preview
Tracked
450+
Overdue
1
Entities
6
Illustrative interface, rebuilt for this page and restyled from the real product - not a live screenshot.
Client confidentiality notice
This is real work for a real client. Their obligations, entity names, licence numbers, and internal contacts are confidential, so every identifying detail below has been changed - the client is described only as a mid-market industrial and consumer-goods group, and no real entity name, government office, licence number, or contact appears anywhere on this page.
- ·Group and entity names have been replaced with generic sector descriptions.
- ·All licence numbers, government contact names, and phone numbers have been removed entirely - they never appear here, even in altered form.
- ·The dashboard's colour palette and card layout shown in this case study were restyled from the client's live system so no real screenshot or brand skin is reproduced.
- ·Every statistic above (obligation count, entity count) is representative of true scale, rounded and generalised rather than reported to the client's exact figures.
What this is
A group running food processing, real estate, and venture arms out of one holding structure had its compliance obligations - licences, insurance, statutory filings, trademarks, active legal matters - split across spreadsheets, inboxes, and the memory of whichever officer last handled a renewal. We built a single command centre that tracks every obligation across every entity, with an AI layer that reads the register the way a compliance officer would.
The challenge
Six entities under one group, each accumulating its own licences, insurance policies, statutory filings, and trademark registrations, with no shared system of record. Renewal dates lived in the personal calendars of whoever had originally filed the paperwork. When that person moved teams, the knowledge of what was due, and when, frequently moved with them. Two licences had lapsed in the eighteen months before the engagement began, discovered only when a counterparty asked to see them.
How we diagnosed it
How we looked
- 01Read every existing compliance record the group could produce - spreadsheets, email threads, and paper files - across all six entities, and reconciled them against each other to find the gaps.
- 02Interviewed the officer responsible for each of the eleven obligation categories separately, then compared their answers to what the documents actually showed.
- 03Traced the two lapsed licences discovered at intake back to their root cause, rather than treating them as isolated incidents.
- 04Mapped every renewal deadline the group had missed or nearly missed in the prior two years to find the pattern, not just the count.
What we found
- ·No single person could produce a complete list of the group's active obligations on request - the true list only existed by combining several people's partial records.
- ·Both lapsed licences had been correctly diarised by the officer who filed them originally - and lost when that officer changed roles eight months before the renewal date.
- ·A recurring statutory filing was being re-derived from scratch each period because the prior period's filing pack had been saved in a personal folder, not a shared one.
- ·Insurance sum-assured figures existed in three different documents with three different totals, none of which matched the actual policy schedule.
How we built it
01
Name every obligation, once
We catalogued the group's compliance surface end to end - eleven categories from licences and insurance to statutory filings, trademarks, and open legal matters - and gave every obligation a single owner, a single status, and a single next date, regardless of which entity or team originally created it.
02
Build the lifecycle, not just the list
A static register goes stale in a month. We modelled status transitions explicitly - active, pending renewal, expired, superseded - and built recurrence logic so a renewed filing automatically closes the prior period and opens the next one, with the full chain visible for audit.
03
Put review on a calendar, not on memory
A periodic event-review workflow now asks a named officer, on a schedule, to confirm nothing has changed on each obligation - and if something has, it spins up the correct follow-on filing automatically rather than waiting for someone to notice.
04
Layer AI on top of a clean register, not instead of one
Only once the register was structurally sound did we add the AI layer: gap detection against the group's own obligation history, a risk radar surfacing what is quietly overdue, natural-language search across the full register, and auto-drafted action plans for anything flagged.
What it does
Cross-entity compliance register
Licences, insurance, agreements, statutory filings, bank facilities, IT/data obligations, corporate filings, notices, trademarks, and active legal matters - eleven modules, one searchable register, scoped by entity.
Status and recurrence engine
Every obligation carries an explicit lifecycle status and, where relevant, a recurrence rule, so a renewed filing supersedes the old period cleanly instead of leaving two conflicting records behind.
Event Watch review workflow
A standing review cadence where a named reviewer confirms 'no change' or logs the event that occurred - with every confirmation timestamped into an audit trail rather than living in someone's inbox.
Financial exposure view
Sum-insured, vendor, and payment-frequency fields roll up into a live exposure dashboard, so the group can see its total insured and contractual exposure without reconstructing it from separate policy files.
Granular permissions by module and entity
Access is scoped both by module (who can see financials, who can edit filings, who can only view) and by entity, so a subsidiary's finance lead sees that subsidiary's obligations and nothing beyond it.
AI compliance assistant
Gap analysis against the group's own history, a risk radar for what's quietly overdue, auto-generated action plans, and natural-language search across the full register - all reading the same structured data the humans review.
Agent solutions deployed
Gap-detection agent
Compares the group's live register against its own historical obligation patterns and flags categories where an expected filing or renewal appears to be missing.
Risk-radar agent
Surfaces obligations that are quietly trending toward overdue - not yet expired, but past the point where the group's own history shows action should have started.
Action-plan agent
Drafts a first-pass remediation plan for any flagged obligation, naming the specific steps and typical lead time based on how the group has resolved similar items before.
Natural-language register search
Lets any authorised user ask a plain-English question about the register - 'what insurance renews in the next 60 days for the foods entity' - and get an answer sourced directly from the live data, not a static report.
Tech stack
- Structured compliance data model
- A relational schema purpose-built for the eleven obligation categories, their statuses, and their recurrence and supersession rules - not a generic ticketing system repurposed for compliance.
- Row-level access control
- Every read and write is scoped server-side by entity and module, so permission logic can't be bypassed from the client.
- AI assistant layer
- A dedicated reasoning layer over the register for gap detection, risk surfacing, and natural-language queries - built to cite the specific record behind any answer it gives.
- Full audit log
- Every status change, filing, and review confirmation is appended to an immutable log, visible to admins and exportable for external audit.
Outcome
- Obligations under active tracking
- 450+
- Lapsed licences since go-live
- 0
- Entities on one register
- 6 → 1 system
“We used to find out a licence had lapsed when a counterparty asked for it. Now the system tells us sixty days before it would have lapsed, and tells us who owns fixing it.”