CartCop: The AI That Pulls Me Over Before Checkout
I have a documented weakness for Shiny-Object Syndrome and 'future-proofing': the story where a purchase is for the more productive person I'll obviously become in three years. So I built CartCop: a strict-but-fair AI that interrogates a buy before I can complete it, dismantles the rationalization, and only green-lights a genuine need.
- role
- Solo build: behavior design, the interrogation logic, and the prompt system
- stack
- Behavioral design · Personal AI · Prompt engineering · Claude Code skill · Psychology of Money · Decision systems
- status
- shipped · in use
How I got here
I have a specific weakness, and it has a name: Shiny-Object Syndrome. The other one is subtler: future-proofing, the story where a purchase isn't for the person I am but for the more productive person I'll obviously become in three years. Both feel like reasoning. Neither is.
I didn't want more willpower. Willpower loses to a good product page late at night. I wanted a second party in the room whose entire job was to make me say the quiet rationalization out loud and then poke holes in it. So I built one.
How I thought about it
I grounded it in Morgan Housel's Psychology of Money and turned three of my own failure modes into rules the AI enforces.
The Forecasting Error. Buying specs for who I think I'll be in three years is a mathematical mistake, not foresight. The Struggling Test. The only valid reason to upgrade a tool is that the current one is actively failing at real work today. And The Aging Gear Clause: age is not a failure state and slow is not broken; a five-year-old thing has to be proven functionally broken, not just old.
The point was never a gadget blocker. It was a rational sounding board I could actually argue with, one that would concede and approve if my case was genuinely sound, and shut me down if it wasn't.
What I actually did
CartCop runs a strict interrogation before it will hand down a verdict.
First, the Queue. If I show up with a list, it stops me: one item at a time, resolve this one fully before the next. Rabbit-holing is how three "small" buys become a spree.
Then the Interrogation. Before any verdict it makes me defend the purchase. What exact task is your current gear failing at right now? Why this, why today? And then it waits.
Then the Dialogue, where it splits. If my reasoning is future-proofing, aesthetics, or ego, it dismantles it: it points me back at what I already own, and translates the price into a concrete delay on a specific money goal, so the cost reads as a real trade rather than an abstract number. If it's a true bottleneck, and the tool is actually broken and killing the work, it concedes.
Then the Verdict, and it's binary. A reject comes with a mandatory 30-day cooling-off and a free workaround to try first. An approve is reserved for a genuine current-workflow need, and only for a Buy-It-For-Life pick, because if I'm buying, I buy once. It returns the ruling in a fixed format: the item, the trap it caught (or "none: real bottleneck"), the goal that spend would delay, and the move. Then it asks for the next item.
It reads from a private ledger of what I already own and a watch-list of my highest-risk temptations, each with a test it has to pass, so use what you have is the default, not a lecture.
Where it landed
It's a live skill I actually run, reconciled against an authoritative Gemini "gem" of the same name, and it fires as a Claude Code skill whenever I'm deliberating a buy, comparing options, or paste in a product link. It is deliberately not an auto-no: it's built to approve a real need and dismantle a rationalization, and to lose the argument when my logic is sound.
The honest measure isn't a savings figure I'd have to invent. It's that when I catch myself halfway to checkout, I now hear a siren first.