An iOS drawing app where the AI coaches instead of critiques.
It remembers what it told you last time and judges whether you acted on it, so the thing being measured is your progress rather than one drawing.
- Context
- self-initiated
- Stack
- Swift
- Metal
- Cloudflare Workers
- Supabase
- What it is — an iOS drawing app whose AI coaches instead of critiques, and remembers what it told you last time.
- My role — everything: design, iOS, backend, infrastructure. One person, six months.
- Built with — Swift, Metal, Cloudflare Workers, Supabase.
- Outcome — shipped to TestFlight and approved for external testing, running with a beta group of working artists.
The premise
Most AI feedback on creative work is stateless. You show it a drawing, it tells you what's wrong, and next time you show it a drawing it has no idea it's ever met you. Every session starts over with a very confident stranger.
DrawEvolve remembers. A second critique on the same piece references the first one and evaluates whether you acted on it. What gets measured is your progress across drawings.
The app has an Artist Bill of Rights, and nothing in it generates art on your behalf. It coaches. You draw.

The critique itself. A Quick Take, then what is working, then one focus area, in that order, because an artist told what is wrong first stops reading.

Eve picks the critique up in conversation. Asked how to act on it, she answers with a pass to run on a new layer rather than restating the note in different words.

The canvas travels with the question. Asked for the one thing worth fixing, the answer is one thing. A critique that returns five priorities has returned none.

Composition, as a measurement. An on-device vision model estimates where attention actually lands, and the artist marks where they meant it to.

The estimate drawn back onto the drawing. The distance between where the eye goes and where it was sent is the whole critique, drawn instead of written.
The constraint
I was the entire team. Design, iOS, backend, infrastructure, and every decision in between. That shapes everything downstream: I couldn't afford architecture that required a team to maintain, and I couldn't afford a cost structure that could bankrupt me while I slept.
I also started this not knowing Swift. I learned it in about two weeks and started building.
What I built
A drawing engine, from scratch. Metal tile-based rendering, a wet-ink stroke system, brush suite, layers, selection tools, symmetry, full Apple Pencil support, and portrait/landscape handling.
The renderer went through a multi-phase architectural migration to tiles.
An iterative critique system. Four distinct AI voice presets, and "Eve," a conversational coaching layer that maintains rolling summaries of your conversation history so context survives across sessions without unbounded token growth. Critiques reference prior critiques. A My Evolution dashboard turns critique history into a visible progress record.
Infrastructure that assumes the worst. Every model call routes through a Cloudflare Worker proxy that verifies JWTs, enforces App Attest, applies tiered rate limits, and hard-caps daily spend. Supabase with row-level security behind it. Sign in with Apple and Google via authorization code flow with PKCE.
None of that is glamorous and it is why the product exists. A solo developer shipping an LLM-backed app without a spend ceiling is one abusive script away from a five-figure bill. The ceiling went in before the app went out.
The tradeoff I made
I shipped the tile-based renderer before retrofitting wet-ink onto it. The stroke system is running on architecture it was not written for until I go back and finish that work. I chose the visible progress over the clean sequence, because a renderer nobody can use is a renderer nobody has tested.
It is a real debt. It is named here and it is scheduled.
How I worked
I ran parallel Claude Code agents across git worktrees for most of the build. That was the only way one person covers that much surface area in six months. Each agent held a bounded scope on its own branch, and I did integration and review.
Decomposing work so the agents don't collide is a real skill. It is most of why six months was enough.
Outcome
Shipped to TestFlight. Three builds; the third passed Beta App Review and was approved for external testing.
Running with a beta group of working artists, including a tattoo artist who's been the heaviest user of the critique system.

