BuildingConnected sync - Bid Board (Opportunities) + webhooks + session bridge¶
| Stage | Building |
|---|---|
| Status | Partial |
| Design status | In review |
| Estimate | L |
| Confidence | Medium |
| Linear | PIN-492 ↗ PIN-152 ↗ |
| Linear status | Done |
| Cycle | C14-C15 |
| Design | Design ↗ |
| Linear epic | Data Ingestion & Integrations |
| Module | Smart Import ↗ |
Priority: High
Scope¶
Syncs BuildingConnected bid invites into Cara's Bid Board via webhook push (manual sync as fallback), upserting by external ID so re-syncs never create duplicates. A session-bridge captures a one-time BC login, then automatically fetches every attached drawing/spec for new bid invites into blob storage via BC's internal API, feeding the same AI-takeoff pipeline as manual uploads. (Source: PIN-492, PIN-152.)
Acceptance criteria¶
- BC bid packages sync into the bid-invites inbox (not the confirmed bid list) as source-tracked, deep-linked records
- Webhook push creates/updates invites in real time; manual sync remains available as fallback
- Re-sync upserts by external ID — no duplicate invites
- Sync actions permission-gated to Exec + Admin, with created/updated/skipped feedback
- One-time "Connect BC session" capture, kept alive in the background so it never needs re-login
- New bid invites automatically pull attached drawings/specs into blob storage and trigger the AI takeoff pipeline
- Manual-upload path remains available if the BC session is expired or disconnected
Conor's comments¶
Do we have all functionality, included submitting proposals, getting leveling scope and submitting proposals? Needs testing & sign off after 8/19
Notes¶
Monorepo-only integration (no cara-docs/design source); subscription-gated; distinct from the launch-gate BC bid e2e row
Open question for Conor¶
-