Skip to content

Subcontractor Bid Leveler · Construction & Trades

Level sub bids apples to apples before buyout

Send a bid package and it compares every sub's bid in your sheet: scope gaps, exclusions, distance from the median (recalculated in code), outliers and the questions to ask each sub.

Available now $149 one-time · never renewsIncluded in Enterprise

Free account to start. Buying and running live need a paid plan.

  • Starts when your form or app sends it something
  • 1 AI step
  • About 20 min to set up

Sound familiar?

The job, before and after this agent.

What it feels like today

  • “Every sub bids a different scope, and the low number is never really low.”
  • “Exclusions buried in the qualifications turn into change orders later.”
  • “Leveling bids by hand eats a PM's whole afternoon.”

What you get with the agent

  • Every bid read: base, alternates, inclusions, exclusions and qualifications per sub.
  • Scope gaps against your complete-bid checklist for that trade.
  • Each price's distance from the median, recalculated in code, never by the AI, and outliers flagged.
  • A list of clarification questions for each sub.
  • A full comparison page in Notion and a summary in Slack.

Before

Four drywall bids, four different scopes. The PM builds a leveling sheet late into the evening and still misses that one sub excluded patching after rough-in.

After

The Notion page shows the patching exclusion, the outlier and the questions to ask before you award.

How it works

The whole workflow, step by step.

Post a bid package to the agent's webhook from your own form or tool and it reads that package's bids from your Google Sheet: base bid, alternates, inclusions, exclusions and qualifications per sub. AI levels them against what a complete bid for the trade must include — scope gaps, explicit exclusions, how far each price sits from the median, outliers — and lists the questions to ask each sub. The median and each bid's % from it are then recalculated in code, never by the AI. The full comparison becomes a page in your Notion bid-leveling database and a summary is posted to Slack. It reads bid details typed into the sheet, not PDF bid files, never adjusts prices with numbers of its own, and never awards work or contacts subs: your PM chooses.

  1. TriggerLevel a bid package
  2. App callRead the bids sheet
  3. AI stepLevel the bids
  4. LogicCheck the math
  5. App callCreate the comparison page in Notion
  6. App callPost the summary to Slack
  7. OutputLeveled

This is the workflow that opens in your workspace when you set the agent up. Every step can be edited.

  1. Step 1Level a bid packageStarts when your own form or tool posts the bid package to level (package name, project, scope notes) to this agent's webhook URL.
  2. Step 2Read the bids sheetReads your bids sheet: one row per sub bid with package, subcontractor, base bid, alternates, inclusions, exclusions, qualifications and notes.
  3. Step 3Level the bidsAI takes the bids for this package only and levels them: scope gaps against what a complete bid must include, exclusions, outliers, and the questions to ask each sub before you choose. The median and each bid's % from it are recalculated in code in the next step.
  4. Step 4Check the mathRecalculates the median of the base bids and each bid's % from the median in code — not by AI — writes the correct figures into the Notion comparison and the Slack summary, and records anything the AI got wrong in math_check.
  5. Step 5Create the comparison page in NotionCreates a page in your bid-leveling database with the side-by-side comparison, gaps, exclusions and questions per sub.
  6. Step 6Post the summary to SlackPosts the short comparison (base bids, % vs median, gaps, outliers) with the link to the Notion page.
  7. Step 7LeveledThe run history keeps the leveling and the Notion link. The PM chooses the sub.

Example run

What goes in, and what comes out.

Example with fictional data

Comes in

Fictional package: 09 29 00 Drywall for a clinic, Level 4 finish, rated corridor walls, patching after MEP rough-in, four bids in your sheet.

The agent produces

A comparison flagging one bid that excludes patching and one well above the median (checked in code), with questions such as whether the rated corridor assembly is included.

What you need

Everything it takes to run it.

About 20 minutes from purchase to live. A checklist above the canvas takes you through each step.

Plan

Included in Enterprise; on other paid plans it's $149 once. Agents run live on paid plans, from Basic ($39/mo).

Your AI key

Connect any of 14 AI providers on your own key. Your provider bills usage directly, at cost; we add no markup.

Apps

Checklist

  • A paid plan (agents run live on paid plans).
  • An AI provider key (Settings → AI Providers).
  • Google Sheets, Notion and Slack, connected in Settings → Integrations.
  • A bids sheet with one row per sub bid, and a way to post the package name to the webhook (your form, tool or a script).

Setup, about 20 minutes

  1. Connect your AI provider. The AI steps run on your own key (OpenAI, Anthropic, Google and more). Add one in Settings → AI Providers.
  2. Connect Google Sheets. Connect the Google account that can open your bids sheet (Settings → Integrations → Google Sheets).
  3. Connect Notion. Connect Notion and share your bid-leveling database with Fluxo Flow (Settings → Integrations → Notion).
  4. Connect Slack. Connect the Slack workspace your precon team uses (Settings → Integrations → Slack).
  5. Describe your bids sheet and complete bids. Open “Level the bids” and replace the placeholder with your columns, complete-bid checklists and outlier threshold.
  6. Pick your bids sheet. Open “Read the bids sheet” and pick the account, spreadsheet and tab.
  7. Pick the Notion database. Open “Create the comparison page in Notion” and pick your account and database.
  8. Pick the Slack channel. Open “Post the summary to Slack” and pick your account and channel. Invite the app to private channels first (/invite @Fluxo Flow).
  9. Test it with Dry Run. Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.
  10. Switch the trigger on. Open the trigger and switch the webhook on. Copy its URL and secret into the form or tool that sends bid packages.

Is it a fit?

Who it's for, and what it won't do.

Built for

  • General contractors and project managers
  • Preconstruction and estimating teams
  • Construction managers running buyout

What it doesn't do

  • It reads bid details typed into the sheet, not PDF bid files.
  • It never adjusts prices with numbers of its own: gaps are described as questions and risks, not priced.
  • It doesn't choose or award the sub, and it doesn't contact subs — your PM does.
  • It isn't an estimate or a takeoff; it compares the bids you received.

We list the limits up front so you can decide before you buy.

Price

$149 one-time

Per workspace. It never renews.

Available now
  • Included at no extra cost on Enterprise.
  • Buying and running it live need a paid plan, from Basic ($39/mo).
  • Dry Run costs nothing: simulated AI and app calls, nothing sent.
  • AI usage is billed by your own provider, at cost. No AI credits to buy from us.

One-time agent purchases aren't covered by the 30-day money-back guarantee. Refund policy

FAQ

Questions about Subcontractor Bid Leveler.

Does it read PDF bids?

No. It reads bid details typed into your Google Sheet, one row per bid. Copy the key lines from each bid form into the sheet.

Will it adjust prices or pick the sub?

Never. Gaps are described as questions and risks, not priced, and your PM chooses and awards. It doesn't contact subs and isn't an estimate or takeoff.

How long is setup?

About 20 minutes: connect Google Sheets, Notion and Slack, describe your bids sheet and what a complete bid includes per trade, then Dry Run.

What does it cost?

A one-time unlock that never renews. Live runs need a paid plan and your own AI key; Dry Run is free.

Can it read PDF bids?

No. It reads bid details typed into your Google Sheet (one row per bid: package, sub, base bid, alternates, inclusions, exclusions, qualifications). Copy the key lines from each bid form into the sheet.

How do I start it?

Post JSON like {"bid_package": "09 29 00 Drywall", "project": "Maple Street Clinic", "scope_notes": "Level 4 finish, includes fire-rated assemblies", "requested_by": "Dana (PM)"} to the webhook URL shown in the trigger's Activation panel, from your own form, a button in your project tool or a script.

Can the AI get the median or the percentages wrong?

Not in what your team sees: after the AI levels the bids, the median of the base bids and each bid's % from it are recalculated in code and written into the Notion page and the Slack summary. The outlier flag is still the AI's call against your threshold, so glance at it against the checked %.

Does it pick the winning sub?

No. It compares the bids and lists the questions to ask; your PM chooses the sub and awards the work.

Is this a subscription?

No. Subcontractor Bid Leveler is a one-time purchase of $149 per workspace and never renews. The Enterprise plan includes it at no extra cost. Running it live needs a paid plan (from Basic ($39/mo)), and your AI provider bills you directly for usage.

Can I test it before it touches real data?

Yes. Once it's set up in your workspace, Dry Run plays every step on sample data with simulated AI and app calls: nothing is sent and nothing in your apps changes. Switch the trigger on only when you're happy.

Put Subcontractor Bid Leveler to work.

Free account, no credit card. Your Agents page opens with Subcontractor Bid Leveler ready to buy and set up, then Dry Run it before it goes live.