Four stages: ingest → parse → normalise → entity-resolve. Then the annexure is indexed from the lender side, which is the only step that is unusual.
This page is written for the person who will be asked to sign off on using the data. It states what happens to a document, what is derived, what is not, and where the method is weakest.
How is lender-wise data extracted from rating press releases?
Published press releases are ingested from seven SEBI-registered agencies’ public archives, parsed into structured records, normalised across seven layouts and vocabularies, and entity-resolved so that variant borrower and lender names reconcile to one identity. The lender-wise annexure rows are then inverted — indexed from the lender’s side. Nothing is populated that the release did not state.
1. Ingest
Input: credit rating press releases published by seven SEBI-registered credit rating agencies on their own websites.
SEBI’s framework requires each agency to publish issuer-specific press releases and rating rationales on its website, to make disclosures available in machine-readable format, and to maintain an archive of them for at least ten years. Those published documents — and nothing else — are the input to this pipeline.
Two streams run:
- Current. New releases are collected on a continuing basis as agencies publish them.
- Backfill. Historical releases are recovered agency by agency. Depth of history varies by agency; the corpus floor is stated on Coverage.
Every document is stored with its provenance — source agency, source document reference, publication date — before anything is extracted from it. Provenance is attached at ingest, not reconstructed later, so every downstream record can be traced back to the release it came from.
What is not ingested: supervisory returns, credit bureau data, confidential lender submissions, subscriber-only agency research, or any material that is not a public rating disclosure.
2. Parse
- Input
- One press release.
- Output
- Structured records in six families.
| Family | Fields extracted |
|---|---|
| Borrower | Legal name, prior and erstwhile names as stated, sector, state |
| Rating action | Agency, rating symbol, outlook, action type, action date, prior rating |
| Rated facilities | Instrument type, facility type, amount, tenor class |
| Lender-wise exposure | Lender name, facility, amount, per annexure row |
| Key financials | The figures the agency itself printed, with basis and period |
| Rating drivers | Strengths, weaknesses, sensitivities, as published |
Three rules the parser is built around
Extract, do not interpret. A field is populated only where the release states it. Where a release does not carry a value, the field is empty — it is not estimated, imputed from a sibling document, or carried forward from a prior action. An empty field is a fact about the source document and is preserved as one.
Facts, not prose. What is extracted is structured fact: lender name, facility type, amount, date, rating symbol. The agency’s rationale narrative is its own work and is treated as such. Agency narrative is not reproduced verbatim at length anywhere in the product or on this site.
Failures are recorded, not swallowed. Source releases vary in structure, and some are scanned images or malformed in ways that defeat extraction. A document that fails is recorded as a failure with its reason and queued for replay against an improved parser. It is never partially loaded and never silently dropped, because a silent drop is indistinguishable downstream from a document that genuinely said nothing.
That last rule produces a distinction that matters analytically: “this release published no annexure” and “this release’s annexure could not be extracted” are different states and are stored differently. Merging them would corrupt every coverage figure on this site.
3. Normalise
Seven agencies, seven layouts, seven vocabularies. Normalisation is what makes them one dataset.
- Rating notation
Each agency’s symbols are mapped to a common long-term and short-term scale, with the agency and its native symbol retained alongside. Nothing is converted destructively — the original symbol as published is always recoverable.
- Action types
Assigned, reaffirmed, upgraded, downgraded, placed on watch, withdrawn, migrated to issuer-non-cooperating: agencies word these differently. They are mapped to one controlled vocabulary, and the transition from the prior action is computed rather than trusted from the release text.
- Facility and instrument types
Cash credit, working capital demand loan, term loan, letter of credit, bank guarantee, proposed and unallocated limits, and the long or short term classification. Proposed and unallocated limits are flagged distinctly, because including them in a lender total silently overstates it.
- Amounts
Normalised to a single unit and currency basis. Crore and lakh conventions, and mixed-unit tables, are resolved at parse time rather than at query time.
- Dates
The rating action date is the anchor for every fact in a release. It is distinguished from the publication date and from the financial-year end of the key financials, which are three different dates that are routinely conflated by readers.
4. Entity resolution
This is where a reverse query is won or lost. An index built on raw strings returns a fraction of what it should.
- Borrower resolution
The same company appears across agencies and across years under materially different strings: punctuation and suffix variation, “Private Limited” against “Pvt Ltd”, trailing unit or division names, and outright renames. Prior and erstwhile names disclosed in a release are used as evidence to link a renamed entity to its own history. Where an identifier such as a CIN is published, it is used as a strong link.
- Lender resolution
The harder half, and the one specific to this product. A single bank appears as its full legal name, as an initialism, with branch or region suffixes, with abbreviations, and — in releases predating a merger — under the name of a bank that no longer exists. Those variants are reconciled to one lender identity, with the string as published retained on the row.
As at 30 August 2026 that resolution yields 1,501 distinct lenders across 179,857 exposure rows. Both are floors — counts of what published documents evidenced, not of what exists. Why →
Where it is weakest, stated plainly. Entity resolution is a judgement process operating on inconsistent inputs. Two failure modes exist and neither is eliminable: a genuinely single entity split across two identities (which undercounts), and two similarly-named but distinct entities merged into one (which overcounts). Resolution is tuned to prefer splitting over merging, because an undercount is consistent with the floors-not-totals framing that governs every figure here, whereas a false merge produces a number that is wrong in a direction the reader cannot detect.
5. Inversion
The annexure rows are indexed from the lender side. A lender becomes a queryable entity with a rated borrower book behind it, filterable by sector, rating band, state, agency and action date.
Nothing is created at this step. It is the same rows, indexed on the other key. The reason it has not existed before is that the four preceding steps — across seven agencies, tens of thousands of documents, and inconsistent lender strings — have to be done first, and the annexure was never designed to be read this way.
What is derived, and what is not
Derived: the mapping of agency notation to a common scale; the transition from a prior action; borrower and lender identity clusters; aggregations and counts over resolved identities.
Not derived — and never present unless the release said it: any lender name, facility amount, rating, outlook, financial figure, or action date. There is no model estimating a value the document did not carry. There is no score, rank or proprietary mark of any kind, and none is planned. The product’s output is published facts, restructured.
Where the method is limited
Method limits, distinct from the data limits that follow from the source documents themselves:
- Extraction is imperfect on degraded sources. Scanned and malformed releases fail; they are queued and replayed, so recovery is a moving figure rather than a settled one.
- Entity resolution carries residual error, biased toward splitting, as described above.
- Layout changes break parsers. When an agency changes its release format, extraction quality for that agency degrades until the parser catches up. Failures surface as recorded failures rather than as quietly wrong values.
- Normalisation of notation across agencies is a mapping, not an equivalence. A rating from one agency and a mapped-equivalent rating from another are not interchangeable opinions, and the native symbol is retained so that nobody has to take the mapping on trust.
The limits arising from the source documents — rated borrowers only, floors not totals, sanctioned rather than outstanding, and the periodic review cycle — are specified on Data limits.
Common questions
Do you use the agencies' APIs?
No. The input is the credit rating press releases the agencies publish on their own public websites — the archives SEBI requires each agency to maintain. There is no API relationship, no subscriber feed and no private submission of any kind. Sources links each agency’s public archive directly.
How are two agencies' names for one company matched?
By entity resolution. The same company appears across agencies and years under materially different strings — punctuation and suffix variants, renames, trailing division names. Prior and erstwhile names disclosed in releases, and published identifiers such as a CIN, are used as linking evidence, tuned to prefer splitting over false merging. The entity resolution section states the method and its failure modes.
Do you use AI/LLMs to extract the data?
Extraction is rule-based parsing against the structure of each agency’s releases: a field is populated only where the release states it, and no model estimates a value the document did not carry. Documents that defeat extraction are recorded as failures with a reason and queued for replay against an improved parser — never guessed at, never partially loaded.
Related
- Coverage — what is in the corpus, with an as-at date
- Data limits — the full specification
- Sources — the public archives this pipeline reads
- How to read a rating press release — the document, section by section