At a Glance
| COMPANY | MyOutDesk, a leading virtual assistant company founded in 2008, headquartered in Sacramento, CA |
|---|---|
| SCALE | 6,500+ clients globally across healthcare, real estate, legal, and IT |
| USE CASE | MyTimeIn, an internal time-tracking and real-time chat app for the virtual assistant workforce |
| STREAM PRODUCT | Chat, ~2,300 monthly active users |
| MIGRATED FROM | PubNub |
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:
| Issue | Impact |
|---|---|
| HTTP instead of real WebSockets | Users silently dropped from channels past 300+ members |
| Unreliable presence & typing | Failed even with two subscriptions per channel |
| Safari memory leak | No way to reliably disconnect it at the browser level |
| Unpredictable pricing | One 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: 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 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).

