Everyone tweaks bids every day. The only choice is a person or a policy. People bring mood, memory, and the bias from the last account they touched. Code brings the same rule to the same situation every time. After running accounts both ways for years, we treat the daily bid change as policy, not discretion.
Our bleeder rules are simple. When a target stacks clicks with zero orders, the engine cuts on tiers. At five or more clicks the bid is multiplied by 0.9, at ten or more by 0.4, at twenty or more by 0.2, and at thirty or more by 0.1. The tiers match the strength of the evidence. Five clicks without an order is weak, so we trim lightly to keep delivery. Ten clicks is a real signal, so the bid drops hard. By thirty clicks the target has had a fair shot and keeps only a token bid. We cut rather than pause, because a paused target stops producing data, and a target at a tenth of its bid stays alive, keeps its history, and can be raised later when product or season changes the math.
The other half is the anchor. When the engine sets a new bid, it starts from the target's actual CPC minus five cents, not a multiple of the old bid. Your bid is a ceiling. Your CPC is the truth. A target bid at two dollars that clears at ninety cents is not a two dollar keyword, and any math that starts from the bid keeps that fiction alive. Anchoring to CPC makes the ladder move off what the auction actually charges. One floor stays in place. A bid never drops to Amazon's lowest suggested bid, because that level is where delivery goes to die, and a bid that buys no impressions teaches you nothing.
Rules are only as good as their inputs, so the data path gets its own build. Our extraction layer at the public tool archive pulls advertising reports on schedule and normalizes them into the shape the bid logic consumes, so the rules hit complete and current numbers instead of whatever someone last exported.
Treating bids as code means rule changes ship like a deployment. Our production engine runs a pinned deployment rather than the latest edit, so every rule change goes out as a new version that is promoted on purpose, and a bad idea can be rolled back to the exact behavior that came before it. The engine fires on a trigger every fifteen minutes inside a daily runtime budget, and it logs the health of every run, so when something looks off We are debugging a record instead of reconstructing a memory.
Code makes accountability real. A bid change made by hand is an opinion that evaporates the moment it is done. A bid change made by code is a policy with an author, a history, and a diff. When a month goes badly, we do not interrogate our past self about what We were thinking, because the repository already knows.
← Back to all posts