Skip to content

Bid Invites - multi-channel intake + accept/decline

StageBuilding
StatusPartial
Design statusIn progress
EstimateM
ConfidenceMedium
LinearPIN-12 ↗ PIN-155 ↗ PIN-157 ↗
Linear statusDone
DesignDesign ↗
Linear epicBid Intake & Pipeline
ModuleBids ↗

Priority: Medium · Route: /bid-invites

Scope

Bid Invites inbox (/bid-invites): incoming bid invitations from Procore, BuildingConnected, email, and manual entry, triaged through New / Reviewing / Accepted / Declined / Expired states. Accepting creates exactly one Bid record and carries over invite data; declining generates a reason-coded response. (Source: PIN-12, PIN-155, PIN-157.)

Acceptance criteria

  • Invite states New, Reviewing, Accepted, Declined, Expired, each with a source indicator (Procore / BuildingConnected / email / manual)
  • KPI strip: pending count, accepted this month, declined this month
  • Accept modal: select lead estimator, set priority, optional auto-acknowledgment; creates exactly one Bid (status In Progress) with full field carryover
  • Decline modal: 7 reason templates (capacity, scope, location, timeline, relationship, budget, other) plus custom message
  • Decline from email generates a templated decline response
  • Internal notes field, never sent to the GC
  • Related invites for the same project across sources are detected and grouped
  • Filter/sort by source, date, status, GC

Conor's comments

Part of design. Needs testing & sign off after 8/19. Procore and pinley email needs to be added to intake.

Notes

Merged into single Bids entry in new design, still ships as distinct /bid-invites route. Acknowledge checkbox not wired

Open question for Conor

Acknowledge / intend-to-bid behavior