Open data

Add the leak we missed.

The whole dataset is one CSV file with 111 rows. There is no database, no login and no submission portal — just a file you can edit in the browser.


Three ways in, easiest first

A

Open an issue — no code needed

Paste the link and whatever you know. Use the new incident form — it asks for the fields in order and someone will transcribe it into the CSV. This is a completely legitimate way to contribute and it is how most rows should arrive.

B

Edit the CSV in GitHub's web editor

Click here, add your row at the bottom, and GitHub will open a pull request for you. No git, no local setup.

C

Clone and run it locally

Useful if you are adding several rows and want to see them render before you push.

git clone https://github.com/quantavil/examleaks.git
cd examleaks
bun install
bun run dev

What makes a row acceptable

  • One citable public source. A named news report, a court order, an official notice, a commission finding or an RTI reply. Not a forum post, not a WhatsApp forward, not a YouTube claim, not an anonymous tip.
  • A public examination. Government recruitment, entrance, eligibility or school-board tests. Private and corporate testing is out of scope.
  • Organised failure. A leak, an answer-key sale, marks or OMR manipulation, impersonation rackets, remote access to exam terminals. One student copying is not an incident.
  • No named individuals. Record the institution, the counts and the outcome. Do not add the names of accused people, even when the source prints them.

The most valuable contribution is not a new row. It is a verdict added to an old one. Most entries here were sourced from articles written days after the leak, so convictions handed down years later are missing across the board. If you can point to a judgment for a case from 2013 or 2017, that materially improves the dataset in a way a new 2026 row does not.

Filling in the fields

The full column dictionary is on the method page. The rules that actually trip people up:

  • Blank beats a guess. An empty arrests cell means "the source does not say". Never write 0 unless the source explicitly reports none.
  • Pick the status honestly. Confirmed requires an official finding — a cancellation citing a leak, a court order, a police confirmation. A newspaper reporting that an opposition party alleged a leak is Alleged. If officials investigated and rejected it, that is Denied, and the row still belongs in the file.
  • Say so when the date is fuzzy. If the source gives only a year, use YYYY-01-01 and write “Only year of exam known, Jan placeholder.” in the note. The site reads that sentence and renders the date as ≈ YYYY instead of pretending to a precision nobody established.
  • Any death figure needs its caveat. linked_deaths may never be filled in without a deaths_note explaining whose deaths, how contested the link is, and what the number does not mean.
  • Use the next free ID. Sequential, zero-padded, never reused.

A worked example

One row, wrapped here for readability — in the file it is a single line:

PL-0111,2026-08-14,NDA (May2014-now),Example State Clerk Recruitment Exam 2026,Example Staff Selection Commission (ESSC),State,Example State (Capital City),Confirmed,Exam cancelled + Arrests-FIR,"Question paper circulated on Telegram 40 minutes before the shift began; the board cancelled that shift the same evening and police arrested 4. Day known.",4,,52000,,,The Example Herald,https://example.com/article,High

Note the quoting: the free-text note contains commas, so it is wrapped in double quotes. A literal quote inside a quoted field is doubled ("").

What happens to your pull request

  1. A preview build parses the CSV and rebuilds the site — a malformed row fails immediately, before anyone reviews it.
  2. A maintainer opens your source and checks it says what the row says. Rows are rejected for overstating the source far more often than for anything else.
  3. Once merged, your incident gets a permanent page at /incident/PL-XXXX, a share card, and a place in every chart and download on the site.

Gaps we know about

If you are looking for somewhere useful to start:

  • Pre-2015 state recruitment exams. The record thins out badly before the mid-2010s and the drop is far too steep to be real.
  • Regional-language reporting. Sources here skew to English national dailies. Incidents covered only in Hindi, Marathi, Telugu, Tamil, Bengali or Odia press are systematically missing.
  • States with no entries at all. See the bottom of the states page. Empty almost certainly means unfound, not clean.
  • Outcomes after 2023. Convictions, acquittals, quashed recruitments, exam boards dissolved.

Reporting a problem with the site itself

Broken charts, a link that 404s, an accessibility failure, a bad translation of a figure — open an issue. The code is GPL-3.0-licensed and the data is CC BY 4.0; fork either freely.