Subscription Streaming for a Nairobi Media Company
Designed and built a clickable operator console for a Nairobi streaming service that sells local films, series and documentaries in Kenya, Uganda, Tanzania and Rwanda: a catalogue that only publishes ready, licensed titles, an encoding and DRM pipeline with plain-language errors, and M-Pesa reconciliation with suggested matches.
Most of our work is under NDA. Per agreement, we can share the work but not the company details - all names and identifying information shown here have been changed.
Dashboard, content library, title editor with 7 tabs, encoding and DRM jobs, and reconciliation. Every one of the 24 demo titles opens its own editor.
English and Kiswahili metadata, poster, backdrop, DRM renditions, a subtitle track, a rating and a licence window. Publish stays disabled until all pass and a window is open or scheduled.
6 payments in the provider only, 3 in Pazia only and 3 amount mismatches next to 4,118 matched lines. The day can only be closed and locked once every break is resolved.
9 films, 10 series and 5 documentaries from 6 licensors across 4 territories, with 18 pipeline jobs, 14 subscriber accounts and 4 payment statement sources.
Mvule Ridge Media started by selling film rentals through a WhatsApp line and a Paybill number, then moved to a white-label video app that had no idea what a rights window was. Titles stayed live in Uganda after the Uganda licence had ended, kids could open any film because profiles had no PIN, and finance matched M-Pesa statements to subscriptions by hand in a spreadsheet every Monday. Nobody could say which titles kept people subscribed.
Pazia is the subscription service and the operator console behind it. The console only publishes a title when it is ready and licensed, works out where each title may be live from its licence windows, follows every source file through encoding, DRM and QC, and matches mobile money statements to subscriptions with suggested matches for every break.
Pazia streams to Kenya, Uganda, Tanzania and Rwanda, mostly to phones on patchy data and mostly paid by mobile money. Every title carries its own licence terms per country, and the viewers include children.
A licence sets the territories, start and end dates, exclusivity, downloads and holdbacks for each title. A title may only stream where and when its licence allows, and the old app kept titles live after a window had closed.
Films in Kenya are classified by the KFCB under the Films and Stage Plays Act, and how far that reaches streaming has been debated. Ratings still have to decide what kids profiles see and when a PIN is asked for.
Viewers pay by M-Pesa prompt, Paybill, Airtel Money, card or airtime. Paybill payments arrive with a wrong account reference, prompts time out after the money moves, and "I paid but it says I haven't" was a top support complaint.
Licensors expect Widevine, FairPlay or PlayReady, a cap on concurrent streams and limits on downloads. Every film and episode has to be encoded into a ladder from 240p up, packaged, protected and checked before a viewer on a slow connection can press play.
Mapped 13 user roles, 45 screens (17 viewer app screens for web, Android, iOS and smart TV, and 28 console screens) and the data model for titles, episodes, licences and windows, assets, pipeline jobs, ratings, plans, subscriptions, payments and provider statements. Wrote down the rules the design follows: the Kenya Data Protection Act 2019, KFCB classification, the Consumer Protection Act 2012, VAT and KRA eTIMS invoices, licence windows, studio DRM and an audit of every change.
Built 5 key console screens on a production dashboard kit: the dashboard with 5 KPIs, subscribers by plan and territory, plays per hour against last week and a needs attention list; the content library with readiness filters and bulk publish; the title editor with metadata, episodes, renditions, rights, rating, availability and activity; encoding and DRM jobs with a job log panel; and reconciliation. A territory filter in the top bar narrows the dashboard and the library. All actions run on local state.
Integration with M-Pesa Daraja and Airtel Money, a card provider such as Paystack, a carrier billing aggregator, KRA eTIMS, Africa's Talking SMS, an encoder such as Mux or AWS Elemental MediaConvert, multi-DRM licensing, a CDN and playback analytics. Staff roles with two-factor sign-in, an append-only audit log, and the remaining screens: the viewer apps, licences, age ratings, rails, plans, subscribers, payments, sharing signals, support, privacy requests, analytics and settings.
Each title carries a readiness score such as "8 of 8 ready" with the checklist beside the editor. A missing Kiswahili synopsis, rating or DRM rendition keeps Publish disabled, and the screen says what unlocks it.
The availability tab shows each territory with the reason a title is or is not live there: no window, window ended, no rating, not encoded, not published or scheduled. The dashboard counts titles live outside their window, which should always be zero.
An unmatched Paybill line shows the likely payment by phone, amount and time, for example "same phone, same amount, 32 seconds apart". Staff accept the match, match by hand, credit the account or raise a query with the provider.
Failed jobs say what went wrong and what to do, such as an audio track 23 ms shorter than the video. The job log shows each stage, the DRM key id, CDN path, renditions and QC results, with retry, re-encode and mark QC passed.

Designed and built a clickable newsroom system for an independent English and Afrikaans digital outlet in Windhoek: a story budget board that refuses stories not ready to publish, a block editor with style-guide hints and linked translations, and a review queue where flagged stories wait for a legal decision before they can go out.

Designed and built a clickable creator studio for a Santiago membership platform: tiered memberships priced in Chilean pesos, paywalled posts with access by tier, a member list that respects what each member agreed to share, and payouts that show every fee, refund and chargeback deducted.
Enterprise Software Engineering - Human + AI
Contact Us
© 2026 - Copyright. All Rights reserved Oceanlab
Location
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
Enterprise Software Engineering - Human + AI
Contact Us
Locations
Global Headquarters
21 Merchant Road, 3rd Floor, Singapore 058267
Main corporate office and leadership operations
North America Office
548 Market Street, PMB 12345, San Francisco, CA 94104
Client operations and business development
India Office
402 Shivalik Shilp II, SG Highway, Ahmedabad 380015
Engineering and delivery center
© 2026 - Copyright. All Rights reserved Oceanlab