Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenGov India - CPPP Monitor

OpenGov India is an initiative to make governance open and legible to the public: better visibility across government domains, plain-language summarization, agentic tooling, and a low-friction way to flag anomalies. This repository is its first module, a CPPP Monitor that starts with public procurement. It watches CPPP ePublishing and GeM tender notices, flags red-flag risk indicators, and assembles evidence packs that civil-society researchers and journalists can act on.


Why this exists

Public procurement is where a large share of public money is spent, and where a lot of it goes wrong quietly. Tender data in India is technically "public" but scattered across portals, buried in PDFs, and hard to compare across time and buyers. That opacity is the problem.

CPPP Monitor turns that raw stream into something a non-specialist can read: notices are normalized into a common shape, scored against a fixed set of red-flag rules (single-bidder awards, late corrigenda, restrictive specs, disproportionate eligibility, split procurement, and more), and packaged with the supporting documents behind each flag. The goal is not to accuse; it is to make the questions cheap to ask.

Procurement is the starting wedge, not the whole vision. The broader OpenGov India roadmap extends the same pattern (ingest, normalize, summarize, flag) across other government domains, leaning on agentic tooling to keep the analysis current as the data grows.

What it does

  • Tender dashboard: searchable, sortable feed of monitored notices with value, buyer, deadline, and risk flags at a glance
  • Risk scoring: 15 red-flag rules across Pricing, Competition, Process, Design, and Patterns (see constants.tsx)
  • Tender drill-down: full notice detail, lifecycle timeline, corrigenda, and award-of-contract data
  • Ingestion Center: seed notices by reference ID, by pasting portal HTML/text, or by live Search-grounded discovery; structured fields are extracted with the Gemini API
  • Evidence-pack framing: each flag links back to its supporting document and text

The dataset ships with a mock seed (data/mockData.ts); the ingestion "pipeline" and "background worker" in the UI are client-side simulations around real Gemini extraction and search calls. There is no backend yet.

Roadmap

The prototype is the front end of a larger platform. The plan builds it in layers, each landing on main shippable. Design specs live in plans/.

  • Phase 0 (done): Prototype and foundations. Interactive dashboard on mock data, the 15-rule red-flag catalog, AI-assisted ingestion (Gemini extraction plus Google Search grounding), and repo foundations (tooling, conventions, on-page SEO).
  • Phase 1 (next): Data foundation. Ingest the real Indian procurement corpus into a normalized, indexed, queryable store behind a read API. The dataset (millions of CPPP ePublishing and GeM tender notices plus Award-of-Contract records) comes from the India Procurement Watch scraping pipeline by Sarthak Sidhant, an independent open-source procurement-transparency project this phase builds on.
  • Phase 2: Risk-signal engine. Compute the red-flag rules over real data: single-bid awards, unusually short bidding windows, repeated corrigenda, EMD-to-ECV ratios, vendor concentration, and more.
  • Phase 3: Agent layer. An autonomous monitoring loop plus investigation agents that assemble the case behind a flag (related tenders, vendor history, price comparables) and surface ranked leads.
  • Phase 4: Delivery. Proactive briefings and alerts, natural-language watchlists, and an evidence viewer for journalists.
  • Phase 5: Infrastructure. Backend deploy, CI, and the automated test suite (see the testing conventions in AGENTS.md).

Tech stack

  • Vite 6, React 19, TypeScript (strict), single-package frontend
  • Tailwind via CDN (index.html) plus lucide-react icons
  • @google/genai (Gemini) for extraction, risk summaries, and Google Search grounding

Run locally

Prerequisites: Node.js 24 (see .nvmrc).

nvm use            # or install Node 24
npm install        # installs deps and sets up git hooks

Set your Gemini key in .env.local:

GEMINI_API_KEY=your_key_here

Then start the dev server (http://localhost:3000):

npm run dev

Without a key, the mock dashboard still renders; only the AI-powered ingestion and search features are disabled.

Development

Task Command
Dev server npm run dev
Production build npm run build
Typecheck npm run typecheck
Lint / autofix npm run lint / npm run lint:fix
Format / check npm run format / npm run format:check

Conventions, architecture, and the full contributor guide live in AGENTS.md (with a short CLAUDE.md pointer for Claude Code). Formatting is handled by Prettier, linting by a flat ESLint config, and a husky pre-commit hook runs lint-staged while pre-push runs the typecheck. Use conventional commits (feat:, fix:, chore:, and so on). Non-trivial features start with a design spec in plans/.

License

A personal project by Abhishek Uniyal.

About

OpenGov India: an open-governance initiative for public visibility across government domains. Its first module, CPPP Monitor, tracks public-procurement tenders (CPPP ePublishing & GeM), flags red-flag risk indicators, and builds evidence packs for journalists and civil society.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages