Proposals
Once a lead’s BRD is approved, it enters the bid pool — the marketplace stage where matched experts can view the requirements and submit proposals. This is the most critical conversion point in the journey: if no expert bids, the lead stalls; if the customer rejects all bids, the lead closes.
Flow
The Bid Pool
When bidPool = true is set on a lead, it becomes discoverable by experts on the platform. Experts can browse open leads, review the BRD, and decide whether to submit a proposal.
The platform tracks:
- How many experts have viewed the lead
- How many proposals have been submitted
- Time elapsed since the lead entered the bid pool
If no expert submits a proposal by the bid deadline, the lead is marked Unmatched and exits the journey. This signals either a gap in the expert pool or an unclear BRD that failed to attract bids.
Proposal Structure
Each proposal is submitted by a single expert and contains:
| Field | Type | Constraints | Description |
|---|---|---|---|
title | String | 3–100 chars, required | Proposal headline |
summary | String | Optional | Description of the proposed approach |
price | Number | ≥ 0, required | Total quoted amount |
startDate | Date | Future date, required | Proposed project start |
endDate | Date | Future date, required | Proposed project end |
milestones | Array | — | Phased deliverables (see Delivery) |
remarks | String | Max 1000 chars | Internal notes or caveats |
One expert can only submit one proposal per lead — enforced by a unique index on (tenantId, lead, createdBy). Proposals begin as isDraft = true and are only visible to the customer once submitted.
Proposal Status Workflow
| Status | Meaning |
|---|---|
proposal_pending | Draft — expert is still preparing the bid |
proposal_submitted | Expert has submitted; customer can review |
proposal_accepted | Customer has selected this proposal |
proposal_rejected | Customer has rejected this proposal |
When a proposal is accepted, all other proposals on the same lead are automatically rejected.
What Happens Next
Accepting a proposal triggers the Quote & Acceptance stage: a quote is generated from the proposal price with the platform service fee applied, and the lead transitions to an active project.