Calculator overview
Inputs and outputs
This summary comes from the calculator's published input and output contract.
Inputs
- Your estimate for this work (required)
-
Unit currency Default 16000 Range At least 0
About this input
Your own estimate for the work the bids cover, in the same currency as the bids, for example the total of your job cost estimate. The revised margin is measured against it. It must be greater than zero.
- Scope items and allowances (required)
-
Default 5 rows
About this input
One row per item of work the bids should cover, with the allowance you would carry for it if a bidder left it out: your own figure for buying that item separately. Each name must be unique and cannot contain a comma, because bids list the items they exclude separated by commas. Fill the rows from the top; a blank row between items is refused.
Column Range or allowed values Item Not declared Allowance At least 0 - Bids (required)
-
Default 3 rows
About this input
One row per bid received: the bidder's name (each once), the price as bid, the duration in days, and under Excludes the scope items the bid leaves out, separated by commas and spelled as in the scope table (capitals and spaces around the commas do not matter). Leave Excludes blank when the bid covers the whole scope. Fill the rows from the top; a blank row between bids is refused.
Column Range or allowed values Bidder Not declared Price At least 0 Days At least 0 Excludes Not declared - Change orders
-
When omitted Blank
Default 0 rows
About this input
Optional. One row per change order after the award: a description, the change in the contract price (negative for a credit) and the change in duration in days (negative when it saves time, 0 for none). Each row needs both numbers. Leave the table empty when there are no change orders. Fill the rows from the top; a blank row between change orders is refused.
Column Range or allowed values Description Not declared Cost Not declared Days Not declared
Outputs
- Revised duration with change orders
-
Unit days
About this output
The awarded bid's duration plus the change orders' days changes.
- Awarded bid, normalized price
-
Unit currency
About this output
The awarded bid's price plus your allowance for every scope item it excludes, so that every bid is compared on the whole scope.
- Revised total with change orders
-
Unit currency
About this output
The awarded bid's normalized price plus the change orders' cost changes.
- Revised margin against your estimate
-
Unit %
About this output
How far the revised total is under your estimate, as a share of the estimate: (estimate − revised total) ÷ estimate. Negative when the revised total is over the estimate.
- Model Status
-
No unit declared
About this output
OK; CHECK when bids tie for the award or the revised total is over your estimate; or NOT VALID naming the first input to fix. Under NOT VALID every figure reads 0, the award reads NOT VALID and the ranking is empty.
- Bids ranked by normalized price
-
No unit declared
About this output
Every bid in rank order, with its price as bid, the scope items it excludes, the allowance added for them, its normalized price, its duration and its rank. Bids tied on both normalized price and duration share a rank and are listed in the order you entered them.
- Awarded bid
-
No unit declared
About this output
The bid with the lowest normalized price; between bids with equal normalized prices, the one with the shortest duration. When bids tie on both, every tied bid is listed, as Tie: A / B, and the status says so.
- Change orders, net days
-
Unit days
About this output
The change orders' days changes added up.
- Change orders, net cost
-
Unit currency
About this output
The change orders' cost changes added up; credits count as negative.
LogicCommons is in beta. If a result, label, or reference looks wrong, tell us here; we read every message.
Methodology
Purpose and model boundary
This calculator compares the bids you received for the same work on the whole scope, awards the best one, and adds your change orders to it. You list the scope items with your own allowance for each, the bids with the items each one leaves out, your estimate for the work and any change orders. The spreadsheet prices every bid on the whole scope by adding your allowance for each item it excludes, ranks the bids on that normalized price and then by duration, and returns the awarded bid with its revised total, duration and margin against your estimate after the change orders. It is arithmetic on the figures you enter: it is not a procurement recommendation or a contract document, and it does not judge a bidder's qualifications, bonding, insurance or schedule risk or the quality of the work. To weigh bids on criteria other than price, such as experience or schedule risk, use the Bid Evaluation Matrix.
Inputs and units
- Scope items and allowances: up to 10 items, each with a name and your allowance for it, a number of 0 or more. The allowance is your own figure for what the item would cost you if a bid leaves it out. At least one item is required.
- Bids: up to 10 bids, each with a Bidder name, a Price greater than zero, the Days it takes (0 or more), and Excludes: the scope items the bid leaves out, separated by commas and spelled as in the scope table. Leave Excludes blank when the bid covers the whole scope. At least one bid is required.
- Your estimate for this work: the figure the revised total is measured against, greater than zero.
- Change orders: up to 10, optional. Each has a description for your own reference, a cost change and a days change. Both changes are signed: a positive cost or days change adds work or time, a negative one is a credit or a saving, and 0 enters no change. Leave the table empty when there are no change orders.
Each table fills its rows from the top, with no blank row between them. The prices, allowances and costs carry no currency: every figure is in the currency you enter, and nothing is converted. Durations are in days.
The Excludes list follows these rules: the items are separated by commas; case and spaces around an item are ignored, so CLEANUP names cleanup; each item is named once; the items may come in any order; and the cell is blank for a bid that covers the whole scope. Writing none, a name that is not a scope item, an item twice or a trailing comma is refused. Because the list is separated by commas, a scope item name cannot contain one. Two scope items, or two bidders, may not share a name, again ignoring case and spaces at either end.
The page opens on worked example 11.5.7.1 of the requirement this calculator was built against, a five-item remodel: demolition 1,500, framing 6,000, drywall 3,500, paint 2,200 and cleanup 800, three bids (Alpha at 14,000 over 20 days, Bravo at 12,800 over 18 days leaving out cleanup, and Charlie at 15,500 over 15 days), an estimate of 16,000 and no change orders. These are the requirement's example figures, for review before use.
Governing relationships
A bid's excluded items are priced at your allowance for them, and the bid is compared on the whole scope:
Normalized price = price + the allowances of the items the bid excludes
The bids are ranked by normalized price, lowest first, then by duration: a bid is ranked ahead of another when its normalized price is lower, or when the two are equal and it takes fewer days. Both comparisons are made on the figures rounded to six decimal places, so two sums that differ only in the last binary digits count as equal. The best-ranked bid is awarded. Bids that tie on both normalized price and duration share the first rank: all of them are listed as awarded, as Tie: Alpha / Golf, and the status is a CHECK.
The change orders then apply to the awarded bid:
Revised total = normalized price of the awarded bid + the sum of the change orders' cost changes
Revised duration = days of the awarded bid + the sum of the change orders' days changes
Revised margin = (estimate − revised total) ÷ estimate
The revised figures build on the normalized price, not the bid's own price, so an excluded item stays in the total at your allowance. The margin is negative when the revised total is over your estimate, and a revised total over the estimate, compared at six decimal places, gives a CHECK.
A bid that excludes an item is compared at your allowance for it; one that excludes everything is compared at your own figures for the whole scope. The allowance is the whole cost of an excluded item here, whatever it finally costs you.
Duration only breaks ties. A faster bid is not preferred at any price difference, however small: weigh time against money yourself.
Calculation sequence
- The spreadsheet reads the three tables row by row, with spaces at either end of a name removed and names compared without regard to case.
- It checks the tables and the estimate, as described below.
- Each bid's excluded items are matched to the scope, and their allowances are added to its price: the normalized price.
- The bids are ranked by normalized price, then by duration, ties in the order they were entered, and the best-ranked bid is awarded.
- The change orders are added to the awarded bid: the revised total and the revised duration, and the margin against your estimate.
- The status line is chosen. When it begins
NOT VALID:, every figure reads 0 and the ranking is empty.
For the job the page opens with, worked example 11.5.7.1: Alpha covers the whole scope at 14,000; Bravo leaves out cleanup, so your 800 allowance is added to its 12,800, a normalized price of 13,600; Charlie covers the whole scope at 15,500. Bravo ranks first at 13,600, then Alpha and Charlie. With no change orders the revised total is 13,600 over 18 days, and the margin is (16,000 − 13,600) ÷ 16,000 = 15.0%.
Worked example 11.5.7.2: Delta's 9,900 leaves out demolition and cleanup, so 2,300 of allowances bring it to 12,200, below Alpha's 14,000: Delta is awarded at 12,200 over 22 days, a margin of 23.75%. Worked example 11.5.7.3: Bravo is awarded at 13,500 against Alpha's 14,000, and two change orders, a closet at 1,800 and 3 days and a paint upgrade at 600 and no days, bring the revised total to 15,900 over 21 days, a margin of 0.625%. Worked example 11.5.7.4: Echo's 12,500 plus the 800 cleanup allowance is 13,300, below Alpha's 14,000, so Echo is awarded although it takes 25 days to Alpha's 20; against a 15,000 estimate the margin is 11.3%. Worked example 11.5.7.5: one bid, Alpha at 14,000 over 20 days, and a credit change order deleting the paint, −2,200 and −2 days, give a revised total of 11,800 over 18 days and a margin of 26.25%, which the page shows as 26.3% (the requirement prints 26.2%).
When Alpha at 14,000 over 20 days meets Echo at 13,200 leaving out cleanup, the two tie on normalized price at 14,000, and Alpha's 20 days decide it. When Golf at 13,200 over 20 days, leaving out cleanup, meets Alpha, they tie on both, and the awarded bid reads Tie: Alpha / Golf with a CHECK.
Outputs and interpretation
Awarded bid, Awarded bid, normalized price, Revised total with change orders, Revised duration with change orders and Revised margin against your estimate are the headline figures. Change orders, net cost and Change orders, net days are the details, with the table Bids ranked by normalized price: each bid's Bidder, Price, Excludes (in scope order, spelled as in the scope table, blank for none), Allowance, Normalized price, Days and Rank, listed by rank with ties in the order entered. The margin is shown as a percentage.
The page shows the amounts to two decimals and the margin to one decimal, and every figure is the spreadsheet's own.
Validation and status logic
The status line is the spreadsheet's own verdict. It is the first of these that applies:
NOT VALID: the scope items must fill consecutive rows from the top, with no blank row between themNOT VALID: the bids must fill consecutive rows from the top, with no blank row between themNOT VALID: the change orders must fill consecutive rows from the top, with no blank row between themNOT VALID: every scope item needs a name and an allowance, entered as a numberNOT VALID: an allowance cannot be negativeNOT VALID: a scope item name cannot contain a comma, because bids list the items they exclude separated by commasNOT VALID: two scope items have the same name; give each item its ownNOT VALID: enter at least one scope itemNOT VALID: enter at least one bidNOT VALID: every bid needs a bidder nameNOT VALID: every bid needs a price greater than zeroNOT VALID: every bid needs a duration in days, zero or moreNOT VALID: two bids have the same bidder name; give each bid its ownNOT VALID: each item a bid excludes must be a scope item named once, with the items separated by commas; leave the cell blank when the bid covers the whole scopeNOT VALID: every change order needs a cost change and a days change, entered as numbers (0 for none)NOT VALID: enter your estimate, greater than zeroNOT VALID: the change-order credits are larger than the awarded bid's normalized price, so the revised total would be below zeroNOT VALID: the change orders remove more days than the awarded bid takes
A blank row between rows names the first table that has one, in the order scope items, bids, change orders. Otherwise the status is OK, or a CHECK when bids tie on both normalized price and duration, when the revised total is over your estimate, or both: CHECK: bids tie on normalized price and duration, so every tied bid is listed as awarded, CHECK: the revised total is over your estimate, or the two joined by a semicolon. A CHECK comes with the figures; a NOT VALID: verdict is shown in place of them, every figure reading 0.
Every check this workbook makes applies to the web page, an API call and an MCP call alike; the platform first refuses out-of-bounds, mistyped and missing required values in its own words. So a negative allowance, price or duration, a negative estimate, a bidder name entered as a number, an empty scope or bids table, a scope item with no name or no allowance and a bid with no bidder, price or days are refused before the spreadsheet is asked, and the spreadsheet's own lines for them are a second line of defence. A blank row between rows, a comma or a repeated name, a price of zero, an Excludes entry that does not match the scope, a change order with no cost or days change, change orders that take the total or the duration below zero, and an estimate of zero reach the spreadsheet, which refuses them.
Assumptions and limitations
- The allowances are your own, and a bid that excludes an item costs exactly your allowance for it, whatever the item finally costs.
- Duration decides only between bids with equal normalized prices; a faster bid is not preferred at any price difference, and the value of time is not modelled.
- Bidder qualifications and bonding, alternates and unit prices, markup on change orders, liquidated damages, retainage, taxes, escalation and currency conversion are not modelled.
- The calculator does not check that the bids describe the same work beyond the scope items you list.
- The tables hold 10 scope items, 10 bids and 10 change orders, filled from the top with no blank row between rows.
- The descriptions of change orders feed no figure.
- Nothing is rounded: money shows two decimals and the margin one, so an exact 26.25% shows as 26.3%.
- The default scope, bids and estimate are the requirement's example figures for review before use.
Restrictions and non-computing states
This calculator accepts allowances of 0 or more, bid prices greater than zero, durations of 0 or more, an estimate greater than zero, and signed change orders. The scope and bids tables need at least one row each, complete in their required columns. A blank row between rows, a scope item name with a comma, a repeated scope item or bidder, an Excludes entry that is not a list of scope items named once, a change order missing a cost or days change, and change orders taking the revised total or duration below zero are not computed.
Errors and warnings
The results update as you change the inputs. A blank required input, a bid with no bidder, price or days among them, stops the calculation until you fill it, and the page asks for the required inputs in place of the results. If the calculation service refuses an input, the page names the input and the reason. If the service does not answer, the page shows the error and keeps your inputs. A NOT VALID: status means the figures cannot be computed and none are shown; a CHECK: status is shown beside the figures.
References
Sources and further reading
The model is the requirement's arithmetic on the figures you enter. Its specification is section 5.7 of the Contractor Calculator Requirements v2.3, and its five worked examples (11.5.7.1 to 11.5.7.5) are its tests. It uses no published rate, factor, code value or standard: every price, allowance, duration and change order is your own. The sources below describe the practice its two comparisons and its change orders come from; they supply no figure to it.
- Federal Acquisition Regulation, 48 CFR 15.404-1, "Proposal analysis techniques," paragraph (b)(2). acquisition.gov/far/15.404-1. Price analysis by comparing the prices received in response to a solicitation with each other and with an independent cost estimate: the ranking of the bids and the margin against your estimate.
- Federal Acquisition Regulation, 48 CFR 52.243-4, "Changes," paragraph (d). acquisition.gov/far/52.243-4. A change that increases or decreases the contractor's cost of, or the time required for, the work is met by an equitable adjustment to the contract: the basis of the change orders' cost and days added to the awarded bid.
Links were current at build time. If one moves, search the document's title rather than reporting a broken link as a defect.
The default scope, allowances, bids and estimate are the figures of the requirement's first worked example, for review before use; they are not the prices of any market or the allowances of any job. This calculator does not certify a bid, a bidder or a contract. Check each bid's scope, exclusions and terms with the bidder, and use allowances from your own records or quotes.
Found a problem, or have an idea?
Tell us if a result looks wrong, a label is unclear, or something is missing. We read every message.