# Climate India — BRSR X-ray data dictionary

FY2025-26 BRSR filings of the Nifty-50 constituents, parsed from NSE/BSE XBRL.
49 of 50 companies (HDFC Bank and Titan had not filed FY2025-26 within the
retrieval window).

**Read this before comparing absolute magnitudes across companies.** The source
XBRL unit tags are unreliable — see Finding 01 (the `_unit` columns record the
unit *as filed*, which is wrong for many companies). Every numeric column is
therefore paired with a `_unit` column and a `_PY_as_filed` prior-year column,
all reported exactly as the company filed them, with no silent correction.

## Files

| File | What it is |
|---|---|
| `brsr_nifty50.csv` | Curated company-level table, one row per company (columns below). |
| `facts_long.csv.gz` | Every extracted XBRL fact (109,262 rows), all contexts, as filed — the raw layer behind the curated table. |
| `manifest.csv` | Every source filing with its NSE/BSE URL and submission date, for full reproducibility. |
| `unit_check.csv` | The Finding 01 verification ledger: each company's Scope-1 value, its filed unit, and the plausibility check. |
| `brsr_pipeline.py` | The deterministic parser (fetch → download → parse). No AI extraction. |
| `verify_units.py` | Unit normalisation and implausibility flagging used for Finding 01. |

## Column conventions (curated table)

Each measured field appears as a triplet:
- `<field>` — the current-year value, **as filed** (not unit-normalised).
- `<field>_unit` — the unit tag as filed (e.g. `tCO2e`, `MtCO2e`) — unreliable; see Finding 01.
- `<field>_PY_as_filed` — the prior-year comparative, as filed.

Applicability flags (`*_applicable`) are the XBRL "Whether…ApplicableToTheCompany"
booleans that gate each numeric table; when `false`, the numeric fields are blank
because the company filed no value, not because we dropped it.

## Columns

| Column | Meaning |
|---|---|
| `symbol`, `company`, `industry` | NSE symbol, legal name, NSE industry. |
| `fy_from`, `fy_to`, `submission_date` | Reporting year and filing date. |
| `ghg_applicable` | Whether the GHG-emissions table applies. |
| `scope1_tco2e`, `scope2_tco2e`, `scope3_tco2e` | Scope 1 / 2 / 3 emissions, as filed. |
| `scope3_applicable` | Whether Scope 3 is filed (voluntary "Leadership" indicator). |
| `s1s2_intensity_per_inr` | Scope 1+2 intensity per rupee of turnover, as filed. |
| `energy_renewable_gj`, `energy_nonrenewable_gj`, `energy_total_gj` | Energy consumption split (GJ), as filed. |
| `water_withdrawal_kl`, `water_consumption_kl` | Water (kilolitres), as filed. |
| `waste_generated_mt` | Waste generated (metric tonnes), as filed. |
| `gross_wages_female` | Gross wages paid to female employees, absolute ₹ (derive share against total-wages separately). |
| `posh_upheld` | Complaints under POSH **upheld** (distinct from complaints filed). |
| `brsr_core_assured` | Assurance sub-type on BRSR Core attributes ("Reasonable"/"Limited"). |
| `reporting_boundary` | Standalone vs Consolidated — the top comparability trap; never assume uniform. |
| `netzero_or_carbonneutral_in_targets` | Whether net-zero/carbon-neutral language appears in the main-context target text blocks. Known undercount — it does not scan per-Principle dimensional blocks (see Finding 02, the Bharti Airtel case). |

## Provenance & licence

Every value traces to a primary regulatory filing listed in `manifest.csv`.
Source filings are © their filers; this parsed compilation is published for
open reuse with attribution to Climate India (climateindia.org). Corrections:
contact@climateindia.org.
