David Rowell
CartPause — mindful shopping across iPhone, Watch, and Mac
Case Study

CartPause — Mindful Shopping Across Every Device

0-to-1 product I designed, built, and shipped solo across iPhone, Apple Watch, and Mac, from first sketch to the App Store in about two months.

COMPANY
CartPause
ROLE
Founder
EXPERTISE
Product · iOS · AI · Backend
TEAM SIZE
1

01 PROBLEM

Modern e-commerce is designed for instant gratification. One-click buying, targeted ads, and endless scrolling have made it easier than ever to spend money without thinking. The result? Buyer's remorse, financial stress, and closets full of things we don't need.

The impact goes beyond your wallet. Impulse purchases generate mountains of cardboard, plastic packaging, and bubble wrap, much of which ends up in landfills. Products that are returned or discarded after a few uses only add to the waste. Every unnecessary purchase has an environmental cost, from manufacturing and shipping to eventual disposal.

56% of purchases regretted
$3,650 a year on impulse buys

Most products give you a single screen between desire and purchase, wishlists pile up unread, and the retailer's algorithm immediately recommends more of the same. People want a way to pause on something they're tempted by, without losing track of it and without being marketed back to.

I knew there had to be a better way.

02 APPROACH

The pitch is simple: share anything you're tempted to buy, set a timer, and when it expires the app asks one question, “want this in your life?”, before you decide to buy, save for later, or skip. Saved-so-far totals reinforce the saving habit.

Share from any store, straight from the system share sheet.
Share from any store, straight from the system share sheet.
Set a 72, 48, or 24-hour pause, with a note on why.
Set a 72, 48, or 24-hour pause, with a note on why.
When the timer ends, one warm question and three honest choices.
When the timer ends, one warm question and three honest choices.

The core design move

Every other shopping app frames the moment as buy now or leave. CartPause adds a third option, pause, and the whole app organizes around that verb. Your cart stops being a list of things you'll buy and becomes a list of things you're deciding on, which quietly changes the emotional register of the experience. When a pause ends, the choice comes down to three honest options: I don't need this, Someday, or I'll buy it.

Capture from anywhere

For CartPause to fit into real life, it had to accept items from wherever you find them, whether that's a browser, a retailer's app, a social feed, or a link from a friend. Early versions felt slow because the app waited to fetch the product details before letting you go, so I made the share optimistic: it saves the item instantly and fills in the name, price, and image in the background. The share sheet now closes in under a second.

Reliable product extraction

The hardest part wasn't the interface, it was reliably pulling a product's name, price, and image from any store on the internet. I built a layered system that tries the cheapest, most accurate method first and falls back gracefully when a site resists: reading the structured data well-built sites already publish, then tailored parsers for the major retailers, then letting AI read the page, and finally having AI interpret a screenshot when a site blocks everything else. Each step only runs when the one before it comes up short, so most shares resolve instantly and the heavier methods are saved for the stubborn cases.

AI-guided reflection

When a pause expires, the app asks one short, warm question above the three buttons, written fresh for that item. It's shaped by the product, its category, your own note (“already have two black jackets,” “treat for finishing the marathon”), and your recent decisions, so it feels personal rather than generic. I tuned it hard for tone: every question has to be naturally answerable by all three choices, which rules out the awkward, open-ended prompts most AI features fall into.

Works everywhere, in sync

CartPause runs on iPhone, Apple Watch, and Mac, all under one account and kept in near-real-time sync. Pause something on your phone and it appears on your watch within a few seconds, with sensible rules for what happens when two devices change the same item offline. The backend is built to hold as little about you as possible.

Privacy as a feature

CartPause sits between you and your impulses, which is the opposite of what a tracking-funded shopping app does. Selling that moment to advertisers would break the product's reason for existing, so I designed against it from the start: sign-in is handled by Apple, there are no third-party trackers in the app, no retailer is ever told what you paused on, and deleting your account wipes your data from every device and the server.

Simplicity

The best tools are the simplest. CartPause does one thing exceptionally well: it helps you pause before you buy, and every decision in the product defends that focus.

No judgment

I never set out to tell people what to buy. CartPause simply creates space to make a decision that aligns with your own values and goals.

Free to try

CartPause is free to download, with up to five active pauses at a time, no trial timer and no credit card. Pro unlocks unlimited pauses, the Someday wishlist, full savings analytics, and a home-screen widget for $1.99 a month or $19.99 a year.

Design system

I wanted CartPause to feel editorial and quiet rather than like a typical retail app: warm cream paper, a single teal accent, a refined serif for the human moments paired with a clean sans, and generous whitespace around one decisive button. Most screens speak in short serif phrases like “Your pause is up” or “Shop freely. Decide wisely.” One adaptive design system drives every surface, so the same card feels at home on iPhone, Watch, Mac, and the share sheet.

03 OUTCOME

CartPause shipped to the App Store as version 2.8, with Mac Catalyst and Apple Watch versions all live. The marketing site at cartpause.com runs a small AEO-optimized blog targeting "how to stop impulse shopping," "the 72-hour rule," and "best impulse buying apps" queries — Google has it indexed and Bing's AI Overviews now cite it as a source.

More importantly, it's the app I now use every day. The first version of any product I build, I want to be the one that earns my own attention — that's the test.

"Shop freely. Decide wisely."

What I Learned

AI SHOULD FEEL LIKE A FRIEND, NOT A PRODUCT

Every prompt I write enforces warmth, present tense, no coach-speak, no meditation-app preachiness. The model's default voice is therapy-blog generic — the prompt has to actively shape it into a specific person. Reading questions aloud was the only quality bar that held up.

EXTRACTION IS A TIERED INVESTMENT

The first version tried scrape.do for everything. Costs got out of hand fast. The six-layer cascade exists because most sites can be handled for free or near-free, and only a small percentage need the $0.02-per-call vision treatment. Per-domain routing decisions live in remote config so I can flip them without a redeploy.

OPTIMISTIC EVERYTHING

Sub-second response time is what separated CartPause from "yet another shopping helper." Every interaction commits locally first and reconciles with the server in the background. The user sees "Paused. Good call." before any network request has finished.