For a long time, every task in our mobile agentic pipeline went to the same model. Writing an architecture doc? Opus. Pulling email addresses out of a config file? Also, Opus. Nobody decided that on purpose. It was the default, and defaults tend to stick around. It cost us about $25.57 per user story. The Flutter project rebuilds had 43 stories, so that project came to $1,099.57. Not a disaster. But we wanted other teams using the pipeline, and when I did that multiplication in a spreadsheet, I didn't love what I saw.
Honestly the gates annoyed me more than the money. After each phase the pipeline stopped and waited for someone to read the output and click approve. Maybe 45 seconds if that person was at their desk. If they weren't, the run just sat there. Most of the time the output was fine, and everyone knew it. I found the Recursive Language Models(RLM) paper (Zhang, Kraska and Khattab, MIT CSAIL) not long after it went up on arXiv at the end of December 2025. My first read was a skim, I'll admit. I went back to it a week or so later because one part kept bugging me.
The pitch, roughly: stop forcing the whole input into one giant prompt. Let a root model look at the task, split it up, and fire off smaller sub-calls. Their answers land in a REPL as ordinary variables, and the root model works with those instead of the raw text. What got me wasn't the recursion. Nothing in that setup says the sub-calls have to use the same model as the root. If most sub-calls are just reading and summarising, why pay frontier prices for them? That was when the cost problem and the design problem stopped being two separate things in my head.