Geo Split
Regional budget allocation for ecommerce teams: compute contribution by region after shipping, returns and duty, then move budget to where it actually earns.
Regional budgets get split on ROAS, which reads the same everywhere and means something different in each place. A region three days further from your warehouse costs more to ship to, returns at a higher rate because delivery estimates slip, and may carry duty the customer did not expect. Two regions at identical ROAS can be forty points apart on contribution. This skill computes contribution by region after shipping, returns and duty, then moves budget to where it actually earns.
What It Does
- Computes contribution per region after shipping, returns and duty.
- Reads delivery performance by region, since it drives the returns rate.
- Separates a region that is expensive to serve from one that converts badly.
- Finds the region where a higher ROAS target would still be profitable.
- Checks whether a region's weakness is fixable before recommending a cut.
- Reallocates budget between regions, with the contribution behind each move.
Use Cases
- Stop allocating regional budget on a number that ignores shipping.
- Find the region whose great ROAS disappears after returns.
- Set a different efficiency target for a region that costs more to serve.
- Decide whether to fix a region or stop spending in it.
Example Session
Should we keep spending the same in every region?
Two regions look identical on ROAS and are thirty points apart on contribution.
- Region | Spend | ROAS | Shipping and duty | Returns | Contribution
- Domestic, metro | $22,000 | 3.1x | 4% of revenue | 9% | 34%
- Domestic, remote | $8,000 | 3.0x | 14% of revenue | 11% | 19%
- Near export | $14,000 | 3.2x | 11% of revenue | 22% | 4%
- Far export | $6,000 | 2.9x | 19% of revenue | 26% | -8%
Near export converts as well as anywhere and returns at more than twice the domestic rate, because delivery runs a week longer than the site promises. That is a fixable problem and not an audience problem: change the promise before cutting the budget. Far export is negative and the shipping cost alone rules it out at current rates, so cut it now and revisit if you ever get regional fulfillment.
Why This Beats Prompting It Yourself
One ROAS Target vs Contribution By Region: The Hidden Risk
A generic prompt compares ROAS across regions and finds them broadly equal, which is exactly what it should find, because ROAS does not know what it costs to deliver to each one. Allocating on that number sends budget to a region losing eight cents on the dollar, and every campaign metric looks fine while it happens.
When You Still Need To Know The Problem Is Fixable
A weak region is either expensive to serve or badly served, and those need opposite responses. Near export is at 22% returns because the delivery promise is a week optimistic, which is a copy change. Cutting the budget instead would remove a region that becomes profitable the moment the promise is honest.
Known Limitations
Duty treatment depends on your incoterms and whether the customer or you absorb it, which the skill takes as configuration rather than inferring. Returns attribution to delivery performance is inference from timing correlation, strong enough to act on and not a controlled test. It recommends the reallocation and does not change budgets in any platform.
Install It
- Download the ZIP.
It is free and there is no account to create. - Unzip it into your agent's skills folder.
Claude Code reads ~/.claude/skills/, which is hidden by default: the command in the folder block opens it. Other agents scan their own directory, so drop the same folder there instead. - Ask your agent to use it.
Restart the agent if it was already running, then it picks the skill up with no config.
skills folder
Copy
~/.claude/skills/geo-split/
SKILL.md
references/region-costs.md
allocations/
# one file per review, with contribution per region
# macOS: create the folder and open it in Finder
mkdir -p ~/.claude/skills && open ~/.claude/skills
# Windows: paste in the Explorer address bar
%USERPROFILE%\.claude\skills\Frequently asked questions
How is this different from regional ROAS reporting?
ROAS is revenue over spend and is blind to what fulfilling that revenue costs. This subtracts shipping, duty and returns per region, which regularly turns a strong-looking region negative and is the only view that tells you where the next dollar belongs.
Which agents does the skill run in?
Any agent that supports the open SKILL.md format: Claude Code, Cursor, Codex CLI, GitHub Copilot, Gemini CLI, Manus, Grok and others load it unmodified. The format is portable, the location is not. Each agent scans its own skills directory, so you drop the same folder into whichever one yours uses. There is no config file to edit and no API key to provision.
What does it need connected to work?
Spend and revenue by region, shipping cost per order, returns by region, and duty treatment. Delivery timing data is what makes the returns diagnosis possible and is optional.
Why not just cut the negative region?
Because negative can mean expensive to serve or badly served, and only the second is worth fixing. The skill separates them: far export is structurally expensive and gets cut, near export has a fixable promise problem and gets a copy change instead.
Should each region have its own ROAS target?
Yes, and that falls out of this analysis. A region costing 14% of revenue to serve needs a higher ROAS to reach the same contribution as one costing 4%, and setting a single target across all of them guarantees over-spending somewhere.
What is included with the skill?
The skill itself, the region cost reference, the allocation format, and the returns attribution method. It is free and security scanned. We re-publish the ZIP when the model changes, so download it again if your splits start shifting.
Contribution margin by region, not ROAS by platform.
Polar joins spend, shipping and returns per market in one semantic layer, so moving budget between regions rests on margin your finance team recognizes.
<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"How is this different from regional ROAS reporting?","acceptedAnswer":{"@type":"Answer","text":"ROAS is revenue over spend and is blind to what fulfilling that revenue costs. This subtracts shipping, duty and returns per region, which regularly turns a strong-looking region negative and is the only view that tells you where the next dollar belongs."}},{"@type":"Question","name":"Which agents does the skill run in?","acceptedAnswer":{"@type":"Answer","text":"Any agent that supports the open SKILL.md format: Claude Code, Cursor, Codex CLI, GitHub Copilot, Gemini CLI, Manus, Grok and others load it unmodified. The format is portable, the location is not. Each agent scans its own skills directory, so you drop the same folder into whichever one yours uses. There is no config file to edit and no API key to provision."}},{"@type":"Question","name":"What does it need connected to work?","acceptedAnswer":{"@type":"Answer","text":"Spend and revenue by region, shipping cost per order, returns by region, and duty treatment. Delivery timing data is what makes the returns diagnosis possible and is optional."}},{"@type":"Question","name":"Why not just cut the negative region?","acceptedAnswer":{"@type":"Answer","text":"Because negative can mean expensive to serve or badly served, and only the second is worth fixing. The skill separates them: far export is structurally expensive and gets cut, near export has a fixable promise problem and gets a copy change instead."}},{"@type":"Question","name":"Should each region have its own ROAS target?","acceptedAnswer":{"@type":"Answer","text":"Yes, and that falls out of this analysis. A region costing 14% of revenue to serve needs a higher ROAS to reach the same contribution as one costing 4%, and setting a single target across all of them guarantees over-spending somewhere."}},{"@type":"Question","name":"What is included with the skill?","acceptedAnswer":{"@type":"Answer","text":"The skill itself, the region cost reference, the allocation format, and the returns attribution method. It is free and security scanned. We re-publish the ZIP when the model changes, so download it again if your splits start shifting."}}]}</script>
