You're spending 5 hours a week on SAM.gov. Searching, filtering, opening listings that turn out to be useless. At $150/hour — a reasonable rate for a BD director or fractional consultant — that's $37,500/year just to find opportunities. And you're still missing most of the relevant ones.
That's the math we ran when we built AwardEdge. The results were embarrassing: manually monitoring SAM.gov means you see roughly 1 in 5 relevant opportunities. The other 80% get buried before you ever find them.
This isn't a pep talk about "you need to work smarter." It's a walkthrough of exactly how automated scoring works — with real numbers, real code, and the specific filters that separate worth-bidding from waste-of-time.
The Problem With Manual SAM.gov Monitoring
SAM.gov publishes tens of thousands of active solicitations at any given time. A small defense contractor with 6 NAICS codes, SDVOSB eligibility, and a $5M–$25M contract value range might be genuinely qualified for 40–80 of them. The rest is noise.
The problem isn't finding opportunities. It's finding the right opportunities without spending your entire week doing it. Here's what manual monitoring looks like in practice:
- Keyword searches miss opportunities that don't use your exact terms
- Set-aside filters are imprecise — you still get big-bureau competitive awards
- NAICS codes have hierarchical relationships that simple search can't exploit
- Opportunity windows close before you discover them
- No scoring means every result looks equally important
The result: you either over-search (wasting hours) or under-search (missing deals). There's no calibration for how much time to spend, because there's no way to rank what's actually worth your attention.
How Automated Scoring Works
Automated scoring starts with a company profile — your NAICS codes, set-aside eligibility, preferred contract values, past performance categories, and keywords. That profile becomes a scoring engine that evaluates every new SAM.gov solicitation in real time.
The three-layer filter
Every opportunity passes through three scoring layers before it reaches your desk:
- Eligibility filter — Does this opportunity match your set-aside status? Is your NAICS code in scope? Is the dollar value in your range?
- Capability match — How well does the NAICS description align with your capabilities? Is this a core competency or a stretch?
- Strategic fit — Keywords, agency history, competition level, and timing windows all factor into a final score between 0 and 100.
Only opportunities that pass all three layers with a score above your threshold reach you. The rest stay in the database, scored and ranked, available if you want to browse — but not filling your inbox with noise.
"The eligibility filter alone eliminates 60% of all SAM.gov solicitations for an SDVOSB contractor. That's 60% of the noise, gone before any human has to look."
Scoring in Practice: Real Code, Real Data
Here's what an opportunity looks like when it comes through the scoring engine. This is the JSON payload returned by our API for a single solicitation:
{
"notice_id": "FA8330-26-Q-00018",
"title": "Electronic Warfare Support System Maintenance",
"department": "Department of the Air Force",
"naics": "334290",
"naics_description": "Communications Equipment Manufacturing",
"set_aside": "SDVOSB",
"base_nsps_value": 1450000,
"response_deadline": "2026-06-15T14:00:00Z",
"score": 87,
"score_breakdown": {
"eligibility": 1.0,
"naics_match": "exact",
"set_aside_match": 1.0,
"value_fit": 0.9,
"keyword_relevance": 0.85
},
"verdict": "BID — strong SDVOSB fit, clear requirements, $1.45M within range",
"compete_factor": 0.72,
"days_remaining": 18
}
The score of 87/100 is the composite result of the eligibility and fit layers. Here's the pseudocode for the scoring algorithm that generates that number:
// Score an opportunity against a company profile function scoreOpportunity(opportunity, profile) { let score = 0; let weights = { eligibility: 0.35, naics: 0.25, value: 0.15, keywords: 0.25 }; // Layer 1: Eligibility check — fail fast if ineligible if (!profile.set_asides.includes(opportunity.set_aside)) { return { score: 0, verdict: "INELIGIBLE — set-aside mismatch" }; } if (opportunity.base_nsps_value > profile.max_value || opportunity.base_nsps_value < profile.min_value) { return { score: 0, verdict: "INELIGIBLE — value out of range" }; } // Layer 2: NAICS match (exact > parent > grandparent) let naicsScore = scoreNaicsMatch(opportunity.naics, profile.naics_codes); // Layer 3: Keyword relevance from description + title let keywordScore = scoreKeywords( opportunity.title + " " + opportunity.description, profile.keywords ); // Composite score (0–100) score = Math.round( (weights.eligibility * 1.0) + (weights.naics * naicsScore) + (weights.value * scoreValueFit(opportunity.base_nsps_value, profile)) + (weights.keywords * keywordScore) * 100); return { score, verdict: score >= 70 ? "BID" : score >= 40 ? "REVIEW" : "SKIP" }; }
What 2,847 Opportunities Actually Look Like
Here's the breakdown of opportunities in our current SAM.gov feed, filtered to small-business-eligible solicitations with values between $250K and $50M:
Set-aside breakdown
- SDVOSB only: 847 opportunities — strongest fit for SDVOSB contractors, typically less competition
- VOSB only: 393 opportunities — good fit but often wider geographic distribution
- 8(a) set-aside: 412 opportunities — HUBZone/8(a) certified contractors only
- HUBZone: 218 opportunities — limited to HUBZone certified firms
- Total small business: 977 opportunities — accessible to all small businesses but more competitive
The numbers reveal a pattern: SDVOSB contractors who focus on SDVOSB-only set-asides face roughly 1/3 the competition of total-small-business opportunities. That directly affects win probability — and it's something manual search rarely surfaces because most contractors never drill into the set-aside breakdown.
The Manual Monitoring Failure Mode
Here's what manual monitoring costs in practice. A contractor searching "defense maintenance" on SAM.gov might return 200 results. They'll open the first 20. The highest-value ones will be at the top of the list. But SAM.gov ranking isn't relevance ranking — it's posting date. So you're optimizing for freshness, not fit.
Our data shows that among opportunities scoring 80+ (the highest tier, the "bid now" signals), 43% had posted more than 14 days before being discovered. For a 30-day RFP window, that means 2 weeks of bidding time was already consumed before a human ever found it.
With automated monitoring, every new posting is evaluated within minutes. High-scoring opportunities are flagged immediately. You see them the same day they post, not two weeks later.
What You Can Do Today
If you're still doing manual SAM.gov searches, here's the minimum viable improvement:
- Lock in your NAICS codes — exact matches score 1.0, parent codes score 0.75. Know the difference.
- Filter to set-aside first — SDVOSB or VOSB only. Total-small-business competitions are 3x more competitive.
- Set a value floor — below $250K, the administrative overhead of bidding rarely pays. Filter it out.
- Sort by response deadline — opportunities closing in under 10 days need immediate attention.
- Score before you open — if the NAICS code doesn't match, don't read the description. Move on.
That's manual scoring. It's better than nothing. But you still have to do it every day, and you still miss opportunities that post between your search sessions.
The automated version does all of this continuously — and surfaces only the ones worth your time.