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
- 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.
- 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.
Hiring for something like this?
Tell me what you're building