Most scoring tools ask you to trust a number without telling you how it was produced. That is a reasonable thing to be suspicious of, especially when the number is telling you to walk away from revenue.
So this page documents the method in full. Not a summary — the actual components, how they combine, what moves the recommendation, and the specific things the score does not attempt to measure. If you want to argue with the BidIndex, this is the page that gives you enough detail to do it properly.
First: the BidIndex is a fit judgment, not a win probability
This is the single most important thing to understand, and the most common thing people get wrong.
A BidIndex of 90 does not mean you have a 90% chance of winning. It means the invitation is a strong match for the way your business is set up — Project Fit, Scope Fit, and Client Fit.
The BidIndex and a win probability are different claims, and only one of them is honest with the data available before a bid goes out. To predict whether you will win, a system would need to know what your competitors are going to price, how badly they need the work this quarter, and whether the general contractor has already decided who is getting the job. None of that is in the bid documents. Anyone claiming otherwise is guessing and putting a decimal point on it.
What the documents do support is a fit judgment: given everything known about how you operate, does this job look like the kind of work you win and make money on?
Treat the BidIndex as triage, not prophecy. It tells you where to spend estimating hours. It does not tell you the outcome.
The three buckets
Every bid is scored on three weighted buckets. Everything else is a modifier or an alert.
1. Project Fit — the kind of job you want
Distance from your office to the job site, measured against the service radius you set, plus building-type preference.
This sounds trivial and is not. Travel is the cost most often left out of a bid and most reliably underestimated. A job ninety minutes outside your normal radius carries crew windshield time, per-diem exposure, slower response to punch items, and a supervision problem that does not exist on a job fifteen minutes away.
Project Fit is scored on your radius, not a national average, because a mechanical contractor covering three states and a drywall sub covering one metro have genuinely different answers to the same question. If you have set target building types, a match boosts the bucket; a non-match stays neutral (never a penalty). Missing location is omitted from the index — it is not filled with a fake midpoint.
2. Scope Fit — is this your work
CSI MasterFormat section-level matching (six-digit codes) plus the trade terms you set in Settings.
This distinction matters more than it sounds. Division 09 covers both resilient flooring and ceramic tile. A flooring contractor scored at the division level gets a strong match on a tile package they have no business bidding. Section-level matching is what separates a fire-curtain specialist from a generic Division 10 sub.
On a drawings-only package with no spec book, invitation scope and sheet prefixes carry more of the signal, because there is no specification text to match against.
3. Client Fit — want this GC
Your history with this client: your own star rating, your win and loss record with them, how many bidders they typically invite, and behavioral signals you have logged over time — RFI responsiveness and payment reliability among them.
This is where a scoring system either earns its keep or becomes a horoscope. The bucket is built entirely from your record with that client. It is not a shared reputation score, not a network average, and not visible to anyone else. Two subcontractors can score the same general contractor very differently, and both can be right, because they have had different experiences.
Competitive Pressure folds into Client Fit once you have logged three or more outcomes for a given client. The reason for the gate is straightforward: with one or two data points, a competitive-pressure number is noise wearing a lab coat. Three is not a large sample either, but it is the point at which a pattern starts to carry more signal than the error bar.
How the buckets combine
Each bucket produces a 0–100 sub-score. Those are combined using weights that you set, which is the part most descriptions of the system leave out.
The starting weights are:
| Bucket | Default weight |
|---|---|
| Project Fit | 34 |
| Scope Fit | 33 |
| Client Fit | 33 |
These are defaults, not fixed constants. The three must add up to 100. If you are a relationship-driven firm where the client is nearly everything, raise Client Fit and lower the rest. If you will drive anywhere for the right scope, drop Project Fit. The weights are a statement about how your business works, and the score is only as good as that statement. Two contractors with identical weights and identical settings will get identical scores; the personalization lives in the settings, not in a black box.
Keywords are a bounded modifier (±10), not a fourth slider. Pay-if-paid and other contract terms are flagged with the document and page and never change the score.
Missing data lowers a bucket's confidence and can omit it from the weighted index. It never injects a fake default.
The recommendation bands
Invite vs full package is one engine with more or less data — not two scoring systems. The recommendation language changes with what was actually read.
Invite read (email or invite only — the label says it is an invite read):
| Score | Recommendation | What it means |
|---|---|---|
| 70–100 | Open & assign | Strong enough on the invitation to start an estimate. Still labeled invite-read. |
| 45–69 | Worth a look | Mixed signals. Open it and decide whether the full package is worth pulling. |
| Below 45 | Likely skip | Weak fit on what the invitation already shows. |
Full package (invite + drawings + specs + addenda + exhibits):
| Score | Recommendation | What it means |
|---|---|---|
| 80–100 | Open & assign | Strong fit across most buckets. Worth pricing seriously. |
| 60–79 | Worth a look | Mixed signals. Something scores well and something does not. Open it and decide whether the tradeoff is acceptable. |
| Below 60 | Likely skip | Poor fit against your own criteria. |
Worth a look is not a hedge or a way of avoiding a decision. It is the honest output when buckets disagree — a perfect scope match from a client who pays slowly, or an ideal client on a job four hours away. Those bids need a human judgment that no weighted average should be making on its own.
What sits beside the weighted score
Current workload. Capacity is shown for planning and never changes the score or label. How busy you are right now does not change whether a job is a good fit, and it does not change the BidIndex.
Prevailing wage. When prevailing-wage or union requirements are detected, the effect depends on a preference you set. Some firms actively want that work and are set up for the reporting; some avoid it. So this is a bounded adjustment in the direction of your stated preference, applied only when the requirement is actually detected in the documents, and reduced when detection is uncertain. It is not a universal penalty, because it is not a universal problem.
What the score does not do
A methodology page that only lists strengths is marketing. These are real limits.
It does not know your competitors' pricing. No pre-bid system does. This is the largest single source of variance between a strong BidIndex and an actual win.
It reads the sheets where the trade's scope lives. BidIntell reads the sheets where a given trade's scope lives — finish schedules, reflected ceiling plans, roof plans and wall sections, depending on the division — rather than parsing every page of a 400-sheet set with equal attention. An unusual detail buried on an unexpected sheet can be missed.
It is only as good as your settings. A contractor who selects fifteen CSI sections they do not really pursue will get scores that reflect that. The system cannot detect that your stated scope is broader than your real one.
Early scores are less personalized than later ones. Client Fit needs history and Competitive Pressure needs three outcomes per client. The first few weeks lean more heavily on Project Fit and Scope Fit. This improves with logged outcomes, which is the actual reason outcome tracking exists — not for reporting, but because it is the input that makes future scores yours.
Contract clause detection finds language, not intent. Pay-if-paid and other contract terms are flagged with the document and page and never change the score. A pay-if-paid clause is flagged because it is present. Whether it is negotiable, standard for that client, or something you have signed happily for ten years is context the documents do not contain.
Why the method is published at all
Two reasons.
A BidIndex is only useful if you can audit it. When a bid comes back at 58 and your instinct says otherwise, you should be able to open the score, see which component dragged it down, and decide whether the system knows something you missed or has a setting wrong. That requires knowing how the number is built. A score you cannot interrogate is a score you will eventually ignore. The label is Open & assign, Worth a look, or Likely skip.
The second reason is that a scoring method that cannot survive being read by the people it scores is not a method worth trusting. If publishing the weights and the limits made the BidIndex easy to game, the honest conclusion would be that the BidIndex was weak — not that the documentation should be thinner.
Frequently asked questions
Is the BidIndex a win probability? No. It is a 0–100 BidIndex measuring how well an invitation matches your business across Project Fit, Scope Fit, and Client Fit. It does not account for competitor pricing, owner relationships, or timing. Use it to triage which bids deserve estimating hours. The label is Open & assign, Worth a look, or Likely skip.
Can I change how the score is calculated? Yes. The three bucket weights are yours to set. The defaults are Project Fit 34, Scope Fit 33, and Client Fit 33, but they are a starting point, not a constraint. Keywords stay a bounded modifier. Pay-if-paid and other contract terms are flagged with the document and page and never change the score.
Why did the same bid score differently for me than for another contractor? Because the score is computed against your settings and your history. Different service radius, different CSI sections, different record with that client, and different weights all produce different results from identical documents. That is the intended behavior, not an inconsistency.
When does Competitive Pressure start counting? Automatically, once you have logged three or more outcomes for a given client. It folds into Client Fit. Below that threshold there is not enough of your own data to say anything meaningful about how contested that client's bids are.
Does my current workload change the score? No. Capacity is shown for planning and never changes the score or label. A bid that scored 84 last quarter is comparable to one that scores 84 today.
Is my bid data or client rating shared with other users or with general contractors? No. Client ratings, win rates, and logged outcomes are private to your account and enforced at the database level. Client Fit and Competitive Pressure are computed from your own records only — there is no shared or network-wide reputation score.
What happens on a drawings-only bid with no specification book? Scope keyword matching carries more of the Keywords & Contract Terms component, since there is no specification text to match against. Contract clause detection has less to work with, so fewer risk flags on such a package means less available information rather than a cleaner contract.