Spaces:
Running
Running
| # Gridlock β Hackathon Presentation Content | |
| > Page-by-page deck content for **Gridlock: Event-Driven Congestion Forecasting & | |
| > Resource Recommendation**. Each page gives **more content than you need** β pick | |
| > the lines that land hardest. Brag points and suggested visuals are called out per | |
| > page. A design/theme guide is at the end. | |
| > | |
| > **Deck length:** 6 core content pages (+ title + closing). Pages 7β8 are optional | |
| > add-ons if you have time/space. | |
| > | |
| > **The one-sentence pitch (memorize this):** | |
| > *"We turned a raw, unlabeled Bengaluru traffic-event log into a live decision-support | |
| > tool that tells a control room β before an incident escalates β how long it will last, | |
| > whether it needs a closure, how many officers to send, and which spots will keep | |
| > reoffending."* | |
| --- | |
| ## TITLE PAGE (excluded from the 5β6 count) | |
| - **Gridlock** | |
| - Tagline options (pick one): | |
| - *"From raw event log to operational foresight."* | |
| - *"Stop firefighting traffic. Start forecasting it."* | |
| - *"Predict the impact. Pre-position the response."* | |
| - Sub-line: Event-driven congestion forecasting & resource recommendation for Bengaluru | |
| - Team name Β· Hackathon name Β· Date | |
| - Visual: a dark Bengaluru map with a few glowing hotspot markers (screenshot from the Map tab). | |
| --- | |
| ## PAGE 1 β Problem & Solution (keep it punchy) | |
| **Headline:** *"Traffic control today is reactive. We make it predictive."* | |
| ### The problem (2β3 lines max β judges know traffic is bad) | |
| - Every road event β an accident, a procession, construction, a pothole, water-logging β | |
| forces a control room to make fast calls: **Do we close the road? Divert? How many | |
| officers? How long will this tie up the corridor?** | |
| - Today those calls are **reactive and experience-based**. By the time the response is | |
| sized correctly, the congestion has already cascaded. | |
| - The data to do better exists β but it ships as a **raw event log with no "impact" | |
| label**, riddled with leakage and multilingual free text. | |
| ### Our solution (this is what they care about) | |
| - **Gridlock** forecasts an event's impact **at the moment it's reported** and converts | |
| that forecast into **concrete operational actions**. | |
| - Four predictions, four decisions: | |
| | We predict | We recommend | | |
| |---|---| | |
| | Will it need a **road closure / diversion**? | Barricading + diversion plan | | |
| | **High vs low** operational priority | Manpower **tier** | | |
| | **How long** until it clears (with an interval) | Officer count + clearance ETA | | |
| | Will this spot **keep reoffending**? | Send a **root-cause fix**, not another patrol | | |
| - Delivered as a **live, deployed web app** β not a notebook. Enter what's known at report | |
| time, get a calibrated forecast + a recommended response in one click. | |
| ### Brag line to drop here | |
| > *"Most teams were handed a labeled dataset and trained a classifier. We were handed a | |
| > raw operational log and had to **define the problem itself** β engineer the targets, | |
| > strip the leakage, and ship a product."* | |
| **Suggested visual:** a simple before/after β "Reactive (today): incident β escalation β | |
| scramble response" vs "Gridlock: incident β instant forecast β pre-sized response." | |
| --- | |
| ## PAGE 2 β Application Flow & System Architecture (overview) | |
| **Headline:** *"One raw CSV in. Four calibrated decisions out. End-to-end."* | |
| ### The flow in plain language | |
| 1. **Ingest** the raw Astram event log (46 columns, multilingual, messy). | |
| 2. **Clean** it into a typed, sane frame (nulls, coordinates, timestamps). | |
| 3. **Engineer four targets** that don't exist in the data. | |
| 4. **Build leakage-safe features** computable only from report-time info. | |
| 5. **Train four models** (three operational + one forward-looking early-warning). | |
| 6. **Serve** predictions + recommendations through a FastAPI backend and a React UI. | |
| ### The product surface (4 tabs) | |
| - **Predict** β forecast a single event β manpower/closure/duration/hotspot + action plan. | |
| - **Map** β Bengaluru-wide congestion, chronic hotspots, closure risk and manpower load. | |
| - **Top Areas** β every police-station area ranked by risk, fully sortable. | |
| - **Models** β the evidence: metrics, calibration, operating points, feature importance. | |
| ### Stack at a glance (shows engineering breadth) | |
| - **ML:** LightGBM Β· XGBoost Β· CatBoost Β· scikit-learn Β· Optuna Β· sentence-transformers (PyTorch) | |
| - **Backend:** FastAPI + Uvicorn, single in-process model service (loads once at startup) | |
| - **Frontend:** React + TypeScript + Vite + TailwindCSS + Radix UI + Leaflet + Recharts | |
| - **Delivery:** one multi-stage **Docker** image, **deployed live on Hugging Face Spaces** | |
| ### Brag line | |
| > *"From a raw CSV to a containerized, publicly deployed decision tool β the full ML | |
| > lifecycle, not just a model.fit()."* | |
| **Suggested visual:** a horizontal pipeline ribbon (CSV β Clean β Targets β Features β | |
| Models β API β UI) sitting above three screenshots of the app tabs. Or use the Mermaid | |
| diagram from Page 4 in a simplified form here. | |
| --- | |
| ## PAGE 3 β The Dataset: Problems We Hit & How We Solved Them | |
| **Headline:** *"The hard part wasn't the model β it was making the data tell the truth."* | |
| ### The dataset | |
| - **Astram** anonymized traffic-event log, Bengaluru. | |
| - **8,173 raw β 8,057 clean** events; **9 Nov 2023 β 8 Apr 2024** (~150 days); **46 columns**. | |
| - Mix of **planned** (processions, VIP movement, construction) and **unplanned** | |
| (accidents, breakdowns, potholes, tree-fall, water-logging) events. | |
| ### The problems β our solutions (this table is the star of the page) | |
| | # | Problem in the raw data | What we did | | |
| |---|---|---| | |
| | 1 | **No "impact" label exists** | Engineered **4 targets** from scratch (closure, priority, duration, chronic hotspot) | | |
| | 2 | **Duration isn't a column** | Reconstructed it by coalescing `resolved β closed β end` minus start time | | |
| | 3 | **Leakage everywhere** β end-point coords & `route_path` are filled in *after* a closure is drawn | Partitioned them into `LEAKAGE_COLUMNS`; **never used as features** | | |
| | 4 | **Many spellings of NULL** | Normalized every null token to real `NaN` | | |
| | 5 | **Sentinel / out-of-range coordinates** (0,0 placeholders, data-entry noise) | Clamped to a Bengaluru bounding box (lat 12.6β13.4, lon 77.2β77.9), bad β `NaN` | | |
| | 6 | **Fake "auto-resolved" timestamps** from a nightly batch job (e.g. :35:47) | Detected and flagged them so they don't poison the duration label | | |
| | 7 | **Severe class skew** β closures are only ~7% of events | Skew-aware metrics + calibration + tunable thresholds (not accuracy) | | |
| | 8 | **Multilingual free text** β English + Kannada + transliterated Kannada | Multilingual sentence-transformer embeddings + an interpretable bilingual lexicon | | |
| | 9 | **Bimodal duration** β minutes for incidents, **weeks** for construction | Log-target point model + uncapped quantile models for honest intervals | | |
| ### THE signature story β tell this out loud | |
| > *"The single biggest trap: the end-point coordinates 'predict' a closure with ~98% | |
| > average precision. But they only exist **because** someone already drew the diversion β | |
| > it's the answer leaking back into the question. We **deliberately deleted our most | |
| > powerful feature** because using it would be cheating. That discipline is the difference | |
| > between a demo and a deployable model."* | |
| ### Brag line | |
| > *"We didn't just clean data β we defended it. Every feature is causal: a row only ever | |
| > sees events reported **before** it. No future leaks backward."* | |
| **Suggested visual:** the problemβsolution table; or a striking "leakage caught" callout β | |
| "Feature that scored AP β 0.98 β removed on purpose." | |
| --- | |
| ## PAGE 4 β System Architecture Diagram | |
| **Headline:** *"A leakage-safe pipeline, four models, one service."* | |
| ### Drop this diagram (renders in Markdown/Mermaid; or redraw in your deck tool) | |
| ```mermaid | |
| flowchart LR | |
| A[Raw Astram CSV<br/>46 cols Β· multilingual] --> B[Cleaning<br/>nulls Β· coords Β· timestamps<br/>auto-batch flagging] | |
| B --> C[Target Engineering<br/>T1 closure Β· T2 priority<br/>T3 duration Β· T4 hotspot] | |
| B --> D[Feature Engineering<br/>causal Β· leakage-safe] | |
| D --> D1[Temporal + cyclical] | |
| D --> D2[Spatial geo-cluster KMeans] | |
| D --> D3[Causal history + recurrence] | |
| D --> D4[Causal target-rate encoding] | |
| D --> D5[Multilingual text embeddings + lexicon] | |
| C --> E | |
| D1 & D2 & D3 & D4 & D5 --> E[Preprocessing<br/>train-fitted assembly<br/>per-task embedding PCA] | |
| E --> F[Chronological split<br/>train = past Β· test = future] | |
| F --> G{Models} | |
| G --> G1[T1/T2/T3: stacked<br/>LightGBM+XGBoost+CatBoost<br/>β logistic meta β isotonic β threshold] | |
| G --> G2[T3 interval: p10/p50/p90<br/>+ conformal correction] | |
| G --> G3[T4 hotspot: calibrated LightGBM] | |
| G1 & G2 & G3 --> H[FastAPI service<br/>loads artifacts once] | |
| H --> I[React + Leaflet UI<br/>Predict Β· Map Β· Top Areas Β· Models] | |
| H --> J[Recommendation layer<br/>manpower Β· barricading Β· diversion] | |
| ``` | |
| ### If you redraw it by hand, keep these three "lanes" | |
| 1. **Data lane (left):** CSV β Cleaning β Targets + Features (call out "causal / leakage-safe"). | |
| 2. **Model lane (middle):** Chronological split β 4 models (highlight the stacked ensemble box). | |
| 3. **Product lane (right):** FastAPI β React UI + Recommendation layer β Docker/HF Spaces badge. | |
| ### Architecture talking points (say these while the diagram is up) | |
| - **Multi-task by construction, not a fragile multi-head net** β three separately tuned | |
| models share **one** feature pipeline. Robust and independently debuggable. | |
| - **Train on the past, test on the future** β a chronological split, the only honest way | |
| to evaluate something that will run live. | |
| - **Everything fitted is fitted on training rows only** β vocabularies, PCA, calibration, | |
| thresholds. The future never touches the fit. | |
| - **The model service loads once** β all artifacts warm in memory; predictions are instant. | |
| ### Brag line | |
| > *"This isn't a notebook with cells run top-to-bottom. It's a modular pipeline with | |
| > explicit leakage boundaries, persisted artifacts, and a deployable inference service."* | |
| **Suggested visual:** the Mermaid diagram (export to PNG/SVG), or a clean 3-lane redraw. | |
| Color the "leakage-safe" boundary in your accent color to make the discipline visible. | |
| --- | |
| ## PAGE 5 β Training Process & Model Choices | |
| **Headline:** *"Three decorrelated boosters, stacked, calibrated, and turned into policy."* | |
| ### The recipe (per operational task T1βT3) | |
| ``` | |
| Optuna-tuned LightGBM β | |
| Optuna-tuned XGBoost βββΊ logistic meta-learner (on out-of-fold preds) | |
| Optuna-tuned CatBoost β βββΊ isotonic calibration βββΊ decision threshold | |
| ``` | |
| - **Why three boosters?** They make different errors. Stacking decorrelated learners | |
| beats any single model β and we tuned each with **Optuna**, not hand-picked params. | |
| - **Why a logistic meta-learner on out-of-fold predictions?** It learns how to trust each | |
| base model **without leaking** β the stack never sees a row's own training fold. | |
| - **Why isotonic calibration?** So a "30% closure risk" actually means 30%. Calibrated | |
| probabilities are what let a control room **act on the number** (Brier scores prove it). | |
| - **Why a separate threshold step?** Because the cutoff is an **operational policy**, not a | |
| modeling constant β see the operating points below. | |
| ### Duration is special (heavy-tailed β honest intervals) | |
| - Point estimate on a **log target** (winsorized) so multi-week construction doesn't | |
| dominate the fit. | |
| - Separate **p10 / p50 / p90 quantile models** + a **conformal correction** β an honest | |
| **80% prediction interval** (empirically covers ~78%). We give a *range*, not false precision. | |
| ### The 4th model β our differentiator (T4: chronic hotspot early warning) | |
| - **Engineered from scratch:** at report time, will this **~110 m spot generate β₯2 more | |
| events in the next 14 days?** | |
| - Strictly causal β features use only earlier events, the label uses only later events, | |
| **disjoint time windows**, right-censored rows dropped. | |
| - Operationally it flips the game: **stop re-patrolling the same junction; send a permanent | |
| fix** (drainage, resurfacing, a marshal). | |
| ### Headline results (chronological hold-out β put these big on the slide) | |
| | Task | Metric | Result | Why it's good | | |
| |---|---|---|---| | |
| | **T2 Priority** | PR-AUC | **0.984** (MCC 0.90) | Near-perfect manpower-tier signal | | |
| | **T1 Closure** | PR-AUC | **0.326** | **4.5Γ the 7% base rate**; ROC-AUC 0.835; Brier 0.057 (calibrated) | | |
| | **T3 Duration** | log-RΒ² / median err | **0.251 / 74 min** | Honest fit on a heavy-tailed target; 80% interval covers 78% | | |
| | **T4 Hotspot** | PR-AUC / recall | **0.441 / 0.875** | **2.8Γ base**; catches **189 of 216** emerging hotspots β only 27 missed | | |
| ### Operating points = ML framed as policy (this impresses judges) | |
| - The closure model isn't one number β we expose **risk postures** the control room chooses: | |
| | Posture | Recall | Precision | Use when | | |
| |---|---|---|---| | |
| | Balanced (MCC-optimal) | 0.51 | 0.40 | Normal ops | | |
| | Recall-leaning (deployed) | 0.66 | 0.28 | Don't miss closures | | |
| | Never-miss (recall β₯ 0.8) | 0.83 | 0.15 | VIP / high-stakes days | | |
| ### Intellectual-honesty brag (rare in hackathons β use it) | |
| > *"We report **two** RΒ² numbers for duration and tell you which one is honest. We admit | |
| > the model can't predict brand-new locations with no history β and show it correctly | |
| > assigns them low risk instead of inventing signal. We'd rather be **trusted than | |
| > impressive.**"* | |
| ### Brag line | |
| > *"Per-task Optuna tuning, out-of-fold stacking, isotonic calibration, conformal | |
| > intervals, and threshold-as-policy β this is a production ML playbook, executed in a | |
| > hackathon."* | |
| **Suggested visual:** the stacked-ensemble diagram + the 4-result table; optionally embed | |
| the real PR / calibration / SHAP plots from `reports/figures/` to prove it's measured. | |
| --- | |
| ## PAGE 6 β UI Snippets (the product, live) | |
| **Headline:** *"The science is invisible. The decision is one click away."* | |
| ### Tab 1 β Predict ("Forecast an event") | |
| - Enter only what's known at report time: **location + start time required; everything else | |
| is optional and just sharpens the forecast.** | |
| - Pick a police station β the map pin and coordinates **auto-fill**; or drop a pin manually. | |
| - Output is a **decision panel**, not a JSON dump: | |
| - **Manpower hero**: HIGH / MEDIUM / LOW + suggested officer count. | |
| - Cards: **closure probability** (gauge + expected badge), **priority**, **duration** | |
| (point estimate **+ 80% interval band**), **chronic-hotspot risk + flag**. | |
| - **Barricading**, **diversion**, and a plain-English **rationale** line. | |
| - Every metric has an **(i) info popover** explaining what it means and why it's good. | |
| ### Tab 2 β Map (Bengaluru, dark) | |
| - Four switchable views: **Congestion**, **Chronic hotspots (~110 m cells)**, **Closure | |
| risk**, **Manpower load**. | |
| - Heat layer + per-station markers with **stat popups**; auto-fits to the city; dark/light | |
| basemaps (CARTO). It looks like a real ops dashboard. | |
| ### Tab 3 β Top Areas | |
| - Every **police-station area** (54 of them) ranked by a blended **risk score**. | |
| - Fully **sortable** columns: #events, risk, avg duration, closure rate, high-priority | |
| rate, avg manpower. Find the worst corridors in two clicks. | |
| ### Tab 4 β Models (the receipts) | |
| - Sub-tabs **Priority Β· Closure Β· Duration Β· Hotspot**, each with headline metric, a metric | |
| grid with info popovers, **PR / calibration / SHAP** charts, confusion matrix, operating | |
| points, base-learner comparison, and feature importance. | |
| - Translation: **"don't take our word for it β here's the evidence."** | |
| ### Brag line | |
| > *"A polished, dark-themed, fully responsive product with an interactive city map and a | |
| > self-documenting model report β built and **deployed**, not mocked up."* | |
| **Suggested visual:** 3β4 real screenshots (Predict result panel, the dark Map with | |
| hotspots, the sortable Top Areas table, one Models sub-tab). Annotate the Predict panel | |
| with callouts ("calibrated probability", "80% interval", "recommended action"). | |
| --- | |
| ## PAGE 7 β Conclusion & Impact | |
| **Headline:** *"From reacting to incidents to pre-empting them."* | |
| ### What we built (recap in one breath) | |
| - A **leakage-safe, multi-task ML pipeline** that engineers four decision-grade forecasts | |
| from a raw, unlabeled event log β wrapped in a **live, deployed decision-support app**. | |
| ### Why it matters (impact β frame as outcomes, not features) | |
| - **Proactive resourcing:** size manpower and pre-stage barricading/diversion **before** | |
| congestion cascades, not after. | |
| - **Trustworthy numbers:** calibrated probabilities + honest intervals mean a control room | |
| can **act on the output** instead of second-guessing it. | |
| - **Policy-aware:** operating points let commanders dial risk posture up on VIP/festival | |
| days and back down on routine days β same model, different stance. | |
| - **Break the firefighting loop:** the chronic-hotspot model redirects effort from | |
| **repeatedly patrolling** the same pothole/junction to **fixing it once** β compounding | |
| savings over time. | |
| - **Equity & planning:** the Top-Areas view surfaces chronically under-served corridors for | |
| capital planning (resurfacing, drainage, signal upgrades). | |
| ### The differentiators, restated (your closing brag) | |
| 1. We **defined the problem** (engineered 4 targets) β most teams only solved a given one. | |
| 2. We **deleted our strongest feature** to kill leakage β ML maturity over a vanity score. | |
| 3. We **calibrated and bounded** every prediction β trust, not just accuracy. | |
| 4. We shipped a **forward-looking 4th model** no one asked for β root-cause, not firefight. | |
| 5. We **deployed a real product**, end-to-end, in a container, on the public web. | |
| ### Closing line options | |
| - *"Gridlock doesn't just predict traffic β it tells a city where to stand before the jam | |
| forms."* | |
| - *"We turned a messy CSV into foresight a control room can act on."* | |
| **Suggested visual:** a clean "Reactive β Predictive" arrow with the five differentiators as | |
| icons; or the live deployment URL as a QR code so judges can open it themselves. | |
| --- | |
| ## PAGE 8 (OPTIONAL) β Future Work & Real-World Deployment | |
| **Headline:** *"Already live. Here's how it scales into the control room."* | |
| ### It's already deployed | |
| - Runs as a single **Docker** image, **live on Hugging Face Spaces** (free 16 GB tier) β | |
| judges can use it **right now**. (Same image runs unchanged on Render, AWS, GCP, Azure.) | |
| ### Productionization roadmap | |
| - **Live ingestion:** connect to the real-time Astram feed β forecasts the moment an event | |
| is logged. | |
| - **Feedback loop / online learning:** capture actual outcomes β continuously recalibrate | |
| thresholds and refresh models (drift-aware). | |
| - **Context fusion:** add **weather**, **event calendars**, and **match/festival schedules** β | |
| strong exogenous drivers of impact. | |
| - **Route-level diversion optimizer:** turn the closure prediction into an actual | |
| **graph-based diversion plan** over the road network. | |
| - **Field app:** push the manpower/barricading recommendation to **officers' phones**. | |
| - **Cold-start fix:** external priors (road class, land use) so brand-new locations get a | |
| sensible first estimate. | |
| - **Multi-city transfer:** the pipeline is city-agnostic β retrain on any event log. | |
| ### IRL integration story (say this) | |
| - **API-first**, so Gridlock **slots into the existing control-room dashboard** rather than | |
| replacing it. | |
| - Lightweight enough for **CPU-only** inference β no GPU bill to run it in production. | |
| ### Brag line | |
| > *"This isn't a prototype hoping to become a product. It's a deployed product with a | |
| > credible path into a live traffic-operations center."* | |
| **Suggested visual:** a roadmap timeline (Now: deployed β Next: live feed + weather β Later: | |
| diversion optimizer + field app) or an integration diagram (Astram feed β Gridlock API β | |
| control-room dashboard + officer app). | |
| --- | |
| ## DESIGN / THEME GUIDE (optional, but it sets you apart) | |
| ### Theme | |
| - **Dark, operational, "control-room" aesthetic** β it matches the live app, so the deck and | |
| product feel like one thing. Judges remember cohesive branding. | |
| - **Palette** (from the app): | |
| - Background: near-black slate `#0B0F14` / `#111827` | |
| - Surfaces/cards: `#1A2230` with subtle borders `#2A3442` | |
| - Text: off-white `#E6EDF3`, muted `#9AA7B4` | |
| - **Risk ramp** (reuse everywhere for instant legibility): green `#4F9E7D` β amber | |
| `#CFA247` β orange `#DB8A52` β red `#D35F55` | |
| - Accent (links/highlights): a cool blueβgreen, echoing the app's `colorFrom: blue, | |
| colorTo: green`. | |
| - **Fonts:** a clean geometric sans for headers (Inter / Space Grotesk / Sora), a mono | |
| accent (JetBrains Mono / IBM Plex Mono) for metrics and code-y callouts. | |
| ### Layout principles | |
| - **One idea per slide.** A bold headline (the tagline), then β€5 bullets. Park detail in | |
| speaker notes β you have far more content here than any single slide should show. | |
| - **Lead with the number.** Make `0.984`, `4.5Γ`, `189 / 216`, `74 min` huge; caption small. | |
| - **Show, don't tell:** real screenshots and the real PR/calibration/SHAP plots beat clip-art. | |
| - **Consistent iconography:** reuse the app's Lucide icons (Flame = hotspot, Users = | |
| manpower, ShieldAlert = closure, Clock = duration, Gauge = probability) so visuals map 1:1 | |
| to concepts across deck and product. | |
| - **A persistent footer chip:** tiny "Gridlock Β· live on Hugging Face Spaces" + URL/QR on | |
| every slide β quietly reminds judges it's real and runnable. | |
| ### Visual assets you already have (use them) | |
| - `reports/figures/priority_pr_calibration.png`, `priority_shap_summary.png` | |
| - `reports/figures/closure_pr_calibration.png`, `closure_best_pr_calibration.png`, | |
| `closure_shap_summary.png` | |
| - Live app screenshots: Predict result panel, dark Map with hotspots, Top-Areas table, | |
| Models sub-tabs. | |
| - The Mermaid architecture diagram on Page 4 (export to PNG/SVG). | |
| ### Tooling tips | |
| - **PowerPoint/Keynote:** build one master "dark + risk-ramp" theme, then duplicate slides β | |
| consistency reads as polish. | |
| - **Prefer Google Slides / pretty templates?** Gamma, Pitch, or Canva all do dark decks | |
| well; paste these bullets and swap in the screenshots. | |
| - Export the Mermaid diagram at [mermaid.live](https://mermaid.live) if your tool can't | |
| render it natively. | |
| --- | |
| ### Quick mapping back to your outline | |
| | Your ask | Page here | | |
| |---|---| | |
| | Problem (short) + solution brief | **Page 1** | | |
| | Application flow + system architecture (overview) | **Page 2** | | |
| | Dataset: problems + solutions | **Page 3** | | |
| | System architecture **diagram** | **Page 4** | | |
| | Training process + model choices | **Page 5** | | |
| | UI snippets | **Page 6** | | |
| | Conclusion + impact | **Page 7** | | |
| | Future work + real-world deployment (optional) | **Page 8** | | |
| > Tight on space? Merge **Page 2 into Page 4** (flow + diagram together) and you land at a | |
| > crisp **6 content pages**: Problem/Solution Β· Dataset Β· Architecture Β· Models Β· UI Β· | |
| > Conclusion. | |