Catch a broken insurer file the day it arrives
Why this matters to IIB. One wrong insurer file skews every IIB figure built on it. This page compares each file with the same insurer's last 12 months, says in plain words what looks wrong and drafts the note back to the insurer.
Every file is compared with the same insurer's last 12 months. A file is flagged when it looks very different from them, or when the file or its rows fail a must-pass check.
What a flag means. Rows that fail a must-pass check are held back on arrival and stay out of every figure. The rest of each file is already in the figures. So a decision here does not change any figure. It records whether to ask the insurer for a corrected file.
Flagged files, September 2026
| Insurer | File | Rows | How serious | What looks wrong | Unusual against all insurers | Decision |
|---|---|---|---|---|---|---|
| Insurer K | policies | 2,415 | High | 1,074 rows (44.5%) with premium outside the plausible range for the vehicle class. Those premiums are about 100 times the usual level, which looks like paise entered as rupees (+1 more) | 100% | |
| Insurer W | policies | 2,056 | High | 2.9% duplicate policy numbers, 60 rows (usually none) | 99% | |
| Insurer K | claims | 78 | Medium | Claim records down 45% against this insurer's usual level over the last 12 months (78 rows where about 142 were expected) | 93% |
Unusual against all insurers shows how odd the file looks next to every insurer's files. It only sorts the list and never flags a file on its own.
Insurer names are commercially sensitive. This role sees code names such as Insurer K. Code letters stay the same on every page.
How the checks work
Each measure in a file, such as blank values, duplicate numbers or the average premium, is compared with the same insurer's last 12 months. The check uses the median of those months and a robust spread, and a measure is flagged when its robust z-score passes 3.5. Blank, duplicate and out-of-range rates only count when they rise. Scores start once a file has 6 earlier months to compare with.
The number of rows is compared as this insurer's share of all insurers' rows that month. A festive or monsoon swing that moves every insurer together does not raise a flag.
How serious is high when 1% or more of a file's rows fail a must-pass check, 3 or more measures are unusual, or one has a z-score of 10 or more, which this page calls very unusual.
Unusual against all insurers is an IsolationForest rank from 0% to 100% within each file type, over every insurer's files that have 6 earlier months to compare with. The list is sorted by how serious, then by this rank.
File detail
Select a file in the list.
Why it was flagged
Columns that changed
Accept: the file is fine as it is. Hold: keep it open while you check. Return: ask the insurer for a corrected file. Every decision is logged with the role and time. A decision sends nothing by itself.
Accept, Hold and Return belong to Data Operations. Switch role to decide.
Replay over all 24 months: would these checks have caught the problems logged by hand?
These problems were built into the test data. The real test is a pilot on IIB's own issue log.
Problems logged by hand, and what the checks found
| Month | Insurer | File | Problem logged by hand | What the checks found | Caught |
|---|---|---|---|---|---|
| Oct 2025 | Insurer Q | policies | About 2.6% duplicate policy numbers | 2.5% duplicate policy numbers, 20 rows (usually none). | Caught |
| Nov 2025 | Insurer K | policies | state_code blank in about 18% of policy rows | State code blank in 17.5% of rows (usually none). | Caught |
| Nov 2025 | Insurer H | claims | Claims file about 33% below normal volume | Not flagged. The file had 9 rows where about 14 were expected. That is within this insurer's usual ups and downs. | Missed |
| Nov 2025 | Insurer I | policies | About 3.8% duplicate policy numbers | 3.7% duplicate policy numbers, 38 rows (usually none). | Caught |
| Feb 2026 | Insurer V | policies | File received 7 days after the due date | File arrived 7 days after the due date. | Caught |
| Apr 2026 | Insurer K | policies | File received 12 days after the due date | File arrived 12 days after the due date. | Caught |
| Apr 2026 | Insurer U | policies | Policies file about 43% below normal volume | Policy records down 43% against this insurer's usual level over the last 12 months (251 rows where about 437 were expected). | Caught |
| Jun 2026 | Insurer I | policies | About 4.0% of policy rows with premium out of range | 33 rows (3.9%) with premium outside the plausible range for the vehicle class. Those premiums are about 106 times the usual level, which looks like paise entered as rupees. Held back on arrival: 33 rows failed the premium check. |
Caught |
| Jul 2026 | Insurer A | policies | About 3.9% of policy rows with premium out of range | 17 rows (4.0%) with premium outside the plausible range for the vehicle class. Those premiums are about 130 times the usual level, which looks like paise entered as rupees. Held back on arrival: 17 rows failed the premium check. |
Caught |
| Aug 2026 | Insurer W | policies | File received 9 days after the due date | File arrived 9 days after the due date. | Caught |
| Aug 2026 | Insurer E | policies | vehicle_class blank in about 16% of policy rows | Vehicle class blank in 14.6% of rows (usually none). | Caught |
| Sep 2026 | Insurer K | claims | Claims file about 42% below this insurer's 12-cycle norm | Claim records down 45% against this insurer's usual level over the last 12 months (78 rows where about 142 were expected). | Caught |
| Sep 2026 | Insurer K | policies | vehicle_class blank in about 18% of policy rows | Vehicle class blank in 16.9% of rows (usually none). | Caught |
| Sep 2026 | Insurer K | policies | 1,200 policy rows with premium multiplied by 100 (paise for rupees) | 1,074 rows (44.5%) with premium outside the plausible range for the vehicle class. Those premiums are about 100 times the usual level, which looks like paise entered as rupees. Held back on arrival: 1,403 rows of this file. 1,074 failed the premium check and 409 had no vehicle class, 80 of them both. A row with no vehicle class is always held back, so a wrong premium in it cannot reach any figure either. |
Caught |
| Sep 2026 | Insurer W | policies | About 3% duplicate policy numbers | 2.9% duplicate policy numbers, 60 rows (usually none). | Caught |
| Sep 2026 | Insurer W | policies | File received 1 day after the due date | Not flagged, by design. Up to 3 days late is normal. | Not counted |
The log is what Data Operations wrote by hand. What the checks found is measured on the file itself, so the two can differ a little.
Files flagged and problems caught, by month
False alarms
Every flagged file matches a problem that Data Operations logged by hand.
A problem counts as caught only when the flagged file's reasons name that kind of problem: duplicate numbers, a premium or amount out of range (a unit error included), a blank column, a drop in rows, or lateness. A flagged file counts as a false alarm when none of its reasons matches a problem logged for that insurer and month. Both are worked out live.