Spaces:
Running
Running
| """ | |
| UndertriAI — Precedent Database | |
| Lightweight keyword-based retrieval of landmark bail judgments. | |
| """ | |
| import re | |
| from typing import Any, Dict, List, Optional | |
| # --------------------------------------------------------------------------- | |
| # Landmark precedents (embedded — no external DB needed) | |
| # --------------------------------------------------------------------------- | |
| PRECEDENTS = [ | |
| { | |
| "title": "Sanjay Chandra v. CBI, (2012) 1 SCC 40", | |
| "summary": "SC held that bail is the rule and jail is the exception. Personal liberty under Article 21 cannot be sacrificed without compelling reasons. Courts must not treat pre-trial detention as punishment.", | |
| "keywords": ["personal liberty","article 21","rule","exception","pre-trial","punishment","default"], | |
| "crime_categories": ["fraud","white collar","economic","cheating"], | |
| "jurisdiction": "Supreme Court", | |
| }, | |
| { | |
| "title": "Arnesh Kumar v. State of Bihar, (2014) 8 SCC 273", | |
| "summary": "Arrest is not mandatory for offences punishable up to 7 years. Police must record reasons before arrest. Courts must apply mind before granting remand. Safeguard against mechanical arrests.", | |
| "keywords": ["arrest","seven years","remand","mechanical","magistrate","section 41","non-bailable"], | |
| "crime_categories": ["498a","cruelty","domestic","cheating","fraud"], | |
| "jurisdiction": "Supreme Court", | |
| }, | |
| { | |
| "title": "State of Rajasthan v. Balchand, (1977) 4 SCC 308", | |
| "summary": "Bail is the rule, jail is the exception. The court must consider: (1) nature of accusation, (2) nature of evidence, (3) severity of punishment, (4) character of accused, (5) danger of accused fleeing.", | |
| "keywords": ["triple test","flight risk","evidence","accusation","severity","character"], | |
| "crime_categories": ["all"], | |
| "jurisdiction": "Supreme Court", | |
| }, | |
| { | |
| "title": "Nikesh Tarachand Shah v. Union of India, (2018) 11 SCC 1", | |
| "summary": "Twin conditions under PMLA bail provisions struck down as unconstitutional. Bail cannot be denied mechanically. Even money-laundering accused entitled to bail if conditions are met.", | |
| "keywords": ["pmla","money laundering","twin conditions","unconstitutional","special law"], | |
| "crime_categories": ["money laundering","financial","pmla"], | |
| "jurisdiction": "Supreme Court", | |
| }, | |
| { | |
| "title": "P. Chidambaram v. Directorate of Enforcement, (2020) 13 SCC 441", | |
| "summary": "Anticipatory bail: Court must consider nature and gravity of accusation, antecedents, possibility of fleeing, and whether accusation is bona fide or mala fide. Economic offences of serious magnitude require stricter scrutiny.", | |
| "keywords": ["anticipatory","economic offence","gravity","antecedents","bona fide","mala fide","magnitude"], | |
| "crime_categories": ["fraud","economic","cheating","corruption"], | |
| "jurisdiction": "Supreme Court", | |
| }, | |
| { | |
| "title": "Satender Kumar Antil v. CBI, (2022) 10 SCC 51", | |
| "summary": "Landmark ruling on undertrial prisoners. Default bail under Section 436A must be given without unnecessary delay. Courts have duty to suo motu consider bail for long-incarcerated undertrials.", | |
| "keywords": ["undertrial","default bail","436a","long custody","section 436","half sentence","suo motu"], | |
| "crime_categories": ["all"], | |
| "jurisdiction": "Supreme Court", | |
| }, | |
| { | |
| "title": "Gudikanti Narasimhulu v. Public Prosecutor, (1978) 1 SCC 240", | |
| "summary": "Court must balance personal liberty against public interest. Factors: (a) nature of accusation, (b) punishment, (c) character of evidence, (d) possibility of repeating offence, (e) danger of fleeing.", | |
| "keywords": ["balance","public interest","punishment","repeat","character"], | |
| "crime_categories": ["all"], | |
| "jurisdiction": "Supreme Court", | |
| }, | |
| { | |
| "title": "Union of India v. K.A. Najeeb, (2021) 3 SCC 713", | |
| "summary": "Courts can grant bail even under UAPA if incarceration extends for inordinate period. Constitutional courts must step in to protect fundamental rights despite statutory restrictions.", | |
| "keywords": ["uapa","inordinate","fundamental rights","constitutional","prolonged","statutory restriction"], | |
| "crime_categories": ["terror","uapa","security"], | |
| "jurisdiction": "Supreme Court", | |
| }, | |
| { | |
| "title": "Moti Ram v. State of M.P., (1978) 4 SCC 47", | |
| "summary": "Court must not fix excessively high surety amounts that effectively deny bail to the poor. Surety should be commensurate with the accused's economic status. Poverty cannot be a ground for denial.", | |
| "keywords": ["surety","excessive","poor","economic","poverty","amount","commensurate"], | |
| "crime_categories": ["all"], | |
| "jurisdiction": "Supreme Court", | |
| }, | |
| { | |
| "title": "Babu Singh v. State of Uttar Pradesh, (1978) 1 SCC 579", | |
| "summary": "Personal freedom is important. Bail should not be denied as punishment or to teach a lesson. Courts must not be influenced by the seriousness of the charge alone. Conditions of bail must be reasonable.", | |
| "keywords": ["personal freedom","punishment","conditions","lesson","reasonable","seriousness alone"], | |
| "crime_categories": ["all"], | |
| "jurisdiction": "Supreme Court", | |
| }, | |
| { | |
| "title": "Siddharam Satlingappa Mhetre v. State of Maharashtra, (2011) 1 SCC 694", | |
| "summary": "Comprehensive ruling on anticipatory bail. Court enumerated 10 factors: nature of accusation, antecedents, possibility of fleeing, social standing, possibility of repeating offence, primacy of investigation.", | |
| "keywords": ["anticipatory","ten factors","investigation","social standing","repeat","antecedents"], | |
| "crime_categories": ["anticipatory","pre-arrest"], | |
| "jurisdiction": "Supreme Court", | |
| }, | |
| { | |
| "title": "Anil Kumar Yadav v. State (NCT of Delhi), (2018) 12 SCC 129", | |
| "summary": "Parity in bail: When co-accused in similar position are granted bail, denial to one accused requires specific distinguishing factors. Parity principle is well-established.", | |
| "keywords": ["parity","co-accused","similar position","distinguishing","differentiate"], | |
| "crime_categories": ["all"], | |
| "jurisdiction": "Supreme Court", | |
| }, | |
| ] | |
| class PrecedentDB: | |
| """ | |
| Keyword-based precedent retrieval. | |
| Returns relevant landmark judgments based on query and case context. | |
| """ | |
| def __init__(self): | |
| self._precedents = PRECEDENTS | |
| def search( | |
| self, | |
| query: str, | |
| jurisdiction: Optional[str] = None, | |
| crime_category: Optional[str] = None, | |
| top_k: int = 3, | |
| ) -> List[str]: | |
| """Return top_k relevant precedent citations.""" | |
| q = query.lower() | |
| scored = [] | |
| for p in self._precedents: | |
| score = 0 | |
| # Keyword match | |
| for kw in p["keywords"]: | |
| if kw in q: | |
| score += 2 | |
| # Crime category match | |
| if crime_category: | |
| for cat in p["crime_categories"]: | |
| if cat in crime_category.lower() or cat == "all": | |
| score += 3 | |
| # Jurisdiction filter | |
| if jurisdiction: | |
| if jurisdiction.lower() in p["jurisdiction"].lower(): | |
| score += 1 | |
| # Always include general principles (low score) | |
| if "all" in p["crime_categories"]: | |
| score += 0.5 | |
| scored.append((score, p)) | |
| scored.sort(key=lambda x: -x[0]) | |
| results = [] | |
| for score, p in scored[:top_k]: | |
| if score > 0: | |
| results.append(f"{p['title']}: {p['summary'][:160]}...") | |
| return results | |
| def get_initial_precedents(self, episode: Dict[str, Any]) -> List[str]: | |
| """Return 1–2 baseline precedents relevant to the case type.""" | |
| crime = episode.get("crime_type", "").lower() | |
| bail_type = episode.get("bail_type", "Regular") | |
| query = f"{crime} {bail_type} bail" | |
| return self.search(query=query, crime_category=crime, top_k=2) | |