Creative automation platform

Lightspeed

Lightspeed renders campaign assets from After Effects templates on an autoscaling EC2 fleet. It has produced work for OpenAI, Uber Eats, Skyscanner and more.

9,500
assets a month on average
2,000+
in under five minutes at peak
92%
of the codebase written by me
588 assets rendering, then uploading to Frame.io
01

Pre-rendering the Super Bowl campaign

Uber Eats, Super Bowl LX

Uber Eats let people build their own Super Bowl commercial in the app by picking scenes and celebrity cameos. Every combination was rendered in advance through Lightspeed and written to S3 under a filename built from the choices, so the app only has to fetch the file those choices name. Nothing rendered during the game.

1,000+
combinations pre-rendered
36 hrs
of finished content

Media Grand Prix at Cannes Lions 2026. One Yellow Pencil and four Wood Pencils at D&AD 2026.Campaign case study ↗

Created by Special US. DEPT® is credited as a production company; the combinations were produced through Lightspeed.

02

Combining disciplines

Three teams feed Lightspeed. Designers build the template, copywriters write the copy, and data specialists fill the feed.

Designers

Building templates for Lightspeed is a different job from motion design. The comp has to survive whatever the feed puts in it, which means reusable components, expressions doing the layout, and working out what happens when the headline runs to thirty words.

Lightspeed has a panel inside After Effects. A designer loads the feed, picks the templates they're producing, and builds the comp with the panel's helpers: text bounds, automatic line breaks, anchor points and image resize rules.

Copywriters

Copy arrives as a table, rows for headline, call to action and legal, columns for each language. Some lines are rendered into the asset, others run alongside it as the ad.

Data specialists

The render feed is built from that copy in Google Sheets, with custom functions that generate the rows. Each row is one asset: which template, and what goes in it.

Automation engineering

Before a job reaches the machines, the dashboard checks the feed for missing columns, unknown templates and missing fonts. Each row becomes a message on a queue, and a fleet of Windows machines running After Effects headlessly works through them, scaling up with the queue and back down when it drains.

Where assets go

S3Where every rendered asset lands.
Google DriveDelivery to clients and teams.
Frame.ioReview and approval.
MetaPublished as ads.
TikTokPublished as ads.
03

Architecture

A Turborepo monorepo: five apps and six shared packages, deployed from CircleCI, with Terraform managing the infrastructure.

DashboardNext.js. Job pages, previews, admin, and the client-facing form tab.
AppSyncGraphQL API joining the sheets, the panel and the dashboard. Other teams and clients build against it to drive Lightspeed from their own tools.
Cloud RenderSQS consumer on Windows EC2. Renders through After Effects, and from HTML and Figma.
After Effects panelCEP extension with an ExtendScript layer.
Figma panelA Figma plugin for templates built there.
MCP serverExposes the platform as tools an agent can call.
PostgresClients, projects, templates, AE files, jobs.
S3Rendered assets and AE source files.
04

From internal tool to product

Lightspeed started as an internal tool for DEPT®'s own projects. Recent work has opened it up to clients, with live previews, per-client access and an API for integrators.

Filling in a form, previewing it, and rendering three assets
Registered applications and the self-serve API docs

Rendering from an agent

An MCP server exposes the platform as tools an agent can call: list projects, fetch templates, start a render, check a job's status.

05

The output

The same template, filled with different copy and images. Campaign assets rendered through the platform and delivered to Frame.io, Meta and TikTok.

OpenAIUber EatsSkyscannerSpotifyeBayVerizonCanvaRalph LaurenIneosRB LeipzigJust EatBrother

06

How it got here

Lightspeed was a small After Effects panel when I arrived, rendering on a single machine, one asset at a time. I was hired to build the templates and the feeds, and started fixing what slowed me down.

  1. 01

    A small After Effects panel, one render at a time.

  2. 02

    Templating helpers and pre-flight checks.

  3. 03

    Custom Google Sheets functions to build feeds faster.

  4. 04

    A Creative Automation team forms around it.

  5. 05

    Rendering moves to a queue, then an EC2 fleet.

  6. 06

    Ad publishing. Live previews. One monorepo.

  7. 07

    An API, and an MCP server.

Everything I built first came out of work I was doing myself. I was making the templates and the feeds, so the helpers and the pre-flight checks were fixes for my own afternoons.

A few hundred assets was a big day, and all of it ran on one machine while I sat waiting. One machine renders one asset at a time however good the panel driving it is, and a campaign that needs three thousand variants doesn't care.

When the Creative Automation team formed, the template and feed work stopped being mine, which gave me the time to move the rendering off the machine. It went to a queue, then to a fleet of Windows machines running After Effects headlessly on EC2. I kept the spreadsheet as the input because the data team already worked in it.