How Opportunity Scout ranks and filters state, county, and municipal contracting opportunities
Opportunity Scout scores each uploaded solicitation and pre-solicitation 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 and can be refined further by Claude AI analysis of the actual solicitation document.
Every opportunity carries a source tag: state-md (Maryland eMMA) or state-va (Virginia eVA). Records are UNSPSC-coded; the code is stored in a classificationCode field. Opportunities are loaded via upload (JSON or a fixed-column CSV template) and persist in the Worker's KV store; live portal adapters are stubbed pending API access.
Because records carry a UNSPSC code rather than a matchable profile-code table, scope alignment is judged from the title keyword patterns (see Step 3), with a flat classification credit standing in for a profile-code hit.
Before scoring, any opportunity whose title matches an exclusion pattern is flagged "off-profile" and given a score of 5% (excluded from the ranked view by default). Exclusions are hard filters — they indicate scope that is structurally outside your capabilities.
| 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 |
| Marine vessels | vessel, ship, submarine, destroyer |
Every non-excluded opportunity starts at 25% — roughly the average competitive win rate for a small business bidding open solicitations.
| Condition | Adjustment |
|---|---|
| Eligible now (SB / SBR / SWaM / SBE / open competition / 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% | Small-purchase 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% |
| Statewide / remote performance | +4% |
Maryland SBR (Small Business Reserve), Virginia SWaM (Small, Women-owned & Minority-owned), and generic municipal SBE (Small Business Enterprise) set-asides are all treated as small-business-eligible now.
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% |
Records carry a UNSPSC code, not a matchable profile-code table. Instead, an opportunity whose title matches one of the keyword patterns above receives a flat +8% classification credit plus +15 signal points. This stands in for a direct profile-code hit; it applies once, on a keyword match.
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 |
|---|---|---|
| O&M | operations and maintenance, O&M | −15% |
| Incumbent Signal | incumbent, recompete, follow-on contract, option exercise | −12% |
| IDIQ/Vehicle | IDIQ, MATOC, BPA, blanket purchase agreement, indefinite-delivery | −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, warehousing | −8% |
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.
On demand (click "Analyze ✦"), Claude reads the solicitation documents attached to the uploaded record 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.
competitorCount input the scorer already supports.type field).