Veteran Resource Directory — AI-powered resource discovery connecting Veterans with 21,000+ resources across employment, housing, healthcare, legal aid, and more.
A full-stack Veteran resource directory: FastAPI backend on Railway, Next.js 15 frontend on Vercel, and PostgreSQL for persistence. Aggregates resources from VA.gov, Department of Labor, HUD, nonprofits, and community organizations. Veterans describe their situation in natural language and get matched with relevant resources through AI-powered semantic search. Built with radical transparency about its use of web scraping and AI.
Python 3.12 + FastAPI backend with SQLModel ORM and Alembic migrations. Next.js 15 frontend with TypeScript, Tailwind, and shadcn/ui. PostgreSQL on Railway for production, Docker for local development. Claude API powers extraction, search enhancement, match explanations, and a chat assistant. Custom ETL pipeline: connector → normalize → dedupe → enrich → load.
Two-service architecture: Next.js frontend on Vercel talks to FastAPI backend on Railway. The backend orchestrates 18 data connectors, a full ETL pipeline, trust scoring, and an AI layer powered by Claude for extraction and semantic search.
Next.js Frontend (Vercel / vetrd.org) | REST API + Search + Chat | FastAPI Backend (Railway) |--- 18 Connectors ---- VA APIs, DOL, HUD, nonprofits |--- ETL Pipeline ----- Normalize → Dedupe → Enrich → Load |--- Trust Scoring ---- Reliability × Freshness |--- AI Layer --------- Claude extraction + semantic search | PostgreSQL (Railway) 21,000 resources | 5,600 orgs | 58 sources
A resource directory is useless if data is stale. The trust scoring pipeline (reliability × freshness decay) was the most important architectural decision.
Started with manual entry, hit a wall fast. The connector pattern (each source gets its own adapter) let us go from dozens to 21,000 resources.
Running 10-17 Claude agents in parallel (Opus for complex tasks, Haiku for research) was the breakthrough. One person + AI swarm = thousands of verified resources.
"I need help" is a valid search query. Semantic search + match explanations bridge the gap between how Veterans describe their needs and how resources are categorized.