← All projects
Govwatch
JH26-Z2HSTeam Buraq · Barishal · 2 members · Spirit of July
Every taka Bangladesh spends, searchable in seconds — in Bangla, with the receipts and red flags attached.
The problem
Every taka Bangladesh spends is public — but inaccessible. 50,000+ procurement contracts a year sit buried in agency PDFs and spreadsheets, in English and Bangla jargon no citizen reads. Journalists, opposition MPs, anti-corruption activists, and curious taxpayers want to ask "who's winning the road contracts in my district?" or "why does this hospital cost 3× the going rate?" but the answer takes days of digging, decoding, and FOI requests. By the time anyone surfaces an anomaly, the contract is signed, the money is gone, and the next budget cycle has buried the evidence deeper. The cost of inaccessibility isn't just inconvenience, it's the structural space where price-padding, single-bidder collusion, and director-shared vendor networks thrive unchallenged.
The solution
GovWatch is a civic intelligence platform that turns Bangladesh's entire public-procurement corpus into a conversational, searchable knowledge base —
queryable in Bangla or English, with cited sources and statistical red flags attached to every claim. At the heart of the system is a hybrid retrieval-augmented generation pipeline built on Cloudflare's edge stack: a Worker backend uses D1 for relational
metadata and Bangla-aware FTS5 full-text search, Vectorize for semantic embeddings, and R2 for raw PDF storage and NDJSON staging. When a Bangla query
arrives — say, "কে হবিগঞ্জে রাস্তা নির্মাণের চুক্তি পাচ্ছে?" — it runs through both the lexical and semantic channels in parallel, merges the result rankings via
reciprocal-rank fusion, and feeds the top chunks to an LLM with a prompt tuned for Bangla. The model streams its answer back as server-sent events
tagged with inline citations and any z-score outliers the system flagged.
The novelty isn't any single component — it's the integration. Bangla procurement data is heterogeneous, multilingual, full of diacritics and
abbreviations that defeat naive search; vector retrieval alone misses exact contract IDs, keyword search alone misses intent.
The frontend is Next.js that calls the backend and renders the streaming answer with clickable citations to the original PDF. A cookie-based language toggle defaults to Bangla. No login wall. Three surfaces: ask (chat), browse (anomalies, vendors, stats), verify (one click from any answer to the underlying document). Underneath sits a scraper-to-knowledge-base ingestion pipeline: Scrapy spiders crawl e-GP, stage NDJSON in R2, push through a batch ingest endpoint that chunks, embeds, and persists across D1 and Vectorize. Cron triggers handle incremental re-crawls.
The deployment runs on Cloudflare's edge — Workers, D1, Vectorize, R2 — so the marginal cost of serving a query or storing
another million contracts is essentially zero. That changes the economics of accountability tooling, which has historically been gated by hosting and
infrastructure costs that only newsrooms and NGOs could afford. A volunteer collective in Sylhet can deploy the same stack that an investigative team at The Daily Star uses. But the deeper bet is on language and literacy. GovWatch meets people where they are: in Bangla, with citations they can verify, with anomalies that don't require a statistics degree to
understand. The red-flag model isn't hidden behind a dashboard
What's next: vendor collusion graphs (shared directors across winning bidders), ministry-budget anomaly detection, temporal trends that surface when a
district's procurement pattern shifts suddenly.
Tech stack
- TypeScript — primary language for both frontend and backend
- Python 3.11+ — scrapy spiders for e-GP and e-CMS procurement crawlers
- SQL — D1 schema, FTS5 queries
- Next.js 15.5.4 — React framework with App Router
Backend (Cloudflare Worker)
- Hono-style routing (hand-rolled, no framework)
- D1 — Cloudflare's serverless SQLite-compatible relational store, with FTS5 virtual table for Bangla full-text search
- R2 — Cloudflare's S3-compatible object storage for PDF blobs and NDJSON staging
- Bangladesh e-Government Procurement (e-GP) — https://www.eprocure.gov.bd — public tender notices, contract awards
AI tools used (section 5 disclosure)
Anthropic Claude (Opus 4.6, Sonnet 4.6) and Puku CLI