Independent Research Project

The law already promised
them release.

Roughly three in four prisoners in India are undertrials — not convicted of anything, simply waiting. Many already qualify for release under existing law. The Liberty Model doesn't predict who deserves liberty. It finds who the law has already granted it to, and cites exactly where.

View the triage dashboard Read the methodology
0%
of India's prison population are undertrials
0
synthetic cases modelled in this demo
0
found past their statutory threshold
0
machine-learning decisions about liberty

The problem

Two failed approaches — and a gap between them.

Computational work on bail tends to fall into one of two camps. The first predicts risk — will this person reoffend, will they appear for trial — using historical data that bakes in the very biases it should be correcting. Opaque, and ethically fraught when the stakes are someone's liberty.

The second is entirely manual: Undertrial Review Committees and District Legal Services Authorities working file by file, on schedules measured in months, without prison and court data ever being joined up. People who already qualify for release are lost in the gap.

The Liberty Model sits in neither camp. It makes no prediction and renders no judgment. It is a rules engine: existing statutory entitlements, encoded, applied consistently, and shown with the exact citation behind every flag.

How it works

Three steps. No black box.

STEP 01

Encode the entitlement

Statutory bail provisions and binding precedent — the BNSS s.479 half/one-third custody rules, the Satender Kumar Antil categories, default bail on delayed chargesheets — are converted into explicit, auditable rules.

STEP 02

Check every case

Each case record — offence category, custody duration, age, prior record — is checked against every rule. No scoring of character, no risk prediction. Only: does this person already meet a legal threshold?

STEP 03

Flag, with citation

Cases that meet a threshold are flagged for review — never for automatic release — with the exact statute or judgment cited, so a legal aid lawyer can verify it in minutes, not weeks.

The law this model encodes

These aren't hypotheticals.

Every rule in the engine traces to a real statutory provision or a real, binding judgment. Three of the foundations:

HUSSAINARA KHATOON (1979)

The case that revealed the crisis

A habeas corpus petition exposed thousands of undertrials in Bihar's jails who had already been detained longer than any sentence they could have received on conviction. The Supreme Court held that a speedy trial is part of the Article 21 right to life and liberty — and ordered releases. Nearly five decades later, the pattern it exposed persists.

SATENDER KUMAR ANTIL (2022)

The Court's own checklist

The Supreme Court laid down offence categories and directed that bail applications in routine categories be decided within fixed timelines — and pointedly reminded courts that "bail is the rule, jail the exception." The judgment reads like a specification for exactly the kind of systematic checking this model performs.

BNSS s.479(3) (2024)

The duty nobody tracks

The new code doesn't just create the half-and-one-third custody entitlements — it places a written duty on the Superintendent of jail to "forthwith" apply to the Court the moment a prisoner crosses the threshold. A duty that requires knowing, case by case, who has crossed it. That is precisely the computation this engine automates.

Why rules, not predictions

Detecting entitlement is not the same as judging risk.

A model that predicts "this person is likely to reoffend" makes a value judgment dressed up as a number. A model that checks "has this person already served the custody threshold the law itself set" makes no judgment at all — it applies the law the state already wrote. That distinction is the entire design philosophy behind this project.

See the full rulebook