Gridlock / PRESENTATION_CONTENT.md
parvmittal07's picture
changed name of the project
651893c
|
Raw
History Blame Contribute Delete
23.2 kB

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)

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 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.