RFP Search
AI-powered RFP aggregator that scrapes government and nonprofit opportunities nightly.
Finding government RFPs used to mean checking a dozen different websites every day. I built RFP Search to solve that. It scrapes seven sources nightly, including SAM.gov, Grants.gov, and state procurement portals, then uses Llama 3.1 to extract structured data, categorize opportunities, and generate summaries. Built as a Cloudflare Workers monorepo with React Router, Hono, and D1.
The problem
Anyone hunting government contracts, nonprofit grants, or university RFPs has to check seven or more disconnected portals. Each has its own search, its own format, its own gaps. The result is hours of manual work and missed opportunities.
The approach
A nightly scraper aggregates seven sources into a single searchable index. Workers AI (Llama 3.1 8B) parses, categorizes, and summarizes each opportunity in one prompt to keep neuron usage tight. Cloudflare D1 with FTS5 full-text search powers the API. The web UI runs on React Router v7 on Cloudflare Workers, talking to a private Hono API through Service Bindings.
Notable decisions
- Service Bindings for web to API. No CORS, no public API surface, sub-millisecond hop.
- FTS5 with auto-sync triggers. Search hits land instantly after each scrape.
- Single AI prompt per RFP for parse, categorize, and summarize. Keeps Workers AI neuron usage flat.
- Staggered cron (9:00, 9:15, 9:30 UTC) to stay under per-Worker CPU limits.
- Computed status (open, expiring soon, closed) at query time, not stored as state.
Status
Live and actively developed. Deployed at rfp.davidloor.com. Scraper running nightly across seven sources.
Want similar work for your team?
AI-native senior engineering for AI, cloud, and web. Open to consulting engagements and full-time roles.