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:

  1. Orchestrator receives: "Analyze the downtown robbery pattern"
  2. Delegates to Link Agent: "Find similar cases in the graph"
  3. Link Agent discovers 3 connected cases, asks Profiler Agent: "What's the behavioral pattern here?"
  4. Profiler generates profile, triggers Geo-Intel: "Where should we expect the next hit?"
  5. 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

Built With

Share this project:

Updates