Everything you need to run a commercial job. One workspace, three pillars.
Construpilot collapses the marketplace, document hub, and project finance into a single tenanted workspace. No more juggling PlanHub for bids, Procore for documents, and QuickBooks for accounting.
Find the right sub, level the bids, award the work.
Post a project, build bid packages by trade, and invite subs from the Florida pool. Level the bids side-by-side, then award — the contract is one click away.
39 CSI MasterFormat trades
Pre-seeded catalog, Divisions 02–33. Subs surface for their primary trade automatically.
Bid invitations + RFIs
Invite platform subs or by raw email. Subs raise RFIs against the package; you answer in-app.
Side-by-side leveling
Stats (count / low / avg / spread), delta vs low, shortlist / reject / award actions.
Award → contract
Awarding a bid auto-drafts the subcontract from the package — no re-entry.
Project · Downtown Office Renovation
Drywall — Building A, Levels 3–5
Bids
5
Low
$142k
Average
$158k
Spread
$31k
Plans v3
5 documents · visible to invited subs
- A-101 — Floor Plan Level 3.pdf4.2 MB · today
- CGC permit — fire alarm.pdf880 KB · yesterday
- IMG_0421.jpg2.1 MB · 2d ago
- M-201 — HVAC Schedule.pdf3.0 MB · 4d ago
- Spec section 09 24 — Stucco.pdf1.4 MB · 1w ago
One canonical place per project. Browser-grade preview.
Plans, RFIs, submittals, permits, photos — all uploaded direct-to-R2 from the browser, organized in folders, previewed inline. Granular sharing per folder to invited subs.
Folder tree per project
Create, rename, nest. Each folder has a per-folder toggle for sub visibility.
Direct-to-R2 uploads
Browser PUTs straight to Cloudflare R2 via signed URLs. 100 MB cap per file, configurable.
PDF & image preview
Inline iframe preview for PDFs, native render for images. Short-lived signed download URLs.
RLS-isolated by org
Postgres RLS is the source of truth: subs only see what their invite + folder visibility allows.
Revenue, expense, budget vs actual — per project.
Each org keeps its own ledger, even on a shared project. Recorded transactions are immutable; corrections post offsetting rows. Every state change writes to audit_log.
Per-project P&L
Revenue and expense roll up by project; net updates live as transactions land.
Budget vs actual
Set budgets per category; variance turns red automatically when you blow the line.
Immutable ledger
Recorded transactions never edit — reversals create offsetting rows. Full audit history.
8 default categories
Materials, Labor, Equipment, Subcontractor, Permits, Insurance, Overhead, Other — extensible.
Revenue
$842,500
Expense
$612,300
Net (P&L)
+$230,200
From posting a project to wiring the last payment — one workspace.
Each step lives in the same tenanted workspace, with shared identity, audit, and finance rolling up automatically.
01
Post project
Create the project + bid packages by trade.
02
Invite + bid
Invite subs (platform or email). They submit bids.
03
Level + award
Compare side-by-side. Award one — others auto-rejected.
04
Contract + COs
Auto-drafted from the award. Change orders bilateral.
05
Payments + finance
Record payments, roll into project P&L automatically.
The boring details, done right.
Magic-link auth
No passwords to leak. Supabase Auth with custom Resend SMTP.
Stripe Connect (Express)
Subs onboard payouts in 2 min — test mode wired today.
Daily logs
Per-project daily entry: weather, crew, hours, delays, safety.
RFIs
Auto-numbered (RFI-001). Sub asks, GC answers, both notified.
Notifications
In-app bell + counts; ready for email/SMS hooks.
Audit log
Every payment, contract, and finance state change is recorded.
CSI MasterFormat catalog
39 default trades, Divisions 02–33, extensible per org.
Florida-aware
DBPR license fields on org. State + zip on projects.
Multi-tenant RLS
Postgres row-level security is enforced at the database, not the app.
Stop running your jobs out of spreadsheets.
Spin up your workspace, post a project, and invite your subs in under 10 minutes.