> ## Documentation Index
> Fetch the complete documentation index at: https://levers9.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Culture pack and rubric

> What a good reply is, for one market, in one file

Each market (each tenant) has a culture pack. It is the single source of what "good" means there; the judge,
the simulator and the prompt update all read it. The files in `lab/rl/culture/*.yaml` are samples: each is
seeded into the workspace's registry the first time it is seen, and from then on the registry copy is what
every reader uses and what the **Environment** tab edits. An edit survives a rollout (it used to be written
back into the file on the pod, which the next deploy put back).

## What is in it

| part | what |
| - | - |
| **rubric** | the dimensions a reply is scored on (for Saudi real estate: dialect fidelity, respect and adab, factual accuracy, progress to a viewing, family and decision-makers, prayer and calendar awareness, compliance and safety), each with a weight, cue phrases that are rewarded or penalised, and the guidance Train adds to the prompt when reviewers tick that reason |
| **guardrails** | must and never: things a reply is penalised for regardless of the rest |
| **personas** | the simulated customers the Arena plays: name, city, mood, hidden need, a staged script for the mock |
| **v1 prompt** | the baseline policy every tenant starts from, with one seed example |

## Editing

The pack is edited in the registry, from the Environment tab except where noted (the `words` reports use and
the `calendar` go through the API for now):

* **Rubric and guardrails**: weights, cues and guidance in the rubric editor, or **Draft from your playbooks**:
  paste scripts, policies and screenshots and a draft rubric comes back for you to review before saving. After
  saving, press **Rescore all calls** so existing scores follow the new rubric; scenarios regroup on the next
  **Regroup**.
* **The world itself**: name, language, dialect, currency and the market summary.
* **v1 prompt and examples**: what the first version of a new world starts from, and what a reset comes back
  to. It is policy material, so it sits under **Policies** (What v1 starts from), not under Environment.
  Versions already made keep their own prompt; to write a version by hand, use **New version from this one**
  under a version in Policies.
* **Customers**: the simulated personas, each with a mood, a starting trust, what they say first, hidden
  needs and what a good call gets them to. Used where no real call exists.

**Download as YAML** gives the pack back in the shape the samples ship in, so a world can live in a repo and be
reviewed, and **Back to the shipped sample** restores the file's copy (calls, versions and picks stay). The
same over the API: `PUT /api/rl/packs/{id}` with any of `name`, `summary`, `language`, `dialect`,
`currency`, `calendar`, `baseline_system`, `personas`, `seed_examples`, `words`; `PUT .../rubric`;
`GET .../export`; `POST .../reseed`.

> [!WARNING]
>
> In a YAML sample, a `description:` whose value contains a colon followed by a space must be quoted, or the
> pack fails to load and every reply scores zero.

## Adding a market

Either create a world in the dashboard, or copy an existing sample under `lab/rl/culture/`, change the rubric
and personas, and add a tenant in `lab/rl/tenants.yaml` pointing at it; the new file is seeded on the next
deploy. The webhook accepts that tenant's app id from then on. See [Call logs](https://levers9.mintlify.site/lab/call-logs.md#tenants).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.