I run this whole platform on Claude. It writes the readings, reasons about charts, and pair-programs the infrastructure with me. So when I decided my image-based readings needed actual art — a cast of planet-characters you could see — my first instinct was to ask Claude to make them.

Claude can’t make them. Not “won’t” — can’t. It’s a language-and-vision model: it can read an image and tell you what’s in it, but it has no image-generation capability. There is no Anthropic model that paints a picture from a prompt. I’d been treating “AI” as one thing. It isn’t.

That single fact reorganized the entire build.

Right tool, right job

The fix wasn’t a better prompt. It was admitting that no one model does everything, and splitting the work:

Job Tool Why
Reading text, chart logic, the platform Claude (Anthropic) language + reasoning, already running everything
Generating the character art OpenAI gpt-image-1 it actually paints — and exports transparent PNGs
Compositing, glyphs, consistency Python deterministic, exact, free

Claude is also what designed and wrote the Python glue, and what translated my astrology framework into art prompts. The image model never touches text reasoning; Claude never touches pixels. Each does the one thing it’s actually good at.

The combinatorics that forced layering

A placement isn’t one thing — it’s a planet, in a sign, in a house. In my framework: the planet is the character, the sign is its costume, the house is the setting. Render every finished combination and you’re looking at 10 × 12 × 12 = 1,440 images.

So you don’t render finished scenes. You render layers — each as a transparent PNG on a fixed canvas — and composite them per chart. Build the parts once, stack them on demand. That decision is why every character had to be a clean cutout with nothing behind it.

Two characters per planet

Each planet in my system has a bright expression and a shadow expression — defined by its Faculty, Process, and States. So Mars isn’t one character; he’s a confident warrior and a snarling brute. The Sun is a radiant showman and a smug, arrogant blowhard. Twenty characters, not ten — the framework drove the art, not the other way around.

The consistency trap

Here’s the thing nobody tells you: image models have no memory between calls. Ask for “smiling Mars,” then ask for “angry Mars,” and you get two completely different beings — different head, different costume, different everything. The model never saw the first one.

The fix is image-to-image editing. Generate the bright version once, lock it as the source of truth, then generate the shadow version from that locked image — “same character, change only the expression.” The design stays identical; just the mood flips. Same trick will keep each planet recognizable later across all twelve of its sign-costumes.

Transparency, or it doesn’t layer

Transparent backgrounds turned out to be the fussy part. The model will happily paint a gorgeous full scene around your character unless you aggressively forbid it — “isolated cutout, NO background, NO scenery, NO halo.” Even then, the dreamy characters (Neptune, Uranus) came back wrapped in a glowing aura that looked transparent but wasn’t, and would have haloed against any backdrop. Each got a second editing pass to strip the glow. If it isn’t a clean cutout, the whole layering idea collapses.

The thing AI genuinely cannot do: glyphs

Every character wears its planet’s astrological symbol on its forehead. The image model cannot reliably draw these. Pluto came out wearing Mercury’s glyph. Saturn’s was a scribble. These are precise, culturally-fixed symbols, and a model that paints by vibe gets them wrong every time.

So I stopped asking it to. Python (Pillow) stamps the real glyph on after generation — the canonical Unicode character rendered from a font, or hand-drawn for the two glyphs fonts don’t carry (Pluto’s, and Uranus’s )+( form). Deterministic code is always right. This is the whole lesson in miniature: use the generative model for the generative part, and exact code for the part that has exactly one correct answer.

What it actually felt like

Not push-button. I art-directed every character — “more playful,” “she looks like a monster, make her scared,” “drop the phoenix, hood him like a criminal” — and we iterated until each one landed. I hit OpenAI’s billing hard limit mid-run and had to top up. A key leaked into a log and got rotated. AI-augmented doesn’t mean effortless; it means the effort moves from making to deciding.

The short version

There is no single “AI.” Claude reasons and writes; an image model paints; neither can do the other’s job. The wins came from putting each where it belongs — and handing the parts with exactly one right answer (the glyphs, the compositing) to plain, deterministic Python. Twenty planet-characters, two faces each, every symbol correct. None of the three could have done it alone.