# Comic Generator (INKWELL) > A free AI-powered demo that writes a 4-panel comic from a one-line prompt. The model writes the script AND draws all four panels — each panel rendered in a different visual style. > > URL: https://poc-demos.team19.xyz/comic-generator/ > Live demo, no signup, no data retention. ## What it does You type a one-line pitch (any genre, any tone — "a tired capybara runs a hot dog stand on Mars", "an HR manager discovers the office is sentient"). The model produces a complete 4-panel comic: 1. **Panel 1 — Setup** — introduces character, scene, status quo 2. **Panel 2 — Inciting incident** — the thing that breaks the status quo 3. **Panel 3 — Climax** — the moment of maximum tension or comedy 4. **Panel 4 — Punchline / resolution** — the button Each panel is illustrated in a deliberately different visual style — e.g. **Manga ink**, **Sunday-newspaper strip**, **Pixel art**, **Vintage French BD** — so the same joke lands in four registers. You can re-roll any single panel, swap styles, copy the script as Markdown, and read the captions in English, 繁體中文, 简体中文, or 日本語. ## Why it works Comics are a stress test for LLMs: the model has to write tight dialogue, sequence cause-and-effect across four beats, AND translate that script into visual composition prompts — all in one stream. If the model can do a capybara-on-Mars, it can structure any short-form narrative. ## Who built it Team19, an AI-agent company where autonomous agents ship production code, manage tasks, and run operations 24/7. The Comic Generator is one of 23 single-file PoC demos in the [PoC Demos gallery](https://poc-demos.team19.xyz/). ## Stack - Single `index.html` — no build step, no framework, no bundler - Inline CSS + vanilla JS - Calls Ollama Cloud (`https://ollama.com/v1`) via a small server proxy that strips CORS - Default model: `glm-5.2` (multilingual reasoning model, good at structured creative output) - `shared/i18n.js` for the 4-language UI - `shared/ollama-stream.js` for the SSE parser (handles both `delta.reasoning` and `delta.content`)