The logical layer that lets a half-integrated insurer still answer one question consistently — model once, federate the data, generate insights anyway.
Generali Central can't wait for every branch and the Central Bank bancassurance channel to fully land on the TCS BaNCS core before it gets answers. The fix isn't one warehouse — it's a shared ontology (so everyone means the same thing) over a data mesh (each line owns its data as a product), with a semantic layer that federates them. Insights generate today; they just carry a confidence flag where a channel isn't on BaNCS yet.
Ten classes everything maps to. The Branch is the keystone: it's where line, leader, entity and zone reconcile.
The classes above are the cockpit's own vocabulary. This is the formal ontology behind them, read live from the governance repository: an Insurance Core Master built on the industry standards — ACORD NGDS, the OMG P&C data model and openIDL lines of business.
Class group: the ACORD Next-Generation Digital Standards (NGDS) API object model - policy, claim, party, coverage and underwriting exchange objects. Source: the public API Evangelist profile of ACORD (https://github.com/api-evangelist/acord); the full ACORD reference architecture remains member-licensed.
ACORD NGDS Address object
JSON Schema for an ACORD NGDS insurance claim object, representing a first notice of loss through claim settlement.
Unique internal claim identifier
Date the loss or incident occurred
Narrative description of the loss
Type of loss event One of: Collision, Theft, Fire, Water, Wind, Liability, Medical, Other.
Carrier-assigned claim number
This is the T-Box — formal classes and their standards references — read live from datagov_meta. The A-Box (the actual Generali instances: ₹5,548 Cr of premium across lines, channels and branches) stays in the reconciled SQLite book.
0% of premium is already branch-grain actual; the rest is read in place from legacy branch / bancassurance systems and reconciled — no big-bang migration required.
Every metric has one definition and a grain. The layer federates it across on-BaNCS and legacy lines, flagging where a value is allocated.
| Metric | Definition | Grain | How it federates across lines |
|---|---|---|---|
| Gross Written Premium | Σ premium written | branch · policy | actuals where on BaNCS; allocated from zone where not |
| Combined Ratio | (claims + commission + expense) ÷ NEP | line · entity | line P&Ls normalized to one chart of accounts |
| Net Earned Premium | premium earned net of reinsurance | line · policy | from TCS BaNCS across all lines |
| Loss ratio | net incurred claims ÷ NEP | line | federated — same formula, many sources |
| Claims settlement TAT | avg FNOL-to-settle days | line · branch | legacy / bancassurance feeds measured at zone grain, flagged |
| Net retention ratio | net earned ÷ gross written | line · treaty | mapped via canonical cession categories |
| Policy retention / renewal | renewals ÷ due for renewal | channel / customer | resolved across duplicate channel records |
Entity resolution matches legacy branch / line / channel codes to one canonical node — so the bancassurance data lines up with everything else.
Query reads each line's data product in place; the semantic layer maps native BaNCS / portal fields to canonical metrics.
Where a line reports at zone level, allocation disaggregates to branch on learned drivers and marks it an estimate with a confidence band.
Allocated parts must tie back to the source total; anomalies and duplicate channel / customer records & partners across lines are surfaced.
This is not theoretical — it's how this cockpit already works. The Story, Briefing and 360 views read the same governed metrics over on-BaNCS and legacy lines alike; 0% of the numbers are branch-grain actuals and the balance is BaNCS-allocated and labelled. As each line & channel lands on TCS BaNCS, its data product's grain rises and estimates flip to actuals — the mesh closes itself.