Matthew Huang

Case study

C2 Capital

At C2 Capital, I worked on a live-streaming social platform built with Swift and AgoraSDK. One of the most important features I delivered was Guest Box mode, where viewers could request to become co-hosts and join the live session directly with the streamer.

SwiftSwiftUIAgoraSDKSwitch-role architectureReal-time video

Why this project matters

This project is a strong example of practical engineering judgment in a real-time product. It shows how I handled product complexity, challenged an approach with evidence instead of conflict, and used a working demo to guide the team toward a simpler and more scalable solution.

Challenge

The Guest Box feature began to grow overly complex because leadership wanted too many related capabilities packed into a single version. At the same time, the Android lead proposed using a media-channel relay approach to turn a viewer into a co-host. That approach was not a good long-term fit because it would break down once multiple co-hosts needed to stream at the same time. It also added unnecessary complexity for a feature that needed to be reliable and easy to extend.

Hardest problem

The hardest part was not only the technical implementation, but also aligning the team around a simpler solution without creating unnecessary conflict. I had already validated that using AgoraRTC's switch-role approach allowed a viewer to become a co-host cleanly and was much more suitable for multiple co-hosts. Meanwhile, the Android side had spent significant time pursuing a more complicated relay-based direction and was falling behind. I needed to prove a better path in a professional way that would keep the project moving and preserve team alignment.

What I owned

  • Implemented the iOS Guest Box flow that allowed viewers to request co-host access and become live co-hosts after acceptance.
  • Validated that a switch-role approach in AgoraRTC was simpler and more scalable than the media-channel relay direction being explored elsewhere.
  • Built a working demo to show the feature behavior clearly instead of arguing about architecture in the abstract.
  • Helped move the team toward a solution that would support multiple co-hosts more cleanly.

Architecture and approach

  • Focused on the actual user transition: viewer requests co-host access, streamer accepts, viewer switches role and joins as an active broadcaster.
  • Used AgoraRTC's switch-role method because it matched the product need more directly and avoided the complexity of relaying media as if the user were becoming a separate primary streamer.
  • Kept the implementation as simple as possible so the feature could remain understandable, stable, and easier to extend later.
  • Created a concrete demo to validate the flow end to end and make the technical tradeoffs visible to the team.

Collaboration

  • Worked with product and design while feature scope was becoming overly ambitious for a single release.
  • Shared a working iOS demo with management to demonstrate that the simpler approach already worked in practice.
  • Handled the disagreement with the Android lead professionally by focusing on evidence and delivery rather than debate.
  • Helped the team align on a common implementation direction once the demo made the tradeoffs clear.

Tradeoffs and obstacles

  • Chose a simpler, role-based solution over a more complicated relay-based model because it better supported multiple co-hosts.
  • Used a working prototype to guide technical alignment instead of turning the disagreement into a prolonged architectural argument.
  • Prioritized a solution that could ship reliably and scale with the feature's likely future needs.
  • Avoided unnecessary conflict by letting implementation evidence speak for itself and giving others room to accept the better path without losing face.

Outcome and impact

  • Delivered a working Guest Box implementation on iOS while the Android side was still blocked on approach.
  • Helped the team converge on a simpler and more scalable co-hosting solution.
  • Reduced delivery risk by avoiding a more complicated architecture that would have struggled with multiple simultaneous co-hosts.
  • Kept the feature moving forward during a period where scope complexity and technical disagreement could easily have delayed release further.

What I learned

  • A working demo is often the safest and most effective way to resolve technical disagreement.
  • In cross-team situations, evidence usually creates better alignment than direct argument.
  • Simpler solutions are especially valuable in real-time systems, where added complexity multiplies quickly.
  • Technical leadership sometimes means helping the team change direction without turning it into a personal conflict.

What I would improve next

  • I would push earlier for tighter scope control so core live-streaming features are not overloaded into a single release.
  • I would document the scalability limits of alternative approaches sooner so the team can evaluate them more objectively.
  • I would add stronger technical notes around co-host state transitions and multi-host behavior to make future extensions easier.