Skip to content

Methodology · version 1.0.0

How the RFP Detector Score works

How attractive and workable is this RFP for a typical qualified bidder, today? One number from 0 to 100, the same for every visitor, with every reason shown on the RFP page and in the report.

Starts at 506 weighted factorsSame for everyone, never for sale
Open RFPs by grade, live9,911 scored open RFPs · median 54
  • Excellent 80–100213 · 2%
  • Strong 65–792,139 · 22%
  • Fair 50–644,092 · 41%
  • Limited 35–492,665 · 27%
  • Poor 0–34802 · 8%

The badge colour follows the grade; the letter and the label always say the same thing in text.

What the score measures

The RFP Detector Score answers one question: How attractive and workable is this RFP for a typical qualified bidder, today? It rewards real money on the table, open and winnable competition, enough time to respond, a clear and complete notice, an issuer that actively buys this kind of work, and newness.

Every RFP starts at 50. Six factors move it up or down, and the RFP page lists each contribution with a sentence explaining it. The contributions add up to the score.

Grades and labels

The number maps to a letter grade and a label. The badge colour follows the grade; the letter and the label always say the same thing in text.

Excellent

80–100

213 open now · 2%

Strong

65–79

2,139 open now · 22%

Fair

50–64

4,092 open now · 41%

Limited

35–49

2,665 open now · 27%

Poor

0–34

802 open now · 8%

Live distribution across 9,911 scored open RFPs; median score 54. A notice capped for not being openly competed is labelled “Not competed”.

The formula

Every RFP starts at 50. Each factor adds or subtracts points depending on how this RFP compares with a typical one (the prior), scaled by its weight and by how sure we are of the data. Unknown data contributes exactly 0. The page shows every contribution, and they sum to the score.

score = clamp( round( 50 + Σ K × wᵢ × cᵢ × (sᵢ − pᵢ) ), 0, 100 )

K = 1.8 (stretch constant) · w = weight · c = confidence (0–1) · s = sub-score (0–1) · p = the sub-score of a typical RFP. Without K, six independent factors would put most RFPs between 40 and 60.

The six factors

Weights are relative influence. “Typical” is the sub-score of an average RFP, so a factor only moves the score when this RFP is better or worse than typical and we know it.

Factor weights
FactorWeightTypicalMost it can moveQuestion
Value200.5−18 / +18How much money is on the table?
Competition & access200.5−18 / +18Who can bid, and how concentrated is the market?
Issuer & market200.65−23.4 / +12.6Does this issuer actively buy this kind of work?
Time & stage150.55−14.9 / +12.2Is there a workable window to respond, and is this a real chance to bid?
Clarity & completeness150.7−18.9 / +8.1Is the notice clear and complete enough to respond to?
Freshness100.5−9 / +9How new is it?

Value

weight 20

How much money is on the table?

Inputs

  • Published value or range
  • Budget stated by the buyer
  • Federal: median contract award above $25K for the same NAICS and agency (federal award history)
Measured
The official notice or the buyer published a value.
Estimated
Federal: an award-history bucket with at least 20 awards. Other RFPs: the median published value of similar RFPs in the same state (at least 10 values).
Unknown
Nothing usable. Scored as neutral (no effect).

Competition & access

weight 20

Who can bid, and how concentrated is the market?

Inputs

  • Set-aside or eligibility restriction
  • Sole-source signals in the notice
  • Share of dollars won by the largest recipients (federal award history)
Measured
The set-aside is known and market concentration comes from an agency-level award bucket.
Estimated
The set-aside is known, but concentration comes from an all-agency bucket or is missing.
Unknown
The notice states no eligibility restrictions (common on web RFPs). Scored as neutral.

Issuer & market

weight 20

Does this issuer actively buy this kind of work?

Inputs

  • Contracts awarded and dollars obligated for the NAICS and agency (federal award history)
  • Other RFPs from the same issuer on RFP Detector in the past 12 months
Measured
An agency-level federal award bucket.
Estimated
An all-agency bucket, or RFP Detector history for non-federal issuers.
Unknown
No award history and no issuer activity yet. Scored as neutral.

Time & stage

weight 15

Is there a workable window to respond, and is this a real chance to bid?

Inputs

  • Days until the response deadline
  • Notice stage (solicitation, presolicitation, sources sought, RFI, special notice)
Measured
Always for federal notices and buyer-posted RFPs (no deadline is itself a fact).
Estimated
A web RFP whose deadline was extracted with less than 80% confidence.
Unknown
A web solicitation with no deadline found. Scored as neutral.

Clarity & completeness

weight 15

Is the notice clear and complete enough to respond to?

Inputs

  • Description length
  • Number of documents
  • Contacts (email, phone, named people)
  • Codes and place of performance
  • Solicitation number and deadline
Measured
At least 90% of the components are known.
Estimated
Some components are unknown (for example, a description we have not retrieved).
Unknown
Never fully unknown: contacts and codes are always known.

Freshness

weight 10

How new is it?

Inputs

  • Days since posting
  • Days since the last material amendment (counts up to 80%)
Measured
Always.

Curves and inputs

Each factor turns its inputs into a sub-score between 0 and 1. These are the exact curves the scoring code uses.

Value

Log scale: $25.0K → 0, $10.0M or more → 1. A range uses its geometric mean; “up to $X” counts as 60% of X.

00.250.50.751$25.0K$100.0K$300.0K$1.0M$3.0M$10.0MContract value
Sub-score by contract value
View as table
Contract valueValue
$25.0K0
$100.0K0.23
$300.0K0.41
$1.0M0.62
$3.0M0.8
$10.0M1

Time & stage

Days until the response deadline. Capability-statement notices (sources sought, RFI, special notice) need less time. The result is multiplied by the notice stage below.

00.250.50.751060120365Days left
Bids (solicitations)Capability statements
View as table
Days leftBids (solicitations)Capability statements
000
10.050.1
30.20.4
70.50.8
10—1
140.8—
211—
6011
1200.85—
3650.70.8

Freshness

Days since posting. A material amendment refreshes the factor, counting up to 80%.

00.250.50.751014306090Days since posted
Sub-score by days since posted
View as table
Days since postedFreshness
01
21
70.75
140.5
300.25
600.1
900.05

Clarity & completeness

Weighted components. Web RFPs are scaled by extraction confidence.

  • Description35%
  • Documents25%
  • Contacts20%
  • Codes and place10%
  • Identifiers10%

Notice stage multiplier

Notice stage multipliers
NoticeMultiplier
Solicitation (RFP, RFQ, IFB)× 1
Combined synopsis/solicitation× 1
Call for proposals× 1
Presolicitation× 0.85
Sources sought× 0.75
Request for information× 0.75
Special notice× 0.6
Bundling notice× 0.6
Justification (J&A)× 0.3
Award notice (not scored live)× 0
Other notice× 0.6

Competition: who can bid

Set-aside pool scores
Set-aside codePool
Full and open competition NONE0.45
Total small-business set-aside SBA0.85
Partial small-business set-aside SBP0.7
8(a) competitive set-aside 8A0.95
HUBZone set-aside HZC0.95
Service-disabled veteran-owned small business set-aside SDVOSBC0.95
Women-owned small business set-aside WOSB0.95
Economically disadvantaged WOSB set-aside EDWOSB0.95
Veteran-owned small business set-aside (VA) VSA0.95
Local area set-aside LAS0.9
Indian small business economic enterprise set-aside ISBEE0.95
Indian economic enterprise set-aside IEE0.95
Buy Indian set-aside (IHS) BICiv0.95
8(a) sole source 8AN0.05
HUBZone sole source HZS0.05
SDVOSB sole source SDVOSBS0.05
WOSB sole source WOSBSS0.05
EDWOSB sole source EDWOSBSS0.05
Veteran-owned sole source (VA) VSS0.05

A narrower eligible pool scores higher for those who qualify. Sole-source codes mean there is effectively no competition to enter.

The typical federal contract award above $25K is about $68.7K (median of 1,322,079 new awards, FY24–FY26).

Measured, estimated, unknown

  • Measured: taken directly from the notice or the buyer.
  • Estimated: inferred from award history or similar RFPs, so it moves the score less.
  • Unknown: no data, so the factor has no effect.

Unknown never counts against an RFP: a factor we know nothing about contributes exactly 0 points.

Data confidence

Data confidence = Σ weight × confidence: how much of the score rests on measured data.

High: 75–100Medium: 50–74Low: 0–49

Caps, closed and cancelled RFPs

  • Not openly competed (justification for other than full and open competition, sole-source set-aside codes, "intent to sole source" or brand-name-only notices): capped at 30 and labelled "Not competed".
  • Purely informational notices (option exercised, award notification, cancellation): capped at 30.
  • Closed, awarded and cancelled RFPs show the score at publication, frozen; they never show a live score.

The score at publication is computed as of the day the RFP was posted, so a closed page never shows a score dragged down by an expired deadline. The badge turns grey and reads “Score at publication”.

Score at publication Not scored yet (never shown as F)

What the score is not

  • It is the same for every visitor; personal relevance is the separate Fit score shown to signed-in organizations.
  • It does not estimate the probability of winning and does not rate the issuer as an organization.
  • It is informational and is not advice to bid or not bid. No user, organization or payment data feeds it, and nobody can buy or edit it.

Score vs Fit

Fit (0–100) shows how relevant an RFP is to your organization’s matching profile. It is private to signed-in organizations and never changes the public score.

Fit weights
Fit componentWeight
NAICS35
Keywords25
Eligibility15
Geography15
Contract size10
Fit caps
Fit is capped whenMax
Title matches an excluded keyword20
Requires a certification you have not listed25
Not openly competed30

Labels: Strong fit 75+ · Possible fit 50+ · Weak fit 0+. Fit is only visible to signed-in members of the organization.

Version and changelog

Every score stores the version that produced it. A change to any weight, curve or rule gets a new version and a dated entry here, and open RFPs are rescored overnight. Closed RFPs keep the version they were frozen with. Current version: 1.0.0.

  1. v1.0.0

    • First public version: 50 plus the signed contributions of six weighted factors, stretch constant K = 1.8.
    • Grades A ≥ 80, B 65–79, C 50–64, D 35–49, F < 35; notices not openly competed or purely informational are capped at 30.
    • Federal value estimate = median federal contract award above $25K for the NAICS and awarding agency, last three full fiscal years.

Inputs: Public procurement records (federal, state, local, education, private and non-profit) · Federal award history (federal RFPs) · RFPs posted on RFP Detector by buyers. See how it works for how RFPs are collected and when they last updated.

FAQ

Why is this RFP's score low?
Open the breakdown on the RFP page. Each factor shows its points and a sentence: common reasons are a short response window, no published value, a sole-source signal, or a notice with little description and no documents.
Can a buyer change their score?
No. Buyers can improve clarity by publishing complete information: a full description, documents, contacts and a clear deadline. Nobody can pay for or edit a score.
Is the score personalised?
No. It is the same for everyone. The separate Fit score is personal to your organization and only visible when you are signed in.
How often is it updated?
Open RFPs are rescored when they change and every night, because time to respond and freshness change daily. Closed RFPs keep their score at publication.
Should I bid because the score is high?
The score is informational and is not advice to bid or not bid. Use it to triage, then read the notice and confirm every detail with the issuer.

RFP Detector is an independent service and is not affiliated with any government agency. Scores are informational.