Apache-3 BidOps · Docs · 03

Scoring algorithm

How the platform scores SAM.gov opportunities against the Apache-3 profile for go/no-go decisions.

The scoring algorithm produces a fit_score (0-100) plus a recommended_action (pursue | monitor | decline) for every SAM.gov opportunity.

Inputs

  1. opportunity (RawSamGovOpportunity) — what we know about the notice
  2. profile (CompanyProfile) — Apache-3's profile
  3. org (Organization) — Apache-3's corporate identifiers

Scoring dimensions

Each dimension contributes 0-20 points. Total: 100.

1. Set-aside fit (0-20)

Set-aside Apache-3 qualifies? Points
SDVOSB Yes (SBA VetCert) 20
VOSB Yes (SBA VetCert) 20
Native American-Owned Yes (Lipan Apache Tribe of Texas) 20
8(a) Yes (Native American-Owned set-aside path) 20
WOSB No 0
HUBZone No 0
Full and open small business Yes 15
Open / Full and Open (no set-aside) Yes 10

2. NAICS match (0-20)

NAICS in opportunity Apache-3 registered? Points
541519, 541512, 541611, 611420, 611430 Yes 20
541xxx (other Computer Services category) Adjacent 12
611xxx (other Education) Adjacent 12
Anything else No 4

3. PSC match (0-20)

U012 (training), D316 (help desk), D399 (other IT services), R408 (program management support), R699 (other professional services) score 20. Adjacent PSCs in the same family score 12. Everything else scores 4.

4. Geography (0-20)

Place of performance Points
Kansas 20
Colorado, Missouri, Nebraska 15
Remote acceptable 18
Continental US (non-listed) 10
Outside continental US 0

5. Past performance fit (0-20)

A deterministic similarity score based on keyword overlap between the opportunity description and Apache-3's relevant_experience entries. High keyword overlap (~70%+ of unique nouns) scores 20. Moderate overlap (~40-70%) scores 12. Low overlap scores 4.

Aggregation

fit_score is the sum, 0-100.

recommended_action:

  • pursue — fit_score >= 70 AND set-aside fit > 0
  • monitor — fit_score 50-69 OR (set-aside fit = 0 but other dimensions strong)
  • decline — fit_score < 50 OR set-aside is one Apache-3 cannot qualify for

Why deterministic?

LLM-based scoring is unstable — same opportunity scored twice can produce different scores. Deterministic scoring is auditable, defensible at a contract review board, and CI-testable. The LLM is reserved for content generation, where variance is acceptable.

Implementation: src/lib/scoring.ts.

← All docs