With the World Cup in full swing over in the US (Come on England!), I’ve been using the Everblossom alpha to generate little stories about me and my cat watching the matches. It’s been great fun - but it also surfaced a familiar localisation problem.
A story about “kicking a football and scoring a goal” would sometimes come back with an illustration of an American football sailing between gridiron posts. Ask for “chips” and you’d get crisps. Ask for a “biscuit” and you’d get… anything.
None of this was wrong. The models were doing a perfectly reasonable job -just for a different country than the one the reader lived in.
What started as a handful of quick fixes inside the image‑prompt code grew into something that deserved its own module. That’s how ReplicantCulture joined the ReplicantCore suite.
flowchart TD
subgraph Row1[ ]
direction LR
DASH[Dashboard]
APPS[Applications]
end
DASH --> GATEWAY["⠀⠀⠀⠀⠀⠀Gateway⠀⠀⠀⠀⠀⠀"]
APPS --> GATEWAY
subgraph Services[ ]
direction LR
A[ODE Auth]
B[ReplicantCore]
C[ReplicantResonance]
D[ReplicantGuard]
E[ReplicantNarrative]
F[ReplicantCulture]
end
GATEWAY --> A
GATEWAY --> B
GATEWAY --> C
GATEWAY --> D
GATEWAY --> E
GATEWAY --> F
%% --- Highlighting Styles ---
classDef highlight fill:#ffd966,stroke:#b8860b,stroke-width:2px,color:#000;
classDef faded fill:#e0e0e0,stroke:#999,color:#666;
%% --- Apply classes ---
class F highlight;
%% --- class DASH,APPS,GATEWAY,A,C,D faded;
Modern language and image models tend to settle on the most statistically common interpretation of an ambiguous word. For English, that centre of gravity is American English.
For plain text, this is usually survivable. But when you’re generating images, ambiguity becomes structural:
If the prompt contains a culturally ambiguous term, the model quietly picks the most common interpretation -and you end up with a mismatch between the reader’s locale and the generated image.
ReplicantCulture exists to make prompts visually unambiguous before they ever reach the image model.
The obvious approach would be to build a giant lookup table of every word in every dialect. That’s not realistic or maintainable.
ReplicantCulture takes a different path:
Think of it as a proof‑reader that knows which words might cause trouble, and when to ask for help.
Stories can drift in two places, so ReplicantCulture supports two complementary layers:
| Layer | Purpose | Where it’s used |
|---|---|---|
| Style guidance | Helps the story model write in the correct regional register | Story generation |
| Prompt disambiguation | Makes image prompts visually explicit for the reader’s locale | Image generation |
Each locale carries a short instruction string that nudges the story generator toward the right register. If a locale doesn’t need guidance, the instruction is empty. It’s a lightweight preventative measure that avoids a lot of drift before it starts.
This is where ReplicantCulture earns its keep.
For each supported locale, the module maintains a curated set of terms known to cause visual ambiguity. When an image prompt comes in:
The goal is simple: give the image model no room to wander.
Suppose a reader’s locale is set to en‑GB, and a story produces this prompt:
“After the match, the kids left their football boots by the roundabout and shared a packet of chips.”
ReplicantCulture would:
The flagged term is then handed back to ReplicantCore, which already understands the full scene and can resolve it using its own language model.
The result is a prompt that is visually precise, culturally aligned, and safe.
Whenever an image is regenerated because the first one didn’t match the reader’s locale, that’s valuable feedback. ReplicantCulture can record these misses, and over time they become candidates for new entries in the curated data.
All of this tuning is data, not code -new locales and refinements can be added without touching the underlying service.
For users, this is very simple to use.
The Auth and Account system already has the ability to set and change a time zone, so here we added the ability to set and change a Culture value directly on the account tab in the app and as part of the registration flow.
ReplicantCulture currently focuses on the image boundary, where ambiguity hurts the most. The next step is to close the feedback loop -turning recorded misses into suggested additions automatically, so the module can evolve from real usage rather than manual curation.
In a future post, I’ll cover how locale preferences flow through ReplicantCore - from the user’s account, through story generation, all the way to the image prompt - because getting the right locale to the right service turned out to be just as important as resolving the ambiguity itself.