Team

2 Designers, 1 PM, 1 Engineer

Role

Product Designer

Timeline

March 2025 - October 2025

A rustic cafe interior with wooden tables, hanging plants, and wicker pendant lights

HUNGRY CAFE

Project

A Mobile-First Pickup Experience for Local Cafes

esigned an end-to-end cafe commerce experience for Hungry Cafe that connected local discovery, bulk pricing, ordering, and QR-verified pickup while ensuring a seamless journey for customers and cafe staff.

D

Project overview

From discovering a café to picking up an order.

Hungry Cafe is a mobile-first commerce platform that helps customers discover nearby cafés, browse menus, and place pickup orders using quantity-based Bulk Buy savings or prepaid BulkPass redemptions.

Unlike traditional ordering experiences, the journey doesn't end at checkout. Every customer action connects to a café-side fulfillment workflow, from order acceptance and preparation to QR-verified pickup.

010203

My contribution

As a Product Designer, I designed the end-to-end customer experience across location discovery, menu exploration, purchasing, checkout, order tracking, and pickup. I also worked on café-side fulfillment workflows, defining shared order states, recovery patterns, and reusable components to keep both experiences consistent.

The system

One order, two sides

A pickup order doesn't end at checkout. It ends at a counter.

CustomerPlacedAcceptedPreparingReadyCaféReceivedAcceptedPreparingMarked readyQRVERIFIEDFulfilled

The customer app and café dashboard are two sides of the same order. I designed both around a shared lifecycle, defining how each transition — from acceptance and preparation to pickup verification — should appear on each side. An order marked “Ready” by café staff needed to mean exactly the same thing to the customer waiting to collect it.

Design exploration

What the requirements didn't decide

The PRDs defined the capabilities. The experience still needed to be designed.

I translated two PRDs into connected customer and café journeys, identifying decisions the requirements left unresolved. Established commerce patterns provided useful reference points, but location recovery, quantity-based savings, prepaid passes and verified pickup required solutions tailored to BulkMagic's business rules.

DoorDash
Convention I kept

Location-based discovery, searchable café listings and familiar store cards that make nearby options easy to compare.

What I did differently

Added manual ZIP entry and recovery from denied permissions, while keeping store selection explicit throughout the ordering journey.

Starbucks
Convention I kept

Familiar menu customization, cart review, order progress and pickup interactions.

What I did differently

Designed customer and café experiences around shared order states, connecting checkout, preparation and QR-verified handoff.

Too Good To Go
Convention I kept

Savings-led discovery, visible value and clear pickup expectations before purchase.

What I did differently

Distinguished quantity-based Bulk Buy savings from prepaid BulkPass redemptions, making eligibility and restrictions visible before commitment.

01

Discovery needed a fallback

Location makes nearby results faster, but a denied permission cannot become a dead end. The experience needed a manual path that still resolves to a location and returns the same ranked cafés.

02

Savings had to appear before checkout

Bulk pricing changes how many items someone adds. A rule that only surfaces as a discount line at payment arrives after the decision it was meant to inform.

03

Order status connects both sides

Customer tracking and café fulfillment are one lifecycle. Without shared states, “ready” means two different things on two screens in the same shop.

04

Three value models were being treated as one

Bulk Buy, BulkPass and Wallet appeared in the requirements without a customer mental model. Left undefined, they would have become three badges that all look like discounts.

Principles I designed against

01

Location accelerates discovery. It never gates it.

A denied permission shouldn't prevent a customer from finding nearby cafés.

02

Show the saving before the commitment.

Pricing rules should inform purchasing decisions, not surprise customers at payment.

03

One order lifecycle, both sides of the counter.

Customer and café interfaces should reflect consistent order states.

04

Different value models need different mental models.

Bulk Buy, BulkPass and Wallet must remain conceptually distinct.

Challenge 01

Location improves discovery. It can't control access.

Tap path · Enter manually · type a ZIP · Continue

What the clip shows

  1. 01
    Declining location isn't a dead endThe permission screen offers a manual path with the same weight as Allow.
  2. 02
    ZIP, address or landmarkWhatever the customer types resolves to a single point on the map.
  3. 03
    Same nearby ranking after resolutionCafés are ranked from that point, and the location is confirmed inline above the results.

Whether customers share their location or enter it manually, both paths lead to the same discovery experience. The input resolves to geographic coordinates, so nearby cafés are ranked by actual distance rather than ZIP code boundaries. A map-and-list layout keeps location context visible while making distance, preparation time and ratings easy to compare.

Constraint → decision

A ZIP is an input, never the filter.

Stores are ranked by latitude and longitude, not postal code. A café two blocks away can sit in the next ZIP, so a typed ZIP resolves to a point and cafés are ranked by true distance from it. Filtering by ZIP would have hidden the closest options at exactly the moment the customer had already said no to location.

Challenge 02

Making the saving legible while the order is being built

Bulk Buy isn't just a discount applied at checkout. It's a pricing rule that influences how customers build their orders.

Tap path · Breakfast Burrito · + · Add 7 · Checkout · Pay · Track

4 of 7 · latte already in the bag
Explain

State the rule before quantity changes

The café states it once — any 7+ items take $5 off the bag — and every eligible item carries the same “Bulk eligible” badge, so no single item looks like it has its own discount.

7+ items · $5 off the bag
Confirm

Confirm it as a state change

When the bag qualifies, the stepper turns mint and the cart says so. Qualification is announced, not silently applied.

Saved $5.00 at payment
Carry

Keep it visible through payment

The saving follows the order into checkout and the pay button, so the reason for the price never disappears at the moment of commitment.

Next

The QR comes once the order is ready

Payment confirms the purchase, but pickup begins only when the café marks the order ready. The QR code becomes available at that moment, so customers don't arrive with a pickup code before their order is prepared. The same transition appears on the café dashboard.

Bundles such as the Office Coffee Pack carry their own neutral “Bundle” badge. A pre-priced combo is a different promise from a quantity rule, and it should never be mistaken for one.

Cross-cutting decision

When the system changes, explain and recover.

The most difficult interactions weren't always on the happy path. They happened when customers had already invested time building an order and something changed underneath it.

I designed recovery patterns that explained what changed, preserved progress where possible, and made the next action clear without forcing customers to restart.

06b · Cross-café cart conflict

Switching cafés

A cart holds one café. Rather than clearing it silently, the sheet names the current café, shows exactly what will be lost, and waits for a deliberate confirmation.

07b · Item unavailable, eligibility recalculating

Losing an item mid-checkout

One removal can also break Bulk Buy eligibility. The interface recalculates in place, explains the change to the saving, and offers replacements instead of restarting checkout.

Edge cases from the MVP requirements

Edge caseSeverityWhat changes underneathInterface behavior
Buyer adds items from a second caféHighSingle-cart rule invalidates the existing bagName the current café, show what's lost, require explicit confirmation
Item goes out of stock after it's in the cartCriticalLine item, Bulk Buy eligibility and totalRecalculate in place, explain the change to savings, surface replacements
Card fails after the order is placedRule definedCriticalOrder exists; payment does notRetry inside the order, with a stated timeout before cancellation
Seller forgets to mark the order readyRule definedHighCustomer-facing status stalls mid-preparationReminder to the café, and a status that ages visibly rather than sitting still
Buyer delays or doesn't show for pickupRule definedMediumPrepared order with no handoffAuto-expiry on a stated window, with the refund rule shown before it applies

The illustrated scenarios show the interaction patterns developed in detail. Rows marked “Rule defined” were documented as intended behaviors from the MVP requirements and would require further validation during implementation.

Challenge 03 · Connected fulfillment

One order, two interfaces, one point of truth

Customer

10 · Ready for pickup
ReadyOrder code presented at the counter
Verified

Café

13 · Scan confirmed
FulfilledSame order, moved by the same event

QR verification was already defined in the requirements. My design decision was to build the experience around a shared order lifecycle, defining how each state should appear to customers and café staff. When staff confirm pickup, the order moves to Fulfilled on both sides, closing the loop between digital checkout and physical handoff.

Challenge 03 · The café side

The café runs on the same states

The PRD introduced Ramesh Patel, a café-owner persona managing two locations and eight staff members. His priorities were straightforward: shorter queues, simpler order management, and a dashboard that required minimal learning.

Using this project-defined persona as a reference, I designed a task-focused seller experience with clear order statuses, one primary action per stage, and consistent terminology across the customer and café interfaces.

Tap path · Accept order · Mark ready for pickup · Confirm handover

  1. Tap 01Accept order

    The customer's order moves to Preparing.

  2. Tap 02Mark ready for pickup

    The customer's phone shows Ready and the QR.

  3. Tap 03Confirm handover

    The scan resolves both sides of the order at once.

  4. ResultFulfilled

    Prep time logged against the 7-minute target.

12 · Order detail, payment panel
Both sides of the money

A customer's saving shouldn't read as the café's loss.

On the seller's order detail, the Bulk Buy line is labeled as funded by the platform, not deducted from the café's payout. The same discount that motivates a customer would otherwise look like lost revenue to the owner approving the order.

Challenge 04

Three ways to hold value, kept distinct

Each one answers a different question, so each one needed a different model.

Bulk Buy
Save now

Quantity-based savings that apply when an order reaches an eligible threshold. The benefit belongs to the current purchase.

BulkPass
Prepay, redeem later

A prepaid package that customers can redeem for eligible items across participating cafés, subject to usage limits.

Wallet
Stored value

A balance-based payment model, distinct from discounts and prepaid redemptions. Defined conceptually but excluded from the v1 interface scope.

BulkPass introduced a different interaction challenge: customers needed to understand what they had purchased, where they could redeem it, and how much remained available. Rather than introducing a separate redemption journey, I integrated BulkPass into the existing checkout and made eligibility, remaining uses and daily limits visible before an action was blocked.

Tap path · Coffee Pass · Buy · View my passes

Discover, buy, trackEntered from Discover, not a fourth tab. The pass is a defined set of drinks, priced up front, and My BulkPasses shows what's left and today's limit.

Checkout with the Coffee Pass in use and the daily limit sheet offering Pay $5.25 instead or Remove item

Redeem, within limitsRedeemed in the same checkout, nothing forks. When today's limit is hit, the sheet explains it and offers a way forward — pay for this one or remove it.

Same model, seller side

Two settings, never one.

Cafés configure BulkPass eligibility and the Bulk Buy rule separately in the product editor, so an owner never edits one thinking they're changing the other.

System

One visual language, two audiences

The original file had drifted: four ways to label a bulk discount, nine near-identical greys, three font families and conflicting prices for the same product. I collapsed the drift into tokens and components before designing anything new.

15 · Design system, before → after

Shared terminology

Preparing, Ready, Picked up — the customer's tracker and the café's queue use the same words for the same moment.

Semantic states

Mint means confirmed: Bulk Buy unlocked, a selected card, a finished prep item. Yellow is kept for what needs a decision — Awaiting accept, a customer note.

Separate value badges

Bulk eligible, BulkPass and Bundle are three components, because a quantity rule, a prepaid pass and a fixed combo are three different promises.

Responsive foundations

A sheet on mobile becomes a panel on web. The rule, the numbers and the default action never change.

Where web had more room, it went to content that does a job — same-café suggestions in the cart, pickup details at checkout, notification and help options while the order is made. Never items from other cafés: that would break the single-store rule the cart is built on.

Mobile cart with 8 items, Bulk Buy applied and $5 savingWeb cart with the same items and saving, order summary panel and same-café suggestions

CartSame items, same mint stepper, same $5 saving and total. Web's extra room goes to an order summary panel and suggestions from the same café — never another one.

Mobile pickup screen with the QR code and hold timeWeb pickup screen with the same QR, plus timeline, pickup instructions and map

PickupThe QR, order number and hold time are identical. Web adds the timeline, where to find the bag and a map.

The goal wasn't to make both interfaces identical. It was to preserve the same product rules, terminology and feedback across devices while adapting each layout to the tasks and context of its users.

Success criteria

How the team defined success

The design work defined connected customer and café workflows, interaction patterns for purchasing and fulfillment, and reusable components across mobile and web. The criteria below were targets set for the MVP, not measured post-launch outcomes — a framework for evaluating adoption, purchasing behavior, checkout reliability and consistency between the customer and café experiences.

Targets defined — not post-launch outcomes
>70%
Target

BOPIS adoption rate

Would pickup ordering become a habit rather than a one-time trial?Designed for itA no-queue QR pickup, released only when the order is ready (10).

>15%
Target

BulkPass conversion

Could the prepay model be understood well enough to be bought?Designed for itThe pass is priced up front and bought from Discover, not a fourth tab (16–18).

<20%
Guardrail

Checkout abandonment

Could the flow absorb disruption without losing the order?Designed for itAn unavailable item recalculates in place instead of restarting checkout (07b).

<1%
Guardrail

Order status sync failure

Would both views stay true to the same order through fulfillment?Designed for itOne status model shared by the customer's tracker and the café's queue (09 ↔ 12).

The MVP also tracked prep time, QR confirmation rate, redemptions per user and cross-café pass usage. I put the under-7-minute prep target where staff see it — on the handover itself — rather than leaving it for a weekly report.

Seller handover banner: #BM-4471 handed over, prep time 6m 12s under the 7-minute target

14 · The prep target, on the handover itself

Reflection

03

Design the model before the screen.

Hungry Cafe reinforced that complex commerce experiences are built on connected systems, not isolated screens. Location, pricing, inventory and fulfillment may appear as separate interactions, but each affects the same customer promise.

The biggest lesson was to clarify business rules and shared states before committing to interface solutions. That helped me design interactions that communicated changes clearly, preserved customer progress, and supported both sides of the ordering experience.

If I were extending the project, I'd prioritize validating customers' understanding of BulkPass, testing recovery from checkout disruptions, and evaluating how efficiently café staff can manage orders during peak hours.

Clarify the modelMake state visiblePreserve progress