My merged PRs per month, averaged over each whole job. Bloomberg: 2018–2021, 31 months, about 250 PRs (a rough count, not pulled from an API). PostHog: May 2021 – January 2025, 3.7 years, 859 PRs across 25 repos. Tano: January – September 2026, 8 months, 1,638 PRs in one monorepo.
Swipe sideways to see the whole chart.
Running total of my merged PRs, counted from the day of my first merged PR at each company. Tano passed my 3.7-year PostHog total on day 139.
Swipe sideways to see the whole chart.
My merged PRs in each month of each job, on the same scale. Month 1 is May 2021 at PostHog and January 2026 at Tano. PostHog peaked at 42 PRs in April 2023; Tano at 363 in August 2026.
Rates use each tenure's full span. Lines exclude lockfiles, test snapshots and generated files.
| Metric | PostHog | Tano | Change |
|---|---|---|---|
| Throughput | |||
| Merged PRs | 859 | 1,638 | 1.9× |
| Repositories | 25 | 1 | |
| PRs per 30 dayswhole tenure | 18.9 | 207 | 11.0× |
| Best 8-month stretchPostHog: Feb–Oct 2023 | 235 | 1,638 | 7.0× |
| PRs per day with a merge | 1.8 | 11.7 | 6.4× |
| Most PRs merged in one day | 7 | 44 | 6.3× |
| Most PRs merged in one week | 15 | 151 | 10.1× |
| Lines added per 30 days | 2,899 | 102,239 | 35.3× |
| Lines added, best 8 months | 24,064 | 807,689 | 33.6× |
| PR size | |||
| Median lines added per PR | 42 | 229 | 5.5× |
| Median files changed per PR | 3 | 6 | 2× |
| Commits per PRbefore squash | 6.0 | 3.2 | 0.53× |
| Deletions per line added | 0.27 | 0.20 | slightly lower |
| Speed and review | |||
| Median time, open to mergePostHog main repo alone: 6.0 h | 15.1 h | 0.7 h | 21× faster |
| Merged within one hour | 23% | 57% | +35 pts |
| Slowest quarter of PRs take longer than | 71 h | 2.5 h | 28× faster |
| Review threads per PRTano count includes an automated reviewer | 1.44 | 1.23 | slightly fewer |
| Teammates' PRs I reviewed or commented on | 1,589 | 67 | 24× fewer |
| Teammates' PRs reviewed per merged PR | 1.85 | 0.04 | 45× fewer |
| Teammates' PRs reviewed per month | ~35 | ~8 | 4× fewer |
| PRs later reverted | 2.3% | 0.4% | 6× fewer |
| What goes into the diff | |||
| Share of PRs that add features | 36% | 52% | +16 pts |
| Share of PRs that fix bugs | 37% | 30% | −7 pts |
| Test code as share of lines added | 53% | 42% | −10 pts |
| Documentation lines writtenMarkdown and MDX, incl. posthog.com docs and blog | 2,949 | 24,750 | 8.4× |
| Distinct commit scopesthe (scope) in feat(scope): | 75 | 231 | 3.1× |
| Distinct directories touchedfirst three path levels, all repos | 706 | 533 | 0.75× |
Sorted by conventional-commit scope and title keywords. Categories are approximate.
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.
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%.
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.
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.