Case study · App · Built with Claude Code

PPP Studio

An AI teammate that does my busywork and asks me before anything public or permanent.

Role: I designed, directed and reviewed; Claude Code wrote the code.

Today
PPP Studio Today screen on my iPhone on Oct 7: four real numbers and the Trust tracker
Post this now?
The Post this to @pixelpaperpaint now? sheet with Cancel and Post
Ready to post
Ready to post: the Pumpkin painting night carousel marked Ready now

ResultLive on my phone since Oct 2. Nothing posts until I tap Post and confirm.

RoleProduct designer + product ownerTimelineSep 29 to Oct 4, 2026, refined through Oct 7StatusLive, private to mePlatformiPhone, from the home screenToolsClaude Code, Claude API, Next.js, Vercel

My rule

If other people will see it, or I can’t undo it, ask me. Everything else, do it and show me after.

My calls

  • The ask-first rule
  • Five tabs: Today, Ask, Ready, New, More
  • Ready to post, with Skip and Undo
  • The Trust tracker, where asking less is earned
  • The look: my own studio brand, so the app matches my website
01The problem

None of them talk to each other

I run Pixel Paper Paint by myself: product and visual design, wedding conceptualization and paint nights. My week is split across my website, Google Analytics, Search Console, Google Ads, Instagram, Facebook and email. None of them talk to each other, and every post starts from a blank caption.

Who it’s for

The user was me. But I’m not unusual. A lot of people running small businesses have no tech team, a shared laptop and real accounts on the line, and they’re starting to hand parts of their work to AI.

02What I built

One app on my phone that does the busywork and leaves the public and permanent calls to me

Tab

Today

Website visitors, Google searches and Instagram reach in one place. Every number has a small “i” that explains it in plain words.

Tab

Ask Claude

Questions about my own numbers, answered from my real data.

Tab

New

Pick a post or a reel. Claude drafts captions in my voice and follows how Instagram and LinkedIn say they rank posts.

Tab

Ready to post

Every morning, three drafts from my brief wait here. Designed carousels turn into real images in my brand. Nothing posts until I tap Post and confirm.

Every morning

Morning brief

A scheduled agent reads my numbers and public trend sources, writes three post ideas, saves them as drafts and emails me.

On Today

Trust tracker

Counts every time the app asks me before acting, and what I did with it.

Swipe for more screens →

Today on my iPhone on Oct 7: four real numbers and the Trust tracker with the new rule
Today · Oct 7

Live status line, four real numbers and the Trust tracker.

Ask Claude: I asked what I should post this week, and Claude answered from my real numbers, starting with go back to weddings
Ask Claude · Oct 6

I asked what to post this week. It answered from my real numbers.

The New sheet: What are you making? Post, a photo or a carousel of up to 10, or Reel, a short video with text and a song
New · Oct 6

One New tab: pick a post or a reel.

New post: the caption Claude drafted in my voice, with hashtags and a best time to post
New post · Oct 6

A caption Claude drafted in my voice, with hashtags and a best time.

03Building with Claude Code

Honestly the code was the easy part

On Sep 29 I had a clickable prototype that Claude built from my description. We’d planned to start building after a webinar on Oct 6. On Oct 2 at 12:12 AM I wrote “why after oct 6 let’s start now”, and around 1 AM the app was live with my real numbers. Honestly the code was the easy part. Most of that hour went to accounts, permissions and copy-paste.

What I asked for on Sep 29

“i want to ask if you can create an app where all our tracking in real time is possible. Like my website, instagram account, ads manager etc. It is easier when everything is in one place. And it’ll be great if i can interact with claude there as well. So imagine if i were to create a post or reel for my business account i can upload the images or videos directly in the app and then you can create it for me so it’s very convenient.”

Claude Code

Wrote the code, set up the services, deployed it, tested sign-in and Ask Claude on the live site

Me

Product decisions, design reviews on my phone, and anything with my passwords, money, terms or account access

Calls I made

DecisionWhy
Confirm before every postOther people will see it.
Ready to post, with Skip and UndoDrafts wait for me every morning, and a skip can be taken back.
Asking less is earned: 9 of my last 10One small fix or a “not now” shouldn’t wipe out everything. It replaced 20 in a row, where any edit or cancel started over.
One New tab for posts and reelsFewer tabs, same reach. It replaced separate New post and New reel tabs.
Captions in my voiceMy first drafts sounded “AI ish”.
View-only Google, and my personal Instagram left outThe app only gets what it needs.
04Design craft

Every round started with something I noticed

The look is my own studio brand. I’m a visual designer and the app was for me first, so it matches my website. The day it went live, I went through it on my phone like any client app.

What I noticed

Numbers were unclear, then hard to read

maybe we put a small “i” on top to tell people what exactly that ishas a very big circle and it seems it’s not alignedthe numbers in the font are still not readable

A small, centered “i” on every number, explained in plain words, and every number in the clean body font

What I noticed

Too many tabs

it could be named “new” and when you click on it you have the option to select a post or a reel

Five tabs: Today, Ask, Ready, New, More

What I noticed

Captions sounded generic

make it sound like i wrote it

Voice rules every caption follows

How I review

I also changed how I review. Instead of mockups as separate links, every new design now shows up as a “Design to review” card inside the app, and nothing goes live until I approve it.

How the Trust tracker decides. Posting as drafted or with a small edit counts as a yes. Not now or closing the sheet doesn’t count either way. Skipping or rewriting a draft counts against. Later, undoing a post it made on its own will start the count over. At 9 of my last 10, it suggests asking less, and nothing changes unless I say yes. Money and deleting never earn their way down.

My map of the trust rule I redesigned on Oct 7.

Before and after

The prototype as it was on Oct 1, and the refined version on Oct 2, at iPhone size, with made-up example numbers. The status line became one quiet line, and the typing box went full width.

Before
Today before: a boxed banner, numbers stacked one per row, no explainers
After
Today after: header, one quiet status line, a 2 by 2 grid with an i on every number
Before
Ask Claude before: a small typing box with Send and Stop squeezed beside it
After
Ask Claude after: a full-width typing box with Send underneath
05Safety by design

What it asks me first, and what it just does

My rule

If other people will see it, or I can’t undo it, ask me. Everything else, do it and show me after.

Why I made the rule

It spoke for me

I asked Claude to share my LinkedIn comment as a note on my business Facebook Page. Notes cap at 60 characters, so it rewrote my words and posted them in my name before I’d read them.

It kept clicking

Setting up Google Ads, I typed “WHAT IS THIS WINDOW THAT IS OPEN?” Claude kept clicking and saved my goal before it answered.

Almost permanent

I asked it to deactivate an old Facebook Page. It landed on my personal profile’s deactivation screen by mistake, then stopped and backed out.

All three happened in my Claude chats while it helped run my business that week, not inside PPP Studio.

How PPP Studio follows it

Posting to InstagramShows exactly what will post and asks me to confirm, every time.
Drafts from the morning briefWait in Ready to post. Skip has an Undo.
Drafts that need my photosWait under “Needs something” until I add my own photos or clips.
What it does on its ownThe morning brief writes three drafts every day without asking, then emails me what it made. That’s the “show me after” half of my rule.
A new designShows up as a preview inside the app before anything goes live.
MoneyThe app never spends. Publishing an ad campaign stays with me.
Earning more trustThe Trust tracker counts what I do with each ask. When 9 of my last 10 posts go out as drafted or with small edits, it only suggests asking less. “Not now” doesn’t count against it. Nothing changes unless I say so.
The full Post this to @pixelpaperpaint now? sheet: the images and caption that will post, with Cancel and Post
Post this now? · the whole sheet

The exact images and caption, then Cancel or Post.

From brief to post

Swipe for the next step →

The morning brief email in my inbox with today's best idea
1 · Brief · Oct 4

The morning brief lands in my inbox with the day’s best idea.

Ready to post: the Pumpkin painting night carousel marked Ready now
2 · Ready to post · Oct 5

Drafts wait for me. Skip has an Undo.

The Post this to @pixelpaperpaint now? sheet with Cancel and Post
3 · Post this now? · Oct 5

I tap Post, then confirm.

Trust tracker on Oct 7: 3 asks this week, 1 posted with no or small edits, 0 drafts skipped. 1 of 1 so far went out as drafted or with small edits
4 · Trust tracker · Oct 7

1 of 1 so far went out as drafted or with small edits.

Privacy

  • Only my email can sign in.
  • My Instagram login is encrypted on the server, not stored in the browser.
  • The morning brief uses my own numbers and public pages only. No feed scraping, and nothing that gets around sites that block AI.
  • The brief is set up to email only me.
06What I’d change in the platform

Where the platform asked me for things I couldn’t see or couldn’t do

Here’s what I’d design differently.

API key · the browser inside the Claude app

What happenedThe browser inside the Claude app wouldn’t let me copy my API key out, so the first key I saved was a 21-character cut-off preview. The real one is over 100.
What I’d changeA check that warns when a pasted key looks too short, and copying that works inside the Claude app. When a key is rejected, my own app now says to paste the full key.

Robot key file · Claude’s setup plan

What happenedClaude’s plan had me make a robot key file, and Google blocked it because of a default security rule on my account.
What I’d changeWhen a safe default blocks a path, point to the safe alternative right there. We switched to Sign in with Google.

Always allow · my scheduled brief

What happenedMy scheduled brief stopped to ask permission in a separate chat I had never opened. I clicked “Always allow” without knowing what “always” covered. It turned out to cover one website, so every morning the brief found a new site and sat waiting hours for my yes.
What I’d changeAsk where I already am, say in plain words what “always” includes, and say what happens if I don’t answer.

Scheduled runs · what they need

What happenedWhen Claude set up my morning brief, it said that if the Claude desktop app was closed, the brief would run once I opened it. When I asked again, the rule had changed: the Claude desktop app open and my computer awake at 8:11, or that morning gets skipped. It also told me I’d get a phone notification, but scheduled runs can’t send one.
What I’d changeSay up front what a scheduled run needs and where it can reach me, and keep it the same.

Claude Docs · the cursor

What happenedIn Claude Docs, the cursor that shows where Claude is working is white, and I could barely spot it while it edited my case study. If I can’t see where the AI is working, I can’t keep an eye on what it’s changing.
What I’d changeA high-contrast cursor (at least 3:1 against the page, the accessibility minimum for interface elements), labeled with Claude’s name, in a color I can choose.
Ask Claude showing the message: Your Claude API key isn’t valid. Paste the full key, about 100 characters, starting sk-ant-, into the settings again
The fix in my own app

When a key is rejected, it says what to do

“Your Claude API key isn’t valid. Paste the full key (about 100 characters, starting sk-ant-) into the settings again.” Captured by simulating a rejected key, so my real key stayed untouched.

One thing the platform got right: it let me set a monthly spend limit on my API key before the app made a single call.

07 · Where it is now

It’s live and I use it

Trust tracker, since Oct 4
3 asks

1 posted without changes. The other 2, I closed the confirm sheet without choosing, which now counts as “not now”. So far 1 of 1 went out as drafted or with small edits.

First live version
About an hour

Oct 2, 12:12 to 1:09 AM. Instagram posting, Ready to post and the Trust tracker came over the next two days.

Instagram when I connected it
69 followers

5 posts (Oct 2)

Website since tracking began
136 visitors

742 page views (Sep 29 to Oct 8)

Real numbers only, as of Oct 8.

→What’s next

Next on the list