// design
ABM Program Design
Use when the user is setting up or fixing an account-based marketing program - deciding how many accounts to target, how to tier them, how many touches each tier gets, and whether the team can actually run it. Also use when the user mentions ABM, account-based marketing, target account program, 1:1 or 1:few or 1:many, account tiering, named accounts, or "our ABM program isn't producing pipeline". Checks capacity and coverage together and names which of the two is the binding constraint.
npx skills add sarojkjha/aaj-marketing-skills --skill abm-program-design// when to use it
Use when the user is setting up or fixing an account-based marketing program - deciding how many accounts to target, how to tier them, how many touches each tier gets, and whether the team can actually run it. Also use when the user mentions ABM, account-based marketing, target account program, 1:1 or 1:few or 1:many, account tiering, named accounts, or "our ABM program isn't producing pipeline". Checks capacity and coverage together and names which of the two is the binding constraint.
// what you give
The pipeline target and period, average contract value, how many hours a week the team can genuinely give ABM, and per tier the account count, touches per month, minutes per touch and the engagement, opportunity and win rates
// what you get
A viability verdict, hours needed against hours available, expected pipeline against target, the binding constraint named, the list the team could actually run, and hours per opportunity by tier
ABM Program Design
ABM programs rarely fail because the accounts were wrong. They fail because the list was sized to hit the pipeline target and the team was sized by whoever happened to be free, and nobody multiplied the two together.
Three months in, the Tier 1 accounts are getting Tier 3 treatment, the personalised work everyone agreed to has quietly stopped, and the programme is reported as "needs more time".
When to use
The user is standing up an ABM program, re-tiering an existing one, being asked how many accounts to target, or trying to work out why a running program is not producing pipeline.
Do not use this before there is an account list with a fit score behind it. A capacity model over a list nobody validated just tells you how long it will take to do the wrong work.
Before you start
- Read the brand/product context (
.agents/product-marketing.md) for the ICP the account list should already reflect. - Get the real hours. Not headcount - hours a week those people can genuinely give ABM after their existing work. This is the number people inflate, and inflating it is what produces the plan that collapses in month three.
- Get the rates from your own history if you have any: what share of targeted accounts engage, what share of those become opportunities, what share close. Use benchmarks only as a placeholder and say so.
- Get the tier definitions, including minutes per touch. A Tier 1 touch that takes forty minutes and a Tier 3 touch that takes three are different programs sharing a name.
Method
An ABM program has to clear two independent tests, and teams usually plan for one.
Capacity. Accounts times touches times minutes, against the hours that actually exist. This is arithmetic, and it is where most programs are already lost on the day they launch. A list at 260 per cent of capacity does not run at 260 per cent - it runs at 100 per cent and silently drops the rest, usually the personalised Tier 1 work that justified the program.
Coverage. Accounts times engagement rate times opportunity rate times ACV, against the target. This is the number the plan was built around, and it is the easier of the two to hit on paper.
The binding constraint is the answer. Over-committed and under-sized need opposite fixes - cut the list, or widen it - so a program that is both is not a planning problem, it is a target problem. The engine names which one binds rather than reporting two ratios and leaving you to guess.
| Tier | Shape | What it buys | What it costs |
|---|---|---|---|
| Tier 1 | 1:1 | Genuine relationships in the accounts worth most | The most hours per opportunity, by a wide margin |
| Tier 2 | 1:few | Clustered by industry or use case, part-personalised | Middle of both |
| Tier 3 | 1:many | Programmatic coverage and air cover | Cheapest per account, weakest per account |
Hours per opportunity is the comparison nobody runs. A Tier 1 opportunity can cost ten times a Tier 3 one. That may be entirely right - it may be the only way into the accounts that matter - but it should be a decision rather than something discovered afterwards.
Workflow
Step 1 - Fix the target and the period. One pipeline number, one window. Without them there is nothing to test coverage against.
Step 2 - Get the honest hours. Ask what else those people own. If the answer is "a lot", halve the number you were given before modelling it.
Step 3 - Tier the list. Accounts, touches per month, minutes per touch, per tier. Use the fit
score from target-account-list rather than intuition.
Step 4 - Run the model. Both tests at once. Read the verdict before the detail.
Step 5 - Move one of the three. If it is not viable, the movable things are the target, the team, or the rates. Adding accounts is only a fix when capacity has room.
Step 6 - Set the review. Re-run monthly with actual engagement rates. Rate drift is what turns a viable plan into a missed number, and it shows up in the model before it shows up in pipeline.
Run the tool
node resources/abm-design.js --demo
design(cfg) returns the capacity ratio, the coverage ratio, the binding constraint, the list the
team could actually run at the current mix, and hours per opportunity by tier. Rates are proportions
between 0 and 1; passing 45 instead of 0.45 is rejected rather than absorbed.
Use the engine rather than a spreadsheet built for the occasion. The point is that both tests run every time - a spreadsheet built to justify a list will only ever compute coverage.
Present the result
- The verdict and the binding constraint, in one line, before any numbers.
- Capacity: hours needed against hours available, and the shortfall in hours.
- Coverage: expected pipeline against target.
- The list they could actually run, when the plan is over-committed. This is usually the most useful output on the page.
- Hours per opportunity by tier, so the tier mix is a decision.
- Which of the three you are proposing to move, and why that one.
Guardrails & common mistakes
- Do not accept headcount as capacity. Two people at "50 per cent on ABM" is almost never forty hours. Ask what else they own and model the number that survives that answer.
- Do not plan a list you cannot touch. An account on a list nobody contacts is not coverage, and it inflates every ratio that depends on account count.
- Do not fix an under-sized program by adding accounts when capacity is already tight. That is the change that looks like progress and guarantees the personalised work stops.
- Do not use benchmark rates without saying so. Label them as placeholders. A program justified on somebody else's conversion rates is a forecast of somebody else's business.
- Do not let Tier 1 quietly become Tier 3. It is the most common silent failure: the treatment degrades, the label does not, and the read-out blames the accounts.
- Do not model in percentages. Rates are proportions. The engine rejects a rate above 1 because a 4,500 per cent engagement rate should stop the run, not scale the answer.
- A target that needs five times the list is a target problem. At that multiple, stop modelling the list and go back to the number, the ACV, or the rates.
Related AAJ resources
- Full method: https://aajconsult.com/playbooks/abm-playbook
- Building and scoring the account list: https://aajconsult.com/playbooks/icp-account-scoring
- Scoring accounts by fit: https://aajconsult.com/tools/icp-fit-scorer
- Checking the pipeline it has to feed: https://aajconsult.com/tools/pipeline-forecast-calculator
Related skills
target-account-list— the fit-scored list this program runs onpipeline-and-forecast— whether the resulting pipeline covers the numbercold-email-sequence— the touches themselves, once the tiers are set
// faq
// install
npx skills add sarojkjha/aaj-marketing-skills --skill abm-program-design// worked example
Get the worked example for ABM Program Design
One email. The filled-in config, the output, and how to read it.
// human in the loop
Need a human in the loop?
AAJ builds the strategies, tools, and playbooks these skills are made of — with engagements for growth-stage and enterprise teams.
Skills