Primary User
Peacock executives screening unreleased MicroMaker cuts on iPhone.
A simple, solid iPhone app for Executives to screen vertical episodes the way they are meant to be watched.
The MicroMaker Screening App is a native iPhone app that allows Peacock executives to review MicroMaker vertical cuts in the right viewing context: on a phone, in portrait, with full-screen playback and immediate progression from one episode to the next.
v1 is intentionally narrow. A user enters a personal invite code, opens a private catalog, chooses a series, and watches episodes in sequence. The product is meant for internal screening first, not public release or consumer growth — but v1 is being built with clear line of sight toward a consumer-facing app (Bananas), so architecture decisions now should not paint us into a corner.
My recommendation is to engage a "Consulting Engineer" to advise on iOS/Swift/SwiftUI architecture, ensure best practices for video playback and app structure, and help build v1 with intentional foundations for the eventual consumer product. I have 2 candidates in mind.
We can use AI coding tools to execute on the code base, with oversight and testing at each phase. Note that cost considerations should include a retainer fee for the Consulting Engineer, AI tokens, and robust video hosting on a service like Cloudflare.
| Date | Milestone | Outcome |
|---|---|---|
| 03/20 | Scope and architecture sign-off | v1 locked, deferred items removed from active build |
| 03/24 | UX flow sign-off | Core screens approved |
| 03/27 | First TestFlight build | End-to-end flow working |
| 04/02 | Internal screening ready | Team can use the app with real cuts |
| 04/17 | Exec-ready delivery | Polished build ready for Peacock executives |
Peacock executives screening unreleased MicroMaker cuts on iPhone.
Internal Haymaker and MicroMaker stakeholders reviewing the same cuts before exec delivery.
| Area | Included in v1 | Notes |
|---|---|---|
| Access | Yes | Unique invite code, validated server-side |
| Catalog | Yes | Small private catalog of series and episodes |
| Playback | Yes | Full-screen portrait playback with immediate auto-advance |
| Resume | Yes | Saved locally on the same device |
| Captions | Yes | Sidecar VTT support |
| Telemetry | Yes | Playback starts and completions only |
Out of scope for v1: accounts, search, recommendations, My List, deep links, feedback tools, downloads, Android, and a CMS admin panel.
Open app -> enter invite code -> code is validated -> catalog appears
Catalog -> choose series -> choose episode or resume -> full-screen playback -> next episode starts automatically
Open app -> session still valid -> continue from same series and episode on the same device
Simple entry point with one field, one button, and a clear error state if the code does not work.
A small, visual library of available series. No search or feed logic.
Title summary, episode count, start or resume button, and a neat episode list.
Video fills the screen. Controls appear only on tap and disappear again quickly.
| Behavior | v1 Requirement |
|---|---|
| Orientation | Portrait only |
| Episode transitions | Immediate auto-advance, no countdown or interstitial |
| Manual movement | Users can move to the next or previous episode inside the series |
| Captions | Supported and available whenever delivered |
| Resume state | Saved locally on-device only |
| Quality bar | Must support stable viewing across 12+ episodes in one sitting |
Content is organized very simply: Series -> Episodes. The catalog remains small, so there is no need for search or recommendation logic in v1.
For launch, content is managed manually through a JSON catalog and private Cloudflare R2 uploads. This is acceptable for a small slate and keeps delivery lightweight.
Catalog -> Series Detail -> Full-Screen Player -> Auto-advance within the same series
Peacock delivers editorial cuts as high-quality production masters. We convert these to a mobile-optimized format before uploading them to the app.
| Peacock Delivery Spec | What We Convert To | |
|---|---|---|
| File type | MOV | MP4 |
| Video codec | ProRes 422 HQ | H.264 |
| Resolution | 1080 x 1920 (9:16) | 1080 x 1920 (9:16) |
| Video bitrate | 50+ Mbps | 4–6 Mbps |
| Audio | LPCM, 24-bit, 48kHz | AAC, 128kbps, 48kHz |
| Captions | Sidecar .SCC file | Sidecar .VTT file |
The conversion reduces file size by roughly 90% with no visible quality loss on a phone screen. H.264 is used because it plays natively on every device — iOS and Android — so the same files work if the app expands to other platforms later. Captions are converted from SCC (a broadcast format) to VTT (the format iOS uses), so users can toggle captions on and off in the app.
For v1, this conversion is done manually using a simple script before uploading episodes. An automated pipeline is planned for a later phase.
v1 only needs the minimum instrumentation required to prove that the app works and that reviewers are actually completing episode runs.
| Event | Purpose |
|---|---|
| Session created | Shows that a valid invite code was used |
| Playback started | Shows that a specific episode was opened |
| Episode completed | Shows that a viewing run likely reached the end of an episode |
A simple, password-protected upload page where an assistant editor or producer can add new episodes to the app without any technical knowledge.
The uploader submits:
The page handles uploading the files to storage and updating the catalog automatically. No command line, no code, no developer involvement. The episode appears in the app on the next refresh.
This upload page is a lightweight precursor to the full CMS planned for Phase 4. It covers the immediate need — getting episodes into the app quickly — without overbuilding.
| Date | Phase | Checkpoint |
|---|---|---|
| 03/17 to 04/02 | Phase 1 | Core app: invite code, catalog, playback, autoplay, captions, telemetry |
| 04/03 to 04/17 | Phase 2 | Polish, bug fixing, device QA, and exec readiness |
| After 04/17 | Phase 3 | Feedback tools and download exploration |
| Later phase | Phase 4 | CMS admin panel and broader content operations |
| Milestone | Date | Deliverable |
|---|---|---|
| Scope lock | 03/18 | Final v1 feature list |
| UX lock | 03/20 | Approved wireframes or mockups |
| First TestFlight build | 03/27 | Working end-to-end beta build |
| Internal ready | 04/02 | Usable build with real episodes |
| Exec-ready release | 04/17 | Final polished TestFlight build |
| Test Area | Owner |
|---|---|
| Backend testing (invite validation, signed URLs, telemetry endpoints) | Jonathan + Consulting Engineer |
| Binge-viewing QA (12–20 episode sessions on multiple iPhone models) | Jonathan / Team |
| Network testing (Wi-Fi, LTE, poor connectivity) | Jonathan + Consulting Engineer |
| Security testing (expired URLs rejected, revoked codes blocked) | Jonathan + Consulting Engineer |
| Caption rendering and toggle checks | Jonathan / Team |
| TestFlight install testing with non-team users before exec rollout | Jonathan / Team |
TestFlight is Apple's official system for sharing apps privately before they go live on the App Store. Think of it like a private screening link — but for an app instead of a video.
Here's how it works for the people using it:
When we push updates or fixes, TestFlight automatically notifies them and the app updates with one tap. No App Store review process, no public listing, no waiting. We control exactly who has access and can revoke it at any time.
For v1, TestFlight is the right distribution method because the app is for a small, known group (~10–30 people), not the general public. It's how virtually every iOS app is tested before launch — it's the industry standard, not a workaround.
Prepared as a simple presentation version of the v1 product spec for non-technical review.