Six weeks of directions taught us one thing clearly: language models draw well enough when they author the whole illustration with named parts, and nothing cheaper beats them at taste. The product that fits that fact is narrow. Chocopie draws the welcome, empty and success moments of your app, in your colors, with motion that suits the moment, and hands you a React component.
Every row ended for a measured reason. The pattern: whenever a model had to animate art it did not draw, part ownership broke.
| When | Direction | What it proved | Why it stopped |
|---|---|---|---|
| Sep 5 | Lottie and Rive agent workbench | Typed edits, state machines and exports work | A 647-file corpus hit 70,119 unsupported fields; edits took 143 s |
| Sep 6 to 9 | Hosted native studio, vectorization, USDC wallet | Accounts, ledger, R2 and wallet checkout run end to end | Agent art was less detailed than references; one vectorization run burned 86 credits |
| Sep 10 | Recraft SVG and specialist tools | Static SVG at $0.08 imports pixel exact | Flat unnamed paths; Sol spent $0.23 failing to animate them |
| Sep 11 | Sprite states and raster puppets | Whole clips for $0.10 per 5 states | A codex-pets clone with rigid cutouts and a separate editing model |
| Sep 15 to 16 | Pie runtime, cheap models, fine-tunes | Correct, fast, under a cent | Craft stuck at 2.6 to 3.0 of 5; blind votes preferred astra 21 to 0 |
| Oct 1 to 2 | Illustration studio on Sol | Named parts, motion states, scoped edits, React export | Still local and uncommitted, on the old base |
| Oct | Production studio moves to GPT-6.1 Sol | Sol drives the live character studio with synced chat | Still a broad studio with sprites, deployed by hand from chocopie-release |
Three briefs for a sample invoicing app, Tally, sharing one house style and four brand colors. These came out of the real local studio with its validation and render review, unedited.
| Run | Cost | Time | Result |
|---|---|---|---|
| Welcome drawing | $0.044 | 58 s | accepted |
| Empty drawing | $0.036 | 49 s | accepted |
| Paid drawing | $0.042 | 60 s | accepted |
| Alternative welcome | $0.040 | 78 s | accepted |
| Change: clearer face | $0.062 | 50 s | applied, barely visible |
| Change: marigold scarf | $0.067 | 79 s | applied, scoped |
| Scarf attempts on a broken local DNS | none | 10.5 s | failed, no cost |
The spike ran fogleman/primitive on a fox drawn by gpt-image-2.5-flare for $0.014, in six shape modes at 50, 150 and 400 shapes, and built assemble, scatter and morph demos.
Reopen it only if buyers ask for a geometric reveal as a look. Then it becomes a style inside Moments, not a product.
Chocopie draws the moments of your app as illustrations that move, in your colors, ready for React.
The buyer is a frontend developer or small team shipping a real screen. Free libraries are static and generic. Recraft returns static unnamed paths. LottieFiles' AI is a toolkit inside its editor: generate a vector, then animate it, then add a state machine, on a subscription. Chocopie gives an original, matched set with motion that suits each moment, in one step, as a component that needs no key.
| Kind | Default behavior | In the host app |
|---|---|---|
| Welcome | Plays once on arrival, then rests | Mounts with the screen |
| Empty | Rests and breathes gently | Hover reacts, nothing loops loudly |
| Success | Celebrates once, then rests | Host sets state="celebrate" when the event lands |
Price the outcome, not the provider. Today one credit is $0.01 of provider spend, so customers see variable charges and the pricing page cannot say what a pack makes. A fixed 10 credits per moment fixes both.
| Provider cost per moment | Measured basis | Cost | With 20% failure overhead |
|---|---|---|---|
| Typical: one drawing and one change | $0.041 drawing, $0.064 change | $0.105 | $0.13 |
| Full allowance: two drafts and two changes | same | $0.210 | $0.25 |
| Pack | Per moment | Provider, typical to full | Card fee and infra | Contribution, typical | Contribution, full |
|---|---|---|---|---|---|
| $5, 100 credits, 10 moments | $0.50 | $0.13 to $0.25 | $0.055 | $0.32, 63% | $0.20, 39% |
| $20, 500 credits, 50 moments | $0.40 | $0.13 to $0.25 | $0.03 | $0.24, 60% | $0.12, 30% |
| Extra change, 3 credits | $0.12 to $0.15 | $0.08 | small | 36% to 49% |
Remove them from the product and archive the code. A sprite is a raster clip with its own editing model and export. As a style option it brings back a second pipeline and a second set of expectations. Both consults said the same, independently.
No. The spike shows the output is a blurrier copy of the source with no parts to edit or animate. In September, six experiments showed fine-tunes buy speed and style, never craft. Small models may later help rank drafts by real buyer picks or cheapen changes, once there are buyers.
Yes. At $2 and $10 per million tokens, a drawing is about 8% of the 50 cents a moment sells for, and every September attempt to replace the frontier author lost on taste.
Yes, so the price is 50 cents. Even at the full allowance a paid moment keeps 39% on the $5 pack, so there is no need to burn on paid use. Spend on acquisition through the two free moments instead, and let the cost-down widen the margin later.
Not on price; it is about the same per piece. On the work, theirs is an editor toolkit for animators and ours is one finished step for developers, but nobody has compared outputs on the same briefs yet. And yes, they could ship this within a quarter, since nothing here is a technical moat. That is why the test includes a blind head-to-head on 10 briefs. If developers do not clearly prefer Chocopie, stop.
Both picked the Sol studio narrowed to one app moment (astra: success, sol: empty states), fixed per-outcome credits, card checkout, cutting sprites, and no training. This plan takes their narrowing and makes the set of moments the unit, because a matched set is what a free library cannot give.
Keep the code. Build Moments on the production base in chocopie-release, which already runs GPT-6.1 Sol: port the illustration studio onto its Worker with the accounts, ledger and R2, and render reviews with the resvg WASM renderer that already runs there instead of the Node-only canvas.
| Days | Work |
|---|---|
| 1 to 3 | Moments flow on the hosted base. Fixed 20-credit holds. Card checkout with USDC in the same sheet. PostHog on. Recruit 15 to 20 developers with a real screen to ship and collect 30 briefs. |
| 4 to 7 | Run their briefs with no founder touch-ups. Record accepted moments, drafts and changes used, latency, provider cost and rescues. Run 10 of the same briefs through LottieFiles prompt to vector and Motion Copilot for a blind comparison. |
| 8 to 14 | Sell the real $5 pack. Watch installs in their projects. Count second moments. |
| Gate | Pass |
|---|---|
| Would ship it | At least 21 of 30 briefs accepted within the included drafts and changes |
| Unit cost | Provider spend over accepted moments at most $0.15; first drawing p95 under 120 s |
| Pays | At least 5 people pay $5 with real money, at 50 cents a moment |
| Ships | At least 5 moments live in real apps, at least 3 buyers back for a second moment |
| Founder rescue | Fewer than 20% of briefs need a hand fix |
| Beats LottieFiles | Recruits prefer Chocopie in at least 7 of 10 blind pairs on shared briefs |
If any gate fails, stop expanding and diagnose that gate. A failed gate is not permission to pivot into primitive or training.
proto/project.py in the repo.slopbox/strategy-2026-10-05/; the spike under slopbox/primitive-spike/.