All work

Realtime Framework — replacing 3-second polling with live sync

Eliminated poll-driven latency · lower server load · richer interactive sessions

The whole platform polled every 3 seconds. We didn't notice the tax until we removed it.

The problem

The Rising Team platform was held together by 3-second polling. Every interactive session — votes, dyad splits, reflection capture — had a built-in 3-second floor on responsiveness. Sessions felt sluggish. Server costs scaled linearly with concurrent participants doing nothing.

For new product surfaces (live AI Coaching, multi-participant Mini Kits) the 3-second tax made the experience feel laggy enough that managers would drop out.

The approach

Designed and shipped a realtime data-sync framework to replace polling across the platform.

  • Server-pushed updates for session state, presence, votes, and progress instead of client-pulled checks.
  • Selective subscription — clients subscribe only to the slices they need, keeping fan-out tight.
  • Backwards-compatible adapter — feature owners migrated incrementally from polling to realtime without re-writing their state code.
  • Resilient reconnect — sessions survive flaky Wi-Fi, network switches, and lid-close/reopen cycles without dropping participants.

Stack

Django · React · TypeScript · WebSockets · PostgreSQL

Outcomes

  • Eliminated poll-driven latency on every migrated surface.
  • Lowered server load and per-participant cost.
  • Unlocked interactive session formats that the 3-second polling envelope simply couldn't carry — including the live AI Coaching flow.

What I learned

  1. Polling is a tax you stop noticing. Until you remove it, you under-design the product around it. Several "this would be cool but feels too laggy" ideas became viable the week the framework shipped.
  2. A migration path matters more than the framework. Forcing a big-bang rewrite would have killed adoption inside the team. The adapter let owners migrate one surface at a time.