Data pipeline
Fresh data every morning.
A scheduled job runs at about 4:30 AM Eastern, after SAM.gov refreshes its daily extract. It downloads the full opportunities file and loads it into a Postgres database. Separate nightly jobs pull the entity registrations (filtered to small and SBA-certified firms) and agency procurement forecasts.
Cleanup
One opportunity, one listing.
Amendments are grouped by agency, solicitation number and title, and only the newest version is shown. Deadlines without a time zone are read as US Eastern, and a bare date means the end of that day, so "open for bids" actually means open.
For users
Search, save and get alerts.
Businesses create a profile, save searches and opportunities, and get daily or weekly email digests of new matches, amendments to opportunities they follow, and upcoming deadlines. Alerts run only after a successful sync, so nobody gets an email built on half-loaded data.
Engineering
Lean, tested and cheap to run.
Next.js on Vercel, Postgres on Supabase, Python sync scripts and GitHub Actions. Every change runs lint, type checks and a test that applies the database schema twice to a fresh database to prove it's safe to rerun. Sign-in uses hashed passwords and session cookies, with rate limits.