Oscar Craven
Who’s looking?

The page reorders for you. Links keep your choice.

Work

Lupin

How an artist’s AI image gets into ShotGrid without leaving the pipeline.

AI Implementation Consultant at AcmeAI & FX: product, AI operations, hiring and partnerships. I built Lupin, July to October 2026.

Send to ShotGrid: shipped August 2026

Two minutes? Read the five frames, then see what changed for artists.

Employer work. This page shows outcomes and the shape of the system only. The screens are real: Lupin desktop, on a test profile with my own illustrations and made-up shot codes.

Lupin, the studio’s AI image and video tool
The Lupin canvas: a reference node wired to an image generator showing its result, a List holding 32 outputs, and a Filename Slate that builds a file name.
Lupin desktop.

The short version

Five frames. The last one opens the long read.

  1. Lupin

    What it isThe studio’s canvas for making AI images and video.

  2. An image generator node with its prompt, model, size and result.

    Who forArtists at a film studio. I was the first hire. The team is now 40+.

    Headcount as of October 2026.

  3. The Image form: model, reference slots, prompt and aspect buttons.

    What I didI built Lupin, and the send to ShotGrid.

    July to October 2026.

  4. The Filename Slate turns made-up shot codes into a studio file name.

    What happenedArtists send work straight into ShotGrid. File names pass the checks first time.

    Shipped August 2026.

  5. A List node holding 32 outputs.

    NextClose the loop between prompts and approved work. Read the long version

Frames 2 to 5: Lupin desktop.

Before: images made outside the pipeline

An AI image only helps a studio once it is in the pipeline. It needs the studio’s file name. It needs a stored version, linked to the right shot.

  1. Illustration: a web tool with a generated picture and a Download button.

    Download by handAn outside tool makes the image. The artist downloads it.

  2. Illustration: a file being renamed by hand.

    Rename by handThey rename the file to fit the studio’s rules, and hope it passes.

  3. Illustration: a ring of keys, one for each machine.

    Keys on every machineEach artist also needs their own account and key.

Illustrations I made in Lupin.

The product: one canvas for AI images and video

Lupin runs in the artist’s browser. Artists wire nodes together on a canvas, or use a simple form. Every output lands in one gallery.

  • The Image form: a model menu set to Gemini 3.1 Flash Image, slots for style and character references, a prompt, and aspect buttons with 16:9 picked.
    The quick way: the Image formPick a model, add up to 14 reference images, write a prompt and choose an aspect.
  • A generator node: model, aspect 16:9, output size 2K, delivered at 2752 by 1536, four variant buttons, a Generate button and the result below it.
    On the canvas: a generator nodeThe same controls, as a node. The result appears under the button, ready to download or reuse as a reference.
  • A List node showing a grid of outputs and the count, 32 items.
    The List: every resultA List node gathers results as they arrive. This one holds 32.
The Gallery: 36 outputs in a grid, each with its age, model, generation time and prompt.
The galleryEvery output in one place, with its prompt, its model and how long it took.

All four: Lupin desktop, on a test profile with my own illustrations.

What artists can do

Six canvas features, then how Lupin helps artists prompt each model with reference images.

  • A List node with 32 items, wired from a generator into its Collect input and from a Filename Slate into its Filename input. The first tile shows its size, 2752 × 1536, and a row of six actions.
    Collect every result in a ListA List gathers what a generator makes. Hover a tile to favourite, download, copy its prompt, save or delete it. Keep adds new results; Replace swaps the old ones out.
  • A Filename Slate with project demo, episode 010, sequence sea, shot 0040, task harm, element render, variant main and version v0002. Below the fields, the name it builds: demo_010_sea_0040_harm_render_main_v0002. A List sits to its right.
    Name every file from the shot codesThe Filename Slate builds the studio file name from the shot codes, task, element, variant and version. Wire it into a List, and every download and publish from that List takes the name. Nobody types a file name.
  • A Group box drawn around a whole set-up: a reference node, an image generator with its result, a Filename Slate and a List, all wired together. The group’s label sits at the top left.
    Group nodes and move them as oneSelect nodes and press ⌘G, or the Group button under the selection. Drag, resize, colour, lock or duplicate the group as one. Shift-drag to lasso nodes.
  • The canvas right-click menu: a search box, then Duplicate @dusk_valley and Duplicate @dusk_valley with wires, then new nodes: Image Generator, Video Generator, Upload / Reference, Video Reference, Reference Pack and List.
    Duplicate a node, with or without its wiresRight-click a node and choose Duplicate (⌘D), or Duplicate with wires to keep its incoming wires. The same menu adds new nodes, from Image Generator to Group Box.
  • An image dropped on an empty part of the canvas opens a menu with two choices: New Reference, for one image, and New List, to collect images in a grid.
    Make a reference in one clickDrop an image on the canvas and choose New Reference, or press Use as ref under a result. Gallery items and List tiles offer the same, and a List tile can also save to the library.
  • The Keyboard shortcuts panel: ⌘A selects all nodes and groups, ⌘G groups the selected nodes, D downloads the selected image, ⌘D duplicates the selection, F fits the view to the graph, C compares the two selected images, and ? shows this list.
    Work from the keyboardPress ? for the list. D downloads the selected image, F fits the view, and C compares two selected images.

All six: Lupin desktop, on a test profile with my own illustrations and made-up shot codes.

How to prompt with references, model by model

Each model reads reference images in its own way. Lupin shows the rules where artists pick the images, so nobody has to look them up.

  • The Characters group in the References view. Advice: two images per person, a neutral frontal headshot and a frontal full-body shot, plain background, even light, no expression. A warning not to save a multi-view contact sheet as the reference. Below, a list headed Where the models differ.
    Sort references by what they showThe References view keeps Characters, Elements, Styles, Colour and Locations apart. Each group opens with what to give it.
  • The Styles group. Advice: a still that shows the look only, such as grain, brushwork, lighting and palette, with no faces. Where the models differ: Gemini 3 Pro, up to 3 style slots; Veo 3.1, no style reference; GPT image, Wan, Kling and Seedance, say use this image for style only, not for content.
    See where the models differEach group then lists how the models handle that kind of reference. This is the Styles group.
The Image form with Gemini 3.1 Flash Image picked. Above the reference slots: 0 of 14 images, up to 5 people. Slots named @Style and @Character, and an Add role slot. Below them, a tip on citing images in the prompt, then a prompt that uses @Style.
Show the limits beside the slotsThe Image form shows the model’s limits as artists add images: “0 of 14 images · up to 5 people” for Gemini 3.1 Flash Image. Named slots, such as @Style, can be cited in the prompt.

What Lupin tells artists

Characters

Two images per person: a neutral frontal headshot and a frontal full-body shot. Plain background, even light, no expression.

  • Seedance: up to 9 images, but no more than 4 people.
  • Kling: 2 to 4 angles per element.
  • Veo: up to 3 images of one subject. References lock the clip to 8 seconds.
  • Gemini: up to 14 images in total, with named character and style slots.
  • GPT image: up to 16 images.
  • Hailuo 2.3: first frame only.
Styles

A still that shows the look only: grain, brushwork, lighting, palette. No faces.

  • Gemini 3 Pro: up to 3 style slots.
  • Veo 3.1: no style reference.
  • GPT image, Wan, Kling and Seedance: write “use this image for style only, not for content”.

Do not save a contact sheet as the reference. Seedance reads a multi-view sheet as several people, and Wan and Veo want one subject per image.

Cite images in the prompt by order or by role: “the first image”, or “use @Style for the look only, not the content”.

Guidance I compiled from vendor documentation on 29 September 2026. Captures: Lupin desktop.

How a send works, frame by frame

From a prompt to a Version in ShotGrid.

The Filename Slate: project demo, episode 010, sequence sea, shot 0040, task, element, variant and version v0002, with the file name built from them below.
The Filename Slate. Made-up shot codes become the file name demo_010_sea_0040_harm_render_main_v0002. Lupin desktop.

In the studio’s build of Lupin, these codes come from live ShotGrid lists.

Version numbers come from ShotGrid’s next free number. Nobody counts by hand.

File names follow the studio’s rules, so the checks pass with no renaming.

Every send lands in the studio’s version store, with dailies rendered on the farm.

Send the same file twice and Lupin asks first.

Direct send shipped 7 August 2026. Hand-off to the desktop tool shipped 28 September 2026.

  1. An image generator node with its prompt, model, size and result.

    GenerateThe artist makes an image on the canvas, through the studio’s relay.

  2. Illustration: three lists for project, sequence and shot, with one shot picked.

    Pick the shotProject, sequence and shot come from live ShotGrid lists.

  3. Illustration: a checklist of pipeline checks, with one item to fix.

    ValidateThe pipeline’s own checks run first. A refusal comes back as a checklist.

  4. Illustration: a browser window hands a file to a desktop app.

    Hand offThe desktop Submission tool takes the file and creates the Version.

  5. Illustration: a receipt with a tick that links to the new version.

    ReceiptA receipt in Lupin links back to the new Version.

  6. Illustration: a dashboard of sends by person, sequence and task.

    TelemetryThe send is logged by person, sequence and task, for the funnel.

Frame 1: Lupin desktop. Frames 2 to 6: illustrations I made in Lupin. The studio’s ShotGrid screens stay private.

Where Lupin sits, in one picture

The artist works in the browser. Everything else happens around them.

Where Lupin sits The artist works in Lupin, in the browser. Lupin calls model providers through the studio relay. A send goes to the desktop Submission tool. The tool creates the Version in ShotGrid, files the work in the version store and logs the send for the telemetry funnel. Pipeline media comes back from the version store to Lupin. generate send file and dailies pipeline media Model providers direct provider APIs Studio relay 3 routes, keys stay here Artist prompts, picks and sends Lupin canvas in the artist’s browser Submission tool desktop app, runs after the checks ShotGrid Version, linked to the shot Version store farm-rendered dailies Telemetry funnel for each person Where Lupin sits generate send Model providersdirect provider APIs Studio relay3 routes, keys here Artistprompts and sends Lupinartist’s browser Version storefarm-rendered dailies Submission tooldesktop, after checks Telemetryfunnel per person ShotGridVersion, linked

Model calls go through the studio’s relay, so no keys sit on artist machines. A send passes the checks first. Then the desktop tool files it in ShotGrid and the version store, and logs it for the funnel. Pipeline media flows back onto the canvas.

What it changed for artists

The first three answer the three steps from before. Dates are ship dates.

Send to ShotGrid from the canvas

Before: download by hand from an outside tool.

Now: pick the shot from live lists, pass the checks, and get a receipt that links to the Version.

Direct send 7 August 2026. Desktop hand-off 28 September 2026.

Names that pass first time

Before: rename by hand and hope it passes.

Now: files follow the studio’s naming rules, so pipeline checks pass unchanged.

July 2026.

No keys on artist machines

Before: an account and a key on every machine.

Now: the studio manages access to the model providers, over three routes.

August 2026.

Pipeline media on the canvas

Artists pull approved and working media, including plates, onto the canvas.

Stable release, September 2026.

Every send on a dashboard

Each send is tagged by person, sequence, task and status. A funnel shows opens, sends, failures and work ready for review.

July to August 2026.

No time-saved or adoption figure is given here, because none has been measured.

Model access and cost

Artists generate through three studio-managed routes to the model providers. Provider keys never sit on artist machines.

Colleagues built most of the relay underneath. My part was access for each person on top of it, and one direct provider route.

I set up direct deals with model providers. They brought early access and free tokens for research. Going direct to provider APIs, not image aggregators, also costs less.

Going direct also unblocked big references: artists work at 2K and 4K, a 4K PNG is often over 20 MB, and at the time the image aggregator capped an upload at about 20 MB. Sent inline to Google, a big reference often failed. Since 24 September 2026, Lupin sends any reference over 8 MB through Google’s Files API, by way of the studio relay: Google stores the image for 48 hours and the model reads it from a link, so far larger references go through. The upload is reused across parallel variants, and if it fails Lupin sends the image inline as before. Bigger references mean better detail for the model to work from.

3 routes
Studio-managed routes to model providers. No keys on artist machines.Shipped August 2026. Count as of October 2026.
30 to 60%
Going direct to provider APIs instead of image aggregators. My estimate is 30 to 60% on model costs.Oscar’s estimate, 2026. It compares direct API prices for ByteDance Seedance 2.0 and 2.5 and Nano Banana Pro at 4K with aggregator prices. Not checked against invoices.
25 of 25
Large 4K references passing through Google’s Files API, where two in three had failed inline.Test runs on a 5504 × 3072 PNG, ten of them in parallel, September 2026. Inline, the file hit Google’s 30-second input deadline.

How I built it, with AI agents

My role at AcmeAI covers product, AI operations, hiring and partnerships. Lupin is the tool I built.

Product

I decided what Lupin does for artists, what ships next and when it is ready, and I built it, July to October 2026.

Hiring and partnerships

I ran hiring and recruitment with AI. Candidate search across portfolio sites, CV review and interview scheduling are automated. I also set up the studio’s direct deals with model providers.

The build

Lupin shares one code base, a monorepo, with the rest of the studio’s web platform. Other people’s work sits next to mine, so my changes went through pull requests.

I built it with AI coding agents, steered by skills I wrote. Three of them:

  • /shipit takes a branch to a review-clean pull request, then stops. A person merges.
  • /fix-pr-review checks each reviewer comment before acting on it.
  • hub-ux-design scores each screen against 20 UX laws before review.
See all my skills

What I learned

Put the pipeline’s rules inside the tool.

Checks run before the send. A refusal arrives as a list of fixes.

Tag the source from day one.

Each send carries a person, a task and a status. Record which tool sent it from the start too. It is harder to add later.

Keep prompts private, and plan around it.

Prompts stay in the artist’s browser, on purpose. Any measure of what works has to respect that.

Check the upload limit before the model.

When this started, the aggregator capped a reference at about 20 MB, and Google’s inline route failed on big ones. A 4K PNG is bigger. Storing the file on Google’s side for 48 hours and sending a link fixed it.

Lupin desktop’s home screen: shortcuts to Canvas, Image and Video, and a list of spaces.
Lupin desktop.
Feasibility note

A desktop spin-off: how hard would it be?

I checked how hard it would be to turn the web canvas into an Electron desktop app. Standalone means no third-party costs and simple wiring.

The screens on this page come from Lupin desktop, the standalone build. It has no ShotGrid link, so the send is shown in illustrations.

It is a feasibility check, so there is nothing to link to.

Building tools for artists or a studio pipeline?

Say what you are building and where it gets stuck. I read every message.

Send a message