Back to Quest Log
Case Study

Vibe Forge

A team-scoped studio for AI art and writing that stays on-model. Instead of one-off generations that drift, you build reusable style and subject presets, chain them together, and keep characters, worlds, and voice consistent across everything you make — with a shared canon underneath so the whole team pulls from one source of truth.

AI image generation AI writing Gemini MCP Multi-tenant OpenAI Laravel VueJs TypeScript

What it is

Vibe Forge is a studio for generating AI art and writing that actually holds together across a whole project. The core idea is that nothing is a one-off: you author reusable style presets and subject presets, then chain them into each generation, so the same character, the same look, and the same voice come out consistent every time. A shared canon — entities, events, and worlds — sits underneath it, and everything is scoped to your team, so the people building a world all pull from one source of truth.

It does both sides of worldbuilding: images (native 1024×1024 generations with framing and resolution controls) and prose (writing-style presets that carry voice, composed with the same shared subjects).

Why I built it

Generic AI tools are great for a single striking image and terrible at consistency. Every prompt is a fresh roll of the dice — your character's face changes between generations, the art style wanders, the writing voice drifts from one passage to the next. That's fine for a moodboard and fatal for a world.

The moment you're building something with continuity — a game, a pet community, an illustrated story — you don't want an image, you want this character, in this style, again, and again, and again. And you want a team to be able to do it without each person reinventing the look. So I built the missing layer: composable presets, a shared canon to keep everything on-model, and the production-grade plumbing (async jobs, quality checks, clean cutouts) that one-shot tools skip.

What it actually does

Art generation with chained presets:

  • Author style presets (the look) and subject presets (the character or thing), then chain them into a single generation — compose order is styles → subjects → prompt

  • Native 1024×1024 output (Gemini), with aspect_ratio for framing (e.g. 3:4 full-body portraits) and effective_resolution_px to downscale to crisp pixel-cluster sizes

  • Generation is asynchronous — kick off a job, poll until it's done Built-in quality control:

  • Every result carries deterministic quality warnings — flags like cropped, no_cutout, interior_holes, and residual_key — so you know when a generation needs a re-roll instead of eyeballing each one

  • Re-roll with the exact same recipe (regenerate) when you want another take on identical settings Clean chroma-key cutouts:

  • A magenta team key produces clean, reliable cutouts — subjects you can drop straight onto any background Writing, the same way as art:

  • Writing-style presets carry voice and technique (a Register) and length (a Size/Beat)

  • Subjects are shared between art and writing — the same character you illustrate is the one you write

  • Chain writing styles + subjects + a prompt to generate prose that stays in character A shared canon & worlds:

  • Canon entities, events, and worlds keep names, facts, and relationships straight across everything the team generates

  • Semantic search and consistency tooling so the canon stays coherent as it grows Team-scoped and reusable:

  • Everything — images, presets, tags — belongs to a team, with strict team scoping on every call

  • Presets are editable and forward-looking: edit a preset and future generations pick it up, while existing images keep the exact recipe they were made with

What it doesn't do

  • It's not a one-shot prompt box. The whole point is reusable, composable presets and a shared canon — not disposable images.
  • Edits don't rewrite history. Changing a preset affects future generations only; every existing image keeps its baked-in recipe, so you never silently alter work you've already shipped.
  • Presets aren't deleted, they're improved. You edit a preset forward rather than spawning throwaway versions.

Every asset lives inside a team: images, presets, tags, and canon are all team-scoped, and each call is authenticated and bounded to the team it belongs to. Generations are snapshotted — the recipe behind an image is preserved with it — so a team's library stays reproducible and auditable even as presets evolve.

How it works

  1. Set up your presets — Author the styles, subjects, and (for writing) voices you'll reuse across the project.
  2. Build your canon — Define the entities, events, and worlds the team generates against.
  3. Chain and generate — Combine presets with a prompt; the job runs asynchronously and reports back with quality warnings.
  4. Check, re-roll, or save — Act on the warning flags — re-roll the exact recipe if needed — then keep the keepers in your team's library.
  5. Reuse everywhere — The same presets and subjects power every future generation, so the look and voice stay consistent as the world grows.

Technical foundation

Built on Gemini for image generation (roughly $0.04/image) behind an asynchronous job model — submit, poll, then read deterministic quality flags. MCP-first, so agents and tools can drive generation directly, with multi-tenant team scoping enforced on every call and authenticated access per team. Generation recipes are snapshotted onto each asset for reproducibility.

Related projects

  • BuildersHQ — shares Vibe Forge's MCP-first, multi-tenant, team-scoped architecture; the two are cut from the same cloth.
  • VPga.me — a natural fit on the creative side: VPga.me creators bring "the images and the story," and Vibe Forge is built to produce exactly that — consistent, on-model art and writing for a world.

What's next

Refinement and Improvements from usage.

Contact

Building a world and tired of AI that won't stay consistent? Get in touch via judd.dev/contact

Tech Stack

AI image generation AI writing Gemini MCP Multi-tenant OpenAI Laravel VueJs TypeScript

Like What You See?

Let's discuss how I can build something like this for your business.