Skip to main content

Overview

Two collections manage background operations: media_jobs for BullMQ job records, and hitl_sessions for human-in-the-loop login requests.

media_jobs

Tracks BullMQ background jobs for media processing operations. Each job record corresponds to a queue entry in Redis.

Purpose

  • Track status of background media operations
  • Store job metadata, progress, and results
  • Enable job retry and error handling
  • Link jobs to creator profiles and media items
  • Provide audit trail for all media operations

Job Types

Key Fields

Example Queries

Create Scrape Job

Monitor Job Status

List Recent Jobs

Find Failed Jobs


hitl_sessions

Human-in-the-loop login requests displayed as yellow dashboard alerts when automated scraping requires manual intervention.

Purpose

  • Request manual login when platform cookies expire
  • Display browser extension flow prompts in dashboard
  • Track session resolution status
  • Coordinate between automated scraping and human intervention

Key Fields

Dashboard Integration

HITL sessions trigger yellow banner alerts in the dashboard:

Example Queries

Create HITL Session

List Active Sessions

Resolve Session

  • creator_profiles - Platform accounts that jobs operate on
  • scraped_media - Content processed by media jobs
  • scheduled_posts - Posts published by publish_post jobs
  • platform_sessions - Browser cookies that resolve HITL sessions

Workflow Integration

Scraping with HITL Flow

  1. User clicks “Let’s Go” scrape button on dashboard
  2. System checks platform_sessions for valid cookies
  3. If cookies exist: Create media_jobs entry with type scrape_profile
  4. If no cookies: Create hitl_sessions entry instead
  5. Dashboard shows yellow banner: “Login required. Click to connect.”
  6. User completes login via browser extension
  7. Extension captures cookies → stored in platform_sessions
  8. HITL session marked resolved
  9. System creates media_jobs entry, scraping proceeds

Media Processing Flow

  1. User clicks crop/watermark/teaser button in Media Library
  2. Frontend creates media_jobs entry via POST /api/queue/enqueue
  3. BullMQ worker picks up job from Redis queue
  4. Worker updates job status and progress fields
  5. On completion: job result contains output file URLs
  6. Frontend polls job status and displays result

Best Practices

  1. Poll job status - Use bull_job_id to track BullMQ queue position
  2. Implement retry logic - Jobs with retry_count < 3 can be retried
  3. Clean up completed jobs - Archive jobs older than 30 days
  4. Monitor HITL expiry - Auto-cancel sessions after 24 hours
  5. Handle concurrent HITLs - Only show one HITL alert per platform at a time

BullMQ Integration

The media worker (media-worker/index.js) processes jobs from Redis queues:

See Also