Inspiration
Wildfire initial attack is a clock. In the first 0–3 hours, incident commanders are forced to make high-stakes calls with incomplete information: Where will the fire go next? Which community is at risk first? Do we need evacuation warnings? What resources do we request now?
We built Flashpoint around a simple product promise:
“3 decisions in 10 seconds.”
A decision-support prototype that turns messy live signals into clear, explainable next steps for the initial attack window.
What it does
Flashpoint is a specialized Incident Commander decision support system for the 0–3 hour initial attack phase.
It combines:
- Live incident detection from NASA FIRMS (satellite hotspots) → clustered into fire “incidents”
- Operational context from weather + NWS alerts (+ optional CAL FIRE / perimeters)
- Physics-inspired spread envelopes (1h / 2h / 3h) with wind direction + optional wind shift
- Three ranked Action Cards (Evacuation / Resources / Tactics) with “Why” bullets + confidence
- A specialized chatbot (centerpiece) that is:
- Incident-aware (always operates on the selected incident)
- Tool-grounded (must cite tool outputs like
[tool:get_weather]) - Doctrine-backed (RAG retrieval from IRPG/FOG/ICO/10&18 Watchouts like
[KB:irpg#12]) - Structured for IC workflows:
decision,evidence,actions_0_3h,uncertainties - Resilient: deterministic fallback still works if AI is unavailable
How we built it
Live fire detection (Live Mode)
- NASA FIRMS hotspots (VIIRS) → parsed from CSV → clustered with DBSCAN-style clustering into “fire events”
- For top incidents we enrich with:
- Open-Meteo weather (wind/humidity/temp)
- NWS alerts (e.g., Red Flag Warnings)
- Optional: CAL FIRE incident pages + ArcGIS perimeters
API: /api/fires/live
Spread modeling (0–3h)
We implemented an explainable spread model (not a black box). The spread rate is:
[ \text{rate} = \text{baseRate} \times \text{windFactor} \times \text{humidityFactor} \times \text{fuelFactor} ]
Then we generate cone/ellipse polygons oriented by wind direction for 1h / 2h / 3h envelopes, with support for wind shift scenarios.
API: /api/spread
Action Cards (recommendations)
We generate three action categories:
- Evacuation
- Resources
- Tactics
Cards are ranked using a multi-factor score (risk + time-to-impact + proximity to assets/communities + operational constraints) and always include explainable “Why” bullets.
API: /api/recommendations
Specialized chatbot (tool-use + doctrine grounding)
The chatbot is not a generic wrapper. It uses:
- Preflight automation: if context is missing, it auto-runs
get_weather → compute_spread → get_action_cards - Tool grounding: facts must cite tool outputs like
[tool:compute_spread] - RAG doctrine: retrieves relevant sections from IRPG/FOG/ICO/Watchouts and cites them
[KB:...] - Safety guardrails: decision support language (recommendations + triggers), not dispatch
- Deterministic fallback when AI is unavailable
API: /api/chat, /api/kb/search
Challenges we faced
- Real-time data is messy: FIRMS hotspots are detections, not perimeters — clustering and prioritization mattered a lot.
- Latency and reliability: we added caching (FIRMS TTL, NWS TTL) and made the system degrade gracefully.
- Hallucinations: we implemented server-side validation so ungrounded claims are filtered unless supported by tools / KB snippets.
- Integration complexity: maps, GPU layers, geospatial math, and tool orchestration had to stay fast and explainable.
What we learned
- A good safety-critical assistant is less about “smart words” and more about grounded computation + evidence + workflow fit.
- Explainability (risk breakdown + citations) makes recommendations more usable than raw predictions.
- A robust demo needs graceful failure modes — deterministic cards + briefs still deliver value.
What’s next
- Time-slider spread timeline (15-min steps to 3 hours) with “likely vs worst-case” envelopes
- Better operational overlays: roads, communities, critical infrastructure
- Stronger historical learning using curated incident reviews + structured outcomes
- Field usability: mobile-friendly briefing export + offline mode
Safety note
Flashpoint is a hackathon decision-support prototype designed for training and situational awareness. Real wildfire response should follow official procedures and command structures.
Built With
- claude
- deck.gl
- mapbox
- next.js
- react
- tailwind
- typescript
- vercel
Log in or sign up for Devpost to join the conversation.