Bidders List Construction — preconstruction and estimating 2026
A thousand firms, spelled six ways each, resolved into one book.
An estimator's contact book decays in a specific way: the same subcontractor arrives in the inbox under six different spellings, and a split bid history is worse than no history at all. This tool resolves them into one firm — and keeps itself current from the inbox rather than from data entry.
- Trade divisions
- 22
- Spellings one firm can arrive under
- 6
- People it was designed for
- 1
The problem
A bidders list is an estimator's contact book: who bids what, in which trade, on which jobs, and how often they win. Its value depends entirely on whether it is current.
The problem is not storage. It is identity. The same firm arrives in the inbox as Ironwood Mechanical, Ironwood Mech., IRONWOOD MECHANICAL LLC, ironwood, a bare email address, or a phone number typed into the company field. Each becomes a separate row, so one firm's bid history splits across five incomplete records. The tool still answers the question. It answers it wrongly.
One estimator asked for his own version — shapeable, searchable the way he thinks, current. One user means no business case a vendor would recognise. It was built around identity rather than storage.
It was built for one person
The audience is one estimator, which is what made it possible to leave things out: no permissions, no roles, no settings page, no onboarding, no administration. It sits alongside the enterprise preconstruction system the company runs rather than against it — that is the record, this is one person's working copy of the slice he cares about, which licenses it to be aggressive about merging and matching.
The inbox does the data entry
Bids arrive by email and always have, so the tool reads the mailbox. Unread bid mail is picked up with its attachments, signatures and quoted replies stripped, and the bid pulled from what remains: which project, which trade, what scope, what is quoted, when it came in. Nobody does data entry — the step a spreadsheet depends on, and the step people skip.
Two things are identified on the way in. The project: subject lines rarely match the project name as filed, so jobs carry aliases and matching runs against those too. The firm: a first pass narrows the field to around thirty plausible candidates, and the judgement is made only across those. New people on the thread are checked against that firm's contacts by normalised name and by the last digits of the phone number — added if new, never duplicated.
The rest of it
- It declines to guess, and says why. An unconfident match goes to a review queue with the original email, the best guess and the reason it hesitated — two bidders matched the sender's domain — because a stated reason resolves in a second and "needs review" does not.
- Duplicates are cheap to fix rather than prevented. A merge previews exactly what will move, snapshots the before state, records who did it, and can be undone.
- The cleaning sweep shows its work first. It reports probable junk and duplicates without changing anything, and sweeps an abbreviation only when the record is also a likely duplicate with no contacts attached.
- Search, then the awkward question. One search across firms, contacts, trades and projects, with a filter builder underneath — a division, two or more bids, not on the avoid list — exporting to a spreadsheet, row count previewed.
- The home view. Totals, win rate, the five most frequent bidders, the deepest divisions, and a live feed including bids the intake files on its own. Firms carry four tags — preferred, pro, watch, avoid — notes, locations and trades across 22 divisions; free-text locations normalise to a city and state.
What changed
- A split history became one history. Firms, bids and named contacts in one book — matched on the way in, merged when duplicates surface, aliased so one firm never becomes two.
- The book maintains itself from the inbox. Bids arrive as email and are read, matched and filed against the right firm and job, with no data entry step to skip.
- Uncertainty became visible instead of silent. Whatever the matching is unsure about goes to a queue with the reason stated, rather than filed on a guess.
- Bulk cleaning became safe to do. The sweep reports before it commits, and its riskiest rule sits behind two conditions, so a real short firm name is never swallowed.
- One person got a tool shaped to how he works. No roles, no permissions, no settings — because the audience was decided rather than assumed.
No vendor builds a tool for one estimator, and the enterprise system that does this at scale was never going to become one person's working copy.