Inspiration
Public health signals are scattered across different sources, and detecting an emerging outbreak often requires looking at current surveillance data together with what happened in similar situations in the past.
We wanted to build an agent that does more than simply retrieve data. Outbreak Intelligence Agent combines live health surveillance signals with persistent memory stored in CockroachDB so that an AI agent can compare the current situation with historical reports and explain why a situation may or may not require attention.
What it does
Outbreak Intelligence Agent is an agentic public-health surveillance system that:
- Ingests health surveillance signals from public sources.
- Stores structured observations in CockroachDB.
- Stores historical health reports together with vector embeddings.
- Retrieves relevant historical situations using semantic search.
- Detects unusual or potentially concerning patterns.
- Uses an LLM to reason over current signals and retrieved memory.
- Produces an explainable assessment instead of simply returning a prediction.
- Keeps an audit trail of important reads and writes.
The system also includes freshness and relevance safeguards so stale data or semantically unrelated historical reports do not automatically become evidence for an alert.
How we built it
The application is built with Python and FastAPI. CockroachDB is used as the persistent memory layer, including vector search for historical health reports.
The agent retrieves recent health signals, searches its historical memory for relevant reports, evaluates the available evidence, and then generates an explanation using an LLM.
The application is containerized with Docker and deployed to AWS using Amazon ECR and Amazon ECS.
Agentic Memory
The central idea of the project is that the agent should not reason only from the current input.
Instead, the workflow is:
Current signals → CockroachDB memory → Semantic retrieval → Pattern analysis → Agent reasoning → Explainable assessment
This gives the agent persistent memory that can be queried when new situations occur.
Challenges
One of the biggest challenges was distinguishing genuinely relevant historical information from merely similar-looking text. We added a semantic relevance threshold so that the agent does not blindly treat the nearest vector-search result as evidence.
Another challenge was handling stale surveillance data. The system explicitly checks data freshness before allowing observations to drive alert generation.
We also had to package the complete application, including the embedding model, into a deployable container and configure it for AWS.
What we learned
We learned how persistent memory changes the design of an AI agent. Instead of treating every request as an isolated LLM call, the agent can maintain structured and semantic memory and use that memory as part of its reasoning process.
We also learned how CockroachDB can serve not only as a traditional relational database but also as the persistent memory and vector-search layer for an agentic application.
Finally, deploying the complete agent as a container on AWS helped us understand the practical challenges of taking an AI prototype toward a production-style architecture.
Built With
- ai
- amazon
- amazon-web-services
- api
- cockroachdb
- database
- docker
- ecr
- ecs
- embeddings
- fastapi
- frameworks
- languages
- llm
- other
- python
- rag
- rest
- semantic
- sentencetransformers
- sql
- vector
Log in or sign up for Devpost to join the conversation.