Bid Invites - multi-channel intake + accept/decline¶
| Stage | Building |
|---|---|
| Status | Partial |
| Design status | In progress |
| Estimate | M |
| Confidence | Medium |
| Linear | PIN-12 ↗ PIN-155 ↗ PIN-157 ↗ |
| Linear status | Done |
| Design | Design ↗ |
| Linear epic | Bid Intake & Pipeline |
| Module | Bids ↗ |
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