Every BRSR value is self-reported by the company in its SEBI XBRL filing. The XBRL format enforces structure, but individual numbers are not independently verified at source - so VIGIL runs a layered set of consistency checks and publishes the results openly. This page documents the data-quality framework and the classes of issue found; the full per-company registry (which changes with every data refresh) lives in the live BRSR Data Quality Explorer.
Open the live VIGIL BRSR Data Quality Explorer for the current per-company / per-cell flags.
Bottom line
The consistency checks have flagged 785 individual cell-level issues across 250 of 712 filers - roughly one in three Nifty Total Market BRSR filings carries at least one cell the algorithmic checks consider questionable, spanning 52 distinct fields (revenue/unit confusions, wage-format errors, complaint-count anomalies, turnover-rate format issues, POSH inconsistencies, workforce subtotal-tie failures, and more). Coverage is partial and a lower bound: not every taxonomy field has an algorithmic check yet, and each new check tends to surface another batch, so the share of filers with a flag is likely to rise above ~40%.
A companion PDF validation layer catches a different class - cells that pass every algorithmic check but are wrong when read against the printed BRSR PDF the filer signed (Adani Ports' wage table is the headline example: every cell is plausibly shaped but materially different from the PDF). Across both layers, the share of filers with at least one issue somewhere is likely approaching half the universe - meaningfully higher than in other regulated XBRL filings (quarterly results, prospectuses), which suggests the BRSR filing pipeline is worth fixing at the source.
What this means: aggregate, sector and directional analysis remains highly reliable - 1-3% cell-level noise does not distort distribution shapes, year-on-year comparisons, or peer benchmarking. But for a specific company-level number used for a specific decision, validate it against the printed PDF first.
Classes of issue (and how each is handled)
- Revenue unit inconsistency (69 companies). The taxonomy requires Turnover in rupees, but ~10% file in lakhs or crores while still declaring INR (e.g. Dr Reddy's filed "231,154" meaning Rs 23,115 Cr, i.e. lakhs). Detected by cross-referencing each company's BRSR Turnover against the sum of its 4 quarterly XBRL filings and a magnitude/decimals check; resolved by applying the right multiplier (38 in crores, 31 in lakhs) or falling back to the TotalRevenueOfTheCompany tag.
- Unusually high complaint counts. Some companies count safety observations or near-miss reports as "complaints" - e.g. Tata Power reported 606,260 health & safety "complaints" against 105,369 workers. Displayed as reported; distribution charts surface the outliers.
- Turnover-rate format (8 companies, 10 cells). Attrition should be a 0-1 decimal; some filed whole-number percentages or impossible values (LLOYDSENGG 287%). Routed to a dedicated amber "DQ" bar and excluded from medians (a per-cell filter rejects rate over 1.0).
- Wage unit acknowledgement (97 companies, 161 category flags). Some file median wages in lakhs or as monthly amounts rather than annual rupees - but both female and male are in the same wrong unit, so the F/M ratio (what the wage-gap chart uses) stays valid. These stay inside the distribution with an info marker rather than being excluded.
- POSH / sexual-harassment anomalies. A few filings show impossible patterns (e.g. narrow POSH count exceeding the broader sexual-harassment count, or an upheld count of 100 against 1-5 filed). Nonsensical values are excluded from the upheld-rate aggregate; smaller inconsistencies are kept but flagged.
- Workforce subtotal-tie. A structured plausibility suite over 699 filings; five of six checks were clean, the sixth (Permanent + Other-than-Permanent = Total) found one company (INDIAMART) with a mathematically impossible Section A table. Logged in the registry.
- Cross-tag denominator differences (~330 filers, informational). The taxonomy stores total headcount in more than one place, and Principle 3/5 disclosures often restate their own "Total" (the population eligible for performance reviews, union membership, etc.), which legitimately excludes contractors or probationers. This is a scope difference permitted by the taxonomy, not an error - no company is flagged; percentages should be read on the denominator disclosed under that Principle.
- Extreme outliers excluded from aggregates. A handful of values so extreme they would distort medians (e.g. an LTIFR of 1,851 vs a typical 0-20, or single-digit "median wages") are moved to a separate DQ bucket and excluded from aggregate medians, but still shown on the company page with a warning icon.
The source-filing-error registry
Companies whose XBRL contains nonsensical, impossible, or internally inconsistent values are catalogued in a data-quality registry (source errors in the filing, not extraction issues). Values are displayed as reported but flagged with a warning icon in chart drilldowns, and each entry records the company, section, type (unit mismatch / unit correction / unit acknowledged / nonsensical value / missing data / outlier), severity, description and detection date. Detection combines automated scans (e.g. wage F/M ratios over 5x) with manual investigation against the raw XBRL. The full, current registry is in the live Data Quality Explorer.
Open the live VIGIL BRSR Data Quality Explorer on TIGZIG, or see the BRSR methodology page and all VIGIL data sources.