Merged pull requests · one author · two codebases

Same engineer.
Two eras of shipping.

PostHog25 repos: the app, SDKs, website, plugins · May 2021 – Jan 2025 · 3.7 years
Python, TypeScript, Rust, Ruby, PHP, Go · pre-agent
TanoTano monorepo · Jan 2026 – Sep 2026 · 7.8 months
TypeScript, Go, SQL · with AI agents
7.0×more merged PRs in eight months at Tano than in my best eight months at PostHog.1,638 vs 235 (Feb–Oct 2023)
139 daysto pass the PR total from my entire time at PostHog.859 PRs took 1,362 days
0.7 hmedian time from opening a PR to merging it, down from 15 hours.57% merge inside an hour, from 23%
Cumulative merged PRs

The Tano line passes a 3.7-year total in under five months

Days since my first merged PR in each repo. Hover to compare any day.

TanoPostHog

Swipe sideways to see the whole chart.

Merged PRs per month · same scale

My busiest PostHog month would be a slow week at Tano

Month 1 is each repo's first month. Both panels share one y-axis, so bar heights compare directly. PostHog peaked at 42 PRs in April 2023; Tano's busiest month was 363 PRs in August 2026.

Swipe sideways to see the whole chart.

Every metric I could pull

The ledger

Rates use each tenure's full span. Lines exclude lockfiles, test snapshots and generated files.

MetricPostHogTanoChange
Throughput
Merged PRs8591,6381.9×
Repositories251
PRs per 30 dayswhole tenure18.920711.0×
Best 8-month stretchPostHog: Feb–Oct 20232351,6387.0×
PRs per day with a merge1.811.76.4×
Most PRs merged in one day7446.3×
Most PRs merged in one week1515110.1×
Lines added per 30 days2,899102,23935.3×
Lines added, best 8 months24,064807,68933.6×
Shape of a PR
Median lines added per PR422295.5×
Median files changed per PR362×
Commits per PRbefore squash6.03.20.53×
Deletions per line added0.270.20slightly lower
Speed and review
Median time, open to mergePostHog main repo alone: 6.0 h15.1 h0.7 h21× faster
Merged within one hour23%57%+35 pts
Slowest quarter of PRs take longer than71 h2.5 h28× faster
Review threads per PRTano count includes an automated reviewer1.441.23slightly fewer
Teammates' PRs I reviewed or commented on1,5896724× fewer
Teammates' PRs reviewed per merged PR1.850.0445× fewer
Teammates' PRs reviewed per month~35~84× fewer
PRs later reverted2.3%0.4%6× fewer
What goes into the diff
Share of PRs that add features36%52%+16 pts
Share of PRs that fix bugs37%30%−7 pts
Test code as share of lines added53%42%−10 pts
Documentation lines writtenMarkdown and MDX, incl. posthog.com docs and blog2,94924,7508.4×
Distinct commit scopesthe (scope) in feat(scope):752313.1×
Distinct directories touchedfirst three path levels, all repos7065330.75×
What I worked on · share of merged PRs

From one product area in many languages to many products in one repo

Sorted by conventional-commit scope and title keywords. Categories are approximate.

PostHog 859 PRs

Tano 1,638 PRs

What the numbers say

Four things that changed

PRs got bigger and faster at once.

The median PR is more than five times larger, and it merges in 42 minutes instead of 15 hours. The gain is not from slicing work into smaller pieces.

Tests held; rework rose.

Test code is still 42% of what I add, and the revert rate fell from 2.3% to 0.4%. But about 14% of my PRs needed a follow-up fix within a week, up from 8%.

Writing moved next to the code.

At PostHog I wrote 2,949 lines of docs in 3.7 years, mostly on the public website. At Tano I wrote 24,750 in eight months: design docs, runbooks and the AGENTS.md files that tell agents how each module works.

Breadth changed shape.

At PostHog, breadth meant one product area carried across 25 repos: feature flags and experiments in the app, then the same logic in SDKs for six languages. At Tano it means separate products in one repo: an affiliate platform, AI agents, workflows, data migrations and Go workers.

Method and caveats
Monthly PR counts as a table