Inspiration

Traffic accident forensic reports take 3-5 days of manual work per case. Experts have to read police reports, calculate speeds from skid marks and deformations, check weather conditions, look up which traffic laws apply, and write everything in a format courts accept.

We wanted to see if we could automate the boring parts — the calculations, the data gathering, the document generation — so experts can focus on the cases that actually need human judgment.

What it does

You upload evidence from an accident (police report, photos, measurements) and Veridict reconstructs what happened.

It pulls real weather data, road geometry from OpenStreetMap, and calculates speeds using forensic physics methods like CRASH3 and Stannard Baker:

$$v_0 = \sqrt{2 \cdot \mu \cdot g \cdot d}$$

Then it checks Spanish traffic law to find which articles apply, and generates a court-ready report (UNE-EN 16775 format).

Before finalizing, a "Devil's Advocate" agent challenges the conclusions. If the physics don't add up, it catches it.

How we built it

Frontend: Next.js + TypeScript + Tailwind. Framer Motion for the timeline where you scrub through the accident. Mapbox for the map view.

Backend: Python + FastAPI. Physics calculations (CRASH3, momentum, biomechanics) written from scratch. Claude handles reasoning, GPT-4o for cross-verification.

Legal search: Spanish traffic law embedded in Qdrant. When the system cites an article, it's from actual documents, not hallucinated.

Challenges we ran into

The LLM kept inventing law articles that don't exist. Had to build validation against our actual legal corpus.

Early physics outputs sometimes violated conservation of momentum. The Devil's Advocate agent catches these now.

Syncing the map, timeline scrubber, and data panels was harder than expected.

Accomplishments that we're proud of

  • Works end-to-end: upload case → get forensic report
  • Real physics with uncertainty ranges, not just generated text
  • Devil's Advocate actually catches errors
  • Timeline scrubber is smooth

What we learned

  • Multi-agent systems need clear boundaries between agents
  • RAG is mandatory for legal citations — never trust model memory
  • Mixing deterministic physics code with LLM reasoning works well

What's next for Veridict

  • EDR (black box) data integration
  • 3D reconstruction from dashcam video
  • Expand beyond Spanish law to EU
  • Human expert review workflow

Built With

  • aemet-api
  • claude-opus-4
  • claude-sonnet-4
  • claude-vision
  • cloudflare-r2
  • fastapi
  • framer-motion
  • gpt-4o
  • mapbox-gl-js
  • next.js
  • numpy
  • openai-embeddings
  • openstreetmap
  • pydantic
  • python
  • qdrant
  • scipy
  • shadcn/ui
  • supabase
  • tailwind-css
  • typescript
  • vercel
  • zustand
Share this project:

Updates