RFP Search
Aggregatore di bandi di gara alimentato dall'IA che raccoglie opportunità governative e no-profit ogni notte.
Trovare bandi di gara governativi significava controllare una dozzina di siti web diversi ogni giorno. Ho costruito RFP Search per risolvere questo problema. Raccoglie dati da 11 fonti ogni notte, tra cui SAM.gov, Grants.gov e portali di approvvigionamento statali, poi usa Llama 3.1 per estrarre dati strutturati, categorizzare le opportunità e generare riassunti. Costruito come monorepo Cloudflare Workers con React Router, Hono e D1.
Il problema
Chiunque cerchi contratti pubblici, sovvenzioni per non-profit o bandi universitari deve controllare sette o più portali scollegati. Ognuno con la sua ricerca, il suo formato, le sue lacune. Il risultato sono ore di lavoro manuale e occasioni perse.
L'approccio
Uno scraper notturno aggrega sette fonti in un unico indice ricercabile. Workers AI (Llama 3.1 8B) analizza, categorizza e riassume ogni opportunità in un solo prompt per tenere bassi i consumi di neuroni. Cloudflare D1 con ricerca full-text FTS5 alimenta l'API. La UI web gira su React Router v7 su Cloudflare Workers, parlando con un'API Hono privata tramite Service Bindings.
Decisioni notevoli
- Service Bindings tra web e API. Niente CORS, niente superficie API pubblica, hop sotto il millisecondo.
- FTS5 con trigger di auto-sync. I risultati di ricerca arrivano subito dopo ogni scrape.
- Un singolo prompt AI per RFP per parsing, categorizzazione e riassunto. Mantiene piatto il consumo di neuroni di Workers AI.
- Cron scaglionato (9:00, 9:15, 9:30 UTC) per restare sotto i limiti di CPU per Worker.
- Stato calcolato (aperto, in scadenza, chiuso) al momento della query, non memorizzato come stato.
Stato
Live e in sviluppo attivo. Deployato su rfp.davidloor.com. Scraper in esecuzione ogni notte su sette fonti.
Want similar work for your team?
AI-native senior engineering for AI, cloud, and web. Open to consulting engagements and full-time roles.