Work/ReelForge

ReelForge
AI Video Platform

ReelForge

Agentic short-form video platform: connect a Facebook page, confirm an AI brand profile, approve a weekly calendar, and a pipeline writes scripts, generates clips, assembles MP4s, and can auto-post.

Dates
2026
Role
Founder & Lead Engineer
Team
Solo engineer
Build time
v2
Next.jsFastifyPostgreSQLCloudflare R2ClaudeFFmpeg

The Outcome

"Shipped a production agentic pipeline — brand onboarding, weekly calendar, parallel generation, FFmpeg assembly, Facebook auto-post."

Product UI
reelforge · plan / this week

Weekly batch

7 videos · agentic pipeline

v2

01

Brand

Claude profile + character sheet

02

Plan

7-day calendar, edit then approve

03

Clips

Operator queue → Grok Imagine → R2

04

Assemble

FFmpeg + Whisper captions + post

Monday hookCOMPLETE
Midweek product cutASSEMBLY
Friday recapCLIPS

The Challenge

Short-form video is a queue of hand-offs: niche research, scripts, scenes, clip generation, captions, assembly, and posting. Most “AI video” tools stop at a single clip. Operators still stitch the week together.

ReelForge had to be a set-and-go content machine: connect a Facebook page, review an AI-proposed brand profile, generate a weekly calendar, press Approve, and get finished MP4s — with optional draft or scheduled posts back to Facebook.

The Solution

I designed and shipped v2 as a Turborepo: Next.js 16 app, Fastify API, FFmpeg worker, and a Chrome MV3 operator extension that drives Grok Imagine. One engineer, architecture through production.

Product flow

  1. Connect a Facebook page (OAuth).
  2. Claude proposes niche, tone, audience, and character; the user edits inline or in chat.
  3. GPT-image-2 generates a character sheet used as the visual anchor.
  4. Claude writes a 7-day content calendar. The user edits topics, picks draft / scheduled / download-only, and approves.
  5. Batch generation runs in the background: scripts, scenes, clip requests, assembly, email when the week is ready.

Architecture

  • Web: Next.js 16 / React 19 / TypeScript. Dashboard, library, brand hub, plan kanban, billing, settings. Clerk auth.
  • API: Fastify 5. Domain routes for videos, brands, plans, social, billing, operator queue, and cron jobs. Neon PostgreSQL + Drizzle.
  • Storage: Cloudflare R2 (S3-compatible) for clips, character sheets, and final MP4s. Signed URLs with a 7-day TTL.
  • AI: Claude Sonnet for scripts, scene direction, brand suggestion, and weekly plans. GPT-image-2 for character sheets. Whisper for word-level captions. Grok Imagine for clips, driven by the operator extension rather than an unofficial API.
  • Worker: Dockerized FFmpeg service (libass) on Cloud Run. Loudness normalize, concatenate with cross-fades, burn styled ASS subtitles, mix BGM, upload the MP4.
  • Billing: Stripe — try-out, starter, pro — with daily/monthly quotas and webhook-driven plan state.

Agentic pipeline

Video status is an explicit state machine:

DRAFT → BRAINSTORM → SCRIPT → SCENES → CLIPS → ASSEMBLY → COMPLETE | FAILED

startBatchGeneration runs in the background with a concurrency semaphore (max 3 videos). It is self-healing: if approve crashed mid-transaction, missing video rows are recreated from the plan topics. Each video can resume at SCRIPT_READY (image-driven flow lets the user review the script first).

Clip generation is a queue. The Chrome extension polls /api/operator/queue, opens Grok Imagine tabs, attaches the character sheet, uploads results to R2, and marks clips complete. Failed tabs report back instead of hanging the week.

Image-driven and podcast modes

Users can upload a still. Claude Vision writes the script, detects one person vs two (podcast), and scene direction switches to a two-shot with alternating speakers. Layout is persisted so lipsync lands on the correct face.

Engineering

  • Tests: Vitest on the API. Quota, billing webhooks, and operator complete/fail paths are treated as money-and-queue critical.
  • CI/CD: Turborepo lint (zero warnings) and check-types across web, API, worker, and packages. Worker image is Docker-only — Homebrew FFmpeg lacks libass.
  • Security: Clerk session tokens on the API, operator routes gated by a shared secret, Stripe webhooks verified, R2 signed URLs, least-privilege cron jobs.
  • Deployment: Web + API as Node services, FFmpeg worker on Cloud Run, R2 for media, Neon for Postgres. Email via Resend when a video or full week finishes.

Why this is the lead case study

This is not a chat wrapper. It is a multi-service production system: typed domain model, job queue, browser operator, media worker, billing, and a user-facing product. Same ownership model I bring to contract work — architecture through the last deploy.

Need this kind of engineer on your team?

Contract or fractional work with US companies via Make Real LLC. Resume, email, and a 30-minute call — no pitch deck.

Download Resume