All work

Hackathon project, in progress

AI Content Autopilot

A solo PayPal AI Hackathon project to turn a small business’s verified facts and own photos into 9:16 marketing reels.

Role
Solo project
When
Oct 2026 – now
Status
In progress
Platforms
Web
Built with
Remotion, TypeScript, Node.js, ffmpeg, Zod, Flutter, GetX
Cover frame of the rendered demo reel for Kettle & Fern, a fictional café. A top-down latte with fern-leaf latte art sits in a cream cup on a wooden table, under the headline "Lunch, but make it slow". Everything in the frame is drawn by the project’s own code.

Why I’m building it

Small businesses need short vertical videos, but few owners have time to script, edit, voice and caption them. AI video tools can also invent prices or reviews the business never had.

I’m building AI Content Autopilot for the PayPal AI Hackathon. The idea is that the owner confirms facts about the business, uploads their own photos and clips, and picks from three script ideas. After they pay, a render worker makes a 9:16 reel with voice-over, captions and music, and labels every AI-generated scene.

The Studio page of the Flutter Web app, running on mock data for the fictional café Kettle & Fern. Under “Three ideas, ready to make”, the first idea, Weekday lunch set, shows its hook line, a seven-scene storyboard strip with one AI scene, a $11 price and a Facts checked badge. A notice above it says “Voted best café in Fernside 2025” won’t appear in any script until the owner confirms it.

Where it is now

The render engine and worker work end to end on a demo job. The Flutter Web app runs on mock data. Gemini, PayPal and Firebase aren’t wired in yet. The hackathon closes on 12 November 2026.

The demo café, Kettle & Fern, is fictional, and the project’s own code generates its photos, clips and music.

Key-frame sheet of the 22.2-second demo reel for the fictional café. The frames show the latte hook, a jug pouring a $4 flat white, a steamy window scene tagged AI-generated, a $12 weekday lunch set offer card, a “Baked this morning” price list, opening hours from 7am, a contact card with an Order ahead button, and the Kettle & Fern end card.

How it works

Scripts only use verified facts

Offers and menu items are picked by ID from what the owner confirmed, so prices are never typed in. Every number in a script must match a fact that its scene cites. “Best” or “voted” needs an award or review fact, and spelled-out numbers are rejected so “twelve dollars” can’t slip past. The demo plants an unconfirmed “Voted best café” award to check that it gets refused.

One timing formula in TypeScript and Dart

Each scene lasts a lead-in, its voice line and a tail. The same formula drives the plan checks, the length and price in the app, and the renderer’s timeline, so a plan checked at 22 seconds renders at 22 seconds. A Dart port runs the editor’s live word counter, and both versions are tested against one shared table.