Collecting and Comparing Contractor Bids

What this page is for

**Trades & Bids** is where you describe a piece of work, ask contractors to price it, record what they quote, and hand the accepted price to your budget. It never signs a contract, never pays anyone, and it never contacts a contractor unless you choose **Send Bid Package** yourself.

Everything on the page belongs to the **project selected in the sidebar**.

What do I do next?

| What you see | What to do next |
|---|---|
| Pills reading **Not Started** | Select **Manage Trades** to add the trades you are actually buying, then select a pill. |
| A trade selected but no bids | Select **Add Bid Request**, answer the questions, then **Save Bid Request**. |
| A saved bid at **Draft** | Use **Scope of Work** to copy the written scope, or **Send Bid Package** to email it. |
| A price came back | Open the bid, select **Enter Bid Amount**, type the **Total Bid Amount**, split it across **Budget Line Items**, then **Save Amount**. |
| Several bids for one trade | Compare the amounts in the list, then read each bid's Scope of Work answers before deciding. |
| You have chosen a contractor | Set that bid's status to **Accepted**. |
| A bid marked **Accepted** with an amount | Select **Push to Budget** to record the price as that line's **Agreed Cost**. |
| **Pushed** badge showing | The budget now carries the agreed price. Next: sign your own contract, and collect insurance on **Vendors**. |
| *No budget items linked to this bid* | Open the bid's **Questions** tab and use **Add Line Item** first. |
| *Enter a bid amount first before pushing to budget* | The bid has no amount. Enter it on the **Enter Bid** tab. |

Before you ask for prices

Define the work first. A price only means something against a written scope, and the biggest cause of disputes is an unwritten assumption. The page is built in that order: answer questions about the work, then collect prices.

Choosing your trades

The **Trades** card shows a pill for each trade with a coloured dot and a bid count:

  • **Not Started** — no bid requests yet
  • **Getting Bids** — requests exist, no price recorded
  • **Bid Received** — at least one price is in
  • **Contracted** — at least one bid has been pushed to the budget

Selecting a pill **filters the bid list** below it; selecting it again clears the filter. **Manage Trades** opens a picker where you tick the trades this project needs. Until you save your own selection the page shows a default set: framing, electrical, plumbing, HVAC, roofing, drywall and foundation.

Only trades that have a built scope questionnaire open a full setup screen. A trade without one shows *This trade workflow is coming soon*, and nothing can be recorded there yet. Choose a trade that opens the setup screen, or track that work on **Budget** and **Expenses** instead.

Creating a bid request

With a trade selected, choose **Add Bid Request** (or **Create First Bid Request** on an empty list). The setup screen has five tabs.

Questions

This is both the contractor's details and the scope of work.

  • **Company Name** is required — nothing saves without it. You can pick an existing vendor from the searchable list, or type a name. Picking from the list is better: it ties this bid to that vendor record so insurance tracking and budget assignment can follow. A typed name is never matched to a vendor record by guesswork.
  • **Contact Name** is optional.
  • The trade questions describe the actual work — sizes, materials, methods, what is and is not included. Your answers build the written scope.
  • **Add Line Item** links this bid to the budget lines it will pay for. Do this now: without at least one linked line, the price cannot be pushed to the budget later.
  • **Save Bid Request** stores it at status **Draft**. The button reads **Update Bid Request** when you reopen an existing one.

Scope of Work

The generated written scope, from your answers. Copy it to your clipboard, download it as a branded PDF, or move on to send it. This is the document to put in front of every bidder so their prices are comparable.

Send Bid Package

Optional, and the only action here that contacts anyone. Save the bid request first. Enter **Vendor Email**, and OwnerDraw emails a branded PDF of the scope with a secure link the contractor can use to submit a price back to you. The email address you type is stored on the bid; it is not taken from the vendor directory, and adding an email here does not update the vendor record. If you would rather send it yourself, download the same PDF and attach it to your own email.

Call Script

A phone script for the same scope, to copy and read out. Useful when a contractor prefers a call.

Enter Bid

Where prices are recorded. For each saved bid:

  • **Enter Bid Amount** (or **Edit Amounts**) opens **Total Bid Amount** and the linked **Budget Line Items**.
  • Split the total across the linked lines. A live indicator reads **Matches!**, *$X remaining*, or *$X over*. The line amounts may not exceed the total — **Save Amount** is blocked while they do.
  • If you leave the line amounts blank, pushing to budget spreads the total evenly across the linked lines, with the rounding remainder on the last one. Enter the split yourself if the work is not evenly divided.
  • **Edit Details** returns to the Questions tab. The trash icon deletes the bid request, with a confirmation.

*Professional builders:* the scope questionnaire and the line-item split are the whole comparison mechanism. There is no side-by-side bid comparison screen and no separate inclusions, exclusions or allowance fields on a bid — record those in your scope answers and notes, and use the **Allowances** page for owner selections.

Statuses, and what they do

Set status from the dropdown on the bid list or inside the trade setup screen:

| Status | Meaning | Set by |
|---|---|---|
| **Draft** | Saved, not sent | You |
| **Sent** | You asked for a price | You |
| **Bid Received** | A price came back | You, from the Trades bid list |
| **Accepted** | This is the bid you are going with | You |
| **Contracted** | The price has been pushed to the budget | Set automatically by **Push to Budget** |

Two things worth knowing. **Bid Received** appears only in the dropdown on the Trades bid list, not in the dropdown inside a trade setup screen — set it from the list. And **Accepted** is an internal decision: it sends nothing, signs nothing, and pays nothing.

Selecting a winner, and pushing it to Budget

**Push to Budget** appears only when a bid is **Accepted** and has an amount above zero. Selecting it changes exactly these things, and nothing else:

| What changes | What it does |
|---|---|
| **Agreed Cost** on each linked budget line | Set to that line's share of the bid — this is the accepted price for the line |
| The line's commitment stage | Moves from *planning* to *committed*, so **Remaining Commitment** starts tracking |
| A record of which bid it came from | The line remembers the bid behind the price |
| Vendor assignment | The contractor is assigned to those budget lines whenever the bid has a vendor picked from the directory. Both **Push to Budget** buttons — the one on the main Trades bid list and the one inside the trade setup screen — do this the same way, and pushing again does not create duplicate assignments. If the bid has no directory vendor, the push still records the price and tells you the contractor could not be assigned; OwnerDraw never guesses from the company name |
| The bid's status | Becomes **Contracted**, and the list shows a **Pushed** badge |

What it does **not** change: your quantities, unit prices, sales tax, approved change orders or transfers — so your **Revised Budget** total does not move when you push a bid. That is deliberate: Agreed Cost is what you agreed to pay, and Revised Budget is what you planned to spend. Seeing them differ is the point, and the **Budget** page shows both side by side.

It also does not create a contract, send a message, pay anyone, or record an expense.

What is left for you to do

1. Sign your own written agreement with the contractor. OwnerDraw does not produce one.
2. Check the vendor's insurance and W-9 on **Vendors** before the work starts.
3. Open **Budget** and confirm the Agreed Cost landed on the lines you expected.
4. If your plan was wrong rather than the price, adjust the line's quantity or unit price on **Budget**, or raise a change order — pushing a bid does not do this for you.
5. Record money as it is spent on **Expenses**, and collect lien waivers with each payment.

Editing, replacing or re-pushing

  • **Editing an accepted bid before pushing** is free — change the amount and the split, then push.
  • **Editing the amount after pushing does not update the budget.** Once a bid is **Contracted** its status dropdown is locked and **Push to Budget** disappears, so a corrected price stays on the bid and the line keeps the old Agreed Cost. OwnerDraw will not overwrite Agreed Cost behind your back. Instead, an amber notice appears on that bid — naming both figures when it can compare them, or simply reminding you that this bid was already pushed — and points you to the **Budget** line. Fix the Agreed Cost on the **Budget** line itself, or create a fresh bid request for the corrected figure. Later edits you made on Budget are never overwritten.
  • **Choosing a different contractor after pushing:** accept the other bid and push that one. Its amounts overwrite the Agreed Cost on any line both bids share. Lines only the first bid touched keep the old figure — clear those on **Budget**.
  • **Duplicating a bid** copies the scope answers under a new company name, so several contractors can price identical work.

Empty states, saving and who can do this

  • No project selected: *Select a project to manage trades*.
  • No bids yet: *No bid requests yet* — with **Create First Bid Request** once a trade is selected. Feature preview cards also show until your first bid exists.
  • On the sample project only, **Load Sample Bid Requests** fills the page with fabricated demo bids so you can see the flow.
  • Saving is immediate and confirmed by a short message. If a save fails you get a plain error and nothing is written — fix the cause and save again.
  • The **AI Helper** is optional and spends AI credits each time you use it. Read anything it drafts before sending it to a contractor.
  • Client-role users do not use this page; project members without edit permission can look but not change bids.

Related guides

  • *How to Use the Budget Page* — Agreed Cost, Remaining Commitment and Revised Budget in full.
  • *How to Record and Manage Expenses* — recording what you actually pay.
  • *Managing Vendors and Their Documents* — insurance, W-9s and project assignment.
  • *Lien Waivers in OwnerDraw: What to Send and When* — what to collect with each payment.