Extract and compare contractor priced BOQ submissions, review bid quality scorecards, and export a defensible commercial position for award.
Commercial evaluation is where the cost team turns bidder pricing into defensible award evidence. TruBuild extracts line items from each contractor’s priced submission, aligns them against your bill of quantities (BOQ), and gives you a ranked, line-by-line comparison with pricing quality flags: unpriced items, exclusions, and divisions priced well above or below the market.This matters because a low headline total is not a low evaluated price. A bid that excludes scope, leaves provisional items unpriced, or hides anomalous unit rates shifts risk back to the owner. The comparison surfaces those gaps before they become award-stage surprises.
If you do not see commercial evaluation in your workspace, contact TruBuild support to request the feature for your organization.
Who this is for
Role
Main responsibility in this workflow
Procurement manager
Confirms package setup, contractor list, and award evidence
Commercial lead
Owns the commercial round and the final commercial position
QS / cost consultant
Reviews BOQ extraction, anomalies, exclusions, and pricing clarifications
Owner reviewer
Reviews commercial evidence and residual commercial risk
Access levels control what each user can do. Users with full or commercial access can create rounds, upload files, and edit overrides. Users with viewer access can review results and download exports but cannot make changes; disabled actions show a Read-only access tooltip. See Evaluation governance for the full access model.
What you need
Input
Format
Notes
Bill of Quantities (BOQ)
.pdf, .xlsx, .xls
Required. The pricing basis every bid is compared against
Pre-Tender Estimate (PTE)
.pdf, .xlsx, .xls
Optional. Adds a benchmark row and deviation analysis
Vendor files
.xlsx, .xls, .pdf, .doc, .docx
Each contractor’s priced submission, uploaded against that contractor. Folders and ZIP archives are accepted
At least one vendor must have files before you can run an evaluation. Excel submissions extract most reliably, so insist on your BOQ template in the RFP pack wherever you can.
Where commercial evaluation fits in the tender cycle
Procurement stage
Commercial team activity in TruBuild
Tender preparation
Confirm package structure, assets, contractor list, and BOQ quality
Initial submission
Upload contractor priced submissions and run the first round
Compliance review
Check unpriced scope, exclusions, and abnormal spreads on the dashboard and scorecards
Clarification cycle
Raise commercial clarifications to contractors and track responses
Revised submission
Upload revised priced submissions and run a new round
Award recommendation
Use the latest reviewed commercial round as the commercial basis for the award
Before TruBuild
The traditional commercial evaluation flow for a 6-bidder tender on a 1,000-line BOQ:
1
Collect bids
Vendor Excel and PDF submissions arrive over email, each with different column orders, units, and formatting.
2
Build a master comparison sheet
A cost manager spends 3 to 5 days copy-pasting vendor prices into a master Excel next to the reference BOQ. Every vendor’s line order is different, so most of the time goes into lining things up.
3
Spot-check with formulas
Conditional formatting highlights cells above or below average. Formulas break every time someone inserts a row.
4
Manually identify outliers and queries
An analyst scrolls the sheet looking for suspicious numbers and types them into a separate clarification tracker.
5
Produce the comparison report
Copy and paste into slides, recreate charts, then redo everything from scratch when Round 2 arrives.
Typical pain points: the master sheet becomes the single source of truth, one bad cell can change the awarded vendor, there is no audit trail, and every clarification cycle means redoing the work.
Run a commercial evaluation
You run commercial evaluations per asset within a package. From the package’s commercial page, click Run New Round to open the evaluation wizard. From an asset’s results page you can also click Create and run evaluation. The wizard has two steps.
Step 1: General information
1
Check the asset details
The Asset name and Number of instances fields are shown read-only. The instance count is the quantity of identical asset units and it multiplies rolled-up totals.
2
Upload the Bill of Quantities (BOQ)
Drop the BOQ into the Bill of Quantities (BOQ) upload zone. This is required. The label shows Complete once a file is attached.
3
Upload the Pre-Tender Estimate (PTE)
Optionally drop your estimate into the Pre-Tender Estimate (PTE) zone. Uploading a PTE unlocks the benchmark row in the ranking table and the deviation-from-PTE chart.
Step 2: Vendor files
1
Upload each contractor's submission
The Vendor Files section lists every contractor on the package with its own upload zone. Drop each contractor’s priced submission against the correct contractor. Multi-file uploads, folders, and ZIP archives are supported.
2
Check coverage
The header shows how many vendors have files, for example Vendor Files (4/6 vendors). At least one vendor must have files to run the evaluation.
3
Start the run
Click Create and run evaluation. TruBuild confirms with “Commercial evaluation started” and the round moves to Analyzing. Extraction and comparison run in the background, so you can leave the page and come back.
Keep revised-round files out of the initial round. When clarification responses arrive, create a new round instead of adding files to the old one, so the movement between rounds stays auditable.
Round statuses
Status
Meaning
Setup
Round created, waiting to start
Analyzing
Extraction and comparison in progress. A progress view shows which vendor files are being extracted and the elapsed time
Ready
Results are available for review
Failed
The run hit an error. The error message is shown with a Retry option that takes you back to round creation
Review the Pricing Overview
Once results are ready, the package-level Pricing Overview page gives you the comparative picture across all evaluated assets and contractors. A status banner at the top tells you where the package stands:
Banner
Meaning
Results ready for N asset(s)
Those assets have completed rounds, with links to each
Commercial analysis in progress
One or more assets are still processing
Commercial analysis failed
A run hit an error, with links to retry
No evaluations yet
No rounds have been run on this package
Key metrics
Five cards summarize the commercial position:
Card
What it shows
Lowest Bidder
The cheapest contractor and its total. Can carry an Inclusion percentage badge
Highest Bidder
The most expensive contractor and its total
Pre-Tender Estimate
Your PTE total and its variance versus the lowest bid (shown only if you uploaded a PTE)
Cost Spread
The gap between highest and lowest bids, with the variance percentage
Contractors
How many contractors and assets were evaluated
A wide cost spread is itself a finding. It usually means bidders read the scope differently, and it is worth resolving through clarifications before you trust the ranking.
Bidder ranking
The Bidder Ranking table lists every contractor with:
Rank: position by total cost
Bidder: contractor name, with Lowest, Highest, or Unpriced badges
Total Cost: the contractor’s evaluated total
Score: 100% for the lowest bid, proportional for the rest
vs. Lowest: percentage above the lowest bid (the lowest bid shows Baseline)
Contractors that submitted no usable pricing appear grayed out with an Unpriced badge. If you uploaded a PTE, it appears as its own row with a Benchmark badge so you can see where your estimate sits in the bid field.
Bid quality scorecards
Two cards grade each vendor’s submission with a letter grade (A to F, labeled Excellent to Critical) and a 0 to 100 score bar. Use the arrows to page through vendors.
Scorecard
What it measures
Expandable detail
Pricing Integrity
Whether the vendor priced divisions in line with the market
Overpriced divisions and Underpriced divisions, with counts and worst deviation per division
Submission Quality
How complete and clean the submission is
Exclusions and Unpriced items, with counts per item
These grades are the fastest route to your commercial clarification list. A vendor with a low Submission Quality grade needs exclusions and unpriced scope resolved before its total means anything. A low Pricing Integrity grade often signals front-loading or a scope misread.
Charts
Cost Distribution per Asset: a stacked bar per contractor showing what percentage each asset contributes to that contractor’s total bid. Useful for spotting a bidder who loaded one building or zone disproportionately.
Deviation from PTE: per-asset bars showing how far each vendor sits above or below your estimate, with reference lines at 0% and plus or minus 5%. Shown only if you uploaded a PTE.
Pricing behaviour: a breakdown of each vendor’s divisions into Underpriced, In Range, and Overpriced.
Work the line-by-line comparison
Open an asset from the Pricing Overview to reach the vendor comparison table. This is where evaluators spend most of their time, working from the largest variances and highest-value lines down.
Table structure
The table follows the BOQ hierarchy:
Division headers with per-vendor totals and lowest/highest indicators
Grouping sub-headers with subtotals
Line items with item ID, description, quantity, unit, per-vendor pricing, PTE pricing (if provided), lowest, highest, and variance percentage
Controls
Control
Options
Use it to
Price display
Rate / Amount
Switch between unit rates and extended amounts
Bid mode
Received / Normalized
View original submitted prices or prices after your overrides
Search and filter
Item ID, description, division, grouping
Jump straight to a scope area
Vendor selection
Checkbox per vendor
Focus the table on a shortlist
Highlighting
Lowest bidder cells are highlighted green, highest in red.
Lines with variance above threshold are flagged amber or red depending on severity.
Exclusions and unpriced items carry badges and feed the Submission Quality grade.
Values TruBuild filled in rather than extracted directly appear dimmed and marked Imputed. Treat these as candidates for verification, not settled facts.
Overrides, notes, and source checks
On any line you can:
Edit an override (pencil icon) to correct a vendor amount or rename an item when extraction misread the source. Overrides feed the Normalized bid mode and are preserved on the round.
Delete an override (trash icon) to revert to the extracted value.
Add a note for other evaluators.
Open the source document to check the vendor’s original page before overriding. Always verify against the source: the whole point of the audit trail is that every adjusted number traces back to evidence.
Export the comparison
Click Export Comparison in the toolbar on the asset’s commercial detail page. Before exporting you can choose:
Which vendors to include
Rate or Amount price display
Whether to include the PTE
Received or Normalized bid mode
The export is an Excel workbook containing:
Sheet
Contents
Comparison Summary
Project and round metadata, vendor totals, PTE total, lowest bidder, and variance metrics
Division sheets
The full hierarchical table per division: groupings, line items, per-vendor pricing, lowest, highest, and variance, with the same green/red/amber highlighting as on screen
Warnings/Issues
All detected warnings and anomalies, listed per item with the vendor and message
TruBuild confirms the download with “Comparison exported successfully”. The filename follows the pattern <asset name>_Commercial_Comparison_<round name>.xlsx, so exports from different assets and rounds never get confused in the committee pack.Viewers can export too, so a committee reviewer with read-only access can pull their own snapshot. Export before every committee session so reviewers work from a fixed file rather than a live screen.
Run additional rounds
Clarification responses and revised offers belong in new rounds, not edits to old ones. In construction procurement, the movement between rounds is often the evidence: what changed, why it changed, and whether a clarification improved or weakened the bid.
1
Create the next round
Click Run New Round on the commercial page. Rounds default to “Round 1”, “Round 2”, and so on, but you can rename them. “Round 2 - post-clarifications” is a good convention.
2
Upload the revised submissions
Attach each contractor’s revised priced files in the wizard and run the evaluation as before.
3
Compare against the prior round
Use the round dropdown to switch between rounds. Check total bid movement, previously unpriced lines now priced, new or withdrawn exclusions, and rates that moved materially after clarification.
See Rounds and clarifications for round naming conventions and how commercial and technical rounds interact.
Best practices
Insist on your Excel template in the RFP pack
Every hour you invest forcing a clean, consistent BOQ template saves multiples in alignment fixing. Watch provisional sums, dayworks, and contingency lines in particular: vendors interpret them differently, and clean labels in your BOQ prevent most of the noise.
Sort by variance first, not by total
Big totals are not what wins or loses a tender; big deltas are. A line with high variance is where the market disagrees, and where your evaluator’s judgment matters most.
Resolve quality grades before trusting totals
A bid with unresolved exclusions or unpriced items has an artificially low total. Use the Submission Quality detail to build the contractor’s clarification list, then re-evaluate in the next round.
Verify imputed and overridden values against source documents
Dimmed imputed values and manual overrides are the two places a comparison can drift from the actual bids. Open the source document link before you rely on either.
Never overwrite a prior round
Keep each round intact. Committees and auditors care about the movement between rounds as much as the final numbers.
Related
Rounds and clarifications
How initial submissions, clarification cycles, and revised offers map to rounds.
Award readiness
Turn the latest reviewed commercial round into a committee-ready award record.
Technical evaluation
Score contractor technical submissions alongside the commercial comparison.
Evaluation governance
Access levels, audit trail, and controls across the evaluation.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"TruBuild","description":"AI-powered procurement assistant for the construction industry.","colors":{"primary":"#7c4dff","light":"#9670ff","dark":"#5521c4"},"logo":{"light":"https://mintcdn.com/trubuild/ZU83U96G2zylhJUA/logo/trubuild-light.png?fit=max\u0026auto=format\u0026n=ZU83U96G2zylhJUA\u0026q=85\u0026s=80330b4735af2bd22cd213849f2cf1c7","dark":"https://mintcdn.com/trubuild/ZU83U96G2zylhJUA/logo/trubuild-dark.png?fit=max\u0026auto=format\u0026n=ZU83U96G2zylhJUA\u0026q=85\u0026s=c43c2d7cb9a0b141913367d83b7d7555","href":"https://trubuild.io"},"favicon":"https://mintcdn.com/trubuild/ZU83U96G2zylhJUA/favicon.svg?fit=max\u0026auto=format\u0026n=ZU83U96G2zylhJUA\u0026q=85\u0026s=e3d4362a075650f1acbe8e5fd583c643","navbar":{"links":[{"href":"mailto:support@trubuild.io","label":"Support"}],"primary":{"type":"button","label":"Open app","href":"https://app.trubuild.io"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/trubuild-io"}},"fonts":{"heading":{"family":"Sora"},"body":{"family":"DM Sans"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://trubuild.io"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"trubuild","hasAudioNarration":false,"actualSubdomain":"trubuild","customDomains":["docs.trubuild.io"],"gitSource":{"type":"github","owner":"trubuild-io","repo":"trubuild-monorepo","deployBranch":"docs/initial-site","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a98beed90df3562f5e0ebb7","clientVersion":"0.0.4142","searchFilterCounts":[{"language":"default","tag":"Guides","count":18},{"language":"default","tag":"Platform features","count":10},{"language":"default","tag":"Get started","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"platform/commercial-eval","slug":"/platform/commercial-eval","pageMetadata":{"title":"Commercial evaluation","description":"Extract and compare contractor priced BOQ submissions, review bid quality scorecards, and export a defensible commercial position for award.","href":"/platform/commercial-eval"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Extract and compare contractor priced BOQ submissions, review bid quality scorecards, and export a defensible commercial position for award.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,Heading,Note,Step,Steps,Table,Tip}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Commercial evaluation is where the cost team turns bidder pricing into defensible award evidence. TruBuild extracts line items from each contractor’s priced submission, aligns them against your bill of quantities (BOQ), and gives you a ranked, line-by-line comparison with pricing quality flags: unpriced items, exclusions, and divisions priced well above or below the market.`}),`\n`,_jsx(_components.p,{children:`This matters because a low headline total is not a low evaluated price. A bid that excludes scope, leaves provisional items unpriced, or hides anomalous unit rates shifts risk back to the owner. The comparison surfaces those gaps before they become award-stage surprises.`}),`\n`,_jsx(Note,{children:_jsx(_components.p,{children:`If you do not see commercial evaluation in your workspace, contact TruBuild support to request the feature for your organization.`})}),`\n`,_jsx(Heading,{level:`2`,id:`who-this-is-for`,children:`Who this is for`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Role`}),_jsx(_components.th,{children:`Main responsibility in this workflow`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Procurement manager`}),_jsx(_components.td,{children:`Confirms package setup, contractor list, and award evidence`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Commercial lead`}),_jsx(_components.td,{children:`Owns the commercial round and the final commercial position`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`QS / cost consultant`}),_jsx(_components.td,{children:`Reviews BOQ extraction, anomalies, exclusions, and pricing clarifications`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Owner reviewer`}),_jsx(_components.td,{children:`Reviews commercial evidence and residual commercial risk`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Access levels control what each user can do. Users with `,_jsx(_components.strong,{children:`full`}),` or `,_jsx(_components.strong,{children:`commercial`}),` access can create rounds, upload files, and edit overrides. Users with `,_jsx(_components.strong,{children:`viewer`}),` access can review results and download exports but cannot make changes; disabled actions show a `,_jsx(_components.strong,{children:`Read-only access`}),` tooltip. See `,_jsx(_components.a,{href:`/platform/evaluation-governance`,children:`Evaluation governance`}),` for the full access model.`]}),`\n`,_jsx(Heading,{level:`2`,id:`what-you-need`,children:`What you need`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Input`}),_jsx(_components.th,{children:`Format`}),_jsx(_components.th,{children:`Notes`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Bill of Quantities (BOQ)`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`.pdf`}),`, `,_jsx(_components.code,{children:`.xlsx`}),`, `,_jsx(_components.code,{children:`.xls`})]}),_jsx(_components.td,{children:`Required. The pricing basis every bid is compared against`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Pre-Tender Estimate (PTE)`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`.pdf`}),`, `,_jsx(_components.code,{children:`.xlsx`}),`, `,_jsx(_components.code,{children:`.xls`})]}),_jsx(_components.td,{children:`Optional. Adds a benchmark row and deviation analysis`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Vendor files`})}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`.xlsx`}),`, `,_jsx(_components.code,{children:`.xls`}),`, `,_jsx(_components.code,{children:`.pdf`}),`, `,_jsx(_components.code,{children:`.doc`}),`, `,_jsx(_components.code,{children:`.docx`})]}),_jsx(_components.td,{children:`Each contractor’s priced submission, uploaded against that contractor. Folders and ZIP archives are accepted`})]})]})]}),`\n`,_jsx(_components.p,{children:`At least one vendor must have files before you can run an evaluation. Excel submissions extract most reliably, so insist on your BOQ template in the RFP pack wherever you can.`}),`\n`,_jsx(Heading,{level:`2`,id:`where-commercial-evaluation-fits-in-the-tender-cycle`,children:`Where commercial evaluation fits in the tender cycle`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Procurement stage`}),_jsx(_components.th,{children:`Commercial team activity in TruBuild`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Tender preparation`}),_jsx(_components.td,{children:`Confirm package structure, assets, contractor list, and BOQ quality`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Initial submission`}),_jsx(_components.td,{children:`Upload contractor priced submissions and run the first round`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Compliance review`}),_jsx(_components.td,{children:`Check unpriced scope, exclusions, and abnormal spreads on the dashboard and scorecards`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Clarification cycle`}),_jsx(_components.td,{children:`Raise commercial clarifications to contractors and track responses`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Revised submission`}),_jsx(_components.td,{children:`Upload revised priced submissions and run a new round`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Award recommendation`}),_jsx(_components.td,{children:`Use the latest reviewed commercial round as the commercial basis for the award`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`before-trubuild`,children:`Before TruBuild`}),`\n`,_jsx(_components.p,{children:`The traditional commercial evaluation flow for a 6-bidder tender on a 1,000-line BOQ:`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Collect bids`,children:_jsx(_components.p,{children:`Vendor Excel and PDF submissions arrive over email, each with different column orders, units, and formatting.`})}),_jsx(Step,{title:`Build a master comparison sheet`,children:_jsx(_components.p,{children:`A cost manager spends 3 to 5 days copy-pasting vendor prices into a master Excel next to the reference BOQ. Every vendor’s line order is different, so most of the time goes into lining things up.`})}),_jsx(Step,{title:`Spot-check with formulas`,children:_jsx(_components.p,{children:`Conditional formatting highlights cells above or below average. Formulas break every time someone inserts a row.`})}),_jsx(Step,{title:`Manually identify outliers and queries`,children:_jsx(_components.p,{children:`An analyst scrolls the sheet looking for suspicious numbers and types them into a separate clarification tracker.`})}),_jsx(Step,{title:`Produce the comparison report`,children:_jsx(_components.p,{children:`Copy and paste into slides, recreate charts, then redo everything from scratch when Round 2 arrives.`})})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Typical pain points:`}),` the master sheet becomes the single source of truth, one bad cell can change the awarded vendor, there is no audit trail, and every clarification cycle means redoing the work.`]}),`\n`,_jsx(Heading,{level:`2`,id:`run-a-commercial-evaluation`,children:`Run a commercial evaluation`}),`\n`,_jsxs(_components.p,{children:[`You run commercial evaluations per asset within a package. From the package’s commercial page, click `,_jsx(_components.strong,{children:`Run New Round`}),` to open the evaluation wizard. From an asset’s results page you can also click `,_jsx(_components.strong,{children:`Create and run evaluation`}),`. The wizard has two steps.`]}),`\n`,_jsx(Heading,{level:`3`,id:`step-1-general-information`,children:`Step 1: General information`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Check the asset details`,children:_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Asset name`}),` and `,_jsx(_components.strong,{children:`Number of instances`}),` fields are shown read-only. The instance count is the quantity of identical asset units and it multiplies rolled-up totals.`]})}),_jsx(Step,{title:`Upload the Bill of Quantities (BOQ)`,children:_jsxs(_components.p,{children:[`Drop the BOQ into the `,_jsx(_components.strong,{children:`Bill of Quantities (BOQ)`}),` upload zone. This is required. The label shows `,_jsx(_components.strong,{children:`Complete`}),` once a file is attached.`]})}),_jsx(Step,{title:`Upload the Pre-Tender Estimate (PTE)`,children:_jsxs(_components.p,{children:[`Optionally drop your estimate into the `,_jsx(_components.strong,{children:`Pre-Tender Estimate (PTE)`}),` zone. Uploading a PTE unlocks the benchmark row in the ranking table and the deviation-from-PTE chart.`]})})]}),`\n`,_jsx(Heading,{level:`3`,id:`step-2-vendor-files`,children:`Step 2: Vendor files`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Upload each contractor's submission`,children:_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Vendor Files`}),` section lists every contractor on the package with its own upload zone. Drop each contractor’s priced submission against the correct contractor. Multi-file uploads, folders, and ZIP archives are supported.`]})}),_jsx(Step,{title:`Check coverage`,children:_jsxs(_components.p,{children:[`The header shows how many vendors have files, for example `,_jsx(_components.strong,{children:`Vendor Files (4/6 vendors)`}),`. At least one vendor must have files to run the evaluation.`]})}),_jsx(Step,{title:`Start the run`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Create and run evaluation`}),`. TruBuild confirms with “Commercial evaluation started” and the round moves to `,_jsx(_components.strong,{children:`Analyzing`}),`. Extraction and comparison run in the background, so you can leave the page and come back.`]})})]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Keep revised-round files out of the initial round. When clarification responses arrive, create a new round instead of adding files to the old one, so the movement between rounds stays auditable.`})}),`\n`,_jsx(Heading,{level:`3`,id:`round-statuses`,children:`Round statuses`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Setup`})}),_jsx(_components.td,{children:`Round created, waiting to start`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Analyzing`})}),_jsx(_components.td,{children:`Extraction and comparison in progress. A progress view shows which vendor files are being extracted and the elapsed time`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Ready`})}),_jsx(_components.td,{children:`Results are available for review`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Failed`})}),_jsxs(_components.td,{children:[`The run hit an error. The error message is shown with a `,_jsx(_components.strong,{children:`Retry`}),` option that takes you back to round creation`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`review-the-pricing-overview`,children:`Review the Pricing Overview`}),`\n`,_jsxs(_components.p,{children:[`Once results are ready, the package-level `,_jsx(_components.strong,{children:`Pricing Overview`}),` page gives you the comparative picture across all evaluated assets and contractors. A status banner at the top tells you where the package stands:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Banner`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Results ready for N asset(s)`})}),_jsx(_components.td,{children:`Those assets have completed rounds, with links to each`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Commercial analysis in progress`})}),_jsx(_components.td,{children:`One or more assets are still processing`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Commercial analysis failed`})}),_jsx(_components.td,{children:`A run hit an error, with links to retry`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`No evaluations yet`})}),_jsx(_components.td,{children:`No rounds have been run on this package`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`key-metrics`,children:`Key metrics`}),`\n`,_jsx(_components.p,{children:`Five cards summarize the commercial position:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Card`}),_jsx(_components.th,{children:`What it shows`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Lowest Bidder`})}),_jsxs(_components.td,{children:[`The cheapest contractor and its total. Can carry an `,_jsx(_components.strong,{children:`Inclusion`}),` percentage badge`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Highest Bidder`})}),_jsx(_components.td,{children:`The most expensive contractor and its total`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Pre-Tender Estimate`})}),_jsx(_components.td,{children:`Your PTE total and its variance versus the lowest bid (shown only if you uploaded a PTE)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Cost Spread`})}),_jsx(_components.td,{children:`The gap between highest and lowest bids, with the variance percentage`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Contractors`})}),_jsx(_components.td,{children:`How many contractors and assets were evaluated`})]})]})]}),`\n`,_jsx(_components.p,{children:`A wide cost spread is itself a finding. It usually means bidders read the scope differently, and it is worth resolving through clarifications before you trust the ranking.`}),`\n`,_jsx(Heading,{level:`3`,id:`bidder-ranking`,children:`Bidder ranking`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.strong,{children:`Bidder Ranking`}),` table lists every contractor with:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Rank`}),`: position by total cost`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Bidder`}),`: contractor name, with `,_jsx(_components.strong,{children:`Lowest`}),`, `,_jsx(_components.strong,{children:`Highest`}),`, or `,_jsx(_components.strong,{children:`Unpriced`}),` badges`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Total Cost`}),`: the contractor’s evaluated total`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Score`}),`: 100% for the lowest bid, proportional for the rest`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`vs. Lowest`}),`: percentage above the lowest bid (the lowest bid shows `,_jsx(_components.strong,{children:`Baseline`}),`)`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Contractors that submitted no usable pricing appear grayed out with an `,_jsx(_components.strong,{children:`Unpriced`}),` badge. If you uploaded a PTE, it appears as its own row with a `,_jsx(_components.strong,{children:`Benchmark`}),` badge so you can see where your estimate sits in the bid field.`]}),`\n`,_jsx(Heading,{level:`3`,id:`bid-quality-scorecards`,children:`Bid quality scorecards`}),`\n`,_jsx(_components.p,{children:`Two cards grade each vendor’s submission with a letter grade (A to F, labeled Excellent to Critical) and a 0 to 100 score bar. Use the arrows to page through vendors.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Scorecard`}),_jsx(_components.th,{children:`What it measures`}),_jsx(_components.th,{children:`Expandable detail`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Pricing Integrity`})}),_jsx(_components.td,{children:`Whether the vendor priced divisions in line with the market`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Overpriced divisions`}),` and `,_jsx(_components.strong,{children:`Underpriced divisions`}),`, with counts and worst deviation per division`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Submission Quality`})}),_jsx(_components.td,{children:`How complete and clean the submission is`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Exclusions`}),` and `,_jsx(_components.strong,{children:`Unpriced items`}),`, with counts per item`]})]})]})]}),`\n`,_jsx(_components.p,{children:`These grades are the fastest route to your commercial clarification list. A vendor with a low Submission Quality grade needs exclusions and unpriced scope resolved before its total means anything. A low Pricing Integrity grade often signals front-loading or a scope misread.`}),`\n`,_jsx(Heading,{level:`3`,id:`charts`,children:`Charts`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Cost Distribution per Asset`}),`: a stacked bar per contractor showing what percentage each asset contributes to that contractor’s total bid. Useful for spotting a bidder who loaded one building or zone disproportionately.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Deviation from PTE`}),`: per-asset bars showing how far each vendor sits above or below your estimate, with reference lines at 0% and plus or minus 5%. Shown only if you uploaded a PTE.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Pricing behaviour`}),`: a breakdown of each vendor’s divisions into `,_jsx(_components.strong,{children:`Underpriced`}),`, `,_jsx(_components.strong,{children:`In Range`}),`, and `,_jsx(_components.strong,{children:`Overpriced`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`work-the-line-by-line-comparison`,children:`Work the line-by-line comparison`}),`\n`,_jsx(_components.p,{children:`Open an asset from the Pricing Overview to reach the vendor comparison table. This is where evaluators spend most of their time, working from the largest variances and highest-value lines down.`}),`\n`,_jsx(Heading,{level:`3`,id:`table-structure`,children:`Table structure`}),`\n`,_jsx(_components.p,{children:`The table follows the BOQ hierarchy:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Division headers`}),` with per-vendor totals and lowest/highest indicators`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Grouping sub-headers`}),` with subtotals`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Line items`}),` with item ID, description, quantity, unit, per-vendor pricing, PTE pricing (if provided), lowest, highest, and variance percentage`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`controls`,children:`Controls`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Control`}),_jsx(_components.th,{children:`Options`}),_jsx(_components.th,{children:`Use it to`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Price display`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Rate`}),` / `,_jsx(_components.strong,{children:`Amount`})]}),_jsx(_components.td,{children:`Switch between unit rates and extended amounts`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Bid mode`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Received`}),` / `,_jsx(_components.strong,{children:`Normalized`})]}),_jsx(_components.td,{children:`View original submitted prices or prices after your overrides`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Search and filter`}),_jsx(_components.td,{children:`Item ID, description, division, grouping`}),_jsx(_components.td,{children:`Jump straight to a scope area`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Vendor selection`}),_jsx(_components.td,{children:`Checkbox per vendor`}),_jsx(_components.td,{children:`Focus the table on a shortlist`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`highlighting`,children:`Highlighting`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Lowest bidder cells are highlighted green, highest in red.`}),`\n`,_jsx(_components.li,{children:`Lines with variance above threshold are flagged amber or red depending on severity.`}),`\n`,_jsx(_components.li,{children:`Exclusions and unpriced items carry badges and feed the Submission Quality grade.`}),`\n`,_jsxs(_components.li,{children:[`Values TruBuild filled in rather than extracted directly appear dimmed and marked `,_jsx(_components.strong,{children:`Imputed`}),`. Treat these as candidates for verification, not settled facts.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`overrides-notes-and-source-checks`,children:`Overrides, notes, and source checks`}),`\n`,_jsx(_components.p,{children:`On any line you can:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Edit an override`}),` (pencil icon) to correct a vendor amount or rename an item when extraction misread the source. Overrides feed the `,_jsx(_components.strong,{children:`Normalized`}),` bid mode and are preserved on the round.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Delete an override`}),` (trash icon) to revert to the extracted value.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Add a note`}),` for other evaluators.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Open the source document`}),` to check the vendor’s original page before overriding. Always verify against the source: the whole point of the audit trail is that every adjusted number traces back to evidence.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`export-the-comparison`,children:`Export the comparison`}),`\n`,_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Export Comparison`}),` in the toolbar on the asset’s commercial detail page. Before exporting you can choose:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Which vendors to include`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Rate`}),` or `,_jsx(_components.strong,{children:`Amount`}),` price display`]}),`\n`,_jsx(_components.li,{children:`Whether to include the PTE`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Received`}),` or `,_jsx(_components.strong,{children:`Normalized`}),` bid mode`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`The export is an Excel workbook containing:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Sheet`}),_jsx(_components.th,{children:`Contents`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Comparison Summary`})}),_jsx(_components.td,{children:`Project and round metadata, vendor totals, PTE total, lowest bidder, and variance metrics`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Division sheets`})}),_jsx(_components.td,{children:`The full hierarchical table per division: groupings, line items, per-vendor pricing, lowest, highest, and variance, with the same green/red/amber highlighting as on screen`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`Warnings/Issues`})}),_jsx(_components.td,{children:`All detected warnings and anomalies, listed per item with the vendor and message`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`TruBuild confirms the download with “Comparison exported successfully”. The filename follows the pattern `,_jsx(_components.code,{children:`\u003casset name>_Commercial_Comparison_\u003cround name>.xlsx`}),`, so exports from different assets and rounds never get confused in the committee pack.`]}),`\n`,_jsx(_components.p,{children:`Viewers can export too, so a committee reviewer with read-only access can pull their own snapshot. Export before every committee session so reviewers work from a fixed file rather than a live screen.`}),`\n`,_jsx(Heading,{level:`2`,id:`run-additional-rounds`,children:`Run additional rounds`}),`\n`,_jsx(_components.p,{children:`Clarification responses and revised offers belong in new rounds, not edits to old ones. In construction procurement, the movement between rounds is often the evidence: what changed, why it changed, and whether a clarification improved or weakened the bid.`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Create the next round`,children:_jsxs(_components.p,{children:[`Click `,_jsx(_components.strong,{children:`Run New Round`}),` on the commercial page. Rounds default to “Round 1”, “Round 2”, and so on, but you can rename them. “Round 2 - post-clarifications” is a good convention.`]})}),_jsx(Step,{title:`Upload the revised submissions`,children:_jsx(_components.p,{children:`Attach each contractor’s revised priced files in the wizard and run the evaluation as before.`})}),_jsx(Step,{title:`Compare against the prior round`,children:_jsx(_components.p,{children:`Use the round dropdown to switch between rounds. Check total bid movement, previously unpriced lines now priced, new or withdrawn exclusions, and rates that moved materially after clarification.`})})]}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/platform/rounds`,children:`Rounds and clarifications`}),` for round naming conventions and how commercial and technical rounds interact.`]}),`\n`,_jsx(Heading,{level:`2`,id:`best-practices`,children:`Best practices`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Insist on your Excel template in the RFP pack`,id:`insist-on-your-excel-template-in-the-rfp-pack`,children:_jsx(_components.p,{children:`Every hour you invest forcing a clean, consistent BOQ template saves multiples in alignment fixing. Watch provisional sums, dayworks, and contingency lines in particular: vendors interpret them differently, and clean labels in your BOQ prevent most of the noise.`})}),_jsx(Accordion,{title:`Sort by variance first, not by total`,id:`sort-by-variance-first-not-by-total`,children:_jsx(_components.p,{children:`Big totals are not what wins or loses a tender; big deltas are. A line with high variance is where the market disagrees, and where your evaluator’s judgment matters most.`})}),_jsx(Accordion,{title:`Resolve quality grades before trusting totals`,id:`resolve-quality-grades-before-trusting-totals`,children:_jsx(_components.p,{children:`A bid with unresolved exclusions or unpriced items has an artificially low total. Use the Submission Quality detail to build the contractor’s clarification list, then re-evaluate in the next round.`})}),_jsx(Accordion,{title:`Verify imputed and overridden values against source documents`,id:`verify-imputed-and-overridden-values-against-source-documents`,children:_jsx(_components.p,{children:`Dimmed imputed values and manual overrides are the two places a comparison can drift from the actual bids. Open the source document link before you rely on either.`})}),_jsx(Accordion,{title:`Never overwrite a prior round`,id:`never-overwrite-a-prior-round`,children:_jsx(_components.p,{children:`Keep each round intact. Committees and auditors care about the movement between rounds as much as the final numbers.`})})]}),`\n`,_jsx(Heading,{level:`2`,id:`related`,children:`Related`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Rounds and clarifications`,icon:`rotate`,href:`/platform/rounds`,children:_jsx(_components.p,{children:`How initial submissions, clarification cycles, and revised offers map to rounds.`})}),_jsx(Card,{title:`Award readiness`,icon:`award`,href:`/platform/award-readiness`,children:_jsx(_components.p,{children:`Turn the latest reviewed commercial round into a committee-ready award record.`})}),_jsx(Card,{title:`Technical evaluation`,icon:`clipboard-check`,href:`/platform/technical-eval`,children:_jsx(_components.p,{children:`Score contractor technical submissions alongside the commercial comparison.`})}),_jsx(Card,{title:`Evaluation governance`,icon:`scale-balanced`,href:`/platform/evaluation-governance`,children:_jsx(_components.p,{children:`Access levels, audit trail, and controls across the evaluation.`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Commercial evaluation","description":"Extract and compare contractor priced BOQ submissions, review bid quality scorecards, and export a defensible commercial position for award.","href":"/platform/commercial-eval"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Who this is for","slug":"who-this-is-for","depth":2,"children":[]},{"title":"What you need","slug":"what-you-need","depth":2,"children":[]},{"title":"Where commercial evaluation fits in the tender cycle","slug":"where-commercial-evaluation-fits-in-the-tender-cycle","depth":2,"children":[]},{"title":"Before TruBuild","slug":"before-trubuild","depth":2,"children":[]},{"title":"Run a commercial evaluation","slug":"run-a-commercial-evaluation","depth":2,"children":[{"title":"Step 1: General information","slug":"step-1-general-information","depth":3,"children":[]},{"title":"Step 2: Vendor files","slug":"step-2-vendor-files","depth":3,"children":[]},{"title":"Round statuses","slug":"round-statuses","depth":3,"children":[]}]},{"title":"Review the Pricing Overview","slug":"review-the-pricing-overview","depth":2,"children":[{"title":"Key metrics","slug":"key-metrics","depth":3,"children":[]},{"title":"Bidder ranking","slug":"bidder-ranking","depth":3,"children":[]},{"title":"Bid quality scorecards","slug":"bid-quality-scorecards","depth":3,"children":[]},{"title":"Charts","slug":"charts","depth":3,"children":[]}]},{"title":"Work the line-by-line comparison","slug":"work-the-line-by-line-comparison","depth":2,"children":[{"title":"Table structure","slug":"table-structure","depth":3,"children":[]},{"title":"Controls","slug":"controls","depth":3,"children":[]},{"title":"Highlighting","slug":"highlighting","depth":3,"children":[]},{"title":"Overrides, notes, and source checks","slug":"overrides-notes-and-source-checks","depth":3,"children":[]}]},{"title":"Export the comparison","slug":"export-the-comparison","depth":2,"children":[]},{"title":"Run additional rounds","slug":"run-additional-rounds","depth":2,"children":[]},{"title":"Best practices","slug":"best-practices","depth":2,"children":[]},{"title":"Related","slug":"related","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"trubuild","siteName":"TruBuild","title":"Commercial evaluation - TruBuild","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-07T10:30:38.224Z","originalFileLocation":"platform/commercial-eval.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Extract and compare contractor priced BOQ submissions, review bid quality scorecards, and export a defensible commercial position for award.\">\u003cmeta data-mint-head name=\"application-name\" content=\"TruBuild\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/trubuild/SIAeI7U2RbqvN-Fz/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/trubuild/SIAeI7U2RbqvN-Fz/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/trubuild/SIAeI7U2RbqvN-Fz/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/trubuild/SIAeI7U2RbqvN-Fz/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/trubuild/SIAeI7U2RbqvN-Fz/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/trubuild/SIAeI7U2RbqvN-Fz/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/trubuild/SIAeI7U2RbqvN-Fz/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/trubuild/SIAeI7U2RbqvN-Fz/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/trubuild/SIAeI7U2RbqvN-Fz/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Commercial evaluation - TruBuild\">\u003cmeta data-mint-head property=\"og:description\" content=\"Extract and compare contractor priced BOQ submissions, review bid quality scorecards, and export a defensible commercial position for award.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"TruBuild\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.trubuild.io/platform/commercial-eval\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://trubuild.mintlify.site/_mintlify/api/og/v2?division=Platform+features\u0026amp;title=Commercial+evaluation\u0026amp;description=Extract+and+compare+contractor+priced+BOQ+submissions%2C+review+bid+quality+scorecards%2C+and+export+a+defensible+commercial+position+for+award.\u0026amp;theme=f9c088fe6aea97756ac47968\u0026amp;signature=40759907cac9934a463ead89c7d70cbfe39512ae3c7cf6590def018244d216fa\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Commercial evaluation - TruBuild\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Extract and compare contractor priced BOQ submissions, review bid quality scorecards, and export a defensible commercial position for award.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://trubuild.mintlify.site/_mintlify/api/og/v2?division=Platform+features\u0026amp;title=Commercial+evaluation\u0026amp;description=Extract+and+compare+contractor+priced+BOQ+submissions%2C+review+bid+quality+scorecards%2C+and+export+a+defensible+commercial+position+for+award.\u0026amp;theme=f9c088fe6aea97756ac47968\u0026amp;signature=40759907cac9934a463ead89c7d70cbfe39512ae3c7cf6590def018244d216fa\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/trubuild/SIAeI7U2RbqvN-Fz/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"TruBuild\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7c4dff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.trubuild.io/platform/commercial-eval\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/platform/commercial-eval.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.trubuild.io/#organization\",\"name\":\"TruBuild\",\"url\":\"https://docs.trubuild.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/trubuild/ZU83U96G2zylhJUA/logo/trubuild-light.png?fit=max\u0026auto=format\u0026n=ZU83U96G2zylhJUA\u0026q=85\u0026s=80330b4735af2bd22cd213849f2cf1c7\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.trubuild.io#website\",\"name\":\"TruBuild\",\"url\":\"https://docs.trubuild.io\",\"publisher\":{\"@id\":\"https://docs.trubuild.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.trubuild.io/platform/commercial-eval#webpage\",\"url\":\"https://docs.trubuild.io/platform/commercial-eval\",\"name\":\"Commercial evaluation\",\"description\":\"Extract and compare contractor priced BOQ submissions, review bid quality scorecards, and export a defensible commercial position for award.\",\"dateModified\":\"2026-07-07T10:30:38.224Z\",\"isPartOf\":{\"@id\":\"https://docs.trubuild.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.trubuild.io/platform/commercial-eval#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.trubuild.io/platform/commercial-eval#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Platform features\",\"item\":\"https://docs.trubuild.io/platform/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Commercial evaluation\",\"item\":\"https://docs.trubuild.io/platform/commercial-eval\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.trubuild.io/platform/commercial-eval#article\",\"headline\":\"Commercial evaluation\",\"name\":\"Commercial evaluation\",\"description\":\"Extract and compare contractor priced BOQ submissions, review bid quality scorecards, and export a defensible commercial position for award.\",\"url\":\"https://docs.trubuild.io/platform/commercial-eval\",\"mainEntityOfPage\":{\"@id\":\"https://docs.trubuild.io/platform/commercial-eval#webpage\"},\"dateModified\":\"2026-07-07T10:30:38.224Z\",\"publisher\":{\"@id\":\"https://docs.trubuild.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.trubuild.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"TruBuild\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"TruBuild\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/platform/commercial-eval.md","siteName":"TruBuild","nav":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://trubuild.io"}]},"tabs":[{"tab":"Guides","groups":[{"group":"Get started","pages":[{"title":"TruBuild documentation","mode":"wide","href":""},{"title":"Getting started overview","href":"/get-started/overview"},{"title":"Enterprise rollout","href":"/get-started/enterprise-rollout"},{"title":"Set up your account","href":"/get-started/setup-account"},{"title":"Create your first project and package","href":"/get-started/first-project"},{"title":"Upload tender and bid documents","href":"/get-started/upload-documents"},{"title":"Roles and permissions","href":"/get-started/roles-permissions"},{"title":"Settings and administration","href":"/get-started/settings"}]},{"group":"Platform features","pages":[{"title":"Platform overview","href":"/platform/overview"},{"title":"Evaluation governance","href":"/platform/evaluation-governance"},{"title":"Award readiness","description":"Check the evidence, assemble the committee pack, and record a defensible package award in TruBuild.","href":"/platform/award-readiness"},{"title":"Commercial evaluation","href":"/platform/commercial-eval"},{"title":"Technical evaluation","description":"Score contractor technical submissions against weighted criteria, manage post-tender clarification rounds, and export committee-ready results.","href":"/platform/technical-eval"},{"title":"Tender queries","href":"/platform/tender-queries"},{"title":"Knowledge Hub","href":"/platform/knowledge-hub"},{"title":"Evaluation rounds","href":"/platform/rounds"},{"title":"AI chat","href":"/platform/chat"},{"title":"Brain and Agent Sam","href":"/platform/brain"}]}]}]},"basePath":"","title":"Commercial evaluation - TruBuild","buildId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","deploymentId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","dynamics":[],"chunks":[]}