Skip to content
Vineet Sharma
Email
vin8003.com

Case study · Case-law research desk

CiteBench

A chamber’s diary, its matters and its case-law research in one place, built for Indian practice.

CiteBench Today board for a chamber

The problem

A practising advocate’s day runs on hearing dates, a pile of live matters and research that has to hold up in court. The tools are split: a diary, the court’s case-status site, and a search engine for judgments.

Research tools that write fluent answers are a risk here. A citation that was never actually retrieved is worse than no citation.

My part

Sole builder: backend, court-data adapters, research and Ask, the chamber UI and its design system.

Built with

  • TypeScript, React, TanStack Start
  • Postgres via Kysely
  • Indian Kanoon and court-data adapters
  • English and Hindi

What I built

  1. Court case import by CNR, court-data adapters and Indian Kanoon search, with an admin switch between data providers.nyayasetu @ d9cf3ad ↗
  2. A chamber built around live cases: Today, Diary, Matters, Inbox, with matter tabs and a welcome flow.nyayasetu @ ded7307 ↗
  3. Ask: questions on a case answered with research-grade citations, saved per case beside a briefing sheet.nyayasetu @ 6b5ad77 ↗
  4. Light and dark themes, a ⌘K command palette and keyboard shortcuts, with the Today board in the first HTML.nyayasetu #14 ↗
Research by facts, question or court
Research by facts, question or court
Court directions and suggestions kept apart
Court directions and suggestions kept apart

Calls I made

Show only what was retrieved

Research results list the authorities the search actually returned, and suggestions are kept visibly apart from court directions. The guardrail is printed in the product: suggestions are not court directions.

The advocate confirms, then the file changes

Fetch an order by CNR or paste one into the Inbox, and CiteBench reads out the directions. Nothing on the matter updates until the advocate confirms it.

Calls leave from India

Connections to Indian Kanoon kept resetting. The cause was the network path, fixed with an IPv4 lookup, and lookups now run from the Mumbai region.

nyayasetu #17 ↗

Providers behind an adapter

Court data comes from more than one source, and sources change. Each one sits behind an adapter with an admin switch, so a provider can be replaced without touching the chamber.

nyayasetu @ d9cf3ad ↗

Every line above links to the merged pull request or commit it describes. Screens are real captures on seed data. Vineet Sharma.

Next case studyGSTSlip →

Reach out.

Questions or notes on the products, the demos, or how something is built? Email is the fastest way in. Socials are on the right.

vin8003@gmail.com

Vineet Sharma

Delhi NCR, India

One product per job, done properly.

© 2026 Vineet Sharma. The products live under this domain. Built in the open, with no tracking and no invented metrics.