Case Study
PlayCV
Helping Nigerian graduates get noticed by employers through video CVs.

The Problem
Nigeria's graduate job market is noisy — thousands of text CVs per role, most unread. PlayCV's hypothesis was that a short video CV would surface personality and communication skills that paper can't. The challenge was building a monetised, admin-controlled platform that worked for both job seekers and employers.
Key Technical Decisions
Used NX monorepo to house the main platform and the admin dashboard; this let the two apps share component libraries and API types without publishing a private package.
Chose Tiptap Rich Editor for the profile bio field because it gave us a clean JSON output format that was easier to store and render than raw HTML from Quill.
Cloudflare integration was added for video delivery, storing video on Cloudflare R2 and streaming via Cloudflare Stream kept costs low compared to S3 + CloudFront for a startup budget.

Challenges & Solutions
Challenge
The paywall needed to work at multiple levels: profile access (per-employer pay-per-view) and job ad posting (subscription tier). These were two different payment flows.
Solution
Built a unified payment context that accepted a 'payment type' prop, routing to different Paystack configurations while sharing the same UI components and success/error handling.
Challenge
Admin approval of video CVs had to happen before they were visible to employers, requiring a pending/approved/rejected state machine.
Solution
Modelled this as a status field on the profile document and built an admin queue view using TanStack React Table with column filters by status.
Challenge
There was no design to follow — no Figma file, no wireframes, no mockups. Every screen was designed from scratch as I built it, which meant making UX decisions in real time without a reference point.
Solution
Developed a personal design-as-you-build workflow: sketching rough layouts on paper before touching code, using MUI's component library as a constraint to avoid decision fatigue on low-level UI, and iterating on live previews rather than static mocks. This forced me to think like a product designer, not just an implementer.

Outcome
Shipped a working dual-surface platform with real monetisation. The NX setup in particular was a new skill that opened up how I think about multi-app projects.
What I Learned
Designing payment flows is mostly UX work, not API work. Most of the complexity is in what happens after payment fails, not after it succeeds.