This page is the method. The two maps linked below are the method applied twice, to two different offers, so the pattern is visible rather than described. Take all three, run the steps against the offer you are analyzing, and the output is a third map in the same shape.
Three links. Open the two maps in other tabs and keep this one beside them. Each step below says what to do, why it exists, what it produces, and then shows how it was done on each map.
Cold outreach fails in a predictable way: a list is bought, one message is written for everyone on it, and volume is pushed until the domain burns. Replies are low because the message is true of nobody in particular. The map exists to make the opposite happen: every account is in exactly one campaign, every campaign has a reason to exist that is visible in the data, and the first line of every email says something about that specific account that the recipient knows to be true.
A single page that holds the whole plan, with every number traceable to a public source or a script. Market size, the grid of who sits where, the fields we can merge into copy, the pain we can measure, the copy itself, the volume math, the cost, and the calendar. If a number on the page cannot be recomputed, it does not belong on the page.
It is not a deck, not a persona document and not a list of guesses about what the buyer feels. Every claim about pain is either measured in a filing field or labeled as an assumption. The page distinguishes the two in writing so that nobody downstream mistakes a hunch for a fact.
The person approving spend (how many, what it costs, what it projects), the person writing the sequences (fields, variants, triggers), the person loading the sequencer (groups, cadence, caps) and the compliance reviewer (every line of copy, the footer, the banned words). One page serves all four, so nobody works from a stale copy.
Everything downstream depends on two questions answered precisely: what does the offer actually do, mechanically, and who in the market has a reason to care this quarter rather than some day. Spend the first block of time here. The maps look like data projects; they are offer projects that use data.
A short internal brief: mechanism, compliance lock, buyer and blockers, the clock, the public records, the industry vocabulary. On the Section 125 map that brief was a separate document written before any data was pulled and it is cited on the page as the source for the ICP and the compliance rules.
Mechanism. Advisory to employers that sponsor a defined benefit pension plan: funding, risk transfer, termination and PBGC premium exposure. Clock. The plan year end and the actuarial valuation that follows it; the PBGC premium filing. Public record. Form 5500 with Schedule SB (funding) and Schedule H (assets). In the room. CFO, plan committee, the actuary, the investment consultant. Vocabulary. Funded status, section 436 restrictions, variable rate premium, freeze year. The page's copy was reviewed against those terms specifically.
Mechanism. A Section 125 cafeteria plan under which employees elect a fully insured supplemental health plan pre tax, which may lower the employer's taxable wage base and FICA share going forward. Compliance lock. No dollar savings figure until the IRS position is settled in writing, no "free", no guarantee, "recapture" never alone, CPA reviews first, existing plan and broker stay. Clock. The medical renewal date, which is on Schedule A. Public record. Form 5500 with welfare code 4A and Schedule A. In the room. Owner or CFO, HR, the broker of record, the CPA.
The market is counted, not estimated. Start from the full public file, apply each filter one at a time, and write down the count after every filter so the funnel is auditable. A reader should be able to see exactly where a company fell out and why.
A universe file, one row per account, with a stable key (EIN, plan number), the filter log, and a funnel table on the page. Everything after this step reads from that one file.
Universe from Form 5500 pension filings: a master ranked list of 15,239 defined benefit sponsors, with 4,882 scored and enriched plans forming the working market on the page, grouped into five segments. Source: the QPS enrichment pipeline and the command center grid the map reads from.
| Filter, in order | Count |
|---|---|
| 2024 Form 5500 filings, all | 226,436 |
| Welfare code 4A (health) | 68,533 |
| Single employer, US, not final, one per EIN | 58,448 |
| Not collectively bargained | 57,569 |
| Insured or mixed funding | 55,193 |
| 100 to 499 participants: the universe | 37,489 |
| of which 100 to 249 | 25,438 |
Source: DOL EFAST2 F_5500 2024 "Latest" file dated 25 September 2026, script tam.py. 8,298,957 participants across the universe.
The grid is the heart of the map. Two axes, every account in exactly one cell, every cell assigned to a campaign. The axes are not chosen for neatness; they are the two things that most change what you would say to the account and when you would say it.
A group column on the universe file, a grid on the page with a count and tag in every cell, and a campaign list with one line of definition each.
Five campaigns, taken from the command center grid that already classified the pension market by segment. The map inherits the grid rather than rebuilding it, and each campaign on the page carries its own copy set, sequence and count. The grid stays the single source; the map reads it back.
| Campaign | Definition | Employers |
|---|---|---|
| A1 | Insured, renewal in Q1 | 2,478 |
| A2 | Insured, renewal in Q2 | 4,218 |
| A3 | Insured, renewal in Q3 | 3,329 |
| B1 | Q4, 100 to 249, income tax state, target industry | 4,802 |
| B2 | Q4, 250 to 499, income tax state, target industry | 2,084 |
| B3 | Q4, income tax state, other industry | 7,746 |
| B4 | Q4, no income tax state | 3,423 |
| C | No medical contract on Schedule A (self funded) | 9,409 |
Source: script yoy.py, groups.json. Q4 holds 18,055 of 28,080 insured plans (64%) and 24,721 of 37,489 by plan year end (66%), which is why Q4 is split four ways and the other quarters are not.
Enrichment has two tiers. The first is free: every field on the public record that can be merged into copy. The second costs credits: names, verified emails, LinkedIn profiles. The map lists the free tier completely, with coverage, before a single credit is considered, because the free tier is what makes the copy specific and the paid tier only makes it deliverable.
{{firstName}} is missing, what goes in its place. If {{brokerCommission}} is missing, the sentence is dropped. The fields table on the map is the contract between the data and the copy.The custom fields table (field, source, coverage, use in copy, fallback), a universe file enriched with the free tier, and a cost calculator with the paid tier priced per row.
Free tier from the pension filing: plan size, funded status and liability figures, plan year end, actuary and the freeze year where present. Paid tier: the enrichment pipeline that found the CFO or plan contact per sponsor, which is what the 4,882 scored plans carry. Links on the pension map use one UTM scheme so replies read back into the command center.
| Field | Coverage | Use |
|---|---|---|
| Participants (headcount) | 100% | Sizing sentence, rounded to ten |
| Industry from NAICS | 99.9% | Variant choice, retention line |
| Broker of record | 97.6% | "Your broker stays", broker track routing |
| Headcount change vs 2023 | 90.4% | Trigger first line |
| Policy end date (renewal) | 74.8% | Campaign assignment, subject line |
| Broker commission | 64% | One sentence in CFO email 2, dropped if missing |
| Filing signer name | 45.6% | Fallback for first name |
| Premium | 13% | Not relied on |
| First name, verified email | 0% | Paid tier, priced on the page |
Source: join.py and yoy.py over the 2023 and 2024 files. Paid tier priced at the vendor's published credit schedule; no credits were spent at the analysis stage.
There are two kinds of pain on a map: pain you can see in a field, and pain you believe is there. Both belong on the page, but they are labeled differently and used differently. Measured pain becomes a trigger line and a score. Believed pain becomes a paragraph in the body and a hypothesis to test by reply rate.
A flag table with shares, a score table with weights, a score column on the universe file, score bands per campaign, and the audience split into buyer, blocker and channel.
Measured pain on the pension record: funded status below the thresholds that trigger section 436 restrictions, the PBGC variable rate premium exposure that a liability figure implies, and a plan frozen in a known year. Each is a field or a derivation from one, and each became a campaign angle with the source labeled, after a copy review corrected how PBGC, section 436 and the freeze year were stated.
| Flag, measured on 33,906 matched employers | Share | Score |
|---|---|---|
| Broker of record changed | 24.9% | 15 |
| Headcount down 10% or more | 18.3% | 15 |
| Headcount up 15% or more | 17.0% | 15 |
| Carrier changed | 14.9% | 20 |
| Waiver rate 25% or more (all rows) | 15.7% | 10 |
| First year on Form 5500 (all rows) | 9.6% | 10 |
| Fit: income tax state, target industry, 100 to 249, Sch A medical | 10, 10, 5, 5 | |
| Obstacle: consolidator broker | 41.2% | minus 10 |
A1 result: 2,478 employers, 1,757 carrying at least one flag that scores, 64 at 70 plus, 379 at 50 to 69. Source: yoy.py, s125-universe-scored-yoy-stats.json.
Copy is the last step, not the first, because by now the writer knows exactly who is being written to, what is known about them, what date they are already thinking about, and what cannot be said. The copy is a matrix: a variant for each fit segment, a trigger line for each measured flag, and a track for each audience that is not the buyer.
A copy file per campaign group with the segment to variant map, trigger lines, the base variant, the diffs, the blocker track, the re entry and the footer; the same copy rendered on the map under each campaign.
Five copy sets, one per segment, email and InMail, in the cold copy voice the practice settled on: demand, do not sell; no softeners; the first line names a fact from the plan's own filing; no breakup theatrics. Reviewed against the founder's transcripts so the vocabulary is the one the buyer uses.
Four variants, seven trigger lines, a broker track, a re entry and a footer, for 2,478 A1 employers. Source: S125-A1-Copy.md and the campaigns section of the map.
With the groups counted and the copy written, the plan is arithmetic. The map carries it as editable calculators so the person approving spend can change a rate and see the result rather than ask for a new deck.
Volume, replies, meetings and signed engagements with editable rates; the year worked pass by pass; twelve month Gantt; launch milestones; a meetings panel for the next seven days read from the live system; the numbers and plan behind the campaigns.
Volume, replies, meetings and signed employers with editable rates; what it costs to reach them with the credit schedule editable; the next twelve months campaign by campaign; behind the page with the claims register and the DOL file dates.
Run these in order against the offer you are analyzing. Each line is done when the artifact beside it exists. Skip none; a map with a step missing is the thing that fails quietly.
| Done when | Artifact | |
|---|---|---|
| 0.1 | The mechanism is written in one paragraph a skeptic accepts, with the rule or statute cited | Internal brief |
| 0.2 | The compliance lock exists: banned words, banned claims, who must review first | Internal brief |
| 0.3 | Buyer, blockers and channels are named; the clock is named | Internal brief |
| 0.4 | The public record that names buyer, date and size is identified, and its filing rules are read | Internal brief, source list |
| 1.1 | The raw file is pulled fresh for this offer, with the file date recorded | Raw data folder |
| 1.2 | Filters applied one at a time with a count after each; codes checked against the layout document | Funnel table, tam script |
| 1.3 | One row per account with a stable key; exclusions listed with reasons | Universe file |
| 2.1 | Timing axis and fit axis chosen and justified in a sentence each | Grid section |
| 2.2 | Assignment rule written as code; every account in exactly one campaign | group column, groups file |
| 2.3 | Grid on the page with a count and tag in every cell | Grid section |
| 3.1 | Every usable field inventoried with coverage and use in copy | Custom fields table |
| 3.2 | Schedules joined; prior year pulled and diffed | join and yoy scripts |
| 3.3 | Paid tier priced per row and per group; zero spend until the group is chosen | Cost calculator |
| 4.1 | Each claimed pain mapped to a field or marked assumed | Pain section |
| 4.2 | Flags defined with thresholds; share of market measured for each | Flag table |
| 4.3 | Additive score documented; campaigns ranked; score bands counted | Score table, ranked file |
| 5.1 | Sequence fixed: days, channels, caps | Sequence section |
| 5.2 | Base variant in full; other variants as diffs; one trigger line per flag | Copy file |
| 5.3 | Blocker or channel track; re entry; footer; compliance scan at zero | Copy file |
| 6.1 | Volume and cost calculators with every rate editable and labeled | Plan and cost sections |
| 6.2 | Twelve month Gantt placed by the clock | Calendar section |
| 6.3 | Claims register and sources; page hosted; every number recomputable | Behind the page |
Fill this in for the offer you are analyzing and give it, with the two example maps, to whoever or whatever is building the page. It is the complete input. Everything on a map is derived from these fields plus the data pull they point to.
OFFER Name: Mechanism (one paragraph, skeptic proof, rule or statute cited): Compliance lock (banned words, banned claims, who reviews first): Buyer (title): Blockers: Channels: The clock (the date the buyer is already thinking about the subject): MARKET Public record that names buyer, date and size: Its filing rules (who must file, who is exempt, thresholds): Filters in order, with the field and code for each: Exclusions and why: Size bands in scope: GRID Timing axis (field, how it is bucketed): Fit axis (one or two fields, how they split the message): Assignment rule (in order, each account to one campaign): Campaign names and one line definitions: FIELDS For each merge field: source field, meaning, coverage, use in copy, fallback Joins needed (schedule, key): Prior period to diff against: Paid tier: what is bought, credit schedule, which group first PAIN Pains the offer brief claims, in its ranking: For each: the field or diff that would show it, or "assumed" Flags with thresholds: Score weights (flags, fit, obstacles): COPY Sequence (days, channels, caps): Segments to variants: Trigger lines, one per flag, in priority order: Blocker or channel track: Re entry angle and cycle cap: Footer: PLAN Default rates (delivered, reply, positive, meeting, close) and their source: Inbox and sequencer costs: Calendar by campaign: Sources and scripts to list behind the page:
| Claim | Source |
|---|---|
| Section 125 funnel, groups, flags, coverage, scores | DOL EFAST2 F_5500, F_SCH_A, F_SCH_A_PART1, 2023 and 2024 "Latest" files dated 25 September 2026; scripts tam.py, join.py, yoy.py |
| Cafeteria plans do not file | IRS Notice 2002-24 |
| Small welfare plan exemption under 100 | 29 CFR 2520.104-20 |
| Firms by size | Census SUSB 2022 |
| Section 125 mechanism and compliance lock | Internal offer brief, 27 October 2026 |
| Pension map structure, five segments, copy voice | qps-campaign-map.pages.dev and the command center grid it reads |
It is the process description for building a campaign map, with the two existing maps as its worked examples. It is not a claim about the Section 125 offer's tax outcome, which stays subject to the compliance lock, and it is not a change to either example map. Both are linked as they stand on 30 October 2026.
This page once, top to bottom. Then the pension map for the shape and the voice. Then the Section 125 map for the data method, because its scripts and funnel are the most recent and the most fully documented. Then the spec above, filled in.