Skip to content

Add PostHog Research page at /research - #18228

Merged
smallbrownbike merged 27 commits into
masterfrom
posthog-code/research-page
Jul 16, 2026
Merged

Add PostHog Research page at /research#18228
smallbrownbike merged 27 commits into
masterfrom
posthog-code/research-page

Conversation

@joethreepwood

@joethreepwood joethreepwood commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

What this does

Adds a new page at /research: the AI Research team's corner of the site. Its job is to impress potential research hires and build research street cred – showing what the team is training, how, and the commitment to sharing it (papers to arXiv and ML conferences, architectures to public repos, released weights). Deliberately not a product marketing page: no shipping content, no privacy hedging, no feature funnels.

Built collaboratively: initial build + content by PostHog Code with Joe, layout overhaul by @elikinsey, and copy/scope direction from Nico (AI Research).

The page

  • Hero – mission statement H1: "Training user behavior foundation models and transparently sharing the research we do", with the dataset claim ("Nobody has trained a foundation model on data like this yet. We're the first.") and what gets shared (architectures → public repos, weights released, papers → arXiv + ML conferences). AI Research team crest links to /teams/ai-research.
  • The research (#pipeline) – four tracks, all in progress: training a Replay Encoder model (multi-axis RoPE built on additive Euler angles; labeling/rendering/data-prep/sampling named as components), training a replay vision agent, training a predictive user behavior model, tuning a self-driving model. Hiring callout directly below, linking the AI research engineer role.
  • Published research (#papers) – publications render from a PUBLICATIONS array supporting plain { arxivId } entries (metadata fetched from the arXiv API with graceful fallback). Each entry has a copy-BibTeX cite action. Currently lists two prior papers by Nicholas Waltz (marked "Published before joining PostHog") with a note that the first paper from current research is in progress. Papers emit schema.org ScholarlyArticle JSON-LD; /papers redirects to /research#papers.
  • Research in the open (#blog) – posts tagged Research (build-time page query, future tagged posts appear automatically) interleaved with conference talk recordings (open in MediaPlayer windows). Grid up to 6 items, snap-scroll carousel with arrows beyond that. Links to the auto-generated /blog/tags/research.
  • Who's doing research at PostHog? (#team) – AI Research team members only (full TeamMember profile cards), Nico first with the team lead badge, plus James Hawkins (sourced from Research-tagged post authorship).
  • Events (#events) – upcoming speaker events from the Strapi events API (via the exported useEvents hook), deduped, with date badges and an empty state.
  • FAQ (#faq) – research content only: what we publish, the first model, why an analytics company trains foundation models, how to join.
  • CTA – "Put our research into practice": /wip + feature previews.

Supporting changes

  • Products menu – "PostHog Research" (purple IconBrain) between dividers after Context Warehouse; PostHog Code moved to the top: Code, Web, Slack, MCP, Context Warehouse, ─, Research, ─, Browse all tools, Search tools.
  • Blog tagsResearch added to 5 posts (sql-parser, what-is-a-scout, karpathy-autoresearch-query-engine-bug, training-ai-models, agents-closed-4063-errors), auto-generating /blog/tags/research.
  • gatsby/sourceNodes.ts + createSchemaCustomization.ts – build-time sourcing of research team merged PRs (from @elikinsey; currently unused by the page after the shipping-content cut, kept for future reuse). ⚠️ CODEOWNERS-gated.
  • src/context/App.tsx/research window sizing entries. ⚠️ CODEOWNERS-gated.
  • src/pages/events.tsx – one-word change to export useEvents.
  • vercel.json/papers/research#papers.
  • src/components/OSTable – drops an unused MDXEditor import (perf, from @elikinsey).

Removed along the way (deliberate)

An H1 A/B experiment, live GitHub PR feed, privacy/trust FAQ + hero strip, pricing principles link, MCP/dashboard momentum stats, and an "open problems" section – cut per AI Research team feedback to keep the page purely about research. Experiment research-page-h1 (381494) is still running and should be stopped, since the page no longer uses the flag.

Checks

  • Verified on local dev: page query returns posts, crest, and team members; menu order correct; /blog/tags/research generates; carousel arrows fade at either end; events dedupe and empty state; arXiv metadata fetch and BibTeX copy.
  • Container queries only, project color tokens only, newWindow state on cross-app links, external on external links, dark mode textures, text-pretty to prevent widow lines.
  • Notes: the careers link 404s locally (no Ashby API key in dev) but is 200 in production. pnpm test-redirects fails identically on a clean tree (jest picks up monorepo CI test files from .cache/gatsby-source-git) – not a regression. Preview builds don't generate tag pages – check the page at its direct URL /research.

Created with PostHog Code

- New /research page (Editor app) spotlighting AI Research team work:
  research roadmap, posts tagged "Research", upcoming speaker events
  with empty state, and a CTA to /wip and feature previews
- Add PostHog Research to the Products menu (between dividers, after
  Context Warehouse) and reorder PostHog Code to the top per spec
- Export useEvents hook from events page for reuse
- Add /research window sizing to appSettings (copies /code)
- Tag five research blog posts with "Research" so /blog/tags/research
  generates and future tagged posts appear on the page automatically

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
- Bolder, more playful copy throughout (new H1: "If we knew what we
  were doing, it wouldn't be called research.")
- Roadmap cards lift, glow purple, and highlight on hover
- Blog post cards now uniform size: fixed 16:9 image ratio with
  object-cover and line-clamped titles
- AI Research team crest in the hero top right, linking to
  /teams/ai-research (queried from squeakTeam)

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
- H1 is now a live PostHog experiment (research-page-h1, 50/50) with a
  self-aware callout showing which variant you got
- RoughAnnotation highlights on hero key phrases
- Roadmap cards get status stamps (in progress / up next / help wanted);
  the help wanted stamp links to the AI research engineer role
- "Fresh from the lab": merged PRs by the research team fetched live
  from GitHub across public posthog org repos (excluding posthog.com),
  with loading and rate-limit fallback states
- "Who's doing research at PostHog?": AI Research team members (from
  squeakTeam profiles) plus featured post authors, deduped
- FAQ accordion covering training opt-outs, data selling, and hiring

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
Every card is now identical: equal grid rows via auto-rows-fr, cards
fill their cell (h-full), fixed 16:9 image area (aspect-video with
shrink-0), and a fixed-height three-line title block so varying title
lengths no longer change card height across rows.

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
…ture

- SectionHeader component: sticker + uppercase kicker above every h2
  (microscope/terminal/bulb/users/run stickers) for consistent rhythm
- H1 animates in word-by-word with ChoppyReveal, matching /code
- "Fresh from the lab" restyled as a terminal window: traffic-light
  title bar, git log caption, monospace rows, blinking-cursor footer
- CTA card gets the same tan texture as the hero, bookending the page
- Events empty state gets the ZZZ sticker
- Fix typo (disastrous); preserve all hand-edited copy

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
- Rubber-stamp "PREPRINT · not peer reviewed · results may vary" in
  faint red, rotated, bottom-right of the hero (hidden on narrow
  containers, decorative only)
- Master plan link restyled as an academic footnote: a superscript [1]
  on the hare-brained schemes claim, resolved by a monospace citation
  line crediting Hawkins, J. (2026)

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
@joethreepwood
joethreepwood requested review from a team and charlescook-ph as code owners July 7, 2026 17:06
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Deploy preview

Status Details Updated (UTC)
🟢 Ready View preview Jul 16, 2026 11:58AM

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Vale prose linter → found 2 errors, 107 warnings, 0 suggestions in your markdown

Full report → Copy the linter results into an LLM to batch-fix issues.

Linter being weird? Update the rules!

contents/blog/agents-closed-4063-errors.md — 0 errors, 8 warnings, 0 suggestions
Line Severity Message Rule
45:39 warning Capitalize 'Error Tracking' for PostHog's product. Use 'error tracking' for the general industry concept. PostHogBase.ProductNames
53:143 warning Capitalize 'Feature Flags' for PostHog's product. Use 'feature flags' for the general industry concept. PostHogBase.ProductNames
55:12 warning Use American English. Use 'behavior' instead of 'behaviour'. PostHogBase.AmericanEnglish
57:136 warning Use American English. Use 'organized' instead of 'organised'. PostHogBase.AmericanEnglish
65:3 warning Capitalize 'Error Tracking' for PostHog's product. Use 'error tracking' for the general industry concept. PostHogBase.ProductNames
65:18 warning Use 'MCP' instead of 'mcp'. Vale.Terms
135:61 warning Use American English. Use 'summarize' instead of 'summarise'. PostHogBase.AmericanEnglish
137:18 warning Capitalize 'Feature Flags' for PostHog's product. Use 'feature flags' for the general industry concept. PostHogBase.ProductNames
contents/blog/karpathy-autoresearch-query-engine-bug.md — 0 errors, 20 warnings, 0 suggestions
Line Severity Message Rule
3:8 warning 'Karpathy's' is a possible misspelling. PostHogBase.Spelling
3:19 warning 'Autoresearch' is a possible misspelling. PostHogBase.Spelling
11:53 warning Use 'PostHog' instead of 'posthog'. Vale.Terms
27:11 warning 'autoresearch' is a possible misspelling. PostHogBase.Spelling
29:30 warning 'Andrej' is a possible misspelling. PostHogBase.Spelling
29:37 warning 'Karpathy' is a possible misspelling. PostHogBase.Spelling
31:1 warning 'Karpathy' is a possible misspelling. PostHogBase.Spelling
31:49 warning 'nanochat' is a possible misspelling. PostHogBase.Spelling
31:335 warning 'Sakana's' is a possible misspelling. PostHogBase.Spelling
31:425 warning 'Karpathy's' is a possible misspelling. PostHogBase.Spelling
35:15 warning 'autoresearch' is a possible misspelling. PostHogBase.Spelling
37:108 warning Capitalize 'Session Replay' for PostHog's product. Use 'session replay' for the general industry concept. PostHogBase.ProductNames
37:147 warning Capitalize 'Data Warehouse' for PostHog's product. Use 'data warehouse' for the general industry concept. PostHogBase.ProductNames
37:182 warning Capitalize 'Logs' for PostHog's product. Use 'logs' for the general industry concept. PostHogBase.ProductNames
37:411 warning 'Karpathy's' is a possible misspelling. PostHogBase.Spelling
41:76 warning 'Zechner' is a possible misspelling. PostHogBase.Spelling
43:122 warning 'Karpathy's' is a possible misspelling. PostHogBase.Spelling
51:148 warning 'anonymized' is a possible misspelling. PostHogBase.Spelling
72:26 warning 'autoresearch' is a possible misspelling. PostHogBase.Spelling
111:18 warning 'dedup' is a possible misspelling. PostHogBase.Spelling
contents/blog/sql-parser.md — 0 errors, 18 warnings, 0 suggestions
Line Severity Message Rule
17:73 warning 'autoresearch' is a possible misspelling. PostHogBase.Spelling
27:70 warning 'transpile' is a possible misspelling. PostHogBase.Spelling
35:37 warning Capitalize 'Product Analytics' for PostHog's product. Use 'product analytics' for the general industry concept. PostHogBase.ProductNames
35:56 warning Capitalize 'Session Replay' for PostHog's product. Use 'session replay' for the general industry concept. PostHogBase.ProductNames
35:72 warning Capitalize 'Error Tracking' for PostHog's product. Use 'error tracking' for the general industry concept. PostHogBase.ProductNames
35:151 warning 'transpilation' is a possible misspelling. PostHogBase.Spelling
35:200 warning 'transpilation' is a possible misspelling. PostHogBase.Spelling
35:305 warning 'transpiled' is a possible misspelling. PostHogBase.Spelling
37:76 warning 'untrusted' is a possible misspelling. PostHogBase.Spelling
39:4 warning 'Generating our parser with ANTLR' heading should be in sentence case, and product names should be capitalized. PostHogBase.SentenceCase
43:134 warning 'declaratively' is a possible misspelling. PostHogBase.Spelling
47:48 warning 'lookahead' is a possible misspelling. PostHogBase.Spelling
55:151 warning 'lookahead' is a possible misspelling. PostHogBase.Spelling
69:40 warning 'transpiler' is a possible misspelling. PostHogBase.Spelling
73:93 warning 'codegen' is a possible misspelling. PostHogBase.Spelling
77:182 warning 'lookahead' is a possible misspelling. PostHogBase.Spelling
77:237 warning 'lookahead' is a possible misspelling. PostHogBase.Spelling
85:73 warning 'anonymized' is a possible misspelling. PostHogBase.Spelling
contents/blog/training-ai-models.md — 0 errors, 3 warnings, 0 suggestions
Line Severity Message Rule
34:41 warning Capitalize 'Session Replay' for PostHog's product. Use 'session replay' for the general industry concept. PostHogBase.ProductNames
64:13 warning 'comms' is a possible misspelling. PostHogBase.Spelling
82:37 warning 'james' is a possible misspelling. PostHogBase.Spelling
contents/blog/what-is-a-scout.mdx — 2 errors, 58 warnings, 0 suggestions
Line Severity Message Rule
24:237 warning Use American English. Use 'judgment' instead of 'judgement'. PostHogBase.AmericanEnglish
26:92 warning Use the Oxford comma before 'and' or 'or' in a list of three or more items. PostHogBase.OxfordComma
26:303 warning 'Karpathy' is a possible misspelling. PostHogBase.Spelling
28:10 warning 'Karpathy's' is a possible misspelling. PostHogBase.Spelling
45:18 warning 'actioned' is a possible misspelling. PostHogBase.Spelling
49:113 warning Capitalize 'Error Tracking' for PostHog's product. Use 'error tracking' for the general industry concept. PostHogBase.ProductNames
51:189 warning 'papercuts' is a possible misspelling. PostHogBase.Spelling
51:263 warning Use American English. Use 'judgment' instead of 'judgement'. PostHogBase.AmericanEnglish
55:92 warning Use 'Markdown' instead of 'markdown'. Vale.Terms
57:5 warning 'Your pipeline can be (mostly) markdown' heading should be in sentence case, and product names should be capitalized. PostHogBase.SentenceCase
57:35 warning Use 'Markdown' instead of 'markdown'. Vale.Terms
61:65 warning Use 'Markdown' instead of 'markdown'. Vale.Terms
65:223 warning 'don'ts' is a possible misspelling. PostHogBase.Spelling
69:4 warning Use 'Markdown' instead of 'markdown'. Vale.Terms
75:181 warning Use 'PostHog' instead of 'posthog'. Vale.Terms
127:68 warning Use 'Markdown' instead of 'markdown'. Vale.Terms
149:19 warning 'sandboxed' is a possible misspelling. PostHogBase.Spelling
159:5 warning 'Disqualifiers' is a possible misspelling. PostHogBase.Spelling
160:18 error Hi, Andy here... use an en dash ( – ) with spaces. On Mac, holding down the Option and hyphen key will give you an en dash. PostHogBase.EnDash
181:32 warning Use 'Markdown' instead of 'markdown'. Vale.Terms
185:224 warning Use the Oxford comma before 'and' or 'or' in a list of three or more items. PostHogBase.OxfordComma
185:265 warning 'disqualifiers' is a possible misspelling. PostHogBase.Spelling
191:88 warning Capitalize 'Experiments' for PostHog's product. Use 'experiments' for the general industry concept. PostHogBase.ProductNames
204:79 warning 'miscalibrated' is a possible misspelling. PostHogBase.Spelling
206:217 warning Capitalize 'Surveys' for PostHog's product. Use 'surveys' for the general industry concept. PostHogBase.ProductNames
240:427 warning 'arg' is a possible misspelling. PostHogBase.Spelling
272:324 warning 'serializer' is a possible misspelling. PostHogBase.Spelling
274:56 warning 'serializer' is a possible misspelling. PostHogBase.Spelling
286:147 warning 'serializer' is a possible misspelling. PostHogBase.Spelling
303:86 warning 'Octolens' is a possible misspelling. PostHogBase.Spelling
303:163 warning Capitalize 'Data Warehouse' for PostHog's product. Use 'data warehouse' for the general industry concept. PostHogBase.ProductNames
307:162 warning 'comms' is a possible misspelling. PostHogBase.Spelling
307:230 warning 'anonymized' is a possible misspelling. PostHogBase.Spelling
311:7 warning 'reputational' is a possible misspelling. PostHogBase.Spelling
312:273 warning Capitalize 'Logs' for PostHog's product. Use 'logs' for the general industry concept. PostHogBase.ProductNames
318:21 warning 'Creeped' is a possible misspelling. PostHogBase.Spelling
320:30 warning 'creeped' is a possible misspelling. PostHogBase.Spelling
320:64 warning Use 'PostHog' instead of 'posthog'. Vale.Terms
320:64 warning Capitalize 'PostHog Code' for PostHog's product. Use 'posthog code' for the general industry concept. PostHogBase.ProductNames
322:241 warning 'emittable' is a possible misspelling. PostHogBase.Spelling
332:33 warning Use 'PostHog' instead of 'Posthog'. Vale.Terms
336:94 warning 'imo' is a possible misspelling. PostHogBase.Spelling
340:31 warning Use 'PostHog' instead of 'posthog'. Vale.Terms
342:271 warning Use 'PostHog' instead of 'posthog'. Vale.Terms
350:27 warning Capitalize 'PostHog AI' for PostHog's product. Use 'posthog ai' for the general industry concept. PostHogBase.ProductNames
350:27 warning Use 'PostHog' instead of 'posthog'. Vale.Terms
350:35 warning Use 'AI' instead of 'ai'. Vale.Terms
352:123 error 'really' is repeated! Vale.Repetition
352:251 warning 'discoverability' is a possible misspelling. PostHogBase.Spelling
369:4 warning 'Ideas: what else to point a scout at' heading should be in sentence case, and product names should be capitalized. PostHogBase.SentenceCase
375:57 warning Capitalize 'Data Warehouse' for PostHog's product. Use 'data warehouse' for the general industry concept. PostHogBase.ProductNames
380:257 warning 'MCPs' is a possible misspelling. PostHogBase.Spelling
381:89 warning 'miscalibration' is a possible misspelling. PostHogBase.Spelling
403:181 warning Use 'PostHog' instead of 'posthog'. Vale.Terms
407:4 warning 'AGI Buzzword bingo' heading should be in sentence case, and product names should be capitalized. PostHogBase.SentenceCase
416:153 warning Use 'Markdown' instead of 'markdown'. Vale.Terms
416:248 warning 'RTFM'd' is a possible misspelling. PostHogBase.Spelling
416:733 warning 'unironically' is a possible misspelling. PostHogBase.Spelling
416:954 warning 'Karpathy' is a possible misspelling. PostHogBase.Spelling
416:1288 warning 'lil' is a possible misspelling. PostHogBase.Spelling

@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Bundle report

Total JS (gzip)

6.32 MiB (+8.5 KiB / +0.1%)

Largest changed named chunks
Chunk Gzip Δ vs master
4fea7adef2d091b06becf99afeeae471fc03036b.js 11.6 KiB new
component---src-pages-research-tsx.js 8.2 KiB new

Eager graph (modules shipped in each entrypoint's initial chunks)

Entrypoint Eager size Budget Modules
app 15.61 MiB (+2.7 KiB / +0.0%) report-only 1946
Largest modules in the app closure
Module Size
css ./node_modules/.pnpm/css-loader@5.2.7_webpack@5.101.3/node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[8].oneOf[1].use[1]!./node_modules/.pnpm/postcss-loader@4.3.0_postcss@8.5.6_webpack@5.101.3/node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[8].oneOf[1].use[2]!./src/styles/global.css 712.6 KiB
./src/components/Stickers/Stickers.tsx 696.4 KiB
./.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/31a094f140f119e73085d847ae81b99b.js + 2 modules 629.5 KiB
./node_modules/.pnpm/@radix-ui+react-icons@1.3.2_react@18.3.1/node_modules/@radix-ui/react-icons/dist/react-icons.esm.js 481.4 KiB
./node_modules/.pnpm/rehype-raw@7.0.0/node_modules/rehype-raw/lib/index.js + 29 modules 395.1 KiB
./node_modules/.pnpm/@posthog+icons@0.36.6_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.cjs.js 364.8 KiB
./src/hooks/useCustomers.tsx + 54 modules 355.1 KiB
./node_modules/.pnpm/@posthog+icons@0.36.6_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js 354.8 KiB
./node_modules/.pnpm/react-markdown@8.0.7_@types+react@16.14.66_react@18.3.1/node_modules/react-markdown/lib/react-markdown.js + 88 modules 351.4 KiB
./node_modules/.pnpm/cloudinary-core@2.14.0_lodash@4.17.21/node_modules/cloudinary-core/cloudinary-core.js 281.9 KiB
./src/components/ProductComparisonTable/index.tsx + 120 modules 278.5 KiB
./node_modules/.pnpm/d3@7.9.0/node_modules/d3/src/index.js + 208 modules 247.4 KiB
./src/components/Pricing/PricingSlider/Slider.tsx + 87 modules 239.9 KiB
./gatsby-browser.tsx + 41 modules 239.8 KiB
./src/components/SearchUI/index.tsx + 73 modules 223.4 KiB

Eager-graph budgets are report-only until a baseline is established. Sizes are gzip of public/**/*.js; eager size is webpack module source bytes for the modules actually shipped in the entrypoint's initial chunks (post-tree-shake).

@charlescook-ph

Copy link
Copy Markdown
Collaborator

I think @jamesefhawkins will give you higher quality feedback on the content here than me!

Overall I see a lot to like, but maybe I'd dial back the humor by a notch? I think it detracts from the credibility of the research, especially when the blog content itself that we right is quite earnest/serious. I'd match the tone of those a little more closely.

Tone pass to better match the earnest voice of the research blog posts:
- Hero now leads with training our own foundation models and names the
  novel techniques (multi-axis RoPE built on additive Euler angles),
  with a commitment to publish: arXiv papers and submissions to major
  ML conferences, starting with the first pretraining run
- Roadmap subtitle notes each pretraining stage will produce papers
  and technical reports; replay encoder item names the technique
- New FAQ: "Will you publish your research?" (first paper underway)
- Removed jokes that undercut credibility (ramen, hare-brained
  schemes, "How meta", "It's fine"); tightened wordy subtitles
- Kickers normalized (Publications, The team, Events); FAQ heading
  now "Frequently asked questions"

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
- Drop the PREPRINT stamp: the page now presents the work as serious,
  publishable research rather than winking at it
- Hero copy commits explicitly to open sharing: open source code,
  findings published as we go, papers headed to arXiv and major ML
  conferences
- New "Published research" section: papers/preprints/technical reports
  render from a PUBLICATIONS array with a paste-in comment template;
  empty state explains the first paper is in progress and links will
  land here (blog section kicker renamed to Blog to free "Papers")
- Hero restructured to two columns (content left, team crest right,
  crest hidden on narrow containers) removing the dead whitespace
  between the page label and headline; tightened top margin

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
Publications section:
- Cite button on each paper card copies a BibTeX entry (misc + eprint
  for arXiv entries, article + journal otherwise) with a toast
- Entries can be just { arxivId: '...' }: title, authors, and year
  are fetched from the arXiv API client-side with graceful fallback
- Card restructured so title link and Cite button aren't nested

Hero:
- Control headline is now the single-line values statement "We do
  research that is open-source, responsible, and helps you build
  better software" with staggered RoughAnnotation highlights
  (experiment 381494 description updated to document the change)
- Second paragraph tightened per review and now links the feature
  pricing principles from the handbook

Blog section: subtitle notes we don't just share the glamorous bits

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
- Fresh from the lab now shows only feat/epic PRs: fetch 50, filter
  titles client-side, show 8; terminal caption reads --grep=feat and
  subtitle shortened to match
- Copy pass to avoid 1-2 word run-on lines: section subtitles cut to
  single lines (publications, people, events) or substantial second
  lines (roadmap, hero paragraphs, CTA, publications empty state)
- Fix stray space before period after the pricing principles link

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
Three YouTube embeds (youtube-nocookie, lazy-loaded) in a "Watch a
past talk" grid: Joshua Snyder and Danilo Campos at AI Engineer, and
James Hawkins on The Secure Disclosure. Talks live in a PAST_TALKS
array with a paste-in comment for future recordings. The empty state
for upcoming talks now points to the recordings below it.

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
- Talk recordings now live under a "Prefer to watch?" subheading in
  the Research in the open section, after the post cards; the events
  section returns to upcoming talks only, restoring its calmer layout
- Upcoming events are deduped by id before filtering: the shared
  useEvents hook can double-append in dev when StrictMode re-runs
  effects, which showed duplicate rows

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
- Publications: Grafting (2403.06015) and Time Series Clustering
  Using DBSCAN (2403.14798) by Nicholas Waltz, marked "Published
  before joining PostHog" via a new note field; footnote under the
  list says the first paper from current research is in progress
- Talk recordings are now part of the Research in the open feed:
  a TalkCard matching PostCard's geometry is interleaved after every
  two posts (extras appended); when the feed exceeds six items it
  renders as a snap-scroll carousel instead of a grid

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
joethreepwood and others added 7 commits July 8, 2026 16:08
…edirect

- Carousel gets floating prev/next chevron buttons that fade out at
  either end (hidden on narrow containers where touch scroll rules)
- Every section now has a shareable anchor (#pipeline, #papers,
  #shipped, #blog, #team, #events, #faq) with scroll margin
- Publications emit schema.org ScholarlyArticle structured data so
  the papers are indexable as scholarly work
- /papers vanity redirect to /research#papers for talks and slides
  (pnpm test-redirects fails identically on master – it picks up
  monorepo CI test files from .cache – so not a regression)

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
Reweights the page for the priority audiences (researchers > customers
> investors):

- Hero now leads with the dataset and the unsolved problem ("Nobody
  has trained a foundation model on data like this"), with the product
  outcome demoted to the second clause; adds a momentum line (agents
  create the majority of new dashboards, MCP usage doubling monthly)
  sourced from the next-chapter post via the existing footnote
- Trust strip under the hero copy: EU opt-out default, anonymization,
  opt out anytime, linking to the FAQ anchor
- New "Problems we haven't solved yet" section (#problems): three
  short technical write-ups (multi-axis RoPE positional embeddings,
  replay-to-token rendering, evaluating self-modifying agents) plus a
  recruiting callout with role and team links
- Roadmap cards each gain an "In practice:" customer-outcome line

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
- text-pretty on the page root (inherits everywhere): browsers avoid
  1-2 word last lines in all copy at any window width, which manual
  trims can't guarantee on a resizable page
- Trim lines meant to hold a single line at default width: roadmap
  "In practice" outcomes shortened to fit half-width cards, trust
  strip shortened, recruiting sentence cut so its second line is
  substantial

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
@nicowaltz

Copy link
Copy Markdown
Contributor

Ok, here are my comments as promised. Fair warning, I pretty much have an opinion about the entire page here but feel free to disregard things as usual. This is mostly directional feedback, but I can take time to propose copy if that is required somewhere.

I of course understand that we do not have any content just yet and this will improve over time. Important note again that research is a non-linear process and therefore timelines are, too.

To frame this, I think our priorities with this page are: Impress potential candidates and gain research street creds. I think this should primarily show that we are doing something cool, what it is and are unapologetic about it. It should read like: this is our researchers' corner, not this is PostHog speaking.

Hedging against privacy concerns should be an anti goal in my view, I would honestly leave that out entirely from this page, it dilutes the message. It should not conflate shipping features with ML research. Shipping is highly linear and clearly defined, research is not.

I think a blog style format is the easiest way to achieve this goal. Everything that follows essentially comes down to that.

Straight away: "Our research is open-source, responsible, and helps you build better software" - this puts too little emphasis on "look what cool stuff we are doing" and too much emphasis on hedging against potential HN opinions. Responsible in particular is unclear I think. I would drop this entirely and replace with a mission statement: "Training user behaviour foundation models". Our research is not open-source in the posthog monorepo sense. Instead, we publish final architectures to repos and share weights and papers on training process and learnings.

Likewise: "EU cloud opted out by default · anonymized before training · opt out anytime" should not appear here at all

A way of thinking about this: If this goes on hacker news, it should only draw ML experts or aspirants, not privacy advocates.

I would keep research and intended research outcomes separate. Research is the goal in and of itself here, so I would completely remove any mentions of PostHog fixes your products etc. and assume that people make the connection themselves. Instead put the focus on "exploring user behavior understanding models".

There is a imprecise conflation of "shipping" and "researching". This page should explicitly be about the latter imo. This means that MCP, agent loops, etc. are probably the wrong content here.

I agree with James that we should pattern match a bit more of a serious tone and we can add the fun via ergonomics as opposed to content (how the page looks, how to navigate, what background it gets).

PRs by the research team is not possible given that it is all in a private repo.

Robbie is mistakenly shown as AI research TL.

The timeline is not clean. I would say:

  1. Training a Replay Encoder model
  2. Training a replay vision agent
  3. Training a predictive user behaviour model.
  4. Tuning a self-driving model.

The data prep steps etc are the components of the above goals and not "what we are researching". Help wanted makes it seem like this is not going to happen, which is also a mischaracterization as the code is already being written. I would put them all in progress and then say: "If this sounds up your alley apply".

Problems we haven't solved yet, I would drop. Published research, I would replace with just "Watch this space" and then be patient, my papers are nice but have no relation at all to what we're doing and should therefore be removed to not confuse anyone. Research in the open, we can keep, it's like a nice blog feed.

FAQs should drop the privacy concerns, this is our researchers' corner and they (me) just train on what they get and figure that out, I'd say let's keep it entirely research content focussed

@joethreepwood

Copy link
Copy Markdown
Contributor Author

Thanks for the detailed feedback, Nico!

Some of this was high-level and are pieces I already agree with or think we move on past, so I'll try to focus this on specific follow-ups.

Hedging against privacy concerns should be an anti goal in my view, I would honestly leave that out entirely from this page, it dilutes the message. It should not conflate shipping features with ML research. Shipping is highly linear and clearly defined, research is not.

👍 Will handle

I think a blog style format is the easiest way to achieve this goal. Everything that follows essentially comes down to that.

Agree conceptually here and we'll absolutely have more blog content coming in -- I want that to be the centre piece of this section -- but I think important that this doesn't just feel like a Blog tag filter. That said, I have added support for a tag filter here so that we automatically pull in anything labelled "Research" and add authors to the page. In this way, research becomes a cross-company direction. I do need to tinker here though.

Straight away: "Our research is open-source, responsible, and helps you build better software" - this puts too little emphasis on "look what cool stuff we are doing" and too much emphasis on hedging against potential HN opinions. Responsible in particular is unclear I think. I would drop this entirely and replace with a mission statement: "Training user behaviour foundation models". Our research is not open-source in the posthog monorepo sense. Instead, we publish final architectures to repos and share weights and papers on training process and learnings.

👍 will clarify

PRs by the research team is not possible given that it is all in a private repo.

Is there any way we can show outputs of what you're working on at all, other than blogs and papers which we don't have yet?

The data prep steps etc are the components of the above goals and not "what we are researching". Help wanted makes it seem like this is not going to happen, which is also a mischaracterization as the code is already being written.

Slight disagree here, as I don't think it reads this way - but I'll play with the suggested changes and see where we land.

Applied on top of Eli's layout overhaul (narrow column, list roadmap,
TeamMember profiles, MediaPlayer talks):

- H1 replaced with the mission statement: "Training user behavior
  foundation models and transparently sharing the research we do";
  the A/B experiment wiring and callout removed with it
- Hero drops all hedging and shipping content: privacy trust strip,
  pricing principles, MCP/dashboard momentum stats, and the master
  plan citation are gone; sharing copy states what we publish
  (architectures to public repos, weights, papers on training and
  learnings) rather than claiming monorepo-style open source
- Roadmap rewritten to the four research tracks (Replay Encoder,
  replay vision agent, predictive user behavior model, self-driving
  model tuning), all marked in progress; data prep/labeling/sampling
  named as components; hiring callout sits directly below
- "Problems we haven't solved yet" and the merged-PR feed removed as
  shipping-flavored content (Eli's build-time PR sourcing in gatsby/
  is left intact for future reuse; the page query no longer asks
  for it)
- Team-lead badge now only shows for leads of the AI Research team,
  fixing Robbie appearing as research team lead
- FAQ rebuilt research-only: what we publish, the first model, why an
  analytics company trains foundation models, how to join
- SEO description updated to match the mission

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
- People section now shows only AI Research team members from the
  team query, plus James Hawkins (pulled from post authorship since
  he isn't on the team in Strapi); other post authors no longer
  appear
- Nico sorts first and carries the team lead badge
- Hero copy tightened (hand edits): "We're the first", simplified
  sharing commitment

Generated-By: PostHog Code
Task-Id: 26999385-9f19-4096-95bc-ca64922a3230
@joethreepwood

Copy link
Copy Markdown
Contributor Author

Pushing a new version live now.

This roles in pretty much all of your feedback, Nico, with a few exceptions where I feel most strongly. I want to keep the old research papers, for example, as they help establish credibility -- the only alternative, IMO, would be holding back this page entirely until we have something new to add here. We're clear on the listing that they pre-date Posthog, so I feel it's fine as it is.

Let me know if there's any other blocking feedback, otherwise I think this is looking good and that -- pending a final @smallbrownbike pass on the changes -- that we should get this live and iterate.

@smallbrownbike
smallbrownbike enabled auto-merge (squash) July 16, 2026 11:47
@smallbrownbike
smallbrownbike disabled auto-merge July 16, 2026 12:41
@smallbrownbike
smallbrownbike merged commit 11ab5c1 into master Jul 16, 2026
19 checks passed
@smallbrownbike
smallbrownbike deleted the posthog-code/research-page branch July 16, 2026 12:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants