Estimating and bidding

How to build an estimating database

An estimating database is your company's own library of unit costs, production rates, and assemblies, built from finished jobs, so every estimate starts from what work actually cost you instead of a guess.

Strapped lumber, concrete blocks and a parked telehandler in a commercial construction staging area.
Material quantities, delivery timing and equipment availability shape the next phase of work. AI-generated illustration.

To build an estimating database, pick one cost code structure, record material unit costs and labor production rates for each code from your finished jobs, group common items into assemblies, and update the numbers after every closeout. Start with the 20 to 50 items that show up on most of your bids. A small database you trust beats a giant one nobody updates.

Most contractors already have the raw data. It sits in old spreadsheets, timesheets, supplier invoices, and the job cost report. The work is pulling it into one place in a consistent shape.

What goes in an estimating database

Core fields for each database item
FieldWhat it holdsExample
Cost codeYour code for the work item09-2116 Gypsum board, walls
UnitHow the work is measuredSF of wall
Material unit costCost per unit including waste and fasteners$0.74 per SF
Production rateUnits installed per labor hour, by crew55 SF per hour
CrewWho does the work2 hangers, 1 laborer
EquipmentLifts, tools, or rentals per unit or per dayPanel lift, $0.03 per SF
Source and dateWhich job or quote the number came fromJob 2214, closed March
NotesConditions that change the numberAdd 20% for heights over 10 ft

These are illustrative numbers, not benchmarks. Your rates depend on your crews, region, and type of work, which is the whole reason to build your own database.

How to build it in 8 steps

  1. Lock your cost codes first. The database, the estimate, and job costing must use the same codes, or actuals can never flow back. Many contractors base codes on CSI MasterFormat divisions. See how to build a construction cost code structure.
  2. Choose a unit for every item. SF, LF, EA, CY, or hours. Pick the unit the takeoff produces, so a quantity takeoff drops straight into the estimate.
  3. Pull 5 to 10 finished jobs. Choose recent jobs similar to what you bid now. For each, pull quantities installed, labor hours by cost code, and material spend from the job cost report.
  4. Calculate production rates. Divide quantity installed by labor hours spent. Do it per job, then look at the range, not just the average. A wide spread means the item needs condition notes.
  5. Set material unit costs from current pricing. Use recent supplier quotes, not costs from two years ago. Add waste factors and small items like fasteners and tape.
  6. Build assemblies. Group items that always go together. An interior partition assembly might include track, studs, board both sides, tape and finish, and insulation, all priced per LF of wall at a given height.
  7. Record the source and date. Every number needs a job number or quote and the date. Without it, nobody knows if a rate is stale.
  8. Feed actuals back after every closeout. At closeout, compare estimated versus actual hours and cost by code, then update the rate or add a note. This step is what turns a price list into a database.

Worked example: updating a production rate

Say a drywall contractor's database lists wall board hanging at 55 SF per labor hour. Three recent jobs closed with these actuals.

Example: actual production on three closed jobs
JobSF hungLabor hoursSF per hourConditions
Medical office TI18,40036250.8Lots of small rooms
Warehouse office9,60015860.8Long straight walls
Retail shell12,00021456.1Average

The average is about 56 SF per hour, close to the database rate. The useful finding is the spread. Medical work with small rooms ran about 8 percent slower than the base rate. So the estimator keeps 55 as the base and adds a note: use 50 for jobs with mostly small rooms. On a 20,000 SF medical bid, that note is the difference between 364 and 400 labor hours, about 36 hours that would otherwise come out of margin.

Where the data comes from

  • Timesheets coded to cost codes. This is the hardest habit to build and the most important. Hours lumped under one code are useless for production rates.
  • Supplier quotes and invoices. Keep a running list of recent unit prices for your top materials.
  • Subcontractor bids. Store sub prices by scope and unit, so you can sanity check the next bid. Bid tabs from bid leveling are a good source.
  • Published cost guides. Commercial cost data books and services are useful for items you rarely do, but adjust them to your own crews and region before trusting them.
  • Field feedback. Ask foremen why a job ran fast or slow, and write it in the notes column.

How to use the database on a bid

The database gives the starting number. The estimator still has to adjust it for the job in front of them. Before pricing, walk through a short checklist: Is the work higher than usual? Is access tight, such as an occupied building or a third floor with no elevator? Is the schedule compressed, so crews will be stacked or on overtime? Is this a type of building where the database rate came from, or something new? Each yes is a reason to move off the base rate, and the reason belongs in the estimate notes so the project manager knows what was assumed. When the job closes, those notes tell you whether the adjustment was right, and the next estimator gets a better starting point.

Spreadsheet or software?

A spreadsheet works fine to start, especially for a contractor bidding one trade. Keep one master sheet, lock the formulas, and have one person own changes. Move to estimating software when several estimators share the data, when assemblies get complex, or when you want takeoff quantities to flow in without retyping. Whatever the tool, the database is only as good as the cost codes on the timesheets feeding it.

Mistakes to avoid

  1. Building codes in the estimate that do not match job costing, so actuals never come back.
  2. Copying national average costs without adjusting to your region and crews.
  3. Storing one average rate and hiding the conditions that make it swing.
  4. Letting material prices go stale. Date every price and review fast-moving items monthly.
  5. Allowing every estimator to edit the master. Keep one owner and a change log.
  6. Starting too big. Begin with the items that drive most of your cost and grow from there.

Templates, terms, and tools

Use a construction estimate template that pulls from the database, and a job cost report template that uses the same codes. Related terms: unit cost, labor productivity, and cost code. For using the numbers on a bid, see how to estimate a construction project and how to estimate labor hours.

Smart Business Automator carries the estimate's cost codes into the project budget and tracks actual costs against them, so closed jobs give you estimated versus actual numbers by code without a manual rebuild. See estimate to project handoff automation.

Frequently asked questions

How many items should an estimating database start with?

Start with the items that make up most of your cost on typical bids, often a few dozen. Add items as you bid new types of work. A short list that is kept current is more useful than a long one that is stale.

How often should I update the database?

Update production rates after each job closes and material prices whenever you get new quotes on major items. A quarterly review of the whole database catches anything missed.

Can I use published cost data instead of my own?

Published cost data is a useful starting point and a check for unfamiliar work. Your own production rates and supplier prices will be closer to what your jobs cost, so replace published numbers as your own data builds up.

What is an assembly in estimating?

An assembly is a group of items that are always priced together, such as all the parts of a wall type or a light fixture install. It lets the estimator price one measured quantity instead of entering each part separately.

Written and edited by

Maurice Francois writes and edits construction operations guides for Smart Business Automator. More from Maurice on the Scaling Legends podcast.

Get a free assessment