For credit-research and private-credit teams

Issuer debt and rating changes,
with the source behind every figure.

IssuerGraph reads an issuer's annual report and rating rationales, extracts the debt and rating facts, and keeps each one attached to the exact characters on the page it came from. Where two documents state different things, it shows both, dated, side by side — and does not pick a winner.

The demo opens immediately — no signup, no email, no calendar. It is a fixed sample dataset built from six public documents.

The IssuerGraph workspace. On the left, a table of total borrowings by basis and date, each figure underlined as a link, with two rows badged as conflicts and two as agreeing within tolerance. On the right, page 438 of the annual report with four highlights: the three balance-sheet rows that make up the selected total, and the statement's own rupees-in-crores header.
The workspace: every figure on the left is a link; the right pane is the page it came from. The selected total is not printed anywhere in the report — it is the three highlighted rows added together, and the fourth highlight is the header that establishes they are crores.

Built for the people who have to be able to show their working

If your note has to survive an investment committee, a "the model says so" answer is not usable. IssuerGraph is built for the part of the job where a number has to be traceable to a document.

Credit research

Surveillance across an issuer's disclosure and its rating agencies, where the question is usually "has anything changed, and who says so".

Private credit

Diligence on issuers whose figures are spread across an annual report and several agencies' rationales that do not agree on definitions.

Risk and monitoring

Teams that need a dated record of when a difference between sources first appeared, and whether it is still there.

The workflow

Four things, each of which is checkable

01

Review facts

Total borrowings by basis and date, rated instruments with maturities, rating actions by agency. Derived figures state their arithmetic.

02

Inspect evidence

Click any figure to open the page it came from, with the exact characters highlighted — including the header that establishes the unit.

03

Compare sources

Where documents disagree, both values are shown with their own evidence, the tolerance that was applied, and the period both views were in force.

04

Track changes

Successive rationales from one agency, diffed structurally: what appeared, what went, what moved — both sides anchored to their own document.

A difference between sources is not an error

Most differences are definitional. In the sample dataset, a rating agency's "Total Debt" exceeds the annual report's by ₹24.80 crore on one basis and ₹25.10 crore on another — almost certainly one definitional difference, not a mistake by either party. IssuerGraph flags it for an analyst to judge, records when it was first seen, and never silently picks one number.

The actual product

Live excerpt from the sample dataset

Not a mockup: the rows below are rendered from the same snapshot the demo uses, through the same code. Counts come from the data.

Loading sample…

Open the full demo → Take the guided tour

Coverage and limits

What it reads today, stated plainly

This is an early system with a deliberately narrow scope. Being precise about the edges is more useful to you than a longer list would be.

What works now

  • Indian NBFC annual reports — Ind AS balance sheets, consolidated and standalone.
  • Rating rationales from ICRA, CARE and Brickwork: rating tables, instrument annexures, liquidity sections, strengths and challenges.
  • Debt figures, rated instruments and maturities, rating grade, outlook and watch.
  • Cross-document comparison with two tolerances, and effective-dated rating comparison per instrument class.
  • Every stored fact carries verified character offsets and page geometry.

What it does not do yet

  • One issuer is loaded in the public sample. It is a vertical slice, not a universe.
  • Four extractors, tuned to four publishers' current layouts. A new publisher needs a new extractor.
  • Only the annual-report extractor declares full coverage checks; the other three currently prove only that they produced something.
  • A rating is treated as in force until that agency acts again, with no staleness horizon — so a two-year-old action still counts as current.
  • No score, no recommendation, no chat interface, and no document upload.

The sample dataset is fixed, with documents published up to its stated cutoff. It is not updated as new filings appear.

Paid pilot

Bring your issuers; we build the slice around them

A pilot is scoped work on issuers you actually cover, run over four weeks, ending with something your team can use or reject on evidence.

What you get

  • Your issuers loaded from their own public documents, with every fact anchored.
  • Extractors written or adapted for the publishers your issuers use.
  • A differences report: where your sources disagree, dated, with evidence.
  • A hosted workspace for your team, and the export of the underlying data.
  • A written account of what could not be extracted, and why.

What we need from you

  • Five to ten issuers, and the documents you consider authoritative for them.
  • One workflow to target — surveillance, diligence, or a recurring report.
  • An analyst who will check the output against their own reading.
  • A named person who can say whether it was worth doing.

Pricing is scoped per pilot — it depends on how many publishers need new extractors, which is the part that takes real work. Tell us your issuers and the workflow, and you will get a fixed price and a schedule rather than a quote range.

Request a pilot → See the sample first

Questions

FAQ

Where do the facts come from?

Public documents, fetched over HTTP from the publisher's own URL: the issuer's annual report and the rating agencies' published rationales. Each document is stored with its SHA-256, its source URL and the time it was retrieved, all of which are shown in the demo under Sources.

Nothing is generated. If a figure is not printed in a document we hold, it does not appear — and a figure computed from several rows, like total borrowings, states its own arithmetic and carries one anchor per component.

How do I verify a number?

Click it. The panel shows the document, the page, the character range, the extractor and version that produced it, and the page image with those exact characters highlighted. The highlight is drawn from geometry recorded at extraction time, so it cannot land on a different occurrence of the same text on the page.

Before anything is stored, the loader re-reads the page and asserts that the quoted evidence equals the characters at those offsets. If it does not, the whole document fails to load rather than storing a fact it cannot prove.

What happens when two sources disagree?

Both are kept and shown together with their own evidence. Numbers are compared with two tolerances — a relative band and an absolute floor — because a percentage-only test treats the same rupee difference differently depending on the size of the number it sits on.

Ratings are compared only between agencies rating the same instrument class on the same rating scale, over periods that actually overlap. A difference records when it was first detected and whether it is still present; one that stops recurring is marked resolved rather than deleted.

Which issuers and documents are supported?

Today: Indian NBFC annual reports with Ind AS balance sheets, and rating rationales from ICRA, CARE and Brickwork. The public sample is one issuer, IIFL Finance, across six documents.

A new publisher needs an extractor written for its layout — that is the honest unit of work in a pilot, and it is why scoping asks which documents you treat as authoritative.

What does onboarding involve?

You send a list of issuers and the documents you consider authoritative. We load them, write or adapt the extractors, and give you a workspace plus a written note on what could not be extracted and why. No integration, no data from your systems and no credentials are required to start — everything in the pilot comes from public documents.

What happens to what I submit?

The pilot form stores what you type so we can reply about a pilot. You are not added to a mailing list and no outreach sequence is triggered. Analytics, when enabled, records that a page was viewed or a form submitted — never your name, your email address, what you typed, or any document content.

Who is behind this

Founder

Questions, or something in the sample that looks wrong? Write to the address below — a specific correction about a specific figure is the most useful thing you can send.

Request a pilot Explore sample issuer