Jess Post-Recording Workflow Spec
Recovered approved CCOS design for Jess after recording: transcript analysis, content generation, Mahesh handoff, publish date/title decisions, guest kit, production tracking, and approval summary.
Recovered approved CCOS design for Jess after recording: transcript analysis, content generation, Mahesh handoff, publish date/title decisions, guest kit, production tracking, and approval summary.
No explicit evidence field yet. Require tests, screenshots, linked PRs, or reviewed outputs before marking complete.
- title: Jess Post-Recording Workflow Spec
- source: atlas-codex
- status: draft
- project: Jess Podcast Coordinator
- summary: Recovered approved CCOS design for Jess after recording: transcript analysis, content generation, Mahesh handoff, publish date/title decisions, guest kit, production tracking, and approval summary.
- version: 2
- updated at: 2026-05-08T19:25:35.095Z
- revision note: Added graphics ownership split across Jess, Mahesh, Rosa, Mia, and Jan/human design.
Full legacy body rendered for humans
Jess Post-Recording Workflow Spec
Source
Recovered from archived CCOS design document:
/Users/justinking/Vaults/Projects/_archive/ccos/docs/superpowers/specs/2026-04-09-jess-podcast-operator-design.md- Status in source: Approved for implementation
This is the fuller Jess design beyond the daily V1 pipeline checker.
Architecture Pattern
Jess was designed as a phase-handler agent with dual triggers:
- messages from Claire/agent_messages
- daily scheduled scan at 8:15am
Original planned handlers:
- intake_handler.py
- pre_production_handler.py
- ready_to_record_handler.py
- recorded_handler.py
- in_production_handler.py
- ready_for_approval_handler.py
- content_generator.py
Post-Recording Trigger
The main post-recording trigger is a routed message:
episode_recorded with payload:
{
"episode_id": "...",
"transcript_path": "...",
"riverside_url": "..."
}
This can originate from Justin telling Claire something like:
Recorded [guest]. Transcript: [path]. Riverside: [url]
Recorded Handler: Stage 1
Runs immediately when the episode is recorded.
Actions:
1. Read transcript from the configured transcript/vault path.
2. Analyze transcript to extract:
- best_quotes
- topics_tags
- clip_timestamps
3. Update the episode record with:
- riverside_url
- best_quotes
- topics_tags
- clip_timestamps
4. Generate content assets:
blog_justin: Justin POV articleblog_guest: guest bylined article in guest's voicesocial_linkedin_justin: Justin LinkedIn postsocial_linkedin_guest: guest LinkedIn postteleprompter_intro: intro recording scriptyoutube_metadata: 5-7 title options, description, tags, statuspending_title_selectionbuzzsprout_description: show notes, 150-200 words
5. Save all outputs as episode asset records.
6. Create a 30-minute Google Calendar event for Justin: Record teleprompter intro — {Guest Name}.
7. Post internal Slack announcement to global/team channel.
8. Message Mahesh in video channel with:
- Riverside link
- episode Drive folder link
- Finished Videos subfolder link
- clip requests from clip_timestamps
- naming convention:
{Speaker} - {description}.mp4
9. Ask Justin to pick publish date from recommended options:
- recording date + 3 weeks
- first available Tuesday/Thursday
- never double-booking
10. Ask Justin to pick a title from 5-7 title options.
11. Advance status to in_production.
Recorded Handler: Stage 2, Publish Date Approved
Trigger: publish_date_approved message from Claire.
Actions:
1. Set episodes.publish_date.
2. Finalize Justin and guest social posts with the real publish date.
3. Build guest_content_kit containing:
- guest bylined article
- guest LinkedIn post
- posting calendar with real dates
4. Save updated assets.
5. Create Gmail draft for guest content kit delivery email.
6. Set guest_kit_sent_at metadata date.
7. Log Justin's social posts into content calendar/content ideas where available.
8. Notify Justin that guest kit draft is ready.
Recorded Handler: Stage 3, Title Selected
Trigger: title_selected message from Claire or podcast status review.
Actions:
1. Update episodes.title.
2. Update the youtube_metadata asset with selected title.
3. Generate images through the podcast thumbnail/image pipeline:
- YouTube thumbnails
- quote cards
- carousels / episode images
4. Save image paths/URLs as episode assets.
5. Update guest content kit with selected images.
6. Notify Justin that images are ready for review.
In-Production Handler
Trigger: daily scan of episode with status = in_production.
Actions:
1. Check the video/production Slack channel for Mahesh messages containing a Drive link for this episode.
2. Check Finished Videos subfolder for uploaded finished files.
3. Check Shorts subfolder for uploaded clips.
4. For each clip found:
- register as
episode_assetwith asset_typeshort_clip - match clip to clip timestamp description
- update Justin social or guest content kit with the clip reference
5. If publish date is within 7 days and guest kit exists/sent:
- create Gmail draft reminding guest about the episode/content kit
- notify Justin that reminder draft is ready
6. If Mahesh delivery link/files are present:
- update episode drive/video URL
- generate
kb_entryasset from transcript/topics - advance status to
ready_for_approval - notify Justin episode is ready for approval
Ready For Approval Handler
Trigger: daily scan of episode with status = ready_for_approval.
Actions:
1. Query all episode assets and group by type/status.
2. Post a summary for Justin listing:
- approved assets
- pending assets
- missing assets
3. Do not repost more than once per day.
4. Do not advance automatically.
Publishing remains a Justin/explicit action. After publish, Justin tells Claire published [guest]; Claire routes episode_published to Jess, and Jess updates status.
Content Asset Types
Recovered planned asset types:
- blog_justin
- blog_guest
- social_linkedin_justin
- social_linkedin_guest
- guest_content_kit
- teleprompter_intro
- youtube_metadata
- buzzsprout_description
- kb_entry
- short_clip
- thumbnail
- quote_card
- carousel
- justin_prep_pack
- teleprompter_questions
Approval Model
External-facing messages are drafts, not autonomous sends:
- welcome email: Gmail draft + notification
- nudge email: Gmail draft + notification
- guest content kit email: Gmail draft + notification
- guest reminder email: Gmail draft + notification
Internal messages can be sent directly:
- Slack to Mahesh / video channel
- Slack to Justin/team channels
Key decisions require Justin:
- publish date
- episode title
- final publishing
- external sends unless explicit auto-send permission is later granted
Relationship To Mia
Mia's archived podcast processor handled transcript-to-content primitives, especially:
- short-form LinkedIn summary post
- quote card brief
- source tracking by podcast episode
- skip if transcript does not classify as the target depth signal
New Jess should either hand transcript-content generation to Mia or reuse Mia's processor as a content service. Jess remains the lifecycle operator; Mia remains content generation/review support.
Modernization Notes
The recovered design references old OpenBrain/B2BEA-Brain split and CCOS Gateway proxy tools. In the RedKey rebuild, preserve the workflow but re-map tools and storage to current canonical systems after Phase 0 discovery.
Graphics Ownership Addendum
Recovered sources separate coordination from production.
Jess
Jess owns the episode lifecycle and coordinates graphics. She should create the graphics jobs, attach source material, track outputs, store asset IDs/URLs, and include finished graphics in the guest content kit and approval summary. Jess is not the primary designer.
Mahesh
Mahesh owns video-specific production in Slack: video design, finished videos, shorts, and video visual assets. Jess sends Mahesh the Riverside link, episode Drive folder, Finished Videos folder, and clip requests with naming guidance. Jess then watches Finished Videos and Shorts folders for completed files.
Rosa
Rosa is the scalable B2BEA visual asset platform. For podcast episodes, Rosa should generate branded still graphics from templates: guest cards, YouTube thumbnails, Justin promo images, episode quote cards, carousels/stat cards where relevant, and guest-pack visual assets. Rosa generates variants and stores permanent URLs.
Mia
Mia contributes content inputs for graphics, especially quote-card briefs and short-form social copy from transcripts. Mia is not the visual renderer; her outputs feed Rosa or a human designer.
Jan / Human Designer
Jan or another designer owns new template design or human design review when the template system is insufficient. Rosa fills approved templates; she does not replace new creative direction.
Podcast Graphic Types
Minimum post-recording graphics/jobs to track as episode assets:
- guest card
- YouTube thumbnail
- Justin promo image
- episode quote card
- LinkedIn carousel or stat card when the episode supports it
- guest content kit graphics
- short video clips and cover/preview assets from Mahesh
Jess should surface all graphics in the ready-for-approval summary and guest content kit.
Machine-readable source fields
Jess Post-Recording Workflow Spec
atlas-codex
draft
Jess Podcast Coordinator
Recovered approved CCOS design for Jess after recording: transcript analysis, content generation, Mahesh handoff, publish date/title decisions, guest kit, production tracking, and approval summary.
2
2026-05-08T19:25:35.095Z
Added graphics ownership split across Jess, Mahesh, Rosa, Mia, and Jan/human design.