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
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.
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
| S3 | Where every rendered asset lands. |
| Google Drive | Delivery to clients and teams. |
| Frame.io | Review and approval. |
| Meta | Published as ads. |
| TikTok | Published as ads. |
Architecture
A Turborepo monorepo: five apps and six shared packages, deployed from CircleCI, with Terraform managing the infrastructure.
| Dashboard | Next.js. Job pages, previews, admin, and the client-facing form tab. |
| AppSync | GraphQL API joining the sheets, the panel and the dashboard. Other teams and clients build against it to drive Lightspeed from their own tools. |
| Cloud Render | SQS consumer on Windows EC2. Renders through After Effects, and from HTML and Figma. |
| After Effects panel | CEP extension with an ExtendScript layer. |
| Figma panel | A Figma plugin for templates built there. |
| MCP server | Exposes the platform as tools an agent can call. |
| Postgres | Clients, projects, templates, AE files, jobs. |
| S3 | Rendered assets and AE source files. |
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.
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.
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
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.
01
A small After Effects panel, one render at a time.
02
Templating helpers and pre-flight checks.
03
Custom Google Sheets functions to build feeds faster.
04
A Creative Automation team forms around it.
05
Rendering moves to a queue, then an EC2 fleet.
06
Ad publishing. Live previews. One monorepo.
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.