Skip to content
Back to work
01Case study

Uplevelit.

An Experience-as-a-Service marketplace — 1:1 sessions, group classes, livecourses, and direct Q&A with operators who earned the knowledge in the field.

Role
Development Team Lead
When
2025 – 2026
Live
uplevelit.com
  • TypeScript
  • React
  • Firebase Functions
  • Firebase Hosting
  • Stripe
  • Twilio Video
  • SendGrid
  • Bunny Stream
  • Looker Studio

Overview

Uplevelit is Experience as a Service. Real professionals connect with real people who need exactly what they have — through 1:1 sessions, group classes, livecourses, and direct Q&A. People learn from operators who earned their knowledge in the field; operators share what only they know and help someone standing exactly where they once stood.

I led the engineering team that built it at Bizdesire — a React front-end on Firebase Hosting backed by Firebase Functions, with Twilio Video for live sessions and Stripe for the money side.

Fig. 01 — Session pipeline across four formats
1:1GROUPLIVECOURSEQ&ASESSIONshared abstractionSTRIPEpaymentTWILIO VIDEOlive callBUNNY STREAMrecording← stripe payout to operator

What I built

  • Multi-format sessions. One product, four delivery surfaces — 1:1 calls, group classes, livecourses, and asynchronous Q&A — sharing the same booking, payment, and notification primitives so the team isn't rebuilding plumbing per format.
  • Discovery and booking. Browse operators, see what they offer, book a slot. The booking flow holds the slot, charges via Stripe, and provisions the session room — all transactional so a payment failure doesn't strand a half-booked slot.
  • Live video on Twilio. Sessions run inside the platform — no Zoom link to share, no external meeting to coordinate. Twilio handles the WebRTC stack; we own the surrounding UX.
  • Stripe payments and creator payouts. Clients pay for sessions; operators earn into balances and are paid out via Stripe. Webhook handlers, refunds, and idempotent transaction handling so retries and replays never double-charge or double-payout.
  • Serverless backend on Firebase Functions. Business logic lives behind HTTPS and event-triggered functions — no servers to provision, no autoscaling to babysit. Each function owns one job; orchestration is explicit.
  • Video storage on Bunny Stream. Recorded sessions, operator-uploaded intros, course videos. Transcoding, adaptive streaming, and CDN in one place — without stitching S3 + MediaConvert + CloudFront together.
  • Email via SendGrid. Booking confirmations, reminders, receipts, password flows — all the transactional touchpoints a marketplace needs.
  • Analytics with Looker Studio. Operator earnings, session conversion, content performance — wired to the underlying data so stakeholders self-serve their numbers instead of pinging the team.

Key decisions

  • Shared session abstraction across formats. Treating 1:1, group, livecourse, and Q&A as variants of one Session object (not four separate features) keeps the booking, payment, and notification code paths singular — and means a new format ships in days, not weeks.
  • Firebase Functions over a managed Node service. Serverless removed an entire ops surface — no containers, no autoscaling config, no deploy pipeline for the backend tier beyond firebase deploy. Right call for a team that ships product, not infra.
  • Twilio Video over a homemade WebRTC stack. The product is about the experience, not the plumbing. Twilio handles TURN/STUN, recording, and quality — we spent our cycles on the UX around the call.
  • Bunny Stream for video. Purpose-built for video — transcoding, adaptive bitrate, and global CDN delivery in one product. Cheaper and simpler than the AWS triangle for our access patterns.
  • Idempotency keys on every Stripe-touching function. Functions can fire twice under webhook retries or client retries; idempotency keys make double-execution safe end-to-end.
  • Looker Studio over a custom dashboard. Stakeholders get charts without the team owning a BI tool — and dashboards stay current without dev cycles.

Role

As team lead I owned architecture and delivery alongside hands-on development — especially the booking, payment, and payout code paths the product depends on.