Schedule a Recurring Gift Delivery
Design a gift subscription that helps someone choose occasions, recipients, budget rules, and approval before each delivery.
The brief
Understand the problem
Background
Recurring gifts can reduce forgotten occasions, but automated selection risks sending the wrong item, revealing a price, or delivering when a recipient is away.
User context
Tessa wants flowers sent to her grandmother on the first Friday of each month, with a chance to approve the selection three days beforehand.
Product problem
Automation should save effort without removing control over product, message, timing, substitutions, and payment.
Objective
Create setup, pre-delivery approval, and exception handling for a recurring gift plan.
What to design
Define the experience
Required experience
- Recipient and occasion setup
- Budget and gift preference configuration
- Upcoming gift approval
- Delivery status and plan management
Screens and states
- Recipient setup
- Plan builder
- Upcoming gift
- Approval review
- Delivery detail
Core user flow
Follow the critical path
- 01
Tessa adds her grandmother's address and delivery preferences
- 02
She chooses a monthly schedule, budget range, and flower exclusions
- 03
She receives a preview before the next order
- 04
She changes the message and approves the gift
- 05
A delivery delay prompts her to choose a new date
Product rules
Requirements and constraints
Requirements
- Keep recipient, billing, and sender information distinct
- Explain how products are selected within a budget
- Set a clear approval cutoff and default action
- Allow delivery pauses for travel or sensitive dates
- Show substitution policy before approval
Constraints
- Seasonal inventory changes frequently
- Recipients may live in different delivery regions
- A saved payment method can expire between orders
Reality check
States worth considering
Finish line
What to deliver
- Design five mobile screens for plan setup, approval, substitution, and delayed delivery.
Optional direction
Visual resources
Use these as a starting constraint if you want one. They are not part of the required solution.