Nearly 100 PRs a Week Is Not the Point
A few weeks ago, I wrote a post joking that, with new models improving so fast, my PR velocity would accelerate to something ridiculous, like 32 PRs a week.
Uhh, that was an underestimate. By a lot.
I’ve shot far past the 32 PRs-per-week estimate. Over the last 2 weeks, I’ve merged nearly 100 PRs a week.
Damn, these models really can cook.
So what does it mean when code output increases by more than 1,000% (quantifiable), while landed-impact vibes hover around a 10% increase (qualitative)?
Structure and upfront design choices set the compounding loop
Digging into the PR numbers, most of this headline comes from personal projects. That’s because I’ve heavily invested in the right up-front infrastructure to set AI projects up for success.
When I start a new project, it’s simple and streamlined to get that in place because I have a tool for quickly bootstrapping new projects called harness-scaffold. That provides a good starting point for an “AI-native” coding project.
It’s much easier to start from the right place than to retrofit an existing slop-ified project.
Even before then, I’ll sit down and think through the real questions. What am I building? What am I not building? What are the things that must remain true? Where are the boundaries of the system?
And yes, if that sounds like a spec, congratulations, you are correct.
I’ve found that building out a spec ahead of time, one that’s particularly human-readable, is useful for keeping the project focused and stopping the AI agent from slop-ifying it with each new PR.
On top of that infrastructure, it’s built around useful context-engineering principles. I have a context-engineering plugin I’ve invested heavily in that streamlines this and avoids context rot.
As for what that looks like: the ingredients are lean AGENTS.md files throughout the project, non slop-ified docs with good information architecture, and capturing project state with a SPEC.md and decision records.
Keeping the context updated keeps the project from growing stale and allows LLM-generated code to not buckle under its own weight.
Beyond context engineering, get the validation right. This is the more important piece to prioritize first.
My typical process is to take the first pass, and then actually dogfood the product. From the dogfood, you can translate what you learn into more complex validation infrastructure.
Proof: I Put My Dog in My Coding Agent, a TUI-based project for a pi extension to add sprites (most importantly, yes my dog). That means actually running the TUI end to end, driven by an agent. Screen capture what it’s doing. Make sure everything renders correctly.
To wit: run the real user flows and confirm that the code does what it should, not just that random tests pass. USE THE CODE YOU SHIP controversial.
Once this is in place, the next PR becomes safer; confidence is higher that it actually does what it needs to.
Let the compounding commence. Context + validation infra + human thinking → projects that grow stronger, not dumber.
A platitude: Make the task dumb so the model can be smart.
Does this translate to a work environment?
Yes, but I have not seen people master this skill yet, myself included.
This goes back to The Shiny Object Trap. The true skill that differentiates human judgment from AI output is deciding what not to do and what is worth working on.
Obviously, a chasm between the requirements of a personal project and organizational work. Personal projects are often low risk and completely autonomous. Work projects involve higher risk and bottlenecks: don’t break prod, talk to the right people, coordinate appropriately and ship across overlapping areas of ownership.
I will say, the validation infrastructure still transfers. Investing in context and validation within an area of ownership lets me prove ideas much faster.
The harder skill to master is knowing when to coordinate.
Match the level of expertise to the ambiguity.
The goal is to reduce ambiguity at the earliest possible stage. That means reaching out to the right expert for feedback at the right time.
Maybe the uncertainty is whether the problem is worth solving at all: talk to the PM. Maybe the design crosses into a system owned by another team: bring those engineers in while the idea is still cheap to change.
This is not a new problem. It has existed for as long as companies have. AI can help us handle it better, but so far, most of the evidence I have seen is people using AI to make it much, much worse.
No smoke, a real-life example (anonymized because work is work). I identified a bottleneck affecting my teams and set aside time to think through a technical solution. Wow what a boring way to say solve a problem, but true.
This was not on the roadmap, and I did not immediately let AI run away and build something.
Once I had put on a human thinking hat to determine that yes, in fact, this was worth doing, the investments I had made in context and validation made it easy to prove the technical feasibility quickly. The initial prototype was thousands of lines of code, but built in less than a day.
Rather than hand off the entire prototype, I used AI to turn it into two things.
The first was a clean, readable one-pager. It explained the problem and the proposed solution, then laid out the supporting evidence and where I needed coordination.
And, this might be controversial, but I read it and edited it myself. Repeatedly.
The second artifact was a stack of five focused PRs that I had, once again, reviewed and iterated on myself. Only two required partner-team expertise, with roughly 250 lines of relevant code to review instead of the entire prototype.
This was probably the easiest I have ever built alignment around a cross-cutting systemic change of this size.
Since this is a real problem, people were interested quickly. The document gave them enough context to make a decision. The well-structured PR stack let the needed reviews focus only on the part that was actually relevant and small enough to do quickly. PR reviews submitted same day.
Coordination that lands in a day instead of a hopeless backlog item, that’s a good sign.
So, the short version: the compounding loop applied to work. I spent my human time on making the coordination happen at the right time, at the right level. AI made the human decisions easier. It could not make those decisions for us.
There is more code flying around than ever
I can almost guarantee a similar experience has happened to you in recent months. You get a PR request from someone, open it up, and see “generated by XYZ coding agent” at the bottom.
The PR description is AI slop and the lines of code are in the thousands. It’s clear that this person has, at best, done one pass on the code itself. They’re pretty sure it works, but they have minimal understanding of it.
Now the burden is on you, or whoever the relevant expert is, to reconstruct all that missing context during review and accept the cognitive burden of thousands of lines to review.
This sucks. Can we do better?
My hope: collaborate more, early, and coordinate to match the level of expertise to the ambiguity and chop it down early.
Bring that coordination up front before letting AI run wild.
- Are we working on the right thing? Here’s my idea.
- What assumptions might be wrong? Oh, I completely misunderstood how the system works, then back to the drawing board.
- This is where the system boundaries and ownership look like they’re headed. Is that correct? Is it safe?
I often talk about front-loading your thinking when working with AI. Increasingly, it seems like you should front-load your coordination as well.
This is why, long term, it makes sense to double down on the same practical patterns that have led to high-performing teams in years past: small teams, deep context, stable ownership.
Why?
Small teams are positioned for success with:
- Building and owning their compounding loops
- Maintaining context as their codebase changes quickly
- Learning the art of collaboration and coordination together in a post-AI-coding world
The goal is not to slow down code output, but to improve the relationship between output and impact.
And dare I say it? The relationship between your teammates?
We’ve learned how to increase code output 10x. We’re still learning how to increase impact even 2x.

Functionally correct code, awful software to experience.

Legally required to show a graph view when Obsidian is mentioned. Each node is a note, each edge is a frontmatter link. Not very useful for day-to-day, but it does look cool.




