Build multi-modal AI applications using our new open-source Vision AI SDK.

MyOutDesk Cut Chat Code 50% Moving Off PubNub

New
4 min read

How a 2,500-person virtual assistant workforce got reliable presence, predictable pricing, and zero support tickets, in a migration that took under two weeks.

Sarah L
Sarah L
Published July 8, 2026
MyOutDesk case study: powered by Stream Chat

At a Glance

50% of the messaging codebase removed, from ~4,000 lines down to ~2,000
~1.5 wks to fully migrate off PubNub, against a three-week estimate
0 support tickets opened with Stream since the switch, vs 10 to 15 with PubNub
COMPANYMyOutDesk, a leading virtual assistant company founded in 2008, headquartered in Sacramento, CA
SCALE6,500+ clients globally across healthcare, real estate, legal, and IT
USE CASEMyTimeIn, an internal time-tracking and real-time chat app for the virtual assistant workforce
STREAM PRODUCTChat, ~2,300 monthly active users
MIGRATED FROMPubNub

The Challenge: A Chat SDK That Was Never Built for Chat

MyOutDesk runs MyTimeIn, the internal desktop app its global workforce uses for time tracking and real-time chat.

Coaches and HR each manage hundreds of conversations (some sitting in 300+ channels at once). MyOutDesk promises clients real-time monitoring, so a missed message means they've broken that promise.

Their previous provider, PubNub, could not carry that load. As Director of IT and Chief Architect Jayson Lindsley put it, PubNub was a publish/subscribe service with chat bolted on as a sidecar.

The gaps were structural:

IssueImpact
HTTP instead of real WebSocketsUsers silently dropped from channels past 300+ members
Unreliable presence & typingFailed even with two subscriptions per channel
Safari memory leakNo way to reliably disconnect it at the browser level
Unpredictable pricingOne bug caused a $2,800 overage in a single month, about three months of Stream's annual cost.

With 10 to 15 support tickets opened and little help after PubNub reorganized, the math was simple: a $2,800 bad month was reason enough to leave before the contract ended.

The Decision: The Easiest Call They Should Have Made First

Lindsley evaluated Stream's SDK and estimated the team could rebuild the entire chat layer in about three weeks.

The contrast with PubNub was immediate. Where PubNub's functions half-did what their names implied, Stream's did exactly what they said. Set a user's status, and the status is set.

"This is the easiest one by far. It's the decision we should have made the first time, rather than spending six months trying to wrangle with something we shouldn't have." - Jayson Lindsley, Director of IT & Chief Architect, MyOutDesk

The Migration: Half the Code, in Half the Time

Lindsley estimated three weeks. It took a week and a half.

Two engineers, Lindsley and Senior Software Engineer Lance Thompson, ripped out the roughly 4,000 lines of workaround code they'd built to force PubNub to behave. Stream needed about 2,000 lines to do the same job. Half the codebase, gone.

Presence stopped being a fight. One subscription per channel instead of two, so a coach managing hundreds of conversations never misses a message.

Permissions got simpler too: Stream's role system replaced PubNub's fragile, rule-based access controls. A moderator is a moderator, no workarounds required.

With time to spare, the team built extras like a live video check-in feature, plus Stream's built-in link previews and file sharing.

The docs just worked. Clear answers. No guesswork. Fast progress. CPU usage on the desktop app dropped the moment they flipped the switch.

Inside MyTimeIn showing real roles  -  global moderators, moderators, members  -  and live presence across the workforce

Inside MyTimeIn: real roles (global moderators, moderators, members) and live presence across the workforce.

The Results

  • Predictable, CFO-ready pricing. Chat went from a variable, sometimes-buggy cost to a fixed one. Lindsley can bring a clean line item upstairs, get a quick yes, and renew for twelve months. No surprise overages, no questions.

  • Reliable presence at scale. MyTimeIn runs ~2,300 monthly active users and 37,000+ messages a month, past 50% of its concurrent-connection allowance at peak (with zero degradation).

  • Rock-solid reliability. Zero support tickets with Stream since the switch, versus 10 to 15 with PubNub. In Lindsley's words: "rock solid."

  • A better experience, quietly. No more refreshing to get messages to appear. No complaints since the switch (the best sign for infrastructure that's supposed to be invisible). One team member rated it a 10 out of 10.

MyTimeIn pairing Stream Chat with device compliance and time tracking in one app  -  the daily home base for every virtual assistant

MyTimeIn pairs Stream Chat with device compliance and time tracking in one app, the daily home base for every virtual assistant.

What's Next

With half the code to maintain and no open tickets, MyOutDesk's team is free to build.

Next on the roadmap with Stream are video calling and screen sharing for support, and SIP-based phone check-ins so field staff can stay reachable during outages, typhoons, and other disruptions when a computer is not available. The same custom-event check-in pattern they built on chat extends naturally into those features.

The Team Behind MyTimeIn

MyTimeIn's Stream Chat integration was designed and built by Jayson Lindsley, Director of IT & Chief Architect (jaysonlindsley.dev), and Lance Thompson, Senior Software Engineer (lancethompson.dev).

Ready to Increase App Engagement?
Integrate Stream’s real-time communication components today and watch your engagement rate grow overnight!