JAN-AI
The AI cannot break a report
Civic issue reporting — people photograph a pothole or a broken streetlight, mark it on a map, and the report enters a tracked dashboard.
Hard part. Two people photographing the same pothole must not become two reports, and an embedding comparison against every prior report does not scale. Dedup runs as an agent: Gemini embeddings at 768 dimensions over a pgvector HNSW index narrow the field, Groq-hosted reasoning judges the survivors, and a human confirms. A rejection-memory constraint records every dismissed match so the same false positive is never raised twice.
- Stack
- Next.js, Express, Prisma, PostgreSQL, pgvector, pg-boss, Gemini, Groq
- Role
- Solo — backend first, then the frontend on it
- Status
- Deployed