Videos zMiSRliEzv4
Self Driving Products: Product Signals to Pull Requests — Joshua Snyder, PostHog
Scene timeline
40 shot(s).
keyframes kept every frame deduplicated
What was stored
- cues
- 192
- whisperx 192
- chunks
- 27
- from 192 cues
- keyframes
- 21
- kept of 40 captured
- frames with text
- 20
- 482 lines read
- chapters
- 0
- from the source metadata
- keyframe bytes
- 4.5 MB
- word timings on 192 cues
Provenance
| stage | state | model | started | took |
|---|---|---|---|---|
fetch |
done | — | 2026-08-11 10:49 | 1m 20s |
stt |
done | — | 2026-08-11 10:50 | 17s |
chunk |
done | — | 2026-08-11 10:51 | 0s |
text_embed |
done | — | 2026-08-11 10:51 | 0s |
keyframe |
done | — | 2026-08-11 10:51 | 1m 19s |
ocr |
done | — | 2026-08-11 10:52 | 8s |
frame_embed |
done | — | 2026-08-11 10:52 | 3s |
Frames, and what the machine read
-
- Al Engineer0.93
- EUROPE1.00
-
- PRESENTING SPONSOR0.99
- Google DeepMind1.00
-
- PLATINUM SPONSORS0.98
- # Braintrust0.95
- WorkOS OpenAI0.96
-
- PostHog1.00
- What if your product built itself?0.99
- Engineering the pipeline from product1.00
- signals to pull requests1.00
- Josh Snyder1.00
-
- PostHog1.00
- _ □ ×0.83
- The single platform to analyze, test,0.99
- observe, and delpoy new features1.00
- AIE1.00
- 山0.99
- Posthog1.00
- Session1.00
- Web1.00
- Product1.00
- Error1.00
- AI1.00
- replay1.00
- analytics1.00
- analytics1.00
- tracking1.00
- X0.59
- Experiments1.00
- Feature1.00
- flags1.00
- Logs1.00
- CDP1.00
- Workflows1.00
- Engineering the future of Al1.00
-
- How is observability changing?1.00
- Today1.00
- Tomorrow1.00
- AIE1.00
- ★1.00
- Signal happens1.00
- Signal happens1.00
- ★1.00
- ★1.00
- ★1.00
- → Metric changes in dashboard1.00
- → Background agent detects a change1.00
- → Human notices (hours/days later)1.00
- → Agent researches problem1.00
- → Human investigates in PostHog1.00
- → Agent creates a PR in the background0.99
- → Human writes a linear issue0.99
- → Ship feature behind a feature flag1.00
- → Human creates a PR0.99
- → Human reviews1.00
- → ship0.96
- Braintrust1.00
- WorkOS OpenAI0.94
-
- How is observability changing?1.00
- Today1.00
- Tomorrow1.00
- AIE1.00
- ★1.00
- Signal happens1.00
- Signal happens1.00
- ★1.00
- ★1.00
- → Metric changes in dashboard1.00
- → Background agent detects a change1.00
- → Human notices (hours/days later)1.00
- → Agent researches problem1.00
- → Human investigates in PostHog1.00
- → Agent creates a PR in the background0.99
- → Human writes a linear issue0.97
- → Ship feature behind a feature flag1.00
- → Human creates a PR1.00
- → Human reviews1.00
- → ship0.96
- AlEngineer0.97
- EUROPE1.00
-
- PostHog1.00
- _ □ ×0.81
- The pipeline1.00
- AIE1.00
- Ingest1.00
- Group1.00
- Research1.00
- Assess1.00
- Execute1.00
- ★1.00
- ★1.00
- Filter & standardize1.00
- Cluster related1.00
- What repo?1.00
- Is this problem actually1.00
- Write code,0.95
- PR1.00
- signals1.00
- signals into reports0.99
- What's the problem?1.00
- fixable?1.00
- test, ship1.00
- STREAMING1.00
- CLUSTERING1.00
- AGENTIC RESEARCH1.00
- LLMREASONING1.00
- SANDBOXED AGENT0.97
- Engineering the future of Al1.00
-
- PostHog0.94
- _ □ ×0.71
- Ingestion: filtering & normalization1.00
- Error tracking1.00
- ★1.00
- ★0.97
- stack traces, error spikes1.00
- ★1.00
- AIE1.00
- Safety filter0.98
- ★1.00
- ★1.00
- Session replay1.00
- LLM classifier drops injection attempts0.99
- Normalized signal1.00
- ★1.00
- ★1.00
- rage clicks, broken flows1.00
- source product1.00
- Experiments1.00
- Normalize1.00
- ● signal type0.90
- metric drops, significance1.00
- Common shape: source, type, content1.00
- content1.00
- Analytics1.00
- vector embedding1.00
- funnels, trend anomalies1.00
- Embed1.00
- weight1.00
- Vector embedding for cross-type search0.99
- Slack/external1.00
- complaints, discussions1.00
- AlEngineer0.97
- EUROPE1.00
-
- PostHog0.94
- _ □ ×0.78
- Ingestion: filtering & normalization1.00
- Error tracking1.00
- stack traces, error spikes0.99
- ★1.00
- AIE1.00
- Safety filter0.98
- ★1.00
- Session replay0.99
- LLM classifier drops injection attempts0.99
- Normalized signal1.00
- ★1.00
- ★1.00
- rage clicks, broken flows1.00
- source product0.97
- Experiments1.00
- Normalize1.00
- signal type1.00
- metric drops, significance1.00
- Common shape: source, type, content1.00
- content1.00
- Analytics1.00
- vector embedding1.00
- funnels, trend anomalies1.00
- Embed1.00
- weight1.00
- Vector embedding for cross-type search1.00
- Slack/external1.00
- complaints, discussions1.00
- Engineering the future of Al1.00
-
- PostHog1.00
- _ □ ×0.75
- Rewrite the query, don't search with raw embeddings1.00
- NEW SIGNAL1.00
- Error tracking1.00
- NullPointerException in CheckoutService.java:1420.99
- ★1.00
- ★1.00
- ★0.95
- AIE1.00
- Naive: search with raw embedding0.99
- Better: search with LLM-generated queries1.00
- ★1.00
- ★1.00
- Embed the signal directly, find nearest neighbors0.99
- LLM rewrites signal into cross-type search queries1.00
- ★1.00
- ★1.00
- TOP MATCHES1.00
- GENERATED QUERIES0.99
- Error tracking0.99
- "checkout flow errors and failures"0.97
- IndexOutOfBoundsException in CartService.java:891.00
- "user-facing issues on the payment page"0.99
- Error tracking1.00
- NullPointerException in PaymentService.java:2030.98
- "checkout conversion drops"0.99
- Error tracking1.00
- TOP MATCHES0.98
- ClassCastException in OrderService.java:570.98
- Analytics1.00
- Error rate 3x in /api/checkout0.99
- Misses the Slack complaint and funnel drop entirely.0.99
- Groups by type, not by issue.0.99
- "hey checkout is broken for me"0.99
- Slack1.00
- Analytics1.00
- Checkout funnel conversion -18% since Tuesday1.00
- AlEngineer0.96
- EUROPE1.00
-
- PostHog1.00
- _ □ ×0.84
- Rewrite the query, don't search with raw embeddings1.00
- NEW SIGNAL1.00
- NullPointerException in CheckoutService.java:1420.99
- Error tracking1.00
- ★1.00
- ★1.00
- AIE1.00
- Naive: search with raw embedding0.99
- Better: search with LLM-generated queries0.99
- ★1.00
- ★1.00
- Embed the signal directly, find nearest neighbors1.00
- LLM rewrites signal into cross-type search queries1.00
- ★1.00
- ★1.00
- TOP MATCHES0.99
- GENERATED QUERIES0.99
- Error tracking1.00
- "checkout flow errors and failures"0.99
- IndexOutOfBoundsException in CartService.java:891.00
- "user-facing issues on the payment page"0.99
- Error tracking1.00
- NullPointerException in PaymentService.java:2030.99
- "checkout conversion drops"1.00
- Error tracking1.00
- TOP MATCHES0.98
- ClassCastException in OrderService.java:570.99
- Analytics1.00
- Error rate 3x in /apl/checkout0.99
- Misses the Slack complaint and funnel drop entirely.0.99
- Groups by type, not by issue.1.00
- "hey checkout is broken for me"1.00
- Slack1.00
- Analytics1.00
- Checkout funnel conversion -18% since Tuesday1.00
- Engineering the future of Al1.00
-
- PostHog1.00
- _ □ ×0.79
- Research & Actionability0.98
- Research agent1.00
- Repo selection1.00
- Multi-turn investigation with full context0.98
- Agent picks the right codebase via GitHub0.99
- TOOLS1.00
- Promoted report1.00
- PostHog MCP1.00
- Codebase1.00
- ★1.00
- weight above threshold1.00
- analytics, errors, replays1.00
- read files, search code0.96
- AIE1.00
- NulPointorExoeption in Checkout.0.94
- Error tracking1.00
- PRs, commits, deploys0.97
- GitHub API1.00
- Linear, Notion, etc.0.98
- External MCPs1.00
- ★1.00
- ★1.00
- ★1.00
- Emor rate 3x in /aplicheckout0.91
- "checkout is broken for me"0.97
- Analytics1.00
- Slack1.00
- PRODUCES1.00
- human-readable0.97
- Summary1.00
- Priority1.00
- PO - P40.82
- from git blame0.98
- Reviewers1.00
- Actionability judgment1.00
- Immediately actionable1.00
- Needs human input1.00
- Not actionable1.00
- Create task, agent writes the fix1.00
- Surface report to tagged owners0.99
- Reset weight, keep listening1.00
- Clear stack trace, obvious code fix,1.00
- Product decision, ambiguous scope,1.00
- No useful fix derivable,0.98
- high confidence0.99
- needs judgment call1.00
- may become actionable later1.00
- Engineering the future of Al1.00
-
- PostHog1.00
- _ □ ×0.75
- Research & Actionability1.00
- Research agent1.00
- Repo selection1.00
- Multi-turn investigation with full context0.99
- Agent picks the right codebase via GitHub0.98
- TOOLS1.00
- Promoted report1.00
- PostHog MCP1.00
- Codebase1.00
- ★1.00
- weight above threshold0.99
- analytics, errors, replays0.96
- read files, search code0.97
- AIE1.00
- NulPointerException in Checkout.0.85
- Error tracking1.00
- PRs, commits, deploys0.97
- GitHub API1.00
- Linear, Notion, etc.0.99
- External MCPs1.00
- ★1.00
- ★1.00
- ★1.00
- ★1.00
- Emor rate 3x in lapüicheckout0.91
- "checkout is broken for me"0.96
- Analytics1.00
- Slack1.00
- PRODUCES1.00
- uman-readabie0.95
- Summary1.00
- Priority0.99
- PO -P40.81
- Reviewers1.00
- from git blame0.98
- Actionability judgment0.99
- Immediately actionable1.00
- Needs human input1.00
- Not actionable1.00
- Create task, agent writes the fix0.98
- Surface report to tagged owners1.00
- Reset weight, keep listening0.99
- Clear stack trace, obvious code fix,1.00
- Product decision, ambiguous scope,0.99
- No useful fix derivable,0.99
- high confidence1.00
- needs judgment call0.98
- may become actionable later1.00
- Braintrust1.00
- WorkOS OpenAI0.96
-
- PostHog1.00
- _ □ ×0.80
- Research & Actionability0.98
- Research agent1.00
- Repo selection1.00
- Multi-turn investigation with full context0.96
- Agent picks the right codebase via GitHub0.99
- TOOLS1.00
- Promoted report1.00
- PostHog MCP1.00
- Codebase1.00
- ★1.00
- weight above threshold1.00
- analytics, errors, replays1.00
- read files, search code0.98
- AIE1.00
- NulPointerException in Checkout.0.91
- Error tracking0.96
- PRs, commis, deploys0.96
- GitHub API1.00
- Linear, Notion, etc.0.97
- External MCPs1.00
- ★1.00
- ★1.00
- ★1.00
- ★1.00
- ★1.00
- Emor rate 3x in /aplicheckout0.90
- "checkout is broken for ma"0.93
- Analytics1.00
- PRODUCES1.00
- tuman-readable0.89
- Summary1.00
- Priority0.99
- PO- P40.92
- from git blame0.97
- Reviewers1.00
- Actionability judgment1.00
- Immediately actionable1.00
- Needs human input1.00
- Not actionable1.00
- Create task, agent writes the fix0.99
- Surface report to tagged owners1.00
- Reset weight, keep listening1.00
- Clear stack trace, obvious code fix,1.00
- Product decision, ambiguous scope,1.00
- No useful fix derivable,0.97
- high confidence1.00
- needs judgment call1.00
- may become actionable later0.99
- AlEngineer0.96
- EUROPE1.00
Transcript
192 cues· 2,756 words· 14,574 chars
- 0:15 So I'm Josh.
- 0:15 I'm from Postog.
- 0:17 If you haven't heard of us, you might know us because of some hedgehogs.
- 0:20 Or you might have seen our founder, James, posting some funny things on LinkedIn.
- 0:25 He's quite popular.
- 0:27 I'm going to be talking today about what if your product built itself.
- 0:31 And the pipeline that we're currently working on, which we're trying to turn our observability data, instead of something that you read and that you interpret based on dashboards, we're trying to turn that into something that submits pull requests for you.
- 0:45 Cool, yeah, so quick background on PostHog.
- 0:47 We've got a bunch of tools.
- 0:49 We started out as a product analytics company.
- 0:51 We now have session replay, web analytics, error tracking, experiments.
- 0:55 This isn't a pitch that you should use PostHog.
- 0:58 This is just to say that we've got a lot of data about your product.
- 1:01 So if you connect PostHog to your product, we're collecting a huge amount of data from various different sources that we then show to you so that you can explore that data yourself.
- 1:13 But right now, how observability is working in PostHog, you're collecting all this data for your product.
- 1:20 And then you're going to a PostHog dashboard to figure out what's going on.
- 1:25 And we think this is super slow and that we should change that.
- 1:28 So right now, something happens in your products.
- 1:30 We call this a signal.
- 1:31 That changes a metric on one of your dashboards.
- 1:34 And then you might log into PostHog a few hours or maybe some days later, and you notice a change in that dashboard.
- 1:41 And you investigate a problem.
- 1:42 And then maybe the problem's not that important.
- 1:45 So instead of tackling it right now, you're going to put it in a linear issue or whatever.
- 1:48 A few days later, you try and create a PR for this problem.
- 1:52 Then you review it, and you ship it.
- 1:54 You get the message.
- 1:55 This is a pretty slow process.
- 1:57 From start to finish, this is going to take anywhere from a few hours to a few days.
- 2:01 And it's not very interesting, but it represents a lot of your work as a software engineer.
- 2:06 So what we want to do tomorrow, what we're working on right now, is that a product signal happens.
- 2:13 And instead of waiting to see that in your dashboard, we want to run a background agent to figure out what's going wrong.
- 2:20 And then once they've figured that out, we just want to create a PR for you automatically.
- 2:25 So instead of ever looking at your analytics dashboard or your errors or your logs, we just want you to look at PRs that are ready for you in GitHub.
- 2:35 And if we create the PR, maybe you want to review that.
- 2:38 Or maybe we can just ship that immediately behind a feature flag if it's not a risky change.
- 2:45 Cool.
- 2:45 So I'm going to go over the pipeline that we've built to do this.
- 2:49 And just whilst I go over that, I'm going to share a few tips, lessons that we've learned, things that were hard about building this pipeline.
- 2:57 So the pipeline has a few key steps.
- 3:00 At first, we're ingesting a lot of signals.
- 3:02 In post-hug, we have a huge amount of events.
- 3:05 We're ingesting trillions of events a month.
- 3:10 this pipeline needs to handle a lot of noise.
- 3:13 And then once we've ingested those events, we need to group them.
- 3:16 So if you think of an error tracking issue and then a session recording, those are two completely different things, but they might be representing the same problem in your product.
- 3:26 So once we've ingested them, we group them.
- 3:29 Then we're going to be running a research agent on them.
- 3:33 This specific issue, what is actually the problem that is causing the error spike or causing the issue that the user faced in the replay?
- 3:41 And what repo does this belong to?
loading