Skip to content

Latest commit

Β 

History

30 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ›°οΈ CrisisLink AI

AI-Powered Multi-Agent Disaster Coordination System β€” built for the Google AI Agent Builder Series 2026, Agents for Good track.

CrisisLink AI takes a raw citizen emergency report and turns it into a verified, prioritized, resourced, security-checked rescue plan β€” using a Google ADK 2.x graph-based Workflow, an MCP server for tools, and a human-in-the-loop gate for critical decisions.


Demo

ADK Workflow Execution


Architecture

Citizen
   β”‚
   β–Ό
Emergency Orchestrator  (AgentTool β†’ triage_advisor)
   β”‚
   β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
   β–Ό             β–Ό
SOS Agent    Damage Agent          (parallel)
   β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
          β–Ό
   Priority Agent
          β”‚
   β”Œβ”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”
   β–Ό      β–Ό      β–Ό
Resource Shelter Medical            (parallel)
   β””β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”˜
          β–Ό
  Security Checkpoint   (code, not LLM: PII mask + injection scan + audit log)
          β–Ό
  Human Approval Agent  (HITL gate β€” only for CRITICAL priority)
          β–Ό
  Communication Agent
          β–Ό
   Final Response


Key Features

🚨 Emergency Contact Directory

Instant access to national and regional emergency services. The feature includes:

  • 25+ Emergency Contacts (Police, Fire, Ambulance, Disaster Response, Medical, etc.)
  • National Level Services (112, 100, 101, 102, NDMA, etc.)
  • Regional Coverage (Delhi, Mumbai, Bangalore, Kolkata)
  • Smart Search & Filtering (by name, number, category, region)
  • One-Tap Calling (mobile-optimized direct phone access)
  • Color-Coded Categories (visual identification of emergency types)

πŸ‘‰ For detailed feature documentation, see EMERGENCY_CONTACTS_FEATURE.md

πŸ€– Multi-Agent Disaster Response Workflow

  • SOS Verification
  • Damage Assessment
  • Priority Classification
  • Resource Allocation
  • Shelter Recommendation
  • Medical Assistance
  • Security & Audit Logging
  • Human Approval Gate
  • Communication Planning

πŸ“ Dashboard & Visualization

  • Live incident map
  • Real-time resource tracking
  • Hospital & shelter locator
  • Active incident monitoring
  • AI agent execution trace

Folder Structure

crisislink-ai/
β”œβ”€β”€ assets/                    architecture diagram (SVG)
β”œβ”€β”€ tests/                     pytest suite (security + agents/tools)
β”œβ”€β”€ crisislink_ai/
β”‚   β”œβ”€β”€ agents/                 8 LlmAgent nodes + human_approval_agent
β”‚   β”œβ”€β”€ tools/                  weather / shelter / hospital / maps / inventory / contacts
β”‚   β”œβ”€β”€ security/               PII masking, prompt-injection detection, audit log, security checkpoint
β”‚   β”œβ”€β”€ agent.py                root Workflow graph (root_agent β€” discovered by `adk web` / `adk run`)
β”‚   β”œβ”€β”€ mcp_server.py           FastMCP server exposing all tools over stdio
β”‚   β”œβ”€β”€ mcp_client.py           shared McpToolset used by tool-calling agents
β”‚   └── config.py               environment-driven settings
β”œβ”€β”€ crisislink-ui/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ pages/
β”‚   β”‚   β”‚   β”œβ”€β”€ Dashboard.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ LiveMap.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Incidents.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ AIAgents.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Resources.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Hospitals.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Shelters.jsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Reports.jsx
β”‚   β”‚   β”‚   └── EmergencyContacts.jsx  (NEW - Emergency Contact Directory)
β”‚   β”‚   └── components/           UI components and routing
β”œβ”€β”€ fast_api_app.py             FastAPI service (/sos, /health)
β”œβ”€β”€ README.md
β”œβ”€β”€ SUBMISSION_WRITEUP.md
β”œβ”€β”€ EMERGENCY_CONTACTS_FEATURE.md  (NEW - Feature documentation)
β”œβ”€β”€ DEMO_SCRIPT.txt
β”œβ”€β”€ Makefile
β”œβ”€β”€ pyproject.toml
β”œβ”€β”€ .env.example
└── Dockerfile

ADK Requirements Checklist

Requirement Where
Workflow API crisislink_ai/agent.py β€” Workflow(edges=[...]) graph
Minimum 6 LlmAgents 8 agents in crisislink_ai/agents/ + human_approval_agent
MCP Server crisislink_ai/mcp_server.py (FastMCP, stdio transport)
MCPToolset crisislink_ai/mcp_client.py, used by damage/priority/resource/shelter/medical agents
AgentTool orchestrator_agent wraps a triage_advisor sub-agent via AgentTool
Security Checkpoint crisislink_ai/security/checkpoint.py (graph node, not an LLM call)
Prompt Injection Detection crisislink_ai/security/prompt_injection_detector.py
PII Scrubbing crisislink_ai/security/pii_masking.py
Human Approval crisislink_ai/agents/human_approval_agent.py (uses ADK's request_input long-running tool)
FastAPI fast_api_app.py
Docker Dockerfile
ctx.state agents read {orchestrator_output}, {sos_result}, etc. via ADK session state

Setup

cd crisislink-ai
cp .env.example .env

# put your real Gemini key in .env:
# GOOGLE_API_KEY=...

uv sync

No GOOGLE_MAPS_API_KEY or WEATHER_API_KEY? That's fine β€” weather_tool calls the free, keyless Open-Meteo API, and the remaining tools fall back to a seeded mock database so everything works offline for judging.


Run It

make playground
make web
make api
make mcp
make test

Try the demo scenario:

curl -X POST http://localhost:8080/sos \
  -H "Content-Type: application/json" \
  -d '{"report_text":"There is severe flooding in Patna. 15 people trapped near Gandhi Setu."}'

Demo Prompt

After launching the Google ADK Playground or ADK Web UI, paste the following emergency report to experience the complete end-to-end multi-agent disaster response workflow.

Sample Emergency Report

A 6.9 magnitude earthquake has struck Kathmandu. A residential apartment has partially collapsed, trapping nearly 30 people inside. Several victims are seriously injured, nearby roads are damaged, and communication networks are unstable. Rescue teams, ambulances, medical supplies, and temporary shelters are urgently required.

Expected Multi-Agent Workflow

  1. πŸ›°οΈ Emergency Orchestrator receives and structures the emergency report.
  2. βœ… SOS Verification Agent validates the authenticity of the emergency.
  3. 🌊 Damage Assessment Agent estimates disaster severity and impact.
  4. 🚨 Priority Agent classifies the incident as CRITICAL and calculates the rescue priority.
  5. πŸš‘ Resource Allocation Agent recommends rescue teams, ambulances, food, water, boats, and medical supplies.
  6. 🏠 Shelter Recommendation Agent identifies the most suitable nearby shelters.
  7. πŸ₯ Medical Assistance Agent recommends nearby hospitals, emergency contacts, and first-aid guidance.
  8. πŸ”’ Security Checkpoint performs PII masking, prompt-injection detection, and audit logging.
  9. πŸ‘€ Human Approval Agent requests dispatcher approval before deploying critical rescue resources.
  10. πŸ“’ Communication Agent generates the final emergency response for citizens, emergency responders, and authorities.

Expected Outcome

  • βœ… Disaster Severity: Critical
  • βœ… Rescue Priority: CRITICAL
  • βœ… Recommended Shelter(s)
  • βœ… Nearby Hospital(s)
  • βœ… Allocated Rescue Resources
  • βœ… Estimated Response Time (ETA)
  • βœ… Citizen Safety Instructions
  • βœ… Authority & Emergency Response Summary

The execution should closely match the workflow visualization and ADK execution trace shown in the Demo section above.


Verification Already Done

Before handing this scaffold over, the following was actually run and confirmed:

  1. pip install google-adk mcp
  2. Workflow graph constructed successfully.
  3. FastAPI routes verified.
  4. MCP server verified.
  5. pytest tests/ β†’ 13/13 passing.

Run locally:

uv sync
make playground

Then check audit_log.jsonl.


Known Gaps / Next Steps

  • damage_agent currently supports only text.
  • Shelter and hospital data use a seeded mock database.
  • human_approval_agent requires an ADK-compatible UI (adk web / adk run) for interactive approval.

Contributing

Contributions are welcome! Check the Issues tab for good first issue labeled tasks. Fork the repo, create a branch, and submit a PR β€” see individual issues for setup details.


Author

Sunny Kumar β€” Co-Organizer & Tech Lead, GDG On Campus BCE Patna Β· Beta MLSA Β· GSA Google

About

Resources

Contributing

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages