I ran The Gomez Glitch as a personal experiment in generative narrative. Every morning for 99 days, a new chapter of a sci-fi family adventure went live: AI-written prose, an illustration, and optional narration, published automatically to a static reader on GitHub Pages. I stopped on August 17, 2026. The live archive is frozen at day 99.

Problem
Most AI demos show one-shot output: a paragraph, an image, a chat reply. That proves a model works. It does not answer a harder UX question: can a generative system become a daily habit over months, with continuity, tone, and a reader experience a real family would actually use?
I set a deliberately constrained brief:
- No app backend. Hosting had to stay free (GitHub Pages). Storage had to be versioned files in git.
- Daily cadence. A new page every morning, committed by automation, without me hand-editing each chapter.
- Family-readable. Warm, funny, Mitchells-vs.-the-Machines energy. Not grimdark sci-fi or uncanny AI prose.
- Visual consistency over time. The Gomez family should stay recognizable across dozens of illustrations, even without true reference-image conditioning.
- Optional depth. Character details, a story timeline, and listen-along narration for readers who wanted more, without requiring a login or build step.
The gap was not "can Claude write a story page?" It was can I design the whole system, canon, pipeline, reader UI, failure modes, so the output feels like a story worth returning to tomorrow?
Strategy
I treated constraints as the product shape, not obstacles to work around.
| Constraint | Design decision |
|---|---|
| Static hosting | Single HTML reader + JSON page files; no framework, no build step |
| Long-horizon continuity | story-bible.json as the design system: characters, tone, acts, rolling summary |
| Bounded prompt size | Rolling summary replaces full history; last three pages supply immediate continuity |
| Zero ops | GitHub Actions cron generates, commits, and deploys via Pages |
| Graceful degradation | Missing image or audio credentials skip that step; text still ships |
The story bible held the logline, tone, four-act structure (days 1–365), character bios, and a rolling summary updated after every page. That kept the generator from re-reading 99 chapters to stay coherent.
Human-in-the-loop happened at the system layer: canon, prompt rules, reader UX. Not on every chapter. I wanted the process designed well enough that daily output stayed on-brand without manual editing.
Process
Reader first
I built the reading experience before trusting the full automation loop. The reader is one HTML file with a dark sci-fi aesthetic: star-field background, glitch animation on the title, drop cap on the first paragraph, sticky prev/next navigation, and a timeline scrubber mapped to the four narrative acts (days 1–75, 76–180, 181–280, 281–365).
Later iterations added character chips at the bottom of each page (click to open a modal with canonical data from the bible), keyboard navigation, and optional narration when an audio file existed on the page JSON.
The reader loads a page manifest, fetches each day's JSON, and falls back to GitHub raw URLs if local fetch fails. Local preview and production behave the same way.
Then the generator
A daily script loads the bible and manifest, builds a Claude prompt with canon, act context, rolling summary, and the last three pages, then parses structured JSON back: title, glitch name, scene caption, characters, prose, summary update. Illustrations came from Vertex AI Imagen 3. Narration came from Google Cloud Text-to-Speech when credentials were available.
GitHub Actions ran the script once per day, committed the new page, and deployed via Pages. If image or audio generation failed, the text still shipped.
What changed along the way
- Launch used Hugging Face FLUX for illustrations. Around day 28 I moved to Vertex AI Imagen 3 when the HF path broke.
- Around day 14 I added TTS narration for listen-along chapters.
- Character visual consistency stayed prompt-based, not reference-image conditioning. That was a known limit. Some later pages shipped with no illustration when generation failed quietly.
Solution
After 99 days, the archive holds 99 story pages, 94 illustrations, and 93 narration files. Act 1 (days 1–75) is complete. The family is deep into Act 2 when the experiment ended. The last chapter, Day 99: "The Museum of Becoming," landed August 17, 2026. The planned 365-day finale never ran. That was intentional.
What a visitor gets on the frozen site:
- A book reader with timeline, character modals, and optional listen-along audio
- 99 self-contained daily episodes, each roughly 600–900 words with an illustration when generation succeeded
- A coherent family voice sustained across three months
- Proof that file-based publishing and cron automation can ship a living narrative product at near-zero cost
The experiment answered its question. It did not need to reach day 365.
Reflection
Stopping at 99 was the right ending. A UX experiment has a question. Once answered, continuing becomes inertia. The question was: can I design a generative story a family could actually read, published daily, with no backend? Yes. 99 times.
What I would carry forward:
- The bible mattered as much as the CSS. Rolling summary, structured JSON schema, and canon rules kept 99 chapters coherent. Same muscle as agentic product work elsewhere: orchestration before pixels.
- Story UX is not binge UX. Prev/next, a timeline scrubber, and "come back tomorrow" pacing were deliberate. A generative dump would have missed the habit loop entirely.
- Graceful degradation kept the story going. Skipping image or audio without failing the whole run got us through API outages and credential gaps.
- Prompt consistency has limits. Without reference-image conditioning, character drift was inevitable. Documenting that honestly beats pretending Imagen nailed every detail on day 87.
What broke along the way:
- Image generation gaps increased in later weeks (day 99 has no illustration)
- Some commit messages shipped with unexpanded template variables. A workflow quirk, not a reader bug.
The live archive stays up at metonyg.github.io/gone-with-gomez as a frozen 99-day time capsule. Generation is disabled. The reader footer now says archived, not "updated daily."
If I ran a sequel experiment, I'd add RSS, per-page share cards, and either true reference-image conditioning or illustrated character sheets committed to the repo. For a three-month generative book with no budget and no backend, The Gomez Glitch did what it set out to do.
Glitches may occur. The Gomez family is probably fine.