How Opportunity Scout ranks and filters federal and state contracting opportunities
Opportunity Scout pulls active solicitations and pre-solicitations from multiple jurisdictions, then scores each opportunity on a 0–93% Win Likelihood scale. This is not a statistical win probability — it's a relative priority rank designed to surface the best-fit, lowest-friction opportunities for a small business at an early stage.
Scoring runs entirely server-side in the Cloudflare Worker. The formula is not visible in page source. All scores are computed fresh on each scan, enriched with historical data from USASpending.gov (federal records only), and can be refined further by Claude AI analysis of the actual solicitation document.
Every opportunity carries a source tag: federal (SAM.gov, pulled live against your 7 NAICS codes), state-md (Maryland eMMA) or state-va (Virginia eVA). Federal records are NAICS-coded; state records are UNSPSC-coded — both are normalized into a shared classificationCode field. State opportunities are loaded via upload (JSON or a fixed-column CSV template) and persist in the Worker's KV store; live state-portal adapters are stubbed pending API access.
Because state records have no NAICS, the profile-code boost and the NAICS exclusion list don't apply to them — scope alignment is judged from the title keyword patterns alone (see Step 3), and the agency-tier penalties (Step 6) are federal-only.
Before scoring, any opportunity matching an exclusion pattern is flagged "off-profile" and given a score of 5% (excluded from ranked view by default). Exclusions are hard filters — they indicate scope that is structurally outside your capabilities. Federal records are also excluded by out-of-scope NAICS code (construction, manufacturing, etc.); state records, having no NAICS, are filtered by the title patterns below only.
| Category | Example keywords |
|---|---|
| Aviation / aerospace | aircraft, aviation, airframe, rotor, helicopter |
| Weapons / ordnance | weapon, ordnance, ammunition, missile, artillery |
| CBRN / hazardous materials | nuclear, radiological, hazmat, biological agent |
| Heavy civil construction | dam, bridge, freeway, dredge, excavate |
| Medical devices | implant, prosthetic, surgical instrument, diagnostic kit |
| Food service / agriculture | cafeteria, catering, livestock, crop |
| Electronics manufacturing | circuit board, PCB, semiconductor, cable assembly |
| Naval vessels | vessel, ship, submarine, destroyer |
Every non-excluded opportunity starts at 25% — roughly the average SBA-reported small business win rate on competitive federal contracts.
| Condition | Adjustment |
|---|---|
| Eligible now (SB, open competition, or unrestricted) | +25% |
| Future eligible (WOSB, SDVOSB, 8(a), HUBZone — cert gap) | +5% |
| Other / check required | +0% |
| Contract value | Adjustment | Rationale |
|---|---|---|
| Unknown / $0 | +5% | Unpriced — assume small |
| ≤ $25K | +20% | Micro-purchase range — easiest to win |
| $25K–$100K | +16% | Simplified acquisition threshold |
| $100K–$250K | +10% | Small enough to execute easily |
| $250K–$500K | +4% | Moderate size |
| $500K–$1M | −4% | Increasing competition and scrutiny |
| > $1M | −14% | Large contracts attract established contractors |
Complexity (Low −0% / Medium −5% / High −14%) is decoupled from raw dollar value. Large contract size alone does not imply execution difficulty for a low-friction service.
| Category | Complexity rule |
|---|---|
| Janitorial, Grounds/Lawn, Software Resale, Admin Support | Low up to $1M; Medium above $1M — never High from size alone |
| Real Estate, Consulting, Mental Health, unclassified | Standard value tiers: Low <$150K, Medium $150K–$1M, High >$1M |
| Any category with a Systems Engineering, Enterprise Scope, or COOP red flag | +1 complexity level (capped at High) |
Complexity also drives sort order — the ranked list is ordered by WinLikelihood² ÷ Complexity², so a High-complexity opportunity ranks well below a Low-complexity one at the same win likelihood.
| Condition | Adjustment |
|---|---|
| SB set-aside or unrestricted | +10% |
| Nationwide / remote performance | +4% |
The opportunity title is scanned for keywords matching your service profile. The first matching pattern applies its boost and labels the opportunity (e.g. "Janitorial", "Mental Health").
| Category label | Trigger keywords (sample) | Boost |
|---|---|---|
| Mental Health | mental health, counseling, therapy, behavioral health, clinical, psycholog | +20% |
| Janitorial | janitorial, custodial, cleaning, housekeeping, sanitation | +18% |
| Grounds/Lawn | lawn, landscape, grounds, mowing, turf, vegetation | +18% |
| Consulting | consulting, advisory, management support, program support, acquisition support | +15% |
| Software Resale | software, license, subscription, SaaS, technology resell | +14% |
| Real Estate | real estate, property, space search, facility finder, lease | +14% |
| Admin Support | administrative, admin support, office support, clerical, records management | +12% |
Federal records get a NAICS boost when the code is in the profile:
| NAICS | Description | Boost |
|---|---|---|
| 621330 | Mental Health | +12% |
| 561720 | Janitorial Services | +10% |
| 561730 | Landscaping / Lawn Care | +10% |
| 541611 | Admin & Mgmt Consulting | +8% |
| 541618 | Other Mgmt Consulting | +8% |
| 511210 | Software Reseller | +7% |
| 531390 | Real Estate | +6% |
State / regional records carry a UNSPSC code, not a NAICS, so there is no profile-code table to match. Instead, a state record whose title matches one of the keyword patterns above receives a flat +8% — the median of the NAICS boost values — standing in for the profile hit. This replaces the NAICS boost; it is not added on top of it.
USASpending.gov is queried for recent awards under the same NAICS code. The query runs in up to three passes: (1) small-business set-aside awards only (FPDS codes SBA + SBP) in a 3-year window; (2) if that returns fewer than 5 results, all awards in the 3-year window; (3) if still sparse, a 6-year window. Every pass is value-capped per NAICS. This is federal-only — state records have no NAICS to query. The number of unique awardees serves as a proxy for market competition.
| Unique awardees | Adjustment |
|---|---|
| ≤ 5 | +8% (niche market — less-contested) |
| 6–20 | +0% |
| 21–50 | −4% |
| 51–100 | −8% |
| > 100 | −12% (crowded market) |
USASpending also computes incumbent concentration: if the top 2 recipients hold >60% of award value under this NAICS, the market is flagged as high-concentration and a warning is shown in the detail panel. This is informational and does not change the score directly (competition density captures it indirectly).
Title patterns that signal structural disadvantage are scanned. Total deduction is capped at −30% regardless of how many flags trigger. Up to 2 flag labels are shown in the opportunity row.
| Flag | Trigger keywords (sample) | Deduction |
|---|---|---|
| Clearance Req | classified, secret clearance, top secret, TS/SCI | −8% |
| O&M | operations and maintenance, O&M | −15% |
| Incumbent Signal | incumbent, recompete, follow-on contract, option exercise | −12% |
| IDIQ/Vehicle | IDIQ, MATOC, GWAC, BPA, blanket purchase agreement | −12% |
| Sys Engineering | systems engineering, systems integration, systems architect | −12% |
| COOP | continuity of operations, COOP | −10% |
| Enterprise Scope | enterprise-wide, enterprise solution, portfolio management | −10% |
| Health IT | medical records, EHR, electronic health record, clinical data | −8% |
| Logistics | logistics support, supply chain, inventory management | −8% |
State and regional records skip this step's penalties entirely and instead receive a flat +4% state buyer credit, reflecting the generally lighter clearance, compliance, and audit burden of state and municipal procurement.
For federal records, the agency/department path returned by SAM.gov (and the title as fallback) is checked against known high-friction agency categories. These agencies tend to require prior experience, clearances, or have procurement cultures that favor large primes and established incumbents.
| Label | Agencies | Deduction |
|---|---|---|
| IC Agency | NSA, CIA, DIA, NRO, NGA, Intelligence Community | −18% |
| DoD | Army, Navy, Air Force, Marines, DARPA, DLA, DHA, Pentagon | −6% |
| DOE | Department of Energy, National Nuclear Security Administration | −8% |
| NASA | National Aeronautics and Space Administration | −8% |
| Health Research | NIH, National Cancer Institute, CDC | −4% |
Civilian agencies (GSA, VA, USDA, HUD, SBA, etc.) receive no agency penalty — these are better-fit customers for early-stage small businesses.
Each score is accompanied by a Signal indicator (High / Med / Low) that tells you how much data supports the score — not whether the score is good or bad.
After the top 30 results are scored, each is enriched asynchronously with data from USASpending.gov. The enrichment runs in the background — columns fill in as results return.
USP data is cached per NAICS code for 7 days. All opportunities sharing a NAICS see the same median value — this is intentional to avoid excessive API calls.
Federal contracting data is heavily right-skewed. A single large enterprise award — a $50M IDIQ to a major integrator — can pull the mean far above what any small business would realistically bid. Even with per-NAICS value caps filtering the worst outliers, the mean remains sensitive to extremes.
Mode doesn't apply cleanly here because award amounts are continuous: no two contracts land on exactly the same dollar figure. Binning the data into ranges would require an arbitrary choice of bin width that heavily influences the result, and with only 25 data points the mode is essentially meaningless.
The median — the middle value when awards are sorted — is resistant to outliers by definition. It answers the question "what does a typical award under this NAICS look like?" which is the right benchmark for sizing a bid. The confidence score layered on top tells you how well that median applies to any specific opportunity.
On demand (click "Analyze ✦"), Claude reads the actual solicitation document from SAM.gov and returns a structured assessment including:
AI analyses are cached for 90 days. After a scan, any previously analyzed opportunities have their results automatically restored so you don't re-pay for Claude on the same solicitation. All analyzed opportunities are stored in the Analysis Archive.
modifiedDate updates) may indicate incumbent negotiation or scope changes — not yet scored.