A brand can layer its own persona schema over Mirror Panel's shared personas without changing the underlying panel. Demographic tilts assign values in aggregate; CSV imports pin exact people to exact values; and an uploaded value always wins over the rules.
How the overlay works
Open Brand Settings and use Persona attributes. A regular attribute adds a new brand-only field, such as familiarity or loyalty. A built-in override instead replaces a field already on the persona — such as occupation, region, or income bucket — in the persona data the model reads and in the dimensions used to group results. The shared persona record is never rewritten, so other brands continue to see the original profile.
The base distribution sets the panel-wide starting split for the attribute.
Demographic tilt rules shape that split for cohorts such as an age, gender, income, region, education, household, or race/ethnicity group.
CSV values pin named personas to exact values and take precedence over the base distribution and every tilt rule.
Think of resolution as CSV pin → demographic rules → base distribution. Removing a CSV pin hands that persona back to the rules; it does not delete the attribute.
Feature 1: demographic tilts
Use a demographic tilt when you know the shape of a group but do not need to identify every individual. Rules are statements such as “among the Midwest, 50% are Familiar or better.” They are not applied top to bottom: Mirror solves all stated rates together while preserving the panel-wide base distribution.
Add or edit an attribute, then define its ordered categorical levels or numeric bands. For categorical attributes, list levels from lowest to highest because “or better” follows that order.
Set the base shares for the entire panel. These shares remain a constraint when cohort rules are added.
Choose Add rule, select one or more demographic values under Among, enter the rate, and choose whether it means exactly that level or that level or better.
Choose Preview rules. Check the realized split, Asked versus Achieved for every rule, and the intersection groups the rules create — including groups you never stated directly.
Save only after the preview matches your intent. If the closest possible fit is approximate, Mirror names the misses and asks you to accept the best-effort fit explicitly.
Both stated rates are met, but the intersection table reveals where the solver placed the remaining personas. This is why Preview is part of the authoring workflow.
Overlapping rules can produce a surprising intersection even when every stated rate is exact. Read the groups below the rule table, not only the panel-wide split.
Feature 2: CSV import
Use CSV import when first-party research, CRM data, or another source tells you the value for a particular persona. First save the attribute schema, then use Uploaded values at the bottom of Persona attributes.
Choose Download template. Keep each persona_id unchanged. Columns beginning with an underscore are read-only context and are ignored on upload; a _field_current column shows the value the persona resolves to now.
Enter an allowed level or number in the writable attribute column. In Merge mode, leave a cell blank to leave its existing pin alone. Enter a dash or default to remove a pin so that persona falls back to the rules.
Choose Merge for a partial update. Choose Replace only when the file is the complete pinned set for every attribute column it contains. Replace discards every existing pin not supplied as a nonblank value in that column, so a blank or omitted persona is a removal even without a dash.
Select the file. Mirror validates the whole upload first and lists errors using the spreadsheet's physical line numbers. Nothing is written until every row is valid and you choose Apply to the panel.
The CSV workflow is separate from Save attributes: download, edit, validate, then apply the complete clean upload.
With Merge selected, the first row creates or updates a pin, the blank second row changes nothing, and default on the third row removes its pin. In Replace, that blank row would also remove an existing pin. The real template supplies the persona IDs; do not invent or edit them.
Advanced example: replace the income schema for one brand
Suppose a financial-services brand reasons about disposable-income tiers rather than Mirror's five census income buckets. It can replace income_bucket for its own studies while leaving the shared census profile intact.
Choose Add attribute, enable Override a built-in profile field (this brand only), and select Income bucket (income_bucket). The key must be the exact built-in field; it becomes permanent after the first save.
Label it Customer income tier. Define three ordered levels: constrained (Constrained), comfortable (Comfortable), and affluent (Affluent). A starting base split might be 35%, 45%, and 20%.
Add a tilt using the original income conditions Under $30k and $30k-$60k, and say 70% are exactly Constrained. Add another saying that, among the original $150k+ cohort, 70% are exactly Affluent.
Preview the fit and inspect the overlaps. Save the schema, then use CSV pins for first-party exceptions — for example, a known customer whose disposable-income tier should be Affluent regardless of the rules.
Run a new study. This brand's model prompt and result segments now use Customer income tier; other brands still receive the original income bucket.
Selecting Income bucket makes the attribute an intentional replacement rather than a separate annotation. Mirror fixes visibility to Shown to the model and keeps targeting enabled.
The original profile still controls census sampling. Selecting $150k+ in Pulse chooses personas from the shared census income bucket; it does not sample by this brand's replacement values. Target the custom Customer income tier attribute when you want the overlaid audience instead.
Guardrails and permissions
Built-in overrides are always shown to the model and always targetable, because result segments must describe values the model actually saw and must remain usable for a rerun. The attribute key cannot be renamed after save. Brand members can read the schema; anyone granted Brand settings: Read/write can preview, save, download templates, and apply or clear CSV pins.
Overriding age without age bucket, or age bucket without age, can leave those two fields inconsistent inside the same brand overlay.
An uploaded value that no longer matches the declared levels is parked rather than silently injected into prompts or charts; restoring the level can make it valid again.
Deleting an attribute also removes the active uploaded overrides attached to its permanent key, so treat deletion and re-declaration as a schema migration.
Start with demographic tilts for the broad panel shape, then add CSV pins only where you have person-specific evidence. That keeps the schema editable without giving up exact exceptions.