Analyze Allocations With an AI Agent
PlaidCloud’s MCP server exposes your allocation models to AI agents, so once an allocation has run you can ask about its results in plain English from an MCP-connected chat — Claude Code, Claude Desktop, Cursor, ChatGPT, or any MCP-compatible client. The agent reads your allocation model directly, so it already knows how each cost line is built and what drives it.
What You Can Ask
Section titled “What You Can Ask”Why an Allocation Changed
Section titled “Why an Allocation Changed”The most common question — compare two periods and explain the movement:
Why did the revenue-allocated cost line change from January to February?
The agent returns:
- The size of the change — before, after, and the delta.
- What drove it — whether the input cost pool grew or shrank, or the driver mix shifted.
- The top contributors — the accounts, cost centres, or products that moved the most.
Drill Into One Slice
Section titled “Drill Into One Slice”Narrow the same question to a single member to get a precise breakdown:
Explain just the Operations cost centre.
The agent separates the two effects — how much came from the overall pool moving versus the slice’s share of it changing. For example: Operations fell because the pool shrank, even though Operations took a larger share of it.
Where the answer is that the share moved, it names the driver that share is split on, and states the share either side — “the shift in this slice’s share of the pool (split on the revenue driver; this slice’s pool share went 23.2% to 29.3%)”. That is the part you can act on: a share is a result, a driver is an input someone owns and can check. The two figures are that same share of the pool, stated rather than left for you to go and look up. They say whose share they are because they are not a share of the driver column, and the two can differ completely: a slice can hold a perfectly flat share of the driver across both years while its share of the pool falls eight points, so reading the pair as the driver’s would send you to reweight an input that never moved. The driver is named without figures wherever that share is not a sensible percentage. A slice can hold more than all of a pool, or less than none of it, once the pool carries credits or reversals that net against each other — a loss-making line is the common case — and “this slice’s pool share went 11.1% to 900.0%” reads as broken rather than informative. The driver is still the lever there, so it is still named. And a step with no driver at all has none to name, so the sentence reads as it always did.
The other two explanations are deliberately left alone: where the answer is that the pool as a whole moved, or that the value arriving changed, the driver is not the mechanism and naming it would point you at the wrong input.
Where Values Come From, and What They Feed
Section titled “Where Values Come From, and What They Feed”Trace an allocation’s lineage in either direction:
Where does this cost line come from?
What does the GL cost pool feed downstream?
The agent lists the upstream sources and drivers, or every downstream step the table feeds — across allocations and the transforms between them.
What Drives an Allocation
Section titled “What Drives an Allocation”Is revenue used as a driver, and where?
The agent lists each step that uses the table as a driver — the basis for the split — versus an input, the values being spread.
What a Change Would Do
Section titled “What a Change Would Do”Ask a forward-looking question:
If revenue rises by 1 million next quarter, which cost lines are affected?
The agent names the affected outputs and an estimated size for each — split across a fan-out by each result’s current share of the pool, so the per-target figures add up rather than each showing the whole change. You can also scope the question to one target — “what would a $1M revenue rise do to Customer A?” — and the estimate is applied to just that slice.
What Allocations Exist
Section titled “What Allocations Exist”What cost allocations are in this project?
The agent lists the allocation models and their final output tables — useful for orienting yourself in an unfamiliar model.
Understanding the Answer
Section titled “Understanding the Answer”Every explanation is labelled with how confident the agent is in it — and, just as importantly, it flags when a confident-sounding number would mislead. Those warnings are carried into the plain-language summary itself, not buried in the detail, so you see them before you act on the figure.
Where a table carries several value columns, that label is an average across them, weighted by how much each column moved — and any column the agent is less confident about is named first, ahead of the overall figure: “Confidence in this attribution: medium for net_contribution (mostly clean); high overall across 4 columns”. Read the first level, not the last. A summary column is the difference between the others, so it is usually the smallest mover and carries the least weight in that average, while being the column the answer leads on and the one you are most likely to act on — on a real banking model it held about 6% of the weight. The column named is whichever one is weaker, which is not always the summary: where the agent chose a column to search for you, that is often the one it is less sure of. Where the columns agree, and for a single-column answer, you get one level as before.
A table that recombines several allocation branches is read the same way. That overall level is an average across the branches, weighted by how much each one moved, so a small branch whose attribution is shaky is outvoted by the large clean ones and the figure you take away is the average. Any branch the agent is less confident about is named first, ahead of that figure — “Confidence in this attribution: medium for Allocate Support Costs; high overall across 2 branches” — and its line in the per-branch breakdown carries its own level alongside it, so a branch the closing line names can always be found in the list. Where a branch covers several value columns, the column is named with it. Each branch’s line also states the two figures its change moved between — Allocate Support Costs: -$72,000.00 (from $120,000.00 to $48,000.00) — so a branch’s move can be judged against its own size rather than read as a bare amount, which on its own says nothing about whether it is most of a small branch or a rounding error on a large one.
A level marked against a column or a branch always means weaker than the answer overall. One that agrees with the overall figure, or is more confident than it, is left unmarked — a mark is a reason to be careful, never a reassurance.
Where an answer leads on a single figure, the opening line states the levels the change moved between, not only the percentage it moved by — net_contribution fell 23.5% (from -$12,917,012.01 to -$15,957,089.93). Read the direction word against those figures rather than on its own: where the value being traced is negative, “fell” means the number got further from zero, so that example is a loss a quarter bigger, not a profit shrinking. Because each answer states where it started and finished, two questions about the same slice in consecutive periods join up — one answer’s closing figure is the next one’s opening figure.
An answer whose opening line reports large rises and falls cancelling out states the pair too — “the net barely moved (3.7%, from $85,472,090.25 to $88,668,890.26), but that hides large offsetting movements up and down”. Those two figures are the pool’s, not the net’s, so they make that line’s point more plainly rather than softening it: $3.2M of movement inside an $85.5M pool is visibly nothing, where “barely” on its own was a judgement about a base the answer never showed you. It still tells you the net understates what happened and still sends you on to a single member. An answer reporting no material change carries the same pair, for the same reason.
An answer covering a table that recombines several allocation branches opens with that table’s own total. It used to open with a count and a direction alone — “across 4 recombined branches, all 4 fell” — on the reasoning that a recombined table has no single total to state. It has one: it is a real table, and the agent reads its total straight off it. So the line reads “the combined total fell 58.0% (from $34,621,164.20 to $14,535,705.89); across 4 recombined branches, all 4 fell”, and the year-on-year comparison resolves for these answers as it does for every other shape. The total is read from the table rather than by adding the branches up, because a branch that reaches the recombination by more than one route is listed once in the breakdown and counted more than once in the table. Where the branch figures do not come to the table’s own change, the answer says so and gives both — “the branch figures shown ($12,231,623.56) do not account for the combined change of $25,082,057.48” — rather than leaving you to add up a list that does not reconcile. Where the total genuinely cannot be read, the opening line reads as it did before and the answer states which condition stopped it: the branches allocate different value columns, or the recombined table does not carry the column being totalled.
One answer states no levels, and that is deliberate rather than an omission: a question the agent declines to attribute has no figure to give.
The attribution quality behind the confidence:
- Clean — the change was fully attributed to its drivers. This includes filtered allocations, those scoped to specific accounts: the filter is applied automatically, so the contributors are exactly the rows in scope.
- Partial — the agent can show what changed and where — the totals and top contributors are correct — but cannot fully attribute the why on its own. It tells you why, and what to ask next.
Warnings you may see attached to an answer:
-
A year-over-year comparison measured over a still-incomplete current period — or with no prior-year data to compare against, in which case it says there is no baseline rather than calling the change normal.
Where there is a prior year, the answer gives both halves of that comparison: whether the change was normal, elevated or extreme, and how it compares in size — “normal — 62% the size of last year’s move in absolute terms; last year moved +$6,183,330.15”, meaning the rise was smaller than the one before it. The word alone answers whether this is an anomaly; the size answers whether it is still accelerating, which is usually the question being asked. “In absolute terms” is there because the same line also carries a percentage change, and this comparison is between amounts, not between rates. It is also between sizes only, so where the two periods moved in opposite directions the answer says so rather than leaving you to assume they agreed.
Last year’s own move is stated, and it is worth reading before the multiple is. A comparison is only as meaningful as the year it is measured against, and a year in which large rises and falls very nearly cancelled out leaves a net close to nothing — so the year after it can be an ordinary one and still come out as a very large multiple. On a real insurance model a prior year that netted +$1,792,719.72, out of member movements of roughly $22 million each way, made an unremarkable following year read as “extreme — 1325%”. Naming what the multiple is measured against is what lets you tell a big move from a small comparand: the two amounts are both on the line, so the percentage between them can be checked. Where the two are too far apart for a ratio to be worth quoting you still get last year’s move and the direction, which is the case where it matters most.
-
A whole-group total that hides a member-level reshuffle underneath it.
-
A slice whose factors move together, so the headline percentages aren’t reliable on their own.
-
A change whose attributed pieces don’t add back to the reported total.
-
A what-if whose per-target impacts can’t simply be summed.
When a result is partial, the guidance usually points you to the slice drill-down above, which gives a real decomposition for a single member.
When the agent picks the breakdown for you
Section titled “When the agent picks the breakdown for you”Where you do not name a field, the agent tries each one it can and reports the strongest — and it now tells you how much strongest, naming the field that came second: “On that measure account scored about 2.0× the next candidate, line”. That margin is the difference between one dominant driver and three plausible stories of which the biggest was taken, and it is worth reading before you act on the field it chose. It is deliberately a comparison rather than a second percentage, because two percentages measured differently side by side is the confusion these answers work hardest to avoid. Where only one field could be scored the answer says so rather than referring to a runner-up that does not exist.
On a table with several value columns, the breakdown the agent suggests answers on the column the answer leads with, which is not always the column it searched. On one model the story was found in cost and the suggested breakdown came back about margin — a different column, led by a different programme, with a top figure an order of magnitude smaller. Both were correct. The suggestion now names both columns and warns that the leading member can differ too, not only the percentage, so a list that opens with an unexpected name is not read as a contradiction. Where the answer covers a single column the two are the same and no such warning appears.
Where the strongest member’s shift is larger than the whole net change — routine on a pool where large rises and falls cancel out — the answer gives that size as a multiple rather than an absurd percentage: “by more than the whole net change in share-shift terms (11.7×)”. Where even that cannot be stated sensibly, it explains what the two measurements are without promising that they will visibly differ.
Every answer also ends with suggested next steps, in the order most likely to help. Where the answer warns that large rises and falls are cancelling out, the first suggestion narrows the question to the single member behind the movement — the one whose own rise or fall is larger than the headline change — and running it gives that member’s own change, usually with the warnings cleared. The offer to break the change down by a field is kept below it, because on an offsetting result the breakdown mostly re-states the movement the answer has already shown you.
An answer spanning several recombined branches offers one of those branches to follow. The agent does not trace a question back past the point where branches meet, so this is where it hands the thread back to you: it names a branch and the table to trace to pick it up on its own. The branch offered is the largest mover among those it can name and did attribute — where it could attribute none of them it keeps its plain refusal instead — and it does not describe itself as the largest for that reason — the per-branch list above it already shows every branch’s move, so you can see the ranking for yourself.
Current Limitations
Section titled “Current Limitations”- Name the table and the period. “Why did
cost_line_revchange from 2025-01 to 2025-02?” gets a sharper answer than “why did costs change?”. - Pick a real before and after period with a movement you can sanity-check.
- If the agent analyzes the wrong table, name the project and table explicitly so it doesn’t have to guess.
Next Steps
Section titled “Next Steps”- Connect an AI Coding Agent — wire an agent to your workspace over MCP
- Allocation results — what the result table contains
- Troubleshooting allocations — when reconciliation fails