About the Project
Inspiration
CrimePath was inspired by a problem one of our teammates experienced firsthand during their career in law enforcement: reconstructing a reliable timeline with massive amounts from fragmented evidence data can be difficult, time-consuming and overall hard to find.
A single investigation can involve CCTV footage, photos, witness statements, phone records, and transactions, all stored in different places and formats. A witness says they saw someone "around 9." A camera's clock might be a few minutes off. A phone ping puts the same person across town twenty minutes later. Each piece tells part of the story, and investigators have to manually work out what happened, when it happened, where it happened, and who was involved.
The hardest part often isn't collecting the evidence. It's noticing when two pieces can't both be true, like when someone would have needed 25 minutes to reach a place they were seen 12 minutes later or find a charge record but the individual is nowhere near the location of the time. Those inconsistencies are easy to miss when the evidence is spread across dozens of files and systems.
That experience led us to ask: What if a timeline could build itself as evidence comes in, and point out inconsistencies immediately?
We built CrimePath to explore that idea. CrimePath uses AI to transform unstructured evidence into structured events and connects those events through an interactive timeline and map, helping turn scattered pieces of evidence into a clearer chronological picture.
What It Does
CrimePath is an AI-powered investigation workspace designed to help users organize and understand evidence chronologically.
Users can create a case and upload evidence such as CCTV footage, images, and supporting files. CrimePath analyzes uploaded evidence and extracts relevant information, including timestamps, locations, subjects, and descriptions of events.
Instead of leaving this information across disconnected files, CrimePath organizes it into a unified case view. Users can:
- Explore events chronologically through an interactive timeline
- Visualize where events occurred on a map
- Create and track subjects involved in a case
- Associate subjects with multiple events
- Connect events back to their supporting evidence
- Review AI-generated information as part of the investigative workflow
Our goal is not to replace an investigator's judgment, but to reduce the manual work required to organize evidence and understand how different pieces may fit together.
How We Built It
CrimePath was built as a full-stack web application using React and TypeScript for the frontend and Node.js with Express for the backend.
We use TigerData with PostgreSQL as our database. PostgreSQL allows us to model relationships between cases, subjects, evidence, and events, while TigerData's time-series capabilities fit naturally with CrimePath's chronological approach. Events can be queried based on when they occurred while remaining connected to their subjects, locations, and supporting evidence.
Our data model separates cases, subjects, evidence, and events instead of placing everything into a single table. Relationships between them allow one event to involve multiple subjects, the same subject to appear throughout a case, and one piece of evidence to contribute to multiple events.
We integrated Google Gemini into our backend to help analyze uploaded evidence and convert unstructured information into structured event data. Shared TypeScript schemas help us validate that information before it is used throughout the application.
On the frontend, we turn the structured data into interactive timelines, maps, subject profiles, and evidence views so users can move between different perspectives of the same case.
For deployment, we use Vercel for our frontend and Render for our Node.js backend, which securely connects to our TigerData database.
Challenges We Faced
One of our biggest challenges was determining how to transform unstructured evidence into consistent, structured information. AI-generated responses can vary, but our application needs predictable information such as timestamps, locations, subjects, and event descriptions. We addressed this by creating shared schemas and validating generated information before incorporating it into the application.
Designing the database was another challenge. Real evidence does not map neatly to one row per event. One video can contain several events, one event can involve several subjects, and the same subject can appear repeatedly throughout a case. We therefore designed CrimePath around relational connections between these entities.
Deployment also presented challenges. CrimePath uses a TypeScript monorepo with shared schemas across different parts of the application. Code that worked in our local development environment initially behaved differently in production because our development tools could execute TypeScript directly while Node.js expected compiled JavaScript. Solving this required us to better understand TypeScript compilation, npm workspaces, environment variables, and production deployment.
We also had to think carefully about incomplete information. Evidence may not always contain an exact timestamp, recognizable subject, or precise location. CrimePath therefore needs to remain useful without treating uncertain or AI-generated information as confirmed fact.
What We Learned
Building CrimePath taught us that creating an AI application involves much more than connecting an interface to an AI model. A major challenge is designing the surrounding system so that AI-generated information can become structured, understandable, and reviewable data.
We learned how to combine AI processing with PostgreSQL relationships, time-series data, geospatial information, and an interactive frontend. We also gained experience building APIs, designing shared TypeScript schemas, handling uploaded evidence, managing environment variables, and deploying a multi-service application.
Working with TigerData also changed how we approached the data model. Time is not simply another attribute in CrimePath. It is one of the main ways evidence is connected and understood, making time-series infrastructure especially useful for reconstructing a sequence of events.
Most importantly, we learned the value of starting with a real problem. CrimePath originated from an issue one of our teammates had encountered during their career in law enforcement, and the project gave us an opportunity to explore how modern AI and data infrastructure could approach that problem differently.
What's Next for CrimePath
Our next step is to make CrimePath more automated, accessible, and practical for real investigative workflows.
One major feature we want to introduce is OpenCV-powered CCTV analysis. Instead of requiring users to manually identify every relevant moment in hours of footage, we want CrimePath to detect when a known subject appears in CCTV footage and automatically create a potential evidence entry with the corresponding timestamp. The detection could then be associated with the subject, source footage, and case timeline for human review.
We also want to make the user interface more accessible and intuitive. Future improvements include clearer navigation, more accessible visualizations, improved keyboard and screen-reader support, and better ways of displaying complex timelines and relationships without overwhelming the user.
Another priority is creating a better end-to-end investigative workflow. We want to reduce the number of manual steps between uploading evidence and understanding how it contributes to a case. This could include streamlined workflows for reviewing AI-generated events, confirming or rejecting detections, linking subjects, correcting extracted information, and quickly moving between the timeline, map, subjects, and original evidence.
We also want to improve subject matching across different evidence sources, expand our geospatial analysis, and eventually introduce better collaboration features for teams working on the same case.
Ultimately, we see CrimePath developing into a workspace where AI and computer vision can reduce repetitive evidence review and help organize complex information, while investigators remain responsible for verifying evidence and drawing conclusions.
Built With
- css
- geminiapi
- html
- motion
- node.js
- postgresql
- react
- tailwind
- tigerdata
- typescript
Log in or sign up for Devpost to join the conversation.