Docs / Content

Editing content & the edited flag

How per-site overrides work, what survives regenerate-all, and when to use reset vs reroll.

How content lands on your site

Every brand site has ~15 long-form fields per casino × every enabled locale — introduction, banking section, sportsbook overview, FAQ, etc. At site-bootstrap time the platform runs a spintax template through a deterministic per-tenant seed and stores the result in site_casino_content (scc for short). That stored row is what the public render reads. Spintax never runs at request time.

The bootstrap is per-tenant: two sites on the same casino get two different outputs because the seed is siteId:casinoId:lang:field. No two brand sites ship identical paragraphs.

The edited flag

Every scc row carries an edited flag. The platform sets it the moment you open the cabinet's content editor and save a change. From that point on:

  • Regenerate all won't overwrite edited rows. Your changes survive.
  • Per-field regenerate on an edited row prompts a confirm dialog — you have to actively choose to discard your edit.
  • The cabinet shows a small edited badge on every row that's been touched.

Generate vs Reroll vs Reset

Three buttons, three different intents:

  • Generate — runs only on empty scc rows. Creates a fresh materialised paragraph from the current spintax template + facts. Used right after adding a new locale or assigning a new casino.
  • Reroll — runs on populated rows. Re-resolves the spintax with the same seed, picking a different branch. If the row was edited, the cabinet asks first.
  • Reset — deletes the scc row entirely. Next public render falls back to the runtime-spintax engine for the two synthetic fields, or shows nothing for the rest until you Generate again.

The badge legend

  • Amber "needs review" — generated but not yet edited.
  • Green "ok" — edited (your hand-curated text).
  • Neutral / empty — no scc row exists; Generate to create one.

These map to the editorial workflow: bootstrap a site → it's all amber → you triage, eyeball, edit → cells flip green → ready to deploy.

UI strings vs content

There are two layers of editable text. Content (what this guide covers) is the per-casino-per-locale prose. UI strings are the localised labels — button text, headings, footer link names. Both live under per-site overrides; UI strings are edited at Strings in the cabinet, content at Content.

What does "Regenerate all" actually do?

It iterates every scc cell where edited=0 and re-runs the spintax template against the current catalog facts. Useful when you've updated a casino's licence, payment methods, or any other fact that's referenced via variables — the non-edited prose picks up the new data automatically.

I edited a row by accident. How do I get the generated version back?

Click Reroll on the row and confirm the discard. The platform regenerates from the spintax template with the original seed — but be aware the new output won't necessarily match the pre-edit text, since spintax is a probability tree, not a single fixed string.

Can I import content from elsewhere?

Not via the UI yet. If you have a corpus you want to bring in, ping us — we can bulk-import on the back-end and mark every row as your curated copy so it survives every catalog refresh.