Neighborhood Group Purchase
Design a collective order flow that unlocks a better unit price when enough local buyers commit.
The brief
Understand the problem
Background
Bulk prices can help households save, but group orders introduce thresholds, deadlines, payment authorization, cancellations, and distribution work. Participants need to understand exactly when a commitment becomes a charge.
User context
Omar wants to join neighbors in ordering refillable cleaning supplies if ten bundles are committed by Friday.
Product problem
Buyers need transparent progress and cancellation rules while the organizer needs a manageable handoff process without handling other people's card details.
Objective
Design campaign detail, conditional commitment, threshold result, and local pickup coordination.
What to design
Define the experience
Required experience
- Review unit pricing and minimum quantity
- Commit to a quantity with conditional payment
- Track progress toward the deadline
- Collect the order or receive an automatic release
Screens and states
- Group order detail
- Commitment checkout
- Threshold status
- Pickup coordination
Core user flow
Follow the critical path
- 01
Omar checks price tiers and the pickup organizer
- 02
He authorizes payment only if the minimum is reached
- 03
The campaign succeeds before Friday
- 04
He receives a coded pickup window and confirms collection
Product rules
Requirements and constraints
Requirements
- Explain authorization, charge, cancellation, and refund timing
- Show quantities and price tiers without manipulative urgency
- Keep participant payment details hidden from the organizer
- Support split pickup windows and unclaimed orders
Constraints
- The order cannot charge before stated conditions are met
- Quantity changes must recalculate the total
- Organizer responsibilities must be accepted before launch
Reality check
States worth considering
Finish line
What to deliver
- Four responsive screens with both successful and failed threshold outcomes
Optional direction
Visual resources
Use these as a starting constraint if you want one. They are not part of the required solution.