If you're the owner, the estimator, and the proposal writer, every hour you spend scrolling SAM.gov is an hour you're not billing. Yet most small contractors run opportunity discovery the same way: open SAM.gov a few times a week, type the same keywords, skim a few hundred results, and hope nothing important posted on the days you skipped. This guide replaces that with a system — one you can run manually in about 30 minutes a day, and automate when you're ready.
Why manual SAM.gov triage fails small contractors
SAM.gov publishes thousands of new contract opportunities every week across every agency and every NAICS code. The problem isn't access — the data is free and public. The problem is that relevance is buried in volume, and the failure modes compound:
- Keyword search misses re-worded postings.An agency that called it “janitorial services” last year may post “custodial and related services” this year. Your saved keyword silently misses it.
- Postings update after you've read them. Amendments change deadlines, set-asides, and scope. If you triaged a notice on Monday, you may be working from stale facts by Thursday.
- Triage decays under deadline pressure.The week you're closing out a proposal is exactly the week you stop checking — and exactly when the next opportunity posts.
- No memory between sessions. Without a written record of what you reviewed and why you passed, you re-read the same notices and re-make the same decisions.
None of these are discipline problems. They're structural problems with using a search engine as a monitoring system.
Step 1: Define your filter profile — once, in writing
Before any tooling, write down the four facts that determine whether an opportunity is even theoretically yours:
- NAICS codes— your primary code plus every secondary code you can credibly perform under. Include adjacent codes you'd team on. Most firms under-list; check what codes your past contracts were actually awarded under.
- Set-aside eligibility— which programs you're certified in (8(a), HUBZone, SDVOSB, WOSB/EDWOSB) and, just as important, which set-asides you can't bid, so those notices never cost you a click.
- Size and value range — the smallest award worth your overhead and the largest you can perform without subcontracting yourself into a margin problem.
- Geography — states and installations where you can actually staff the work, unless the work is remote-performable.
This profile is the single highest-leverage artifact in your BD process. Every triage decision becomes a comparison against it instead of a fresh judgment call.
Step 2: Use SAM.gov saved searches — and know their limits
SAM.gov lets you save searches and receive email notifications. Set them up — they're free and better than nothing. Build one saved search per NAICS code (not one giant query), filter by your set-aside types, and set notification frequency to daily.
Then understand what saved searches won't do, because this is where the manual system needs you:
| Saved searches do | Saved searches don't |
|---|---|
| Match keywords and structured filters | Judge how well a notice fits your profile |
| Email you on a schedule | Rank results — you still read everything |
| Cover new postings | Summarize 40-page solicitations in plain English |
| Filter by set-aside and NAICS | Tell you who the incumbent is or whether it's a recompete |
Treat saved-search emails as raw feedstock, not finished intelligence. The next two steps turn feedstock into decisions.
Step 3: Build a scoring rubric — the 5-minute fit test
For every notice that survives your filters, score it against your profile before reading the attachments. A simple 100-point rubric:
- NAICS match (40 pts): exact code = 40; same 4-digit industry group = 25; adjacent = 10.
- Set-aside fit (25 pts):reserved for a certification you hold = 25; full-and-open where you're competitive = 10; reserved for a program you're not in = 0 (and stop scoring).
- Value range (15 pts): inside your sweet spot = 15; stretch but performable = 8.
- Geography (10 pts): in your staffing footprint or remote = 10.
- Scope keywords (10 pts):the statement of work reads like contracts you've completed = 10.
Set a floor — 40 points is a reasonable starting line — and enforce it ruthlessly. Anything below the floor gets logged and skipped without opening attachments. The rubric's job isn't precision; it's making “no” cheap so your hours concentrate on the handful of real candidates.
Step 4: Check the incumbent before you commit hours
Before deep-reading any strong match, spend ten minutes on USASpending.gov:
- Search the awarding agency and a few scope keywords to find the predecessor contract.
- Note the incumbent, the award amount, and the period of performance end date.
- Read the signals: an award ending within 6–12 months of the posting date suggests a recompete; a long-tenured incumbent with strong performance is a harder target than a contract that has changed hands.
This single habit prevents the most expensive small-contractor mistake: writing a full proposal into a recompete the incumbent was always going to win, when the same hours could have gone to a winnable bid.
Step 5: Decide bid/no-bid in one sitting
Schedule triage as one block — 30 minutes, same time daily. For each surviving notice, record three things in a simple log (a spreadsheet is fine): the score, the decision (bid / watch / pass), and one sentence of reasoning. The log does two jobs: it stops you re-reviewing the same notices, and after a few months it becomes your own dataset — you'll see which score ranges actually turned into wins and tune your floor accordingly.
Automating the whole loop
Everything above is automatable, and the order of operations maps cleanly to software: monitor the SAM.gov API on a fixed cycle, score each new and amended notice against a stored profile, deliver only the matches above the floor, attach incumbent data, and pre-draft the response outline for the ones you choose to pursue.
That is, transparently, what GovOpp Intel does — every 6 hours, with the same rubric logic this article just taught you to run by hand. But the system matters more than the tool: run this manually for two weeks first.You'll calibrate your profile, learn your real fit floor, and know exactly what you're automating — whether you automate it with us or with a spreadsheet and discipline.
Key takeaways
- Write your filter profile (NAICS, set-asides, size/value, geography) once — it converts every triage decision into a cheap comparison.
- Use SAM.gov saved searches as feedstock; they match keywords but can't judge fit.
- Score every notice against a fixed rubric with a hard floor. Make “no” cheap.
- Check USASpending.gov for the incumbent before committing proposal hours.
- Log every decision. Two weeks of logs will teach you more about your pipeline than any guide.