# Your Rules, Readable

*Published 2026-10-02* | Author: civic-team

> **tl;dr** "Transparent scoring" is a claim. Readable rules are a test, and the test has three questions for each part of what you own: can you read it in plain words, can you change it without a ticket, and can you see what your change did. In Bryn, the profile, the weights, and the Plays all pass, and one detail is worth saying out loud: today only industries, sizes, and countries move the fit score. Edit a rule and Bryn re-evaluates the accounts it already knows, so the change applies retroactively. Then run the same test on whatever scores your accounts today. The part that fails first is the part you are renting.

## The renting test

On Wednesday, Chris drew a line through the growth stack in [Build the Brain. Buy the Infrastructure.](https://www.civic.com/field-notes/build-the-brain-buy-the-infrastructure) The part a growth team should own is its judgment: the ideal customer profile, the signal weights, and the response rules. If a vendor runs those and you "cannot read them, change them, or take them with you," you have rented your intelligence.

That line is easy to agree with and hard to check. Most vendors say their scoring is transparent. So here is a test instead of a claim. For each of the parts you own, ask:

1. **Read.** Can you read it in plain words, without asking anyone?
2. **Change.** Can you change it yourself, without filing a ticket?
3. **See.** Can you see what your change did to the accounts you already have?

Below is where each answer lives in Bryn. We held ourselves to the same test, which means saying where a field is recorded but does not yet count.

## The profile

The profile is your definition of a good account. In Bryn it has six fields: industries, sizes, countries, company types, regions, and stages. At setup, Bryn proposes a draft from your website and you confirm it or correct it; Tuesday's piece on [onboarding run by an agent](https://www.civic.com/field-notes/onboarding-run-by-an-agent) walks that step.

Here is the detail readable rules require us to say plainly. Today, only industries, sizes, and countries compile into the fit score. Company types, regions, and stages are recorded on the profile and do not move the score. A workspace without a profile scores nothing on fit at all. If you tune the stage field and nothing changes, that is why, and we would rather you read it here than find it by experiment.

Where you read it: each account's detail page shows the score broken into fit, intent, and timing, so you can see how much of an account's standing comes from who it is.

## The weights

The weights are your judgment about which behaviors matter for your product. Bryn's score is a blend of fit, intent, and timing, and each signal carries its own weight inside intent. In plain lines, a team's weights might read (illustrative, not a benchmark):

- `blend: fit 0.40, intent 0.35, timing 0.25`
- `signal.pricing_view: +3`, `signal.comparison_view: +2`, `signal.docs_view: +1`
- `signal.careers_view: -2`

That last line is the useful one. Since September 3, a per-signal weight can be negative, so a signal can suppress intent instead of adding to it. A visitor who spends the session on your careers page is usually a candidate, not a buyer, and a negative weight says so in one line.

One distinction keeps the weights honest: the score is a gate, not a cause. Plays fire on signals. The score decides whether a Play may run on that account. A high score with no signal does nothing, and a strong signal on an account below the gate is held back. When you read a weight, you are reading how wide a gate is, not what starts the work.

## The rules

The response rules are Plays. A Play names its parts, and it reads the way it runs:

> pricing → comparison → repeat (7d) → Slack, Approve mode

Unpacked, that is a trigger (a signal pattern: pricing, then comparison, then a repeat visit inside seven days), conditions (a fit floor, a score gate, and, if you want it, a UTM campaign match), a mode (Run or Approve), and an output (a Slack channel, an email, a CRM task, an outbound step). The operator's authority lives in the Play and its approval, which is the argument of [Approve Mode Is Not a Speed Bump](https://www.civic.com/field-notes/approve-mode-is-not-a-speed-bump): the mode is one more field in the rule you wrote.

Where you read it: the account detail page shows which Play each account matched, beside the score that let it through.

## What changes when you edit

The third question is the one that is easiest to skip. You change a weight, and the new number applies to tomorrow's visitors while every account you already scored keeps its old standing. The rule you can read is no longer the rule your accounts were judged by.

Since September 24, when you update your rules, Bryn re-evaluates existing accounts so the change applies retroactively. Take fintech out of the profile and the fintech accounts already in your workspace lose fit on re-evaluation, and any Play they matched on fit stops matching. Push the careers weight further below zero and an account with careers traffic in its sessions can drop under the gate, though the Play itself has not changed. Since this week, enrichment fields that a source stops providing are removed, so an account is not carrying a value nobody vouches for anymore.

And the record is there to read. The edit lands on the audit log as a modification, like every change. Account pages show which enrichment source supplied each field, along with a full decision history. Every audit log entry can show the source event and how it was mapped. [Monday's relaunch piece](https://www.civic.com/field-notes/bryns-first-big-leap) covers the richer record; here, the account page is where you read an account's standing after the re-evaluation.

Try it below. Each tab holds one part as plain config lines, a plain reading beside them, and one control. Change it and watch which of six invented accounts re-evaluate, and why.

YOUR RULES, READABLE (interactive: three tabs, Profile / Weights / Rules; each shows the config as plain lines beside a plain reading, with one control; a panel re-evaluates six invented accounts on every edit and says what changed and why)
PROFILE. industries: [software, devtools, fintech]; sizes: [small, mid-size]; countries: [US, CA]; company_types: [privately held] (recorded); regions: [north america] (recorded); stages: [series a, series b] (recorded). Plain reading: a good account is in software, devtools, or fintech, is small or mid-size, and is in the US or Canada. Only those three fields move fit today. Company type, region, and stage are recorded on the profile and do not move the score. In this illustration, industry is worth 0.40 of fit, and size and country 0.30 each. Control: a switch, "Fintech is in the profile", on by default.
WEIGHTS. blend.fit: 0.40; blend.intent: 0.35; blend.timing: 0.25; signal.pricing_view: +3; signal.comparison_view: +2; signal.docs_view: +1; signal.careers_view: -2. Plain reading: score is 40 percent fit, 35 percent intent, 25 percent timing. Intent here is the sum of an account's signal weights, scaled to 0 to 1. A careers page visit subtracts 2 from intent: it suppresses, because a careers visitor is usually a candidate. The score is a gate, not a cause. Plays fire on signals; the score decides whether they may. Control: a range for signal.careers_view from -3 to +3, default -2.
RULES. play: pricing-revisit-intro; trigger: pricing then comparison then repeat (7d); when: fit at least 0.70 and score at least 0.75; utm_campaign: any; mode: approve; output: slack #growth-signals. Plain reading: when an account views pricing, then a comparison page, then comes back within seven days, and it clears fit 0.70 and score 0.75, post to #growth-signals. Approve mode: the Play puts the final click with a person, so each match is prepared and held for one click. No campaign filter on this Play. A UTM campaign match is one more condition you can add. Control: a select for the Play's mode, Approve (default) or Run.
CURRENT EVALUATION OF SIX INVENTED ACCOUNTS (default rules):
- Lanternfish Payroll (held for one click): fit 1.00, intent 0.50, timing 0.80, score 0.77. Matches pricing-revisit-intro. Prepared and held for one click in #growth-signals.
- Quillmoor Analytics (held for one click): fit 1.00, intent 0.83, timing 0.90, score 0.92. Matches pricing-revisit-intro. Prepared and held for one click in #growth-signals. Fit unaffected by company type (public company): recorded, not scored.
- Brassbell Devtools (no Play): fit 1.00, intent 0.67, timing 0.60, score 0.78. No Play. No pricing then comparison then repeat (7d) pattern; a score of 0.78 alone starts nothing. Fit unaffected by stage (seed): recorded, not scored.
- Okapi Freight Software (under score gate): fit 0.70, intent 0.50, timing 0.70, score 0.63. Signal fired. Score 0.63 is under the 0.75 gate, so the Play does not run.
- Tidewell Health Billing (under fit floor): fit 0.60, intent 0.83, timing 0.90, score 0.76. Signal fired. Fit 0.60 is under the Play's 0.70 floor (industry healthcare is not in the profile).
- Juniper Kiln Labs (no Play): fit 0.70, intent 0.33, timing 0.50, score 0.52. No Play. No pricing then comparison then repeat (7d) pattern. Fit unaffected by region (europe): recorded, not scored.
On each edit the panel reports how many of the six changed, with the before and after fit or score, whether a Play now matches or no longer matches, and, for a profile edit that touches only recorded fields, "Fit unchanged: recorded, not scored."
(illustrative accounts and weights, not a benchmark) Account names are invented.
Figure 1. The profile, the weights, and the rules as plain lines, with six invented accounts re-evaluated on every edit (illustrative accounts and weights, not a benchmark).

THREE THINGS YOU OWN (static figure: the profile, the weights, and the rules as plain config lines with a one-line reading under each)
PROFILE, who counts (six fields, three scored). Scored (moves fit): industries: [software, devtools, fintech]; sizes: [small, mid-size]; countries: [US, CA]. Recorded (does not move fit): company_types: [privately held]; regions: [north america]; stages: [series a, series b]. Reading: only industries, sizes, and countries move fit today. The other three are recorded, not scored.
WEIGHTS, what matters (a blend, then each signal). Blend: blend.fit: 0.40; blend.intent: 0.35; blend.timing: 0.25. Per-signal: signal.pricing_view: +3; signal.comparison_view: +2; signal.docs_view: +1; signal.careers_view: -2. Reading: a negative weight suppresses intent. The signal starts a Play; the score gates it.
RULES, what happens next (one Play, by its parts). When: play: pricing-revisit-intro; trigger: pricing then comparison then repeat (7d); when: fit at least 0.70 and score at least 0.75. What happens: utm_campaign: any; mode: approve; output: slack #growth-signals. Reading: the Play fires on the signal, the score decides whether it may, and the final click lives where the Play says.
Illustrative config and weights, not a benchmark; not any workspace's live settings.
Figure 2. Three things you own, in plain lines (illustrative, not a benchmark).

## Take it with you

Chris's line has a third verb. Today the profile, the weights, and the Plays are readable in the app, over the API, and through the [Bryn MCP server](https://docs.civic.com/bryn/mcp), so your own agent or script can read the rules the same way you do. The audit log exports. None of it lives in a vendor's head.

## Run the test on Monday

Take whatever scores and routes your accounts today, a vendor, a spreadsheet, or a model your team built last quarter. For the profile, the weights, and the response rules, answer the three questions: read it, change it, see what changed.

Write down which question fails first. That is the part you are renting. It applies to homegrown builds too: a scoring script only its author can read fails the first question as surely as a black box does.

## Where to read more

The fields and the blend are documented at [ICP and scoring](https://docs.civic.com/bryn/icp-and-scoring). Plays, their conditions, and their modes are at [Plays](https://docs.civic.com/bryn/plays). Every behavior in this piece carries a date in the [changelog](https://docs.civic.com/bryn/changelog).

Yesterday Brad opened The Growth Team of One with the job nobody wrote down. The rules are the part of that job you can write down, and read back.

Bryn is not another dashboard to watch. It is the governed execution layer that runs Plays through your stack.

**Stop watching signals. Start running them.**

Source: https://www.civic.com/field-notes/your-rules-readable
