Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Campaign Budget Allocator

A small, fast, instantly-demoable tool that splits a fixed marketing budget across channels using a Reach / Depth / Duration (RDD) scoring model — built specifically for small B2B implementation companies (software/ERP/CRM implementation partners, boutique technical consultancies) working with tight budgets, typically under €10K.

Used as a per-client deliverable in B2B marketing and growth consulting engagements: hand a prospect or client the spreadsheet, or walk them through the live web demo, and let the model show why a budget should be split the way it's split — not just hand down a fixed percentage.

The framework

Each channel is scored 1–5 on three dimensions:

Dimension What it captures
Reach How much of the client's ICP this channel can realistically expose them to
Depth How well this channel converts, or how strong the engagement quality is
Duration How long the value of the spend compounds (a referral relationship or a case study keeps working for years; a single webinar's lift fades in weeks)

A channel's weighted RDD score determines its proportional share of the total budget. Optional min/max spend guardrails per channel let a client say "always fund partner referrals" or "cap directory listings at €1,000," and the model redistributes the rest of the budget to compensate.

Default channel set (small implementation companies)

The default six channels are built around how small implementation companies actually win work — not broad-reach paid media, which rarely justifies its cost at this budget size:

  1. Partner & Vendor Referral Network — the software vendors a client implements for are usually the single highest-leverage channel: warm, pre-qualified referrals.
  2. LinkedIn Organic + Direct Outreach — near-zero cash cost, and the format decision-makers in this space actually pay attention to.
  3. Case Studies & Client Proof — one strong case study gets reused for years across the sales cycle.
  4. Vendor Marketplace / Directory Listings — being listed where buyers already search for a certified implementation partner.
  5. Small-Scale Webinars / Micro-Events — cheap to run, strong for depth of engagement with a narrow, already-interested audience.
  6. Google Search (Niche Keywords) — low spend, high intent, for the handful of searches a genuinely ready buyer would type.

These are a starting point, not a fixed list — re-score or replace them per client. All scores in this repo are directional estimates to recalibrate, not benchmarked data.

Repo structure

campaign-budget-allocator/
├── spreadsheet/
│   └── Campaign_Budget_Allocator_Implementation_Companies.xlsx   # the client-facing deliverable
├── allocator/
│   ├── core.py       # allocation engine (pure Python, no dependencies)
│   └── cli.py        # command-line interface
├── web/
│   └── index.html    # self-contained interactive demo (no build step, no backend)
├── examples/
│   ├── implementation_company_channels.csv   # default: small implementation-company set
│   └── saas_50k_channels.csv                 # alternate: generic SaaS/demand-gen set
├── tests/
│   └── test_core.py
└── README.md

The spreadsheet (primary deliverable)

spreadsheet/Campaign_Budget_Allocator_Implementation_Companies.xlsx is the client-ready version — no code, no installs, just Excel.

  • "How to Use" tab — explains the framework, why these six channels, and a step-by-step for adapting it to a specific client.
  • "Budget Allocator" tab — the working tool. Yellow cells are the only ones to edit: total budget, weights, channel scores, and optional min/max guardrails. A check row under the total flags immediately if a manual override no longer adds up to the total budget.

Workflow: duplicate this file per client engagement, rename it, and re-score the channels for that client's actual situation before sharing.

Quick start — CLI (optional, for your own tooling)

Requires Python 3.8+, no external dependencies.

git clone <your-repo-url>
cd campaign-budget-allocator
python -m allocator.cli --budget 8000 --channels examples/implementation_company_channels.csv

Tilt the model toward what matters most for a client using weights, e.g. to favor Duration (compounding value) over raw Reach:

python -m allocator.cli --budget 8000 --channels examples/implementation_company_channels.csv \
  --weight-reach 1 --weight-depth 1 --weight-duration 2

Quick start — live demo (no install)

Open web/index.html in any browser, or host it via GitHub Pages for a shareable link you can drop into a proposal or discovery-call invite. It runs the identical allocation logic client-side in JavaScript — edit channels, weights, or the total budget and the bars update live.

To publish via GitHub Pages: Settings → Pages → Deploy from branch → main → /web. Your live link will be https://<username>.github.io/<repo-name>/.

Running tests

pip install pytest
pytest tests/

Using this in client conversations

  • Discovery calls: pull up web/index.html or the spreadsheet, plug in the client's actual channel mix and last budget split, and let the RDD scores make visible where the current allocation doesn't match the underlying logic.
  • Proposals: attach the customized spreadsheet as a "here's the model, here's what it recommends" exhibit.
  • Positioning: this is intentionally a transparent, editable model — not a black box. Clients can see exactly why a channel got the share it did, and can push back on the scores themselves, which builds trust faster than a fixed percentage handed down from a template.

License

MIT — see LICENSE.

Releases

Packages

Contributors

Languages