There’s a useful split lurking in this. For narrow agentic work like retrieval over internal docs, structured classification, test scaffolding, deterministic refactor passes, a self-hosted 30B-class model can be fine and the inference economics work out at team scale. For multi-step planning and the harder agent loops, the frontier gap still shows up in the number of retries and the time-to-correct-answer.
The honest test is to pick the prompt category that’s costing you the most and benchmark something like Qwen 2.5 Coder 32B or DeepSeek V3 against whatever you’re paying for now. If the gap is small you’ve found your candidate. If it isn’t, you’ve at least costed the gap accurately rather than guessing at it.
The two costs people underestimate are the GPU box (plus a second one for the eval/staging path) and the maintenance overhead. Model picks go stale fast and someone on the team has to own that, or you end up shipping a Llama 3.1 stack into 2026 because nobody rebuilt the harness for whatever’s current.



I’d be a bit careful with the assumption that a good enough overarching doc stops the create feature getting rewritten when bulk-edit turns up. In my experience it usually doesn’t. Trying to design the whole thing up front so the later feature drops in cleanly is the old big-design-up-front problem, you end up guessing about the part you haven’t built. souperk and doo are right that it’s cheaper to expect the refactor and keep the steps small.
What the doc is genuinely useful for is the boundaries. Write down what the create part is allowed to depend on and hold it to that. If create only ever goes through a repo abstraction and never reaches into provisioning internals it doesn’t need, then bulk-edit comes in as a new module against the same boundary instead of a rewrite. When you do find the second feature forcing changes deep in the first, that’s nearly always the first one having coupled to something it never needed, and no amount of spec detail up front would have caught it. So I’d keep the design phase you’re after, just spend it on those boundaries rather than trying to predict the features you haven’t specced.
I wrote the boundaries idea up here if it’s any use: https://prickles.org/tenet/bounded-contexts/A6