Reorganized 04/29 โ Phase 1 Shipped, Phase 2 Active
Bananas ๐
Bananas is the MicroMaker screening app โ a simple, solid app for executives to screen vertical episodes the way they are meant to be watched. Phase 1 shipped to Peacock on April 21, 2026. Phase 2 is now in scoping.
Bananas โ the MicroMaker screening app โ shipped to Peacock on April 21, 2026. Phase 1 is complete and the app is in active daily use by the network. Phase 2 โ viewer telemetry & user behavior intelligence, plus UI refinements โ is now in scoping.
On April 21, 2026, Aaron Rothman greenlit the first 14 episodes of Campus Confidential: Miami and invite emails went out at 7:09 PM to 29 Peacock executives, music rights organizations, and program ops contacts, plus 11 additional internal stakeholders. Salon Confessionals with Madison LeCroy is the next series in the pipeline (target air week of 7/6).
The shipped product is a superset of what the v1 spec (Section 3) describes. Notable deltas added during build:
Cross-platform distribution โ Android via Google Play alongside iOS TestFlight (the v1 spec was iOS-only).
Admin interface โ Aaron has direct control over episode permissions, chapter organization, and viewer status.
Role-based content permissions โ internal vs. network content gating. Team sees works-in-progress; network users see only Aaron-approved cuts.
Chapter tier โ added beneath Series to organize multi-storyline content (Chapter 1: Influencer Enemies, Chapter 2: Georgia).
Episode title overlay โ episode titles surfaced in playback chrome alongside series title and number.
What's Next
Section 2 lays out Phase 2 in detail. Two workstreams:
Viewer Telemetry & User Behavior Intelligence โ richer playback events routed to an off-the-shelf analytics platform (Amplitude is the working assumption), with role-based filtering and per-episode drop-off views surfaced to producers. The headline deliverable.
UI refinements โ a short list of playback affordances surfaced during Phase 1 screening.
The strategic purpose is to prove the team can ship a learning tool, not just a screening tool โ building the case for Peacock to expand the partnership and unlock broader investment.
How to read this doc:
Section 1 (this section) โ current state, what shipped, what's next.
Section 2 โ active Phase 2 scope and implementation plan.
Section 3 โ Phase 1 historical archive: original v1 specification preserved verbatim with sections renumbered as 3.1โ3.21.
Section 4 โ brief rollout narrative; full chronology lives in the companion doc Peacock_Exec_Rollout_Summary.md.
Strategic frame. Phase 1 proved the team can ship a clean screening tool. Phase 2 needs to prove the team can ship a learning tool โ one whose insights de-risk Peacock's decision to expand the partnership. The bar isn't "every chart anyone could want." It's: a producer can sit with a Peacock exec, point at a drop-off curve on episode 4, and say "this is where we lost them โ here's what we'd cut differently next time."
Audience expands from the original ~10โ30 exec cohort to (a) a broader Bravo/Peacock stakeholder pool and (b) a small consumer beta-tester cohort whose engagement data is the signal that actually matters.
2.1 Two Workstreams
1. Viewer Telemetry & User Behavior Intelligence
Richer playback events, routed to an off-the-shelf analytics platform (Amplitude is the working assumption), with role-based filtering and per-episode drop-off views surfaced to producers and execs. Priority deliverable.
2. UI Refinements
A short list of playback-affordance tweaks gathered from Phase 1 screening feedback. Ships alongside telemetry.
App-kill caveat. iOS gives us background events but no callback when a user force-quits. Treat app_background with no follow-up app_foreground within N minutes as an implicit session end. Document the limitation; do not overstate the data.
Timecode-to-script mapping (stretch). Every progress / pause / abandon event carries position_ms. If episode metadata includes a chapter or scene boundary table โ and eventually word-timed transcripts from the captioning workflow โ the dashboard can resolve any timestamp back to "which scene, which line." Capture the data unconditionally; treat the visualization as a stretch goal pending transcript availability.
2.3 Analytics Platform
Working recommendation: Amplitude. Off-the-shelf, supports custom event schemas, native funnel/flow/retention analysis, and cohort filtering by user property. Producers get a real UI without the team building a dashboard from scratch. Free tier likely sufficient at screening-cohort scale.
Routing โ decision pending. Events can go to Amplitude (a) directly from the iOS / Android client via Amplitude's SDK, or (b) forwarded through the existing Cloudflare Worker. Working assumption: Worker-forwarded, because the Worker is the natural place to enrich events with the role tied to the invite code and dual-write to KV for our own retention.
Out of scope for Phase 2: building a custom dashboard. If Amplitude's stock views aren't sufficient, defer a custom view to Phase 3.
2.4 User Roles (extending the shipped system)
The shipped app already implements role-based content permissions โ internal team members see works-in-progress; network users see only Aaron-approved cuts. That gate is in place. Phase 2 extends the role system in two ways: (1) adds a consumer_beta role for a small consumer test cohort, and (2) wires role into every telemetry event as a user property so analytics can be filtered by audience.
Role
Source
Status
Treatment in Telemetry
internal
Team-issued codes
Already shipped
Filtered out of default reporting
stakeholder
Peacock exec / partner codes
Already shipped (29 execs + music rights orgs as of 4/21)
Analyzed but flagged
consumer_beta
New codes for a small consumer test pool
New in Phase 2
The clean engagement signal
2.5 UI Refinements (working list โ final list TBD)
#
Feature
Behavior
UI1
Variable-speed playback (incl. 2ร)
Handled via Settings, not a press-and-hold gesture. See UI3 for surfacing the control on the playback overlay so it isn't buried.
UI2
Press-and-hold to freeze frame
Hold pauses playback on the current frame; release resumes. Use case (Pedro Vital): episodes that surface multiple images on screen at once โ a viewer can hold to study each one without losing their place. The press-and-hold gesture is now reserved for this behavior since speed control moved to Settings (UI1).
UI3
Surface variable-speed control
Already implemented but buried in Settings. Move to playback overlay or make discoverable via tap.
UI4
Scroll-up affordance
Specific behavior TBD โ Jon to confirm from notes.
UI5
Title-safe overlay export for editors
Static asset, not in-app: a Premiere-importable PNG/template showing where app UI chrome sits over the 9:16 frame, so editors don't place on-screen text under app overlays.
2.6 Out of Scope for Phase 2
Custom-built dashboard (use Amplitude's UI for v2)
Full transcript-to-timecode visualization (capture the data; defer the view)
DRM / screen-recording prevention (still deferred from v1)
Subtitle content delivery (content team workstream, not the app)
2.7 Timeline
Working schedule for Phase 2. Aggressive but achievable; assumes the telemetry routing decision (Worker-forwarded vs. direct) lands by end of W1.
Week
Window
Focus
W1 (this week)
04/27 โ 05/01
Scope + research telemetry solutions and implementation paths
W2
05/04 โ 05/08
Execute telemetry build; internal rollout by end of week
W3
05/11 โ 05/15
UI changes (UI1โUI5) + internal testing
W4
05/18 โ 05/22
Push telemetry to all users (end of W3 if ready, otherwise end of W4)
2.8 Implementation Plan
Sequenced for fastest demoable telemetry. Each step gates on the prior.
Lock final UI tweak list. Jon consolidates scattered notes; decide UI1 vs. UI2 gesture conflict.
Stand up Amplitude trial. Define event and user-property schema; confirm free-tier limits cover expected volume.
Decide telemetry routing. Worker-forwarded vs. direct-from-client. Default Worker-forwarded.
Extend invite-code issuance with role. Worker change; existing codes default to stakeholder (Peacock execs) or internal (team).
Extend Worker /telemetry endpoint. Accept new event types, attach role from session token, dual-write to KV and Amplitude.
Instrument the iOS and Android clients. Wire pause/resume/seek/progress/advance/abandon/background/foreground events without regressing playback continuity.
Generate title-safe overlay template. Static asset; deliver to editorial.
Build the UI refinements. Ship behind the same TestFlight + Google Play cadence.
Issue consumer-beta invite codes. Small initial pool. Confirm events tag correctly.
End-to-end validation against acceptance criteria.
Demo session with Peacock. The actual deliverable.
2.9 Acceptance Criteria
#
Criterion
How to Verify
P2-1
All Phase 2 events arrive in Amplitude within 30s
Amplitude live event view during a test session
P2-2
Drop-off curve renders for any episode with โฅ10 viewers
Amplitude retention chart
P2-3
All views can be filtered by role
Toggle filter; confirm internal excluded by default
P2-4
Continuation rate computable per episode
Build funnel in Amplitude; validate against raw events
P2-5
Press-and-hold 2ร works without conflicting with tap-to-show-controls
Manual test on 2+ devices
P2-6
Title-safe template renders correctly in Premiere over a sample 9:16 frame
Editor confirms
P2-7
Consumer-beta codes work end-to-end and tag correctly
Issue code, watch episode, query Amplitude
P2-8
Telemetry instrumentation does not regress 20+ episode binge stability
Repeat the v1 binge test on a Phase 2 build
2.10 Open Questions
Final UI tweak list (Jon to consolidate).
Amplitude pricing tier given expected event volume.
Direct-from-client vs. Worker-forwarded telemetry routing.
Size and source of consumer-beta cohort (who, how recruited).
Will scene boundaries / transcripts be available in time to demo timecode-to-script mapping?
App-kill detection: how much fidelity can we realistically get?
Engagement / commercial structure for Phase 2 (handled separately, not part of this spec).
3. Phase 1 Historical Archive
The sections below are the original v1 specification authored Mar 17, 2026 and refined through the 03/20 scope review. They are preserved verbatim with section numbers renumbered as 3.1โ3.21. The shipped product is a superset โ see Section 1 for the actual outcome and the deltas added during build.
3.1
Executive Summary
Editor's note (added 04/30/2026): at the time of writing, the app was unnamed. It later shipped as Bananas ๐. References below to "the MicroMaker Screening App" and the line about a future "consumer-facing app (Bananas)" both refer to what is now Bananas โ the screening tool and the planned consumer product converged under one brand.
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 cross-platform 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.
Key priority: Seamless video playback is the single most important thing. Anything that stands in the way of fast, reliable video playback should be deferred until the core viewing experience is rock-solid.
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 (planned)
Polished build ready for Peacock executives
3.2
Primary User and Use Cases
Primary User
Peacock executives screening unreleased MicroMaker cuts on iPhone.
Secondary User
Internal Haymaker and MicroMaker stakeholders reviewing the same cuts before exec delivery.
Watch multiple episodes in sequence to judge story arc, pacing, and cliffhanger strength.
Review newly delivered episodes as they are uploaded week to week.
Resume quickly on the same device without needing an account or new setup.
3.3
Design Principles
Portrait-first. The app should feel native to vertical viewing, not like a TV app reduced to phone size.
Binge-first. Watching 12 or more episodes in a row is central to the product.
Minimal interface. Content should dominate the screen, with controls only when needed.
Simple navigation. Users should move from code entry to playback in just a few taps.
Secure by default. Unreleased cuts must stay protected behind server validation.
3.4
MVP Scope
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
Play, pause, and drop-off events with timestamps โ stored server-side
Admin Interface
Yes
Simple admin for editing series/episode metadata and uploading episodes
API Server
Yes
Simple server hosting the API for video playback, metadata, and telemetry โ backed by a relational database
Out of scope for v1: accounts, search, recommendations, My List, deep links, feedback tools, and downloads.
3.5
Core User Flows
First Launch
Open app -> enter invite code -> code is validated -> catalog appears
Start Watching
Catalog -> choose series -> choose episode or resume -> full-screen playback -> next episode starts automatically
Return Visit
Open app -> session still valid -> continue from same series and episode on the same device
3.6
Screen-by-Screen Experience
Invite Code Screen
Simple entry point with one field, one button, and a clear error state if the code does not work.
Browse View
Swipe up/down to browse between different series. Each series shows a poster, title, and description. (Deferred until multiple series are available.)
Series View
Swipe up/down to move between episodes within a series. Shows series title, description, and series poster. This is the default landing view for v1 (single series).
Playback Screen
Video fills the screen. Tap to pause, tap again to resume. Scrub bar shows position in the episode and allows seeking left/right.
3.7
Playback Behavior
Behavior
v1 Requirement
Orientation
Portrait only
Episode transitions
Immediate auto-advance, no countdown or interstitial
Manual movement
Swipe up/down to switch episodes; scrub bar for seeking within an episode
Pause/Resume
Tap to pause, tap again to resume
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
The app borrows PineDrama's best behavior patterns: full-screen immersion, minimal chrome, and easy progression through a series.
3.8
Key Decisions (03/20 Meeting)
The following decisions were made in the 03/20 scope review meeting and are reflected throughout this updated spec:
Unique invite code per user. User management = creating/revoking codes.
Video codec
H.265 (HEVC) preferred. Need to validate CDN compatibility โ H.264 is the fallback.
Navigation
Browse View (swipe between series) + Series View (swipe between episodes). v1 launches with Series View only.
Playback controls
Tap to pause/resume. Scrub bar for position and seeking.
Telemetry
Play, pause, and drop-off events with episode + timestamp โ stored server-side.
Backend
Simple API server + relational database for metadata and telemetry.
Thumbnails
Series poster only. No episode-level thumbnails.
Series metadata
Must include series title and series description (added to spec).
Admin
Simple admin interface in v1 for metadata editing and episode uploads.
UI components
Research component libraries for chosen framework, ideally with Figma counterparts for mockups.
MVP target
~04/02 โ bare-bones field screening + lightweight CMS for populating content.
Top priority
Seamless video playback above all else. Defer anything that blocks fast, reliable playback.
3.9
Content and Navigation Model
Content is organized simply: Series -> Episodes. Two navigation views are planned:
Browse View: Swipe up/down to move between different series. Each series shows a poster, title, and description. (Deferred โ activates when multiple series are available.)
Series View: Swipe up/down to move between episodes within a series. This is the primary view for v1 since we're launching with a single series.
Series and episode metadata (titles, descriptions, posters) are stored in a relational database and managed through the admin interface. Video files are stored in Cloudflare R2.
Thumbnails exist at the series level only (a series poster) โ there are no episode-level thumbnails.
Invite Code -> Series View (swipe between episodes) -> Full-Screen Player -> Auto-advance within series
3.10
Video Format
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.265 (HEVC)
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.265 (HEVC) is the preferred codec for better compression efficiency at equivalent quality. CDN compatibility with H.265 is still being evaluated โ if delivery issues arise, H.264 remains the fallback. Captions are converted from SCC (a broadcast format) to VTT, 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.
3.11
v1 Telemetry
Telemetry events are stored server-side and associated with the user's invite code. The goal is to understand viewing behavior โ especially where users drop off within episodes.
Event
Data Captured
Purpose
Session created
Invite code, timestamp
Shows that a valid invite code was used
Play
Episode ID, timestamp, playback position
Tracks when a user starts or resumes an episode
Pause
Episode ID, timestamp, playback position
Tracks when a user pauses
Drop-off
Episode ID, timestamp, playback position
Tracks where a user exits or abandons an episode
Episode completed
Episode ID, timestamp
Shows that a viewing run reached the end
3.12
Admin Interface
A simple, password-protected admin interface where a producer or team member can manage content in the app without any technical knowledge. This covers two main functions:
Episode Upload
Video file โ the mobile-optimized MP4 (transcoded from the Peacock master)
Episode number
Title
Caption file โ the VTT sidecar (optional)
Metadata Management
Series title and series description
Series poster โ the single thumbnail/poster image per series (no episode-level thumbnails)
Edit or update metadata for existing series and episodes
The admin interface handles uploading files to storage and updating the relational database automatically. No command line, no code, no developer involvement. Changes appear in the app on the next refresh.
3.13
Deferred Features
Browse View: swiping between multiple series โ deferred until more than one series is available.
Feedback tools: lightweight thumbs-up style reaction or flagging, to be explored later.
Offline downloads: intentionally deferred because secure local storage adds complexity.
Full CMS: the simple admin interface covers v1 needs; a more complete CMS with publishing workflows is a later phase.
Analytics dashboard: telemetry data is being collected server-side from v1 โ a reporting UI comes later.
3.14
Technical Assumptions
Cross-platform app targeting both iOS and Android. Development framework TBD โ evaluating Flutter, React Native, and other options for best fit with video playback and available UI component libraries.
Distributed via TestFlight (iOS) and equivalent method (Android) to a small internal group.
Video stored in a private Cloudflare R2 bucket, encoded in H.265 (HEVC) โ pending CDN compatibility validation.
Simple API server handling invite code validation, video delivery, and telemetry.
Relational database storing series metadata, episode metadata, invite codes, and telemetry events.
Each user gets a unique invite code โ user management is handled through code creation/revocation.
Open research: Need to evaluate cross-platform frameworks (Flutter, React Native, etc.) based on video playback performance, available UI component libraries, and whether those libraries have Figma equivalents for high-fidelity mockups.
TestFlight install testing with non-team users before exec rollout
Jonathan / Team
3.19
Open Questions
Which cross-platform framework (Flutter, React Native, other) best supports video playback performance and has strong UI component libraries with Figma equivalents?
Does H.265 (HEVC) work reliably across target CDN and device combinations, or should we fall back to H.264?
Which iPhone and Android models/OS versions need to be supported for Peacock executives?
Should each invite code allow one device only, or one backup device too?
Should captions be on by default?
Resolved from Prior Draft
Episode-level thumbnails? โ No. Series poster only, no episode thumbnails.
iOS only? โ No. Targeting both iOS and Android via cross-platform framework.
CMS admin panel deferred? โ A simple admin interface is now included in v1 scope.
3.20
How Executives Get the App
TestFlight (iOS) 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 iPhone users:
An exec receives an email invitation from us.
They tap the link, which opens a free Apple app called "TestFlight" (one-time install, takes 30 seconds).
Inside TestFlight, they tap "Install" and the Screening App appears on their home screen like any other app.
From that point on, they just open it and use it โ it looks and feels like a normal app. TestFlight stays in the background.
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.
Android distribution will follow a similar private-testing model (e.g., Firebase App Distribution or Google Play internal testing). The specifics depend on which cross-platform framework is selected.
For v1, private distribution is the right method because the app is for a small, known group (~10โ30 people), not the general public.
3.21
Recommended Next Artifacts
Annotated wireframes for the core screens
API contract for invite validation and signed video delivery
JSON catalog template for manual content operations
QA checklist for binge-viewing and TestFlight release
04 โ Rollout Record
Rollout Narrative
The build ran approximately five weeks from creative kickoff to network rollout. Key inflection points:
Mar 24 โ Creative walkthrough; Campus Confidential: Miami scoped as a microdrama series with three storylines at the University of Miami.
Mar 25 โ MicroMaker Slack workspace created; #app-development channel becomes the coordination hub.
Mar 29 โ First internal feedback (Caroline Bomback): app generally works, bugs around scrolling lag and audio/video sync.
Mar 30 โ First exec-side feedback (Aaron Rothman): app works well, requested a next-episode navigation arrow.
Apr 6 โ Lisa hits a "No episodes available" screen โ early signal that permissions need attention before network rollout.
Apr 10 โ Peacock security review passed. Drew Baumann's SECURITY.pdf earned the confidence of Brandon and Thalia on Peacock tech.
Apr 14 โ Peacock confirms 6/15 air target for Campus Confidential, 7/6 for Salon Confessionals.
Apr 21 โ Peacock invites sent at 7:09 PM PT. 29 Peacock recipients with personalized invite codes; iOS via TestFlight, Android via Google Play.
Apr 22โ24 โ Chapter 1 distributed via FineCut as parallel channel; Chapter 2 (eps 115โ130) uploaded; Aaron granted admin permissions.
Apr 29 โ App in active daily use by network; performance monitoring ongoing.
The dual-track delivery workflow that emerged: post team exports โ internal QC by Ronica's team โ executive approval by Aaron โ app permission toggle โ invite emails โ FineCut parallel delivery (with notification to the full distribution list).
Full chronology, complete distribution list (29 Peacock recipients + 11 internal stakeholders), feature evolution timeline, and key personnel are recorded in the companion document Peacock_Exec_Rollout_Summary.md โ kept internal, not deployed with this site (contains personal email addresses for ~40 people).
Reorganized April 29, 2026: Section 1 leads with current state, Section 2 holds active Phase 2 scope, Section 3 archives the original Mar 17 v1 spec, Section 4 summarizes the rollout. Original section numbering preserved within Section 3 (renumbered as 3.1โ3.21). ยท Bananas ๐ v1 shipped 04/21/2026.