Skip to main content
Checked against the product · 2026-10-05

Price a Product or Hardware Bid

This guide is for a bid that delivers things — an assembly, a unit of hardware, a kit — priced from a bill of material and touch labor rather than from labor categories alone. It follows the order a product estimator works in and says, at each step, exactly what Arcvue computes today.

Before you start: your accounting side needs its cost pools defined and a rate set filed for the fiscal year. If you have not done that, follow Set Up Cost Pools for Product Pricing first.

Where it lives​

FP&A → Pricing → your proposal → Stage 1: Build. The production units go on the Deliverables tab; their parts and touch labor go in the component tree under each line; engineering labor goes on the Positions tab; tooling, test equipment and outside services go on the Other Direct Costs tab.

Step 1 — Separate what is bought once from what is bought per unit​

A production contract usually has two kinds of line: recurring units (priced per unit, quantity times price) and non-recurring work paid once — first-article build, qualification testing, special tooling and test equipment, drawings. Put them on different CLINs so the unit price stays clean and the options price off it (FAR 15.408 Table 15-2 asks for the split).

In Arcvue, give each deliverable line and each position a CLIN. Recurring units are deliverable lines; the non-recurring engineering is positions; tooling and outside testing are ODC lines.

Then give each deliverable line, ODC and subcontractor line a Cost type: Recurring - repeats with production or Non-recurring - charged once. Table 15-2 reports the two separately. A non-recurring line stays out of the recurring unit price, is reported on the NRC line, and does not roll forward into an option year. A line left Not classified is reported in its own column, so the NRC line is understated by whatever part of it was non-recurring.

Today: no screen sets a line's own contract type, so the proposal's single contract type governs every line you enter. If your NRE is cost-plus and your production is firm-fixed-price, price them as two proposals.

Step 2 — Decide make or buy, part by part​

For every part: buy it (a supplier quote) or make it (material plus your own touch labor). A subcontracted fabrication — a machined housing from a machine shop, a paint job — is a buy line priced at the shop's quote.

Today: the component drawer has no field that marks a part as a subcontract, so a bought part and a subcontracted fabrication are both entered as material with a unit cost, and both carry your material-handling rate.

Step 3 — Add the production line​

On the Deliverables tab click Add deliverable line. Fill in the description, manufacturer and part number, the CLIN, the Quantity for the period, the unit of measure and the Price basis (it starts empty, so you say where the price came from), and leave Unit cost blank — the component tree will derive it. Once a line has components, a typed unit cost is refused, so the number on screen is always the tree's. Record the Quote reference, the date the quote expires (the Quote column turns amber within fourteen days of that date and red once past — refresh the quote or re-price the line before you submit) and the Country of origin (TAA/BAA gate).

Enter the line once, on the base year. Arcvue generates each option year's line, with a copy of its component tree, from the base line. Material escalates at the proposal's price escalation, the units built in earlier years carry forward so the learning curve continues (Step 5), and a non-recurring line does not roll forward. If an option year buys a different quantity, or the solicitation numbers it with its own CLIN, enter that under Option-year quantities on the base line; a blank year repeats the base-year quantity and CLIN. A line you add to an option year yourself is yours: Arcvue does not generate over it, and it does not follow later changes to the base line.

Today: the option years are rebuilt when you save the base line, not when you change its component tree. After you add, edit or remove a component, open the base line and click Save changes so the option years pick up the new tree.

A part whose supplier price drops at higher volume gets Quantity price tiers on its component, added once the component is saved. Each tier has a Min qty and a Unit cost ($). Min qty counts total pieces purchased across the whole order (the units already built plus this lot), and the engine prices the part at the deepest tier the order reaches, falling back to the component's own unit cost when none applies. Tick Firm through the option years when a blanket order or firm quote holds the price; an unticked tier escalates with the rest of the material.

Step 4 — Build the bill of material under the line​

Open the line's components and add each part with Add component. To nest a part under an assembly, use Add a child component on the assembly's row. For each row:

  • Qty per parent unit — how many go into one unit of the parent (or of the deliverable for a top-level row).
  • Scrap % — material consumed that does not end up in the product (cut-offs, dropped parts, kitting loss). Arcvue adds it to the material quantity. Electronics kits run about 1–5%.
  • Yield % — the share of units that pass this step. Arcvue divides this row's quantity by it, so both its material and its touch labor grow.
  • Material unit cost — the supplier quote.
  • Touch labor hours and rate — hands-on production hours per unit at the first unit, and the wage (not billing) rate.
  • Learning curve % — see Step 5.
  • OH pool — see Step 6.

A row with no material cost and no touch labor is an assembly node; it prices through its children. A row with both is fine.

Yield flows down the tree; scrap does not. A unit that fails at an assembly is discarded with everything in it, so a parent's yield scales its children's material and labor too. State an assembly's yield once, on the assembly, rather than re-typing it on every part beneath it. Scrap is material lost at that row alone.

Yield is not rework. Yield prices spoilage: the failed unit is thrown away and the good units carry its cost. Rework, a unit repaired and sold as good, is a separate rework rate and hours on the component, and the component drawer has no fields for them. So a bid built on this screen carries no rework labor, and the proposal's Rework labor setting on Edit Details has nothing to act on. Do not lower the yield to stand in for rework; that prices a discarded unit, not a repaired one.

Step 5 — Set the learning curve on touch labor​

Touch labor gets faster as cumulative quantity grows. Enter a slope as a percent: each time the quantity doubles, the average hours per unit fall to that percent of the previous level. Arcvue applies Wright's cumulative-average curve across the line's quantity.

Typical slopes (published estimating practice): mostly manual assembly 80–88%; mixed hand and machine work 85–92%; electronics and machining 90–95%; test procedures 95% or flatter. A steeper (lower) slope claims more improvement, so keep the first-unit hours honest.

An option year is priced as a follow-on lot, not a fresh start. The units already built in earlier periods carry forward, so the option year picks up the curve where the base year left off rather than paying first-unit hours again. Do not adjust the option-year hours by hand to compensate — that was necessary once and now understates the improvement you are claiming.

An option year can also carry its own quantity, which is what most solicitations actually ask for. The quantity sets the lot size, the lot sets the follow-on average, and that sets the unit price — so enter the CLIN table as written under Option-year quantities on the base line, rather than repeating the base-year quantity.

Step 6 — Burden each labor row through the right pool​

If your accounting side defines more than one overhead pool, every touch-labor row and every position has an OH pool picker. Production labor takes the manufacturing pool; engineering labor takes the engineering pool. A row left on "— proposal rate" prices at the proposal's single overhead rate, so pick the pool on every labor row rather than relying on the default.

The picker offers only pools that are active on the accounting side and have a rate filed for this proposal's rate set. If a pool you expect is missing, file its rate on Admin → Pricing Rates and press Refresh rates on the proposal.

Step 7 — Price the non-recurring engineering as positions​

On the Positions tab add a row per discipline — electrical engineer, mechanical engineer, test engineer, quality engineer, drafter — with the hours each will spend, the salary, and the OH pool (the engineering pool). Give them the NRE CLIN. Arcvue converts salary to an hourly cost and applies fringe, the pool's overhead, G&A and fee.

Step 8 — Enter tooling and testing as ODCs, freight and warranty as rates​

On Other Direct Costs add special tooling and special test equipment (allowable and charged to the contract they were bought for, FAR 31.205-40) and outside qualification testing, and set each one's Cost type to non-recurring. G&A applies to every ODC line; fee is not applied to ODCs.

Freight and warranty are rates on the proposal, not lines you compute. Open Edit Details and, in its cost-volume settings, set:

  • Freight-in (% of material) — inbound freight and duty as a share of direct material. It is capitalized into material, so material handling and G&A apply on top of it, and the engine applies it per period, so it follows a quantity change, attrition and yield. Leave it at zero when the vendor quotes delivered prices; the freight is already in the material cost, and charging it again counts it twice.
  • Warranty reserve (%) and its Warranty basis — Burdened cost (the default: material, freight, M&H and G&A) or Price, which solves for the reserve so it is the stated share of the price. Under either basis the fee is not applied to the reserve.

Non-recurring cost goes on its own CLIN by default. If the solicitation wants one all-in unit price instead, set Non-recurring treatment on Edit Details to Amortized — spread into the unit price, then give each one-time ODC an Amortize over (units) quantity. That field does nothing until the treatment is Amortized, and blank or zero charges the ODC as a lump. The treatment you choose is printed on the Table 15-2 sheet. Keep the default when the solicitation carries a separate NRE CLIN: the recurring unit price is what the government compares, and NRE paid once must not be buried in it.

Step 9 — Read the result​

The Deliverables table shows each line's derived Unit cost, its Burdened cost (direct cost plus material handling and G&A; hover it for the split and the buildup price with fee), and Net profit and NP %, which are after that burden. The gross figure the proposal rolls up is in the tile above the table. For a cost-based firm-fixed-price bid the buildup price is your quote: the line's drawer shows it as Buildup price (engine, last save). Type it into Unit price; the line records that price as set by hand. Open a labor row's trace to confirm the step Overhead Pool Applied names the pool you chose.

G&A applies on the base each pool declares, so a manufacturer whose G&A runs on total cost input is burdened that way and one on a value-added base is burdened that way. Do not add a G&A difference by hand. That was necessary while every pool shared one base; doing it now double-counts G&A on material, and nothing in the output will show you that it happened.

FAR 15.408 Table 15-2 itemizes subcontracts separately from material, and the engine does so for a part marked as a subcontract. No screen marks one, so every part you enter here is reported as material (Step 2). Likewise, the engine can price a CLIN under its own contract type, but no screen sets one, so the proposal's contract type governs every line (Step 1).

Step 10 — Submit​

Submission refuses a leaf component with no cost basis and a line with no country of origin. Fix what it names; do not delete the row to get past the gate. An expired quote does not block submission — it shows red on the line, so refresh or re-price it first.