Raphael Bernardo
Senior Android Engineer · Applied AI & Forward Deployed Engineer
Ex-Uber (contract) · Android TV, Fire OS and multi-brand OTT streaming — Media3/ExoPlayer, DRM, native JNI/C++, and agent-driven delivery.
Summary
Profile · PositioningSenior Android engineer with cross-stack reach — Uber Maps SDK (JNI/C++), OTT / CTV streaming frameworks, broadcast-grade DRM. Ten-plus years shipping production apps across Android, Android TV, Fire OS, webOS and Tizen — including a multi-brand OTT streaming framework and 4K DRM-protected playback (Widevine, PlayReady).
Experience
Engagements · 2014 → Present- Contributed to the architecture of an enterprise OTT streaming framework powering multiple TV station brands across Fire TV and Android TV using MVVM + Clean Architecture with a plugin-based integration layer for third-party services.
- Built five specialised Media3 / ExoPlayer implementations covering VOD, live, and audio playback with HLS adaptive bitrate.
- Shipped DRM-protected playback (Widevine, PlayReady) with both server-side and client-side ad insertion.
- Integrated the platform's analytics and audience-measurement stack under GDPR / CCPA compliance.
- Delivered TV-optimised auth (device-based), entitlement & flexible paywall, and zero-downtime feature rollouts across a large multi-brand flavor matrix via remote config; built Leanback TV UI with full d-pad navigation.
- Refactored callback chains to reactive Kotlin SharedFlow; resolved fragment-lifecycle leaks; wired Firebase Crashlytics + New Relic with JUnit, Mockk, Robolectric, Espresso coverage.
- Run a client-approved agent-driven delivery workflow end to end: an agent picks up the tracker issue with its acceptance criteria, works the change on an isolated branch, runs the test suite alongside agent-driven end-to-end checks against a running build, and opens a GitHub pull request carrying the issue context and test evidence. GitHub Actions runs the pipeline; a second model audits the diff against the original request before anything is reported done.
- Returned to the Select TV and FreeCast Watch products across Android, Android TV, Fire OS, webOS and Tizen through to the end of the engagement.
- Used coding agents as a primary development method on migration and refactor work, with automated verification in CI before review.
- Greenfield Android TV / Fire OS app for one of Brazil's largest pay-TV operators; 4K streaming via DASH / HLS with multi-DRM.
- Contributed to the data layer as a shared Kotlin Multiplatform (KMP) submodule consumed by Android, webOS and Tizen clients.
- Multi-module MVVM architecture; Media3 playback; analytics across Firebase + Google Analytics 4.
- Applied AI-assisted development across the greenfield build — code generation and review over the Kotlin Multiplatform and multi-module layers.
- Led the full migration of the legacy Java codebase to Kotlin; introduced Use-Case + Clean Architecture and improved end-user UX.
- Implemented HLS / DASH playback for live linear TV and VOD with Widevine DRM-protected streaming; integrated Google Cast and a paid subscription gateway.
- Maintained and developed companion apps on webOS and Tizen alongside the Android TV / Fire OS surfaces.
- Integrated OTA tuner platforms (HDHomeRun, AirTV, Alticast, PDAQ) with GStreamer-based media pipelines for secure live broadcast over HLS / DASH.
- Owned DRM, EPG, tuner orchestration, transcoding, and multi-device streaming end-to-end.
- Shipped on Google Play (Select TV Android, FreeCast Watch) and Amazon (FreeCast Watch Fire OS).
- Used AI-assisted development on the Java-to-Kotlin migration and on widening test coverage.
- Worked on the Maps team SDK module — JNI/C++ bindings between Uber's native Maps engine and the Android client.
- Worked in Uber's RIBs architecture inside the internal monorepo (not the public repository); the SDK module shipped into Uber Rider, Uber Eats and Uber Driver.
- Operated inside a 10K+ engineer codebase using Buck, Flipper, custom analytics / logger / crash reporter and a feature-by-module architecture.
- Opening engagement on the Select TV Android and FreeCast Watch codebases, starting the migration from Java to Kotlin.
- Migrated the full codebase from Java to Kotlin; implemented online payment gateway, virtual showcases and an SSO link to a partner web ordering portal.
- Built scalable asynchronous order processing on AWS SQS / SNS for reliable queuing and notification delivery.
- Built the Minha CVC travel app from its initial implementation as part of the agency team — 1M+ downloads; shop geolocation directing customers to physical stores; itinerary feature reducing customer-service call volume.
- Worked on Getnet; migrated MVP to MVVM; introduced RxJava2 and LiveData.
- Built mobile payments via QR code and geolocation; first Android + Laravel REST experience.
- Wrote SQL queries against IBM DB2 in support of contract and sales teams; produced reporting spreadsheets and Hyperion-based BI artefacts.
- Documented internal processes via SharePoint; first professional exposure to enterprise databases, REST APIs, and Agile workflows.
- Documented and implemented automated test cases in Selenium with TestNG.
Published Applications
App Store · Google Play · Shipped under my own developer accountsAI-Native Engineering Practice
Built and run on my own machines and time · not in any client codebaseMulti-provider LLM orchestration
A dispatch daemon routing coding work across my own seven-machine fleet, exposed to the orchestrating agent as 15 MCP tools.
- Cost-aware routing over 8 providers and 22 models in 6 tiers, applying rate-limit backoff, per-provider cooldowns and capability matching in order.
- Flat-rate providers are marked serial-only, so a parallel fan-out cannot burn a subscription's concurrency limit.
- Encrypted job transport keyed off the existing SSH identity — RSA-OAEP + AES-256-GCM, fresh key and nonce per message — with five-source peer discovery under an explicit precedence ladder.
Instrumentation as a definition of done
I authored a language-neutral trace-contract standard: the compile-time reference graph is the specification, and the runtime trace is reconciled against it automatically.
- Ships a written spec, JSON Schemas, a cross-language conformance oracle, a golden-case corpus, and an agent plugin whose hook blocks completion while the graph is stale.
- Gate severity is scoped — agent-authored edits block at the definition of done; human commits degrade to a lint error, never a test failure.
Closed-loop evaluation on my own TV app
My personal tvOS and Android TV media player exposes an on-device HTTP diagnostic surface — trace, state, screenshot, scripted navigation, and 149 named test routines.
- Each routine declares required parameters and returns a structured pass/fail or a machine-readable 422. An agent drives the app, captures what the screen actually shows, reads the emitted events and evaluates against the contract.
- Compiled out of release builds.
Fleet operations
Manifest-driven deployment across five personal machines under launchd, systemd and Task Scheduler.
- Each application declares its install, launch and health contract; deployment is a git push. Supervision and auto-update run on decoupled intervals so a crash restarts in seconds. Cross-machine control is RSA-signed per request.
Selected Personal Work
Independent · Open Source · ResearchArquive — backend for the Archive tvOS app above
Self-hosted personal media archive & streaming server. In-browser HLS playback with GPU-accelerated transcoding cache, IPTV (M3U + XMLTV EPG + recording), DLNA/UPnP for smart TVs, distributed GPU-fleet transcoding, FAISS-backed face recognition, local-AI captions via Ollama, plus a native Apple TV (SwiftUI) client.
DynamicMusicApp
Android music player with three pluggable design systems users switch at runtime — Material You (Google), Neon Wave (synthwave), and Organic Flow (botanical). One Compose codebase, three radically different visual identities — design-system theming treated as a first-class architectural concern.