Most rec engines have a single-pass problem: they generate recommendations based on what's in the bulk sheet right now, and they don't account for the fact that the user might be about to make changes that invalidate those recommendations.
Imagine: a keyword is bidding $1.20 with an ACoS of 65% against your 35% target. The engine recommends a 25% bid cut. You apply it. Fine. But that same keyword has three search terms underneath it that have been bleeding spend — together, they account for 70% of the keyword's spend and 80% of its bad ACoS. If you also negate those three search terms (which the same cycle recommends), the keyword's remaining traffic is suddenly profitable at the current bid. Cutting the bid was the wrong move — except the engine had no way to know you were about to negate, so it made the call based on the data in front of it.
BulkSheet Pro solves this with two mechanisms operating at different time scales: the projection layer within a single session, and Change Impact across sessions.
The projection layer: keeping a single session honest
When you stage a negate from the Negate Terms → Rec Actions tab, BulkSheet Pro doesn't just queue the negative keyword for export. It also notes which parent keyword's metrics need to be adjusted, and it recomputes all downstream recommendations against the adjusted metrics.
Mechanically, the projection layer works like this. For every queued negate, the engine:
- Looks up the search term's contribution to its parent keyword's metrics — its spend, sales, orders, clicks
- Subtracts that contribution from the parent keyword's totals, producing an "adjusted" version of the keyword
- Allocates the same subtraction proportionally across the campaign's placements, producing adjusted placements
- Recomputes the bid and placement recommendations against these adjusted entities instead of the raw historical ones
The result: if you stage three negates that account for most of a keyword's bad ACoS, the bid recommendation for that keyword may soften (smaller cut) or dissolve entirely (no cut needed). The Sankey reflects this in the projection column — flows shift from "unchanged" toward "softened" and "dissolved." The tile counts on the Recommendations page drop. The math has updated to reflect what your account will actually look like after the negates are applied.
This is the projection layer in action. It runs continuously as you stage and unstage negates. There's no manual button to press — the layer recomputes on every change to the negate queue.
Why projection only models negates
The projection layer specifically models the impact of queued negates on downstream recommendations. It doesn't model the impact of queued bid changes on placement recommendations, or of queued placement changes on bid recommendations.
The reason is that bid and placement changes alter future performance, not past performance. Cutting a bid by 25% doesn't change what the keyword's ACoS has been historically — it changes what the keyword's ACoS will be going forward. The historical metrics in your bulk sheet are still valid for the data they represent. Negates are different: they tell us specific search terms shouldn't have been spending what they spent, so we can subtract that spend from the parent's totals as if those terms hadn't existed.
The projection layer is honest about this. It only adjusts for actions that retroactively change the interpretation of historical data. Bid and placement queues sit alongside the projection but don't feed into it.
What the projection-aware recs feel like in practice
The first time you stage a batch of negates and watch the Recommendations page update, the experience is satisfying. Twenty negates queued. The bid-rec tile count drops by four. The placement-rec tile count drops by two. The Sankey shifts from a heavy "unchanged" projection column to one with visible "dissolved" and "softened" bands.
You haven't applied anything to Amazon yet. You're still in your BulkSheet Pro session. The recommendations are recomputing as you work — showing you, in real time, that fixing the negate-able waste also fixes some of the bid and placement issues that came along for the ride.
The right cadence: stage negates first within a cycle. Then look at the bid and placement tiles. The counts you see now reflect the post-negate world, so you're not over-correcting.
Change Impact: closing the loop across sessions
The projection layer keeps a single session honest. Change Impact does the same job across sessions.
Change Impact is the feature that activates when you upload your previous session's JSON alongside a new bulk sheet. When both files are present, BulkSheet Pro has two snapshots of your account: what it looked like at your last export (in the JSON) and what it looks like now (in the new bulk sheet). Every change you made in the previous session — every bid raise, every bid cut, every placement adjustment, every negate, every new campaign — is recorded in the JSON. Now the engine can show you how each one performed.
The Change Impact panel appears at the top of the Actions page when both files are loaded. It's organized by change category:
- Bid raises — keywords you bid up, with their before/after spend, sales, and orders
- Bid cuts — keywords you bid down, with the same metrics
- Placement increases — placements you boosted
- Placement decreases — placements you cut
- Negations — search terms you blocked, with confirmation that spend dropped to zero
- Product pauses — products you paused, with confirmation they stopped spending
For each category, the panel shows an aggregate before/after view. Bid raises in aggregate: did spend scale where you wanted? Did orders increase? Bid cuts in aggregate: did ACoS come down? Did volume hold? Placement changes: did the placement-level ACoS shift in the direction you intended?
It's not predictive — these are the actual outcomes of changes you applied. Two weeks of real Amazon Ads performance, attributed back to the decisions that drove them.
The data window warning
For Change Impact to produce meaningful conclusions, the bulk sheet window matters. If you're looking at a 7-day bulk sheet, you've only captured a week of post-change data — too thin to draw confident conclusions about ACoS shifts or order trends. If you're looking at a 60-day bulk sheet, you've captured plenty of data but seasonal effects or other external changes may be muddying the attribution.
BulkSheet Pro shows a warning banner on the Change Impact panel when the bulk sheet window is below 14 days or above 45. The ideal window is 14–30 days — long enough to support honest aggregate-level conclusions, short enough that you're mostly measuring the impact of your changes rather than seasonality.
How projection and Change Impact differ
The two features look superficially similar — both are about "what happens when changes are applied" — but they answer different questions.
Projection asks: what would the recommendations be if the negates I'm queueing right now had already been applied to the historical data? It's hypothetical, instantaneous, and limited to the current session.
Change Impact asks: how did the changes I applied last cycle actually perform in the data window between then and now? It's retrospective, requires a session-JSON-plus-bulk-sheet pair, and shows real outcomes rather than projected ones.
Used together, they form a tight feedback loop. Projection prevents over-correction within a cycle. Change Impact validates the previous cycle's decisions before you commit to the new one. Each one closes a loop that, without it, would stay open.
What BulkSheet Pro won't do
It won't project across sessions. Once you export, the projection from your current session is locked into the JSON snapshot, but the new session starts with no projections. You start fresh each time. (The Change Impact panel takes over the role of "how did the past changes do" — projection isn't extended into the past.)
It won't attribute every metric change to your decisions. If your account ACoS came down two points between cycles, BulkSheet Pro can't tell you with certainty how much of that was your changes versus external factors. Change Impact shows aggregate before/after at the change-category level, but the wider account-level picture is influenced by many things beyond the rec engine's reach. A two-point drop on a 30-day window with major changes applied is encouraging; the same drop on a 7-day window with seasonal traffic shifts is less interpretable.
It won't preserve the Change Impact panel after you remove the JSON. The feature depends on both files being loaded. Drop the JSON, refresh, and the panel disappears. Re-upload the JSON to bring it back. Sessions are stateless in this way — what's in front of you is what's loaded.
It won't model harvested-campaign performance until you have data on them. A new campaign created by harvest in last session won't appear in Change Impact until enough time has passed for it to accumulate spend and orders. The session JSON records its creation, but if the new bulk sheet shows the campaign with $0 spend (because it was just launched), Change Impact correctly notes that no impact data is available yet.
The cycle that closes
Cycle 1: You set up your account, configure your rules, run the analysis, stage negates and bids and placements, export. Three files come back. You apply the upload file to Amazon.
Cycle 2 (a month later): You download a new bulk sheet. You drop the new sheet into BulkSheet Pro, and on the upload screen you also drop in the JSON from Cycle 1's export. The Change Impact panel populates — the 184 bid changes you made now have aggregate before/after data attached. You can see which changes worked, which didn't, and which are still too early to evaluate.
You start the new cycle's review with that context. You stage negates first; the projection layer recomputes bid and placement recs against the post-negate metrics. You commit the new set of changes, export, get three files back.
Cycle 3 (a month after that): Same flow. The Change Impact panel now shows the impact of Cycle 2's changes. Patterns start to emerge — your bid cuts on branded keywords tend to overshoot; your harvest campaigns take longer than expected to ramp; your placement adjustments are landing about right.
This is the loop closing. Each cycle informs the next. The projection layer keeps you honest within a session; the Change Impact panel keeps you informed across sessions. Without either, you're optimizing in the dark.