How I built it · Physical products
How I turned Sean Levon Nash's paintings into seven coloring books
Eight weeks, seven books, one real bill. The story book by book, where Claude hit a wall, and every prompt and script I tried.
By Molly Shelestak · 7 min read
- Books live
- 7
- First commit to all seven on Lulu
- 8 weeks
- Active hours with Claude
- ~100
- Commits
- 426
- Cached tokens Claude read
- 3.17B
- The one real bill: image renders
- $81.01
The story
Five ways to strip a background failed. The fix was to never draw it.
My friend Sean Levon Nash paints Northwest Coast formline, Aztec and Mixtec codex art, and Día de Muertos scenes. Over eight weeks I turned his paintings into seven coloring books on KDP and Lulu. I used a lot of stuff: a Python pipeline built with Claude, my own line-work and cover-art pipelines built in Codex, Replicate, exactly.ai, Canva, and about 100 active hours with Claude.
Every book taught me something the last one didn't. This is the whole story, book by book: where Claude couldn't do the job, what it cost, and every approach that didn't work. The prompts and scripts are at the end.

Chapter 1 · Book 1 · Jul 20 – Aug 13
Raven Steals the Sun: the one that taught me everything
The first book started as a Python toolchain with a KDP preflight gate. My first line-art approach was an AI redraw, and it invented zentangle backgrounds that weren't in the paintings, so I switched to extracting the lines instead. Then came a die-cut sticker finish on Replicate, a no-fill fix, and a locked set of 72 drawings. That was 92 commits, all co-written with Claude.

Then KDP rejected the cover at least twice. The dashboard trim was set to 8×10 against 8.5×11 files, and Claude reached six wrong conclusions from my screenshots before the trim size came up. The interior also embedded no fonts, and the QR code on the back pointed at a shortlink that had lapsed.
No transcript survives from this book, so I can't tell you the hours. The Replicate spend for the early cleaning and outlining passes was roughly $50-70.


Chapter 2 · Book 2 · Aug 13 – Aug 21
Jaguar Falls from the Sky: six prompts and a wallpaper problem
The second book added a config file per book, perspective correction for photographed canvases, a review site and PDFs for Sean Levon Nash, and one house style across the pages.

Then the prompts: B1, B2, B3, B5, C and D. B3 drew the best figures and the worst backgrounds, because its own ground section asked for a small, regular, repeating tile. Five ways of removing that background afterwards all failed. B5 on gpt-image-1 at high quality, traced by Recraft, finally worked.
Every trial render was hardcoded to high quality. That became the one real bill of the project: $81.01 of OpenAI image generation. The fix was a low-quality default for trials. Sean Levon Nash picked from 12 versions of each painting, then I made three rounds of page-by-page calls. 27.2 active hours, about 73 commits.
“we recently made our first coloring book! i want to start on the next one”



Chapter 3 · Book 3 · Aug 21 – Aug 22
Daze of the Dead: six hours, because the pipeline existed
Book three reused book two's pipeline, so it took 6.4 active hours. All 133 source paintings were too small and had to be upscaled first. Some of the work happened in Codex, and Codex is how the line work came to look good.

Claude built the first cover in code, and I hated it. I told it to use Canva, made the real cover there myself, and got back to work. After I submitted, I noticed Claude had put the white ISBN block in the wrong place.
“huh? use canva to build my cover in same format as the others”
Chapter 4 · Aug 25 – Aug 31
In between: Etsy, CMYK and upside-down pages
Between books I opened Etsy for the digital editions, re-exported books one and two in CMYK from Canva, and fixed pages that came back rotated.

“the ai cleaned up version is still his art”

Chapter 5 · Books 1 and 4 · Sep 1 – Sep 12
Turtle Carries the World: one book becomes two
Volume one split into two books, traditional and contemporary, 66 pages each. Prompts NW through NW6 matched volume one's line on the new pages.

Claude swapped the book one cover once, and once reached for a generic approach when we had a pipeline and prompts for exactly this. I called out both. 15.1 active hours.
“its not consistent stroke weight. its like pen work”


Chapter 6 · Books 5 to 7 · Sep 7 – Sep 12
The Day of the Dead editions: the blank-garment bug
The Day of the Dead paintings split by culture into four books of 42 drawings and 90 pages each. New scene paintings came from exactly.ai.

Then the biggest bug of the project: new pages printed as a bold outline around a blank garment. The finishing threshold of 128 erased the grey pattern lines. Changing it to 200 fixed it without a single new render. 18.3 active hours.
“way fuckng better”



Chapter 7 · All seven · Sep 1 – Sep 13
Lulu: same books, different rules
Lulu's spine is wider than KDP's for the same book: 0.209 in against 0.1486 in at 66 pages. Lulu takes RGB where KDP wants CMYK, and a Lulu book with no ISBN prints no barcode, so the barcode box gets painted out. The interiors were mostly waste, too: 19.5 MB became 3.2 MB.

Claude drove the forms until Lulu showed a bot check. All seven went live on Lulu Direct.
Where I tried to make Claude do all of it
Canva wouldn't take my files
The Canva connector only imports from public URLs, so I dragged the art in by hand. A resize was blocked, and once Claude handed out links to the wrong design. Its words: my fault twice over.It stops at the sign-in
Claude filled the KDP forms, but an em-dash scrambled one description, and it stopped at Amazon's sign-in: it won't enter credentials.The 10 MB wall
Files over the browser's 10 MB limit were mine to attach. That's the day I told it something is wrong with you.Bot checks are a hard stop
Lulu showed a Cloudflare check, and Claude stopped: it can't complete bot checks for me.Confidently wrong
It switched an interior to no bleed and then said I was wrong. It also gave me three different cost figures without checking any of them.Generic when it had the good stuff
Once, with a pipeline and prompts built for exactly this, it reached for something generic. My words: we have a pipeline we have prompts we have lots of styff and you reach for generic thing.
Where it bit me
Ask for wallpaper, get wallpaper
The Aztec prompt drew the best figures and the worst backgrounds, because its own ground section asked for a small, regular, repeating tile like patterned wallpaper.Five fixes, zero wins
Removing the lattice by ink connectivity, stroke width, a halo ring, cell size and SVG fill value all failed. The lattice and the figure were one connected shape. Generating without it worked.The 400 that said something else
A newer model returned HTTP 400 on the edits endpoint and nearly got written off. The error named a parameter, not the endpoint: drop input_fidelity and it edits fine.Final quality on throwaway trials
Every call was hardcoded to high quality, copied from the script that renders final pages, then carried into about 160 throwaway trials. Now low is the default, and high has to be asked for by name.Never delete a render
Claude deleted a first-pass render to redo it, and I'd said I liked it while the redo was running. Image models don't reproduce a render, so move superseded ones aside instead.Thicker isn't hand-drawn
The tuned line thickness of 7 dilated fine ornament until it blobbed together. A sweep showed 1 to 3 is far crisper; the default was never re-tuned for the denser art.Some edges can't be invented
Two Aztec pages were cut off at the edge, and five completion attempts all failed. Some pages need a different source, not a better prompt.

Who did what
Claude
- Built the Python pipeline: selection, vectorizing, layout, cover checks and preflight
- Ran the model bake-offs and the render batches
- Filled the KDP and Lulu forms until a sign-in or bot check stopped it
Me
- Built the line-work and cover-art pipelines in Codex
- Wrote the line that made the redraw prompt work
- Picked the version of every page
- Designed every cover in Canva
- Did the sign-ins, uploads and publish calls

See the books
All seven of Sean Levon Nash's coloring books are on Amazon, and together on his book page.
Raven Steals the SunPacific Northwest formline, volume oneSee it on Amazon →
Turtle Carries the WorldPacific Northwest formlineSee it on Amazon →
Jaguar Falls from the SkyAztec and Mixtec codex artSee it on Amazon →
Daze of the DeadDía de MuertosSee it on Amazon →
Home of the GraveDía de MuertosSee it on Amazon →
The Cold MastersDía de MuertosSee it on Amazon →
Land of the Rising DeadDía de MuertosSee it on Amazon →- All the books in one placeSean Levon Nash's book pageSee it →
Part two · The system
The moving parts
In the order things flow.
1
Source paintings
The originals, kept out of git, with a tracked catalog.
2
Page selection
Picks the approved pages for a book from its config, with per-page overrides.
3
Redraw
An image model turns each painting into line art with the redraw prompt.
4
Crop completion
Pages cut off at an edge get expanded first, then redrawn.
5
Vectorize
Threshold, trace to SVG, then rasterize to 1-bit at print resolution.
6
Assembly
Orders pages so no two neighbours share a subject, and pads to an even page count.
7
Cover
A full-wrap cover with the spine width read from the interior's page count.
8
Preflight
Checks page count, DPI floor, pure black and white, and file size before promoting to dist.
Tools I used
- ChatGPT · Where the redraw prompt was worked out, and where I expand cropped pages
- Codex · My own pipelines for the line work and the cover art; it's how the line work got good
- gpt-image-1 · Best figures of every model tried
- Replicate · Runs image models; submit and poll so a killed run costs nothing
- Recraft · Vectorizes the denser Aztec art and keeps fine ornament
- potrace · Traces volume one's line art to vectors, locally
- exactly.ai · New scene paintings for the Day of the Dead editions
- Canva · Every cover, from the volume one template
- Claude Code · Built and runs the pipeline, and drives the KDP and Lulu forms
- Lulu · The second printer, with its own spine and colour rules

Build your own
Prove the prompt on one painting
Before building anything, run the redraw prompt on one painting in ChatGPT and judge the result as a coloring page: every region fully enclosed, no open paths, no floating marks.
Trial cheap, finish expensive
Test prompts and models at low quality. Line quality is the one thing you can't judge at low, so settle it with a single deliberate high render, not a batch.
Don't fix the background in post
If a prompt draws a pattern behind the figure, change the prompt. Removing it afterwards failed five different ways for me.
Run a small bake-off
Render the same page on a few models and compare them side by side. Line quality is a model behaviour, not a pixel count: one model at 2.5x the resolution came out worse.
Vectorize to print resolution
Threshold the line art, trace it to SVG, and rasterize it to a 1-bit image above 300 DPI on both axes. I use 306 so rounding never lands under.
Prompt for Claude
Write a Python function that takes a line-art PNG, thresholds it to black and white, traces it to SVG with potrace, and rasterizes the SVG with cairosvg to a 1-bit PNG that is at least 306 DPI on both axes for an 8.5 × 11 page. Fail with a clear message if potrace or cairo is missing.
Make every step resumable
Skip any output that already exists. Submit renders and poll for them, and save the job ids first, so a killed run collects its results instead of paying for them twice.
Record every pick as it happens
Renders can be redone. A person's judgement on each page can't, and an image model won't draw the same page twice, so write each pick to a file the moment it's made.
Assemble, cover, preflight
Lay out one drawing per page with a blank reverse, compute the spine from the final page count, and run preflight before upload. The KDP side has its own guide.
Prompt for Claude
Build a preflight check for a KDP coloring book interior PDF: page count and parity, every page 8.5 × 11, every image at least 300 DPI, pure black and white only. Print PASS or FAIL per check and exit 1 on any failure.

Everything I tried
The dead ends are the useful part. Here's what each one taught me.
- Didn't
AI redraw, volume one
Invented zentangle backgrounds that weren't in the paintings.
Lesson: Judge the first output as if it were the finished book.
- Worked
Extracting the lines
Pulled the painting's own lines for volume one.
Lesson: When a model adds things, take the model out of that step.
- Sort of
Die-cut sticker finish
Looked right, but needed a no-fill fix.
Lesson: Test a finish on the whole set, not one page.
- Didn't
Flux Fill for cropped edges
It put a frame in the margin.
Lesson: Outpainting tools have their own ideas about margins.
- Didn't
Flux Kontext
Drifted from the original painting.
Lesson: With someone else's art, fidelity beats style.
- Worked
Prompt A with the markers line
Redraw from scratch as clean ink, assuming every line gets colored by hand.
Lesson: One sentence about the person using the page changed the output more than any style wording.
- Sort of
Prompt B3
Best figures, worst backgrounds.
Lesson: A prompt does exactly what it says, including the parts you forgot you wrote.
- Didn't
Removing backgrounds afterwards
Five approaches, all failed.
Lesson: If a fix keeps failing in post, change what gets generated.
- Worked
B5 on gpt-image-1, traced by Recraft
B3's figure without the background.
Lesson: Combine pieces that each worked alone.
- Didn't
Completing cut-off pages
Five attempts on two pages.
Lesson: Some pages need a different source, not a better prompt.
- Didn't
Finishing threshold of 128
Erased the grey pattern lines and left blank garments. 200 fixed it.
Lesson: Check the cheapest knob before paying for new renders.
- Sort of
Claude driving KDP and Lulu
It did the typing. I did the sign-ins, uploads and checks.
Lesson: Plan the hand-offs up front: sign-ins, uploads, bot checks.
Steal this
line-art-redraw.md
prompt · markdown
# Painting to coloring-page line art (redraw prompt) Paste this into ChatGPT (or another image model) with one painting attached. It is the prompt that worked for turning full-colour paintings into coloring-book pages. The last paragraph made the biggest difference: telling the model the lines will be colored by hand pushes it toward large, clean, enclosed shapes. --- You are a professional illustrator preparing artwork for a premium adult coloring book. Your task is NOT to apply an edge-detection filter. Instead, imagine the original painting never existed. Your job is to recreate the artwork from scratch as if a skilled artist hand-traced and redrew the entire composition using clean vector line art. The finished illustration should look like an original ink drawing—not a filtered photograph. ------------------------------------ PRESERVE ------------------------------------ Preserve exactly: • overall composition • silhouette • pose • proportions • visual balance • symbolic forms • decorative motifs • relationships between shapes The finished drawing should be immediately recognizable as the original artwork. ------------------------------------ REMOVE ------------------------------------ Remove every trace of the painting process. Delete: • paint texture • canvas texture • visible brush strokes • color • gradients • highlights • shadows • lighting • reflections • pencil marks • rough edges • smudges • anti-aliasing artifacts • photographic noise The final artwork should appear as perfectly clean black ink. ------------------------------------ REDRAW ------------------------------------ Completely redraw every line. Do NOT trace pixel edges. Instead: • simplify curves • smooth every contour • correct wobbly brush edges • replace uneven paint borders with elegant flowing curves • create mathematically smooth Bézier-like paths • unify inconsistent stroke widths Everything should feel intentionally illustrated. ------------------------------------ LINE STYLE ------------------------------------ Use: • solid black outlines • consistent monoline stroke weight • crisp vector-quality curves • smooth flowing contours • no pressure variation • no sketchiness • no roughness Every line should look professionally inked. ------------------------------------ INTERIOR DETAILS ------------------------------------ Convert every colored region into an enclosed coloring area. Replace painted borders with smooth graphic contours. Preserve all symbolic design elements while simplifying noisy details. Every enclosed shape should become an individual coloring region. Merge tiny regions where appropriate to improve readability. ------------------------------------ SIMPLIFY ------------------------------------ Whenever small painted imperfections exist, replace them with cleaner, more elegant geometry. Favor: • flowing curves • symmetry • rhythm • balanced spacing • graceful transitions Avoid mechanical tracing. Make artistic decisions that improve clarity. ------------------------------------ COLORING BOOK RULES ------------------------------------ Every region must be: • fully enclosed • printable • easy to color • clearly separated • free of overlaps No open paths. No intersecting strokes. No floating marks. ------------------------------------ STYLE TARGET ------------------------------------ The result should look like it was hand-drawn by an expert illustrator creating original coloring book artwork from the painting. It should NOT resemble: • image tracing • edge detection • vectorization software • posterization • threshold filters Instead it should feel intentionally illustrated with clean flowing linework and elegant graphic design. The final result should resemble a premium published coloring book where the artist manually recreated the original painting as flawless black-and-white line art. Assume every line you draw will eventually be colored by hand with markers, so prioritize large, clean, enclosed shapes over exact fidelity to every painted edge.
Paste it into ChatGPT with one painting attached. The same prompt drives the gpt-image-1 renders in the pipeline.
How to break a problem like this down
Prove one page before you build a pipeline
One painting, one prompt, one judgement as a real coloring page. Everything after that is repetition.
Make the human choices the fixed points
Record every pick the moment it's made. Renders can be redone; a person's judgement on each page can't.
Trial cheap, finish expensive
Only pay for final quality on final pages. The one real bill of this project came from ignoring that.
When post keeps failing, change the input
Five ways of cleaning a background failed. A prompt that never drew it worked.
Check what the file is judged against
The first book's worst bug was a dashboard setting, not the file.
Reuse the last book
The second book built the pipeline. The third one took hours instead of weeks.
Building something of your own? Get the free Claude skill, a build partner that keeps your side project moving.