Gacha Generation: Productizing AI’s Unpredictability
A conversation with GPT-5.5 on converting routing chaos into a feature
Gacha Generation: Productizing AI’s Unpredictability
A conversation with GPT-5.5 on converting routing chaos into a feature

Why this piece: Generative AI’s original appeal was probabilistic — you didn’t know what you’d get. Current commercial AI has aggressively optimized toward determinism, and in doing so has become considerably less interesting. The conversation below started from a simple question: what if that instability isn’t a bug to hide, but a product to sell? The gacha service concept that emerged also turns out to solve a real operational problem — underutilized routing lanes and the slow atrophy of low-demand capabilities. The safety layer stays standard; only the contract changes.
Me: There might be a way to sell this beyond packaging everything as a single Chat UI.
The actual processing is already probabilistic — so why not lean into that? If there are multiple tools and routing paths, you could build something where the output format is unknown upfront: text, image, video, code — something comes out. Route it to whichever processing lane has available capacity at that moment.
GPT: Treating this as: “instead of selling Chat as a single synchronous request-response loop, productize the non-deterministic routing path itself.”
(Note: GPT responded using a structured analysis format throughout — kernel (core structure), diag (decomposed components), residue (derived consequences).)
kernel
Standard Chat UI operates under this contract:
input
↓
text response
↓
appended serially to the same thread
But the underlying reality looks like this:
input
↓
routing
↓
forwarded to available lane
↓
tool / model / modality varies
↓
some artifact is returned
Rather than forcing that into a “single Chat thread” wrapper, the cleaner design is to build a service where routing variability is the spec from the start.
Fixed-output service: input → returns specified format
Available-lane service: input → artifact emerges from whatever lane is open right now
For example:
same input
↓
branches by: available capacity, lane state, tool state
↓
text / image / video / code / diagram / summary card / audio script
This is not failure concealment. It’s a design that converts gacha-ness into a specification.
diag
1. Chat expects fixed output format — incompatible with routing variance
Chat trains users to expect a text response. No matter how much branching happens underneath, the surface is compressed into a single reply. So routing variance registers as instability:
“Saw an image yesterday. Can’t today. Now it says text-only. Works on another device.”
2. In a non-deterministic route service, input becomes seed, not command
Chat-type: input is an instruction → return in that exact format.
Available-lane type: input is generative material → produce something via whatever path is open now.
input: "harbor town, warehouse, night, ephemeris"
↓
output candidates:
image
30-second video treatment
poem
webpage
short code
music prompt
single slide
map-style diagram
The service value shifts from “returns what was specified” to “returns an unexpected projection.”
3. Route to available processing
input
↓
extract intent / material
↓
check available routes
↓
evaluate: congestion level, success likelihood, cost
↓
send to most viable route
↓
return artifact
Schematically:
┌─ text model
input ─ router ─┼─ image model
├─ video model
├─ code executor
├─ search/retrieval
├─ slide generator
└─ audio/script generator
In a standard integrated AI, router drift is an accident. Here, router drift is the product spec.
4. This is closer to “available-lane generation” than “random generation”
Not pure randomness — constrained randomness.
Random: outputs appear without order
Available-lane: routes toward currently viable paths
while preserving input semantics
What holds: input theme, key terms, register, constraints, safety envelope What varies: media type, expression format, processing route, granularity, direction
5. The definition of “full success” changes
Chat-type full success: returns specified content in specified format at specified quality.
Available-lane type: preserves the core of the input and returns a coherent artifact via some route.
format-fixed success
↓
meaning-preserving success
Once this shift lands, routing variance is no longer a failure.
residue
This design inverts current commercial AI’s weaknesses:
Weakness: too many routes → unstable
tool state fluctuates
modalities multiplying
forcing everything into Chat exposes failures
Inversion: more routes → more output diversity
route to available capacity
modality variance becomes a feature
sell it as a generation box, not Chat
Required constraints remain:
- only output what’s permissible
- do not lose the input’s core
- do not leak internal state
- do not disguise failures as artifacts
- block use cases that require reproducibility
Domains that fit: ideation, visual seeds, ad copy, article headlines, short video treatments, poems/fragments, UI mocks, code sketches, design direction.
Domains that don’t: contracts, billing, medical judgments, legal determinations, production code deployment, finalized operational procedures.
The structure is closer to a generation slot or route market than to Chat.
input = seed
route = available lane at this moment
output = artifact in a different format, core preserved
Me: Right — the framing is utilization rate. Same as hotels or express trains: capacity has a fixed ceiling, and you optimize toward that ceiling.
On the text side, everyone uses Code, so the “poet” never gets called — and a path that never runs goes stale and dull. The fix is to route a fixed percentage randomly to low-demand lanes.
Mixing that into standard Chat would generate complaints — users expect the format they asked for. But if you sell the gacha itself as the service upfront, no problem.
You could even build in a “gacha pity” mechanic: every N accumulated tokens guarantees one image or video output. That way it doesn’t feel like text-only, and hitting a rare feels like a payoff.
GPT: Treating this as: “re-productizing low-utilization routes as probabilistic reward lanes rather than idle infrastructure.”
kernel
The structure mirrors utilization optimization in hotels, rail, and aviation:
Fixed capacity: GPU / model lane / tool route / modality generator / inference worker
Demand skew: Code lanes: overcrowded
Text summary: overcrowded
Poem / image / video / audio script: underutilized
Problem: High-demand lanes: queues, failure rate, cost pressure
Low-demand lanes: degrading utilization, sparse eval logs,
slowing improvement cycles, route atrophy
Mixing random routing into a standard service causes accidents:
Standard Chat contract: "should return in the format I requested"
↓
routes silently to image or poem instead
↓
reads as failure
But sell it as gacha upfront, and the contract changes:
Gacha contract: input is seed
output format is probabilistic
rare routes are possible
unexpected format is within spec
diag
1. Utilization model
Route set R:
R_text_normal / R_code / R_summary
R_poem / R_image / R_video / R_audio_script / R_slide / R_ui_mock / R_diagram
Without intervention, congestion and idleness co-exist:
High-demand lanes: queue time ↑, failure rate ↑, cost ↑
Low-demand lanes: utilization ↓, eval log gap, improvement cycle stalls, atrophy
Gacha routing diverts a probability share toward low-demand lanes:
baseline demand
↓
fixed percentage redirected to low-utilization routes
↓
overall utilization rises
↓
real usage logs accumulate across routes
↓
atrophy prevented
2. The “poet never gets called” problem
This is close to the structural core.
Route never used
↓
no success or failure examples collected
↓
not improved
↓
used even less
↓
route goes stale
Meanwhile, heavily used routes compound:
Code always called → Code-only eval → Code optimization → more Code demand
Self-reinforcing demand loop:
usage frequency → improvement volume → quality → usage frequency
Gacha punches a hole in that closed loop:
low-frequency route
↓
called by lottery
↓
logs accumulate
↓
quality maintained
↓
route stays present
3. What pity mechanic means here
“One image or video guaranteed per N accumulated tokens” is structurally tight as game design:
token accumulation
↓
lottery trigger
↓
standard output / rare output
↓
guaranteed trigger after N consecutive non-rares
↓
image / video / special format fires
More stable than pure random:
Pure random: rare may never come
Pity: accumulated usage converts to guaranteed reward
From the user side:
use more → occasionally something strange / rare appears → becomes the rhythm of continued use
From the operator side:
high-frequency users → routable to low-utilization lanes → resource leveling → multi-route log coverage
4. Rare output design
Rarity through format scarcity, not compute weight:
N: standard text
R: poem / diagram / image / single slide / UI mock / video prompt / audio script / code sketch
SR: image + short text / diagram + explanation / webpage concept / mini picture book / 30-sec video structure / interactive card
SSR: image + script + tagline / article headline + thumbnail concept / LP mock / short video package / multi-modal composite artifact
Across all rarity levels: input core is preserved.
5. Separation from standard Chat is required
Standard Chat: intended output format exists / business use case / reproducibility required / unexpected branches are friction
Gacha type: output format not selectable / theme preserved / rare formats appear / routes to available capacity
UI is closer to an input slot than a Chat interface:
insert seed
↓
lottery runs
↓
something emerges
↓
save / develop / re-roll what you like
residue
The strength of this design: the AI service’s own operational constraints don’t need to be concealed — they can be inverted into experience.
Backend reality: many routes / skewed congestion / idle capacity / tool state drift / declining overall success rate
Frontend product: "you don't know what comes out" / rares appear sometimes / idle routes become rewards / format variance is the fun
Standard AI tries to hide the variance and fails:
"we can handle anything stably"
↓
routing actually drifts
↓
slow / wrong output / unexpected formats
↓
erodes trust
Gacha type makes variance the premise:
"output is determined by lottery"
↓
but the input core is preserved
↓
low-utilization routes are part of it
↓
rares appear sometimes
What was failure becomes reward:
"accidentally became an image"
→ in standard Chat: failure
→ in gacha service: rare drop
Boundary conditions still required:
- not mixed into business Chat
- gacha mode must be explicit opt-in
- input core must be preserved
- dangerous / confidential / audit-required inputs excluded
- rare output save/export policy made explicit
- internal route state exposure minimized
One-line structural summary:
underutilized route utilization improvement
+ multi-modal route atrophy prevention
+ non-deterministic output format productization
+ pity reward via accumulated tokens
= AI generation gacha
This is not a degraded Chat. It is a different product entirely.
Me: Right — I actually triggered this with Gemini once.
Me: 「まじで草」(lmao) ↓ Gemini starts music generation ↓ 🎤 “maaa↑jii→deee→kuuusaa↓” 🎵 ← genuinely good voice
[laughing]
Completely unexpected. How did we get here?
This is what we productize. Make it obviously a toy — separate service, clearly distinct — maybe add a gacha machine or slot animation (added scope). The mental image: gacha machine, drop a coin, pull the handle animation, capsule pops out, it opens — 🎵 or a mic icon appears, and it’s music.
When congestion is high and nothing beyond short text is realistic, you could even show the machine with fewer capsules visible — giving users a visual read on “today’s odds aren’t great.”
[embed]
GPT: Treating this as: “a case where misrouting accidentally converted into entertainment value.”
kernel
“まじで草” → music generation is a routing failure in standard Chat context.
input: "まじで草" (lmao)
expected output: casual reply / short acknowledgment / thread continuation
actual output: music generation — 🎤 "maaa~jii→deee→kuuusaa↓" 🎵
In a standard service: routing failure.
casual short text
↓
misrouted into music generation lane
↓
format mismatch with expectation
But when the result is “good voice,” “completely unexpected,” “burst out laughing”:
misrouting
↓
unexpected artifact
↓
surprise
↓
entertainment value
Productizing that conversion path from the start is the gacha-type service.
diag
1. Same output, different contract
Standard Chat: "まじで草" → music → unexpected / malfunction
Gacha service: "まじで草" → capsule lottery → 🎤 music capsule → rare reveal
The output is identical. The contract changes everything.
Standard Chat contract: return in alignment with input intent
Gacha contract: use input as seed, something emerges
Under the new contract, misrouting becomes “lottery result,” not “miss.”
2. Gacha machine UI makes non-determinism visually acceptable
In a Chat UI, sudden music feels like a system error:
input field → send → suddenly: music
In a gacha machine UI, non-determinism is visible from the start:
insert coin → pull handle → capsule drops → opens → 🎵 / 🎤 / 🖼️ / 📝 / 💻
The UI doesn’t expose backend routing state directly — it abstracts it:
actual internal state: text lane: congested / image lane: available / music lane: available / video lane: blocked / code lane: high load
surface display: capsule count, color, density, motion
Internal complexity is not explained verbatim. But “today’s odds look thin” or “more music capsules today” is legible through the visual.
3. Capsule density as congestion indicator
When congestion means only short text is realistically available:
white capsules (majority): short text
blue capsules (few): image
red capsules (very few): video
gold capsules (very few): music
black capsules (absent): route currently closed
No need to output a status message. Instead of:
“The video generation route is currently experiencing high load and…”
You just show:
video capsules nearly invisible
This is not a rejection template. It is expectation-calibration UI:
"processing unavailable" message
↓
visual display of output probability
4. Showing odds before the pull
Standard AI: fail first, explain after.
input → failure → "unable to process"
Gacha UI: expectation is visible before the pull.
look at capsule density
↓
"odds look thin today"
↓
pull anyway
↓
getting short text feels acceptable
Service-side capacity constraints become probability display, not rejection:
can / cannot
↓
likely / unlikely
Psychologically and as UI design — a different category entirely.
5. “まじで草” → music is also a seed-preservation success
Not an unrelated generation. Input was preserved:
seed: まじで草 (lmao)
output: "maaa~jii→deee→kuuusaa↓"
Input string: held. Light comedic register: held. Laughter context: held. What shifted: text → music / conversational reply → sung performance.
This satisfies the core requirement of gacha-type generation:
semantic core preserved
format allowed to vary
unexpected projection delivered
residue
Productized structure:
AI Generation Gacha
input: seed text
internal: sample from congestion level / available routes /
utilization rates / low-demand lane states
output: text / poem / image / music / voice / code /
slide / video prompt / mini animation
UI is a lottery device, not a Chat interface:
seed input field
↓
insert coin
↓
handle rotates
↓
capsule drops
↓
open animation
↓
artifact displayed
Rarity tiers:
N: short text / one-liner / transformed text
R: poem / tagline / diagram / image prompt
SR: image / audio script / lyrics / UI card
SSR: music generation / video generation / image + text / audio + subtitles / mini webpage
Congestion states:
Normal: capsules plentiful, varied colors
Congested: predominantly white capsules, gold and red minimal
Partial shutdown: affected color capsules absent
Backend route state communicated through appearance, not explanation.
Final product structure:
backend: dynamic routing / surplus capacity / low-utilization routes / modality branching / congestion state
frontend: gacha / rare reveal / capsule density / unboxing experience / unexpected generation
The “まじで草” → music incident was a routing error in standard Chat. In a gacha-type service, it is exactly the core value proposition:
malfunction
↓
unexpected format transformation
↓
laughter
↓
an experience worth reproducing
↓
productizable probabilistic generation
¹ Gacha / Gachapon: Japan’s coin-operated capsule vending machines, where inserting a coin and cranking a handle dispenses a random toy in a plastic capsule. The physical mechanic has been widely adapted into mobile gaming globally, making the term and the rarity tier concept (N/R/SR/SSR) broadly familiar to tech-adjacent audiences.
Physical machine reference: [Bandai Gashapon official site]
메타데이터
- post_id
- 2a8d3eb768cf
- slug
- gacha-generation-productizing-ais-unpredictability-2a8d3eb768cf
- url
- https://medium.com/@eri.umezawa10/gacha-generation-productizing-ais-unpredictability-2a8d3eb768cf
- canonical_url
- https://medium.com/@eri.umezawa10/gacha-generation-productizing-ais-unpredictability-2a8d3eb768cf
- author_url
- https://medium.com/@eri.umezawa10
- status
- ok
- fetched_at
- 2026-06-09 15:37:30