Inspiration
Criminal investigations are fundamentally broken. Evidence lives in silos. Detectives spend 60% of their time on paperwork instead of solving cases. Connections between cases go unnoticed because no human can hold thousands of data points in their head simultaneously.
I asked myself: What if AI agents could work together like a real detective squad?
Not a single monolithic model trying to do everything, but specialized agents—each an expert in their domain—collaborating through a shared protocol. One agent connects evidence across cases. Another profiles criminal behavior. Another predicts where the next crime might occur. And an orchestrator coordinates them all, just like a lead detective would.
That's how CRIS was born.
What it does
CRIS is a multi-agent AI platform that transforms scattered evidence into actionable criminal intelligence. It features six specialized agents:
| Agent | Superpower |
|---|---|
| Link Agent | Builds knowledge graphs, finds hidden connections between cases, detects serial patterns |
| Profiler Agent | FBI BAU-style behavioral analysis, risk assessment, recidivism prediction |
| Geo-Intel Agent | Crime hotspots, geographic profiling using Rossmo's formula, next-location prediction |
| Witness Agent | Statement analysis, inconsistency detection, credibility scoring, deception indicators |
| Predictor Agent | Monte Carlo simulations, escalation prediction, "what-if" scenario modeling |
| OSINT Agent | Digital footprint analysis, social media intelligence, online threat assessment |
Users interact with natural language queries like:
- "Are there similar cases to this robbery in the south district?"
- "Generate a suspect profile based on the crime scene"
- "Analyze inconsistencies between these witness statements"
- "Where is the next incident most likely to occur?"
The Orchestrator agent understands the query, delegates to the right specialists, and synthesizes their findings into a coherent intelligence report.
How we built it
Architecture
User Query → Orchestrator Agent → A2A Protocol → Specialized Agents → Synthesized Response
Each agent is a Gemini 3 instance with a specific role, custom tools, and the ability to request help from other agents via A2A. gull architecture: https://github.com/francotesei/cris/blob/main/docs/architecture.md
Tech Stack
- AI Engine: Gemini 3 (
gemini-3.0-flash) - Agent Framework: Google ADK with native tool use and orchestration
- Agent Communication: A2A Protocol for inter-agent collaboration
- Knowledge Graph: Neo4j for modeling criminal networks as graphs
- Vector Search: ChromaDB for semantic search over case files
- Frontend: Streamlit for rapid prototyping
The A2A Magic
The real innovation is how agents collaborate. When analyzing a complex case:
- Orchestrator receives: "Analyze the downtown robbery pattern"
- Delegates to Link Agent: "Find similar cases in the graph"
- Link Agent discovers 3 connected cases, asks Profiler Agent: "What's the behavioral pattern here?"
- Profiler generates profile, triggers Geo-Intel: "Where should we expect the next hit?"
- Orchestrator synthesizes everything into a coherent intelligence report
This isn't prompt chaining—it's genuine agent collaboration via A2A.
Geographic Profiling
We implemented Rossmo's formula for predicting offender anchor points:
$$P(c) = \sum_{i=1}^{n} \frac{\phi}{d_{ic}^f} + \frac{(1-\phi)(B^{g-f})}{(2B - d_{ic})^g}$$ This lets the Geo-Intel Agent predict likely home/work locations of serial offenders.
Challenges we ran into
Agent Coordination Deadlocks
Agents would sometimes get stuck in loops, asking each other for information neither had. We solved this with a "delegation depth" limit and gave the Orchestrator veto power to break cycles. Agents now fail gracefully with explicit "I don't have enough information" responses.
Context Window Management
Complex cases with hundreds of evidence items would blow past context limits. We implemented summarization agents, selective retrieval based on query relevance, and graph traversal with depth limits.
Balancing Speed vs. Thoroughness
Full multi-agent analysis took 30+ seconds. We implemented a "quick mode" where the Orchestrator answers simple queries directly, only spawning specialist agents for complex investigations. Response time dropped to 3-5 seconds for 80% of queries.
Ethical Guardrails
AI in criminal justice is a minefield. We addressed this by including confidence intervals on all predictions, labeling profiles as "hypotheses to verify," maintaining full audit trails, and designing for human-in-the-loop operation.
Accomplishments that we're proud of
- True multi-agent collaboration: Not just a router calling different prompts, but agents that genuinely communicate and delegate via A2A protocol
- Hybrid data architecture: Neo4j for relationship queries + ChromaDB for semantic search gives the best of both worlds
- Real criminology math: Rossmo's geographic profiling formula actually works in practice—seeing academic research translate to working code was incredibly satisfying
- Sub-5-second responses: Despite the multi-agent complexity, optimized the system to feel responsive for most queries
- Ethical-first design: Built transparency and human oversight into the core architecture, not as an afterthought
What we learned
A2A Protocol is a Game-Changer
My first approach was a simple router. It fell apart with complex queries. A2A enabled agents to delegate, request clarification, and combine partial results—genuine collaboration instead of orchestrated isolation.
Knowledge Graphs > Vector DBs for Relationships
Pure RAG worked for "what happened" but failed for "how is this connected to X." Neo4j enabled path-finding, community detection, and pattern matching that vector similarity simply can't do.
Gemini 3's Tool Use is Production-Ready
Previous models hallucinated tool calls or got stuck in loops. Gemini 3 consistently picks the right tool, formats parameters correctly, and knows when to stop. This reliability made the multi-agent architecture viable.
Domain Expertise Matters
Reading criminology papers (geographic profiling, behavioral analysis, statement credibility) made the agents dramatically more useful. AI + domain knowledge > AI alone.
What's next for CRIS - Criminal Reasoning Intelligence System
- Real-time evidence ingestion from police CAD systems
- Multi-language support for witness statement analysis (critical for diverse communities)
- Federated deployment so agencies can collaborate without sharing raw data
- Fine-tuned models for specific crime types (financial fraud, cybercrime, human trafficking)
- Mobile companion app for field investigators to query CRIS on-scene
- Integration with existing RMS (Records Management Systems) used by law enforcement
Built with ❤️ for justice
Log in or sign up for Devpost to join the conversation.