Skip to main content

Case Study

ZeroHedge — Comment Platform Migration at 40M+ Document Scale

Owned the end-to-end migration of the comment platform behind one of the highest-traffic financial news sites: schema conversion tooling for 40M+ documents, Helm-based Kubernetes deployment, feature-flagged rollout, and the delivery infrastructure around it.

  • TypeScript
  • Next.js
  • Node.js
  • MongoDB
  • Kubernetes
  • Helm
  • GKE
  • Varnish
  • Firebase
  • Stripe
  • GitHub Actions
40M+Comments migrated
>50%Index size reduction
Per PRPreview environments

Overview

ZeroHedge is one of the most-read financial news sites on the internet, with a famously active comment community. The comment system is not a side feature — it is a core part of why readers return, and it runs at a scale where mistakes are visible immediately.

I owned the migration of the platform from a heavily customized legacy version of Coral (CoralTalk) to the current major version: investigation, migration tooling, infrastructure, rollout strategy, and the supporting delivery systems.

Scope of engagement

Full lifecycle ownership: migration planning, database export and schema-conversion tooling, Helm charts for dev and production, frontend integration and theming, feature-flagged rollout, and payment/auth library upgrades along the way.

What I owned

  • Wrote and tested the database export and schema-conversion pipeline that carried 40M+ comments (tens of gigabytes of data) across four major schema versions.
  • Coordinated an index-bloat fix during re-import that cut index size by more than half — importing data first and rebuilding indexes after, instead of paying the write-amplification cost.
  • Built the Helm charts for both development and production-optimized deployments of the new platform on GKE.
  • Designed the rollout around a feature flag so the new system could be enabled progressively and rolled back instantly.
  • Upgraded the Stripe and Firebase integration libraries the community platform depends on, keeping subscriptions and auth working through the migration.
  • Proposed and built ephemeral per-PR preview environments: every pull request gets its own namespace and live preview URL posted automatically, cleaned up on merge — zero manual intervention.

Caching for live market data

Separately from the migration, I designed the caching approach for a live gold-price widget: Varnish in front of the API so one upstream fetch every 15 seconds serves every reader, instead of letting constant client fetches reach the application layer. The reasoning came directly from operating high-traffic Next.js under load — the right tool placed at the right layer.

Operational care

Migration at this scale is mostly about not breaking things quietly: the plan included database copies validated in dev and prod, avatar handling moved onto owned infrastructure so external avatar URLs could never break, and explicit client sign-off requested on the fork-versus-upstream decision because it changes long-term maintenance economics.

Outcome

The community platform moved off an end-of-life fork onto a current, supportable version — with its data intact, its subscription and auth integrations upgraded, and a delivery pipeline (per-PR previews, Helm-based deploys) that makes future changes cheaper and safer.

Start with the right context

I am open to Staff / Senior Staff product roles and long-term contracting engagements. The useful first message is different for each.

Hiring team

Send the role, level, location constraints, interview process, and compensation range if available.

Client engagement

Send the product context, current system, timeline, team shape, and where ownership is missing.