← All Work
Intuit — 2025

Intuit For Education

Scholarship explainer timed by GPT-4 and assembled in After Effects by script

A machine-timed explainer for Intuit's scholarship-types RFP — GPT-4 acting as animation director, ExtendScript building the After Effects timeline from its JSON, boards trained on Intuit's own illustration style.

14
Timed Scenes
120.82s
End Timecode
18
Image Reference Set
The hard part

GPT-4 acted as animation director — gapless scene timings and camera moves as JSON, and ExtendScript built the After Effects timeline from it

Client
Intuit
Agency
MALKA Media
Role
Creative Technologist AI Pipeline Architecture / Animation Direction
Timeline
2025

Automated

The timeline built itself

Intuit for Education · Financial Aid Navigation Pathway — Scholarship Types · RFP — AI-assisted pipeline

The delivered film
After Effects 2023 with Final_JSON_Sequence open: twenty-eight layers — every artboard placed and timed by the script in a staircase across two minutes, the voiceover underneath, no keyframes
Final_JSON_Sequence, as the script left it1024×1820 · 2:00:20 at 24fps · every artboard placed and timed by the script — the staircase is the edit, and no keyframe in it was set by hand. The delivered film beside it is this comp, rendered.

v6 · 2:06 · 9:16 · fourteen boards, timed by a model, assembled by a script

runtime
2:06
boards
14
scenes
14, gapless
hand-keyframed
0 frames

The tool came firstHundreds of scripts were possible, so the first thing built was a script analyzer — and if it was already reading the script, it could draw it too.

script in
360 words
scenes out
14
cut to
2:00.8
holds
7.1–16.4s
camera moves
punch in ×4 · out ×4 · pans ×2 · held ×4
the script one .txt, pasted no shot list no scene numbers 360 words the analyzer script_analyzer.py FastAPI · uvicorn :8000 segment_scenes() spaCy · en_core_web_sm distilbert · sst-2 14 scenes out 45 keywords · 25 phrases the prompt composed, not written description + keywords + one style preamble nobody types one the batch fal-ai stable-diffusion-v35-medium 14 calls · one per scene fal_models.json — swappable cache_utils — a re-run is free the boards 14, one style pdf_export.py → review PDF 0 drawn by hand After Effects Final_JSON_Sequence · 1024×1820 2:02 · every layer placed by script the same parse, second output — scene JSON becomes layer order
STEP 1/9 One .txt, pasted. No shot list, no prompts, no scene numbers — 360 words of prose is the entire brief.

One beat, all the way through — The same fifteen seconds at four stages — nothing here is paraphrased.

  1. 01the script section

    Jake — Athletic & Community Scholarship (0:15–0:45). Jake, a stylized baseball player, catches a ball. The scene transitions to show a split screen: one side shows a baseball field, the other a community center icon. A stylized check with “Tuition” appears, partially covered by two smaller checks labeled “Athletic Scholarship” and “Community Scholarship.”

    What a human wrote.

  2. 02what spaCy pulled

    JakeAthleticCommunityScholarshipVisualbaseballplayercatchesballscenetransitionssplitscreenbaseballfieldcommunitycentericonstylizedcheckTuitionappears JakeAthletic & Community ScholarshipVisualJakestylized baseball playerballscenesplit screenbaseball fieldcommunity center iconstylized checkTuition

    45 keywords by part of speech — nouns, verbs, adjectives — and 25 noun chunks kept as phrases. A sample of each is shown.

  3. 03the prompt it wrote

    Create a 2D illustration in the style of Intuit brand videos (simple shapes, clean lines, bright colors, hand-drawn style character). Scene description: Jake, a stylized baseball player, is catching a baseball. Visual elements based on keywords and phrases: Jake, stylized baseball player, baseball, Jake, athletic, baseball, player, catches. Character style should be similar to the example video provided (simple, illustrative, 2D). Color palette should adhere to Intuit visual guidelines.

    Composed from the extraction above. Nobody typed this.

  4. 04what came back

    Artboard 03, in the brand line, from a prompt the pipeline wrote itself.

Open the build record Eleven days, from an empty file to a comp that builds itself — including the three app screens the drawing above stands in for.

the analyzer

script_analyzer.py
script_analyzer.pyspaCy for entities, a Hugging Face sentiment pipeline, and scene segmentation that splits on Scene: markers and falls back to double newlines.
gradio_ui.py
gradio_ui.pyanalyze_and_generate: the analyzer's scenes, a swappable fal model list read from JSON, and a cache so a re-run costs nothing.

the app

the first version
the first versionGemini, one button, no style control. The model picker and the split Analyze / Generate came after.
the tool, running
the tool, runningThe real script pasted in, fal-ai + stable-diffusion-v3.5 selected, scenes generating underneath.
scenes as a table
scenes as a tableEvery scene as a row — description and visual elements — and a button that turns the table back into a script.

the style search

one style prompt, every frame
one style prompt, every frameA style prompt applied across all images, so fourteen boards come back looking like one hand drew them.
style, tested
style, testedThe same five scenes under different style prompts — the search for the Intuit line before the LoRA existed.

the trained line

the trigger word
the trigger wordIntuitive-Hand-Drawn-Line-Art — the token that summons the brand's own line.
training runs
training runsTwo LoRA trainings, minutes apart, both completed.

the boards

fourteen boards
fourteen boardsWhat came back, in the brand line, each with the description that produced it.

the assembly

the comp, assembled
the comp, assembledFinal_JSON_Sequence: 1024x1820, 2:02, every board placed by the ExtendScript from the model's JSON.
the staircase
the staircaseThe timeline a script builds — layers stepping in sequence, not one keyframe set by hand.
One beat, all the way throughThe same fifteen seconds at four stages — script, extraction, prompt, board.
sweep to scrub

The self-assembling editOne explainer, from script to cut, where the timeline is machine-built.

Three students, three scholarship mixes. A script, a voice read, and fourteen one-line board descriptions — that is everything human-authored that enters the pipeline.

the inputs, in full

First, meet Jake, a high-school baseball player who just earned an athletic scholarship to play at a Division II university… Artboard 03 — Jake looking straight to camera, in a baseball uniform, with a high school baseball game in the background.
Eight artboards, each above the scene description the analyzer generated for it — Jake the baseball player, Riya with her STEM scholarship, Marcus in scrubs
The boards, with the sentences that made themArtboards 1–8 over the scene descriptions the analyzer wrote — the description is the prompt: it names the character, the scholarship and the framing, and the board comes back drawn to it. Nobody typed one.

A model timed the cuts. A script built the comp.
The humans wrote, drew the references, and chose.

Scope

Project Elements

RFP ExplainerScript AnalysisLoRA TrainingRecraft V3fal.aiGPT-4 Animation DirectionExtendScript AutomationAfter EffectsGradioPython

Have a Project in Mind?

Animation direction, VFX and creative technology. Message me on LinkedIn or get in touch.