diff --git a/README.md b/README.md
index e5b3e14..6c4419f 100644
--- a/README.md
+++ b/README.md
@@ -1,277 +1,135 @@
-
+
-# InfraWatch
-
+

-**Satellite-based detection of illegal construction, with an SLA-tracked enforcement workflow, built for Indian municipal corporations.**
+# InfraWatch
-[Live Demo](https://infrawatch-sepia.vercel.app) · [Citizen Report Portal](https://infrawatch-sepia.vercel.app/?report=1) · [Backend Health](https://infrawatch-backend-odou.onrender.com/health) · [Report a Bug](https://github.com/LordDevdeep/Infrawatch/issues)
+**Satellite imagery in, SLA-tracked enforcement notice out.**
+A vision-AI pipeline for flagging illegal construction in Indian municipal corporations, with confidence-based SLA routing, multi-provider AI failover, and a legal-notice generator constrained to a fixed statute list.
-MIT License · React 18 + Express · Gemini 2.5 Flash · Built for Google Solution Challenge 2026
+[](https://infrawatch-sepia.vercel.app)
+
+
+
+
+
+
+
----
+Google Solution Challenge 2026 project, team of two. Prototype, not a validated deployment.
-## Table of Contents
-- [The Problem](#the-problem)
-- [What It Does](#what-it-does)
-- [Why It Matters](#why-it-matters)
-- [Key Features](#key-features)
-- [Architecture](#architecture)
-- [Tech Stack](#tech-stack)
-- [Quickstart](#quickstart)
-- [Demo Access](#demo-access)
-- [Project Structure](#project-structure)
-- [Environment Variables](#environment-variables)
-- [API Reference](#api-reference)
-- [Roadmap](#roadmap)
-- [License](#license)
+
---
-## The Problem
-
-Bengaluru has roughly **2.5 million buildings** across **198 wards**, monitored by around **840 BBMP enforcement officers**. Manual inspection can't keep pace with construction. Two concrete consequences:
-
-- The 2019 Dharwad building collapse killed 19 people in an unauthorized structure that went unflagged.
-- Bellandur Lake's wetlands have been degraded by unchecked construction-linked sewage discharge.
-
-BBMP's own figures put average detection-to-notice time at 21+ days — long enough for a violation to be finished, occupied, or already causing damage before enforcement even starts.
-
-## What It Does
-
-InfraWatch closes the loop from satellite image to legal notice in one pipeline:
-
-1. **Detect** — Gemini 2.5 Flash analyzes satellite tiles and returns structured violation candidates: bounding boxes, classification, confidence score.
-2. **Triage** — Each detection is auto-assigned an SLA tier: 4 hours at ≥90% confidence, 12 hours at ≥80%, 24 hours otherwise.
-3. **Dispatch** — Round-robin assignment routes the case to the nearest available field officer.
-4. **Draft** — Gemini drafts a formal enforcement notice citing real statute (Karnataka Municipal Corporations Act 1976 §308/321/322, BBMP Building Bye-laws 2003). If it can't confidently match a citation, it falls back to "Refer to applicable BBMP Bye-laws" instead of inventing a section number.
-5. **Track** — Every action is timestamped and logged.
-6. **Crowdsource** — A public reporting portal takes anonymous photo + GPS submissions into the same officer queue, no login required.
+## Why
-## Why It Matters
+Bengaluru has an enormous stock of buildings and a small enforcement team, so detection-to-notice time is measured in weeks. InfraWatch explores closing that loop in software: a satellite tile goes to a vision model, a detection becomes a case with a response deadline, and the case gets a draft legal notice for an officer to review.
-This is a hackathon prototype, not a validated deployment — we haven't run a pilot, so we're not going to hand you a fabricated ROI table. What we can say concretely:
+No pilot has been run, so there are **no impact or accuracy claims** here. Numbers that can be measured honestly are in [`eval/`](eval/README.md); vision accuracy is explicitly pending.
-- Manual review scales linearly with officer headcount; satellite-triggered detection doesn't.
-- Detection-to-notice time drops from weeks (someone has to physically notice and report a violation) to however long the AI pipeline + officer review takes — realistically minutes to hours once a tile is scanned.
-- Every notice and action is logged, which is closer to RTI-auditable than the current largely undocumented process.
+## Features
-Actual impact numbers are a Phase 2 pilot deliverable, not something we're claiming today.
-
-## Key Features
-
-**AI Vision**
-- Gemini 2.5 Flash for satellite tile analysis — bounding boxes + confidence scores
-- Automatic failover to Groq Llama 4 Scout Vision on Gemini rate-limit/quota errors
-- AI Insights panel surfaces hot wards, SLA performance, false-positive trends
-- Chat copilot with read access to the violations DB, cites real ward names and case IDs
-
-**Crisis Response Workflow**
-- Live SLA-breach banner, polls every 15 seconds
-- One-click "City Scan" — detects, files, and dispatches across 4 hotspots in under 30 seconds
-- Role-based access control, round-robin officer assignment
-
-**Legal Drafting**
-- Notices grounded in named statutes (KMC Act 1976, BBMP Building Bye-laws 2003, Karnataka Town & Country Planning Act 1961)
-- Explicit guardrail against hallucinated section numbers
-- Standard 10-section notice format: notice number, date, addressee, address, violation, legal provision, required action, deadline, consequences, officer
-
-**Civic Participation**
-- Public reporting portal, anonymous, photo + GPS, IP-rate-limited
-
-**Transparency**
-- Every case action is audit-logged
-- Public `/health` endpoint reporting DB, AI provider, and uptime status
+| Area | What the code does | Where |
+|---|---|---|
+| Vision analysis | Single-image and before/after analysis via Gemini; returns bounding boxes, violation type, confidence, risk level as JSON | `server/services/visionAI.js` |
+| Confidence-based SLA | 4h if confidence >= 90, 12h if >= 80, else 24h; status ON_TIME / AT_RISK (past 80% of SLA) / BREACHED | `server/services/sla.js`, `server/routes/violations.js` |
+| AI failover | Gemini primary; on 429 / quota / 503 / timeout the same request is retried on Groq (Llama 4 Scout for images, Llama 3.3 70B for text) | `visionAI.js` `callAI` |
+| Legal notices | Draft notices from a prompt that restricts citations to a fixed statute list and tells the model to use a fallback phrase when unsure | `visionAI.js`, `gemini.js` |
+| Case workflow | Roles (admin, commissioner, inspector, field officer), ward-scoped access, notice templates, activity log of case actions | `server/routes/*`, `server/middleware/*` |
+| Crisis feed | Dashboard banner polling every 15 s for high-confidence unresolved cases and SLA breaches | `CrisisResponseBanner.jsx` |
+| Citizen portal | Public, no-login report endpoint, in-memory limit of 5 reports/minute per IP | `server/routes/citizen.js` |
+| Other | Case-review dossier, chat over a violation, compliance report, analytics, PWA shell, `/health` page | `server/routes/vision.js`, `analytics.js`, `client/` |
## Architecture
-```
-┌──────────────────────┐
-│ VERCEL │
-│ React 18 + Vite │
-│ Leaflet · PWA │
-└──────────┬───────────┘
- │ /api proxy
- ▼
-┌──────────────────────┐ ┌──────────────────────────┐
-│ RENDER │────►│ Google AI Studio │
-│ Node.js 20 + Express │ │ Gemini 2.5 Flash │
-│ sql.js · JWT auth │ │ (vision + text gen) │
-└──────────┬───────────┘ └──────────┬───────────────┘
- │ │ if 429 / quota
- │ ▼
- │ ┌──────────────────────────┐
- │ │ Groq Llama 4 Scout │
- │ │ (auto-failover) │
- │ └──────────────────────────┘
- ▼
-┌──────────────────────┐
-│ ESRI World Imagery │
-│ (satellite tiles) │
-└──────────────────────┘
+```mermaid
+flowchart LR
+ subgraph Client["Client - Vercel"]
+ UI["React 18 + Vite