Live

PortraitDirector

An AI portrait tool where you light the subject like a photographer, and the app writes the prompt.

Try it (opens in a new tab)
Role
Solo: research, design, build and prompt system
Platform
Web app
Built with
Vite, Three.js, Nano Banana Pro, Vercel Functions
Status
Live since August 2026

AI team photos fall apart on the lighting.

At the agency I work with, clients kept asking for better team photos made with AI. I did a lot of them by hand, and two problems came up every time. The lighting drifted from one person to the next, so a team never looked like it was shot on the same day. And there was no reliable way to say where the light should come from.

So I studied how Nano Banana Pro reads the direction of light, what makes it work and what breaks it, and built a tool around what I found.

The Solution

Put the light where you want it.

PortraitDirector gives you a lighting stage instead of a prompt box. Upload a photo, place lights around a 3D head, and pick the backdrop, lens, colour temperature, expression, pose and framing. The app translates all of it into language the model follows.

  • A real lighting stage

    Drag lights around the subject on a clock face, then set height, distance, size, modifier, intensity and colour. Add as many lights as the shot needs, or start from a preset.

  • Prompts written to be followed

    Every setting maps to phrasing I tested against the model. Height and horizontal angle each need their own wording to land accurately, and lights are described by their effect so no lamps appear in the frame.

  • Settings that don't fight

    Choices affect each other. Pick a navy backdrop with black and white turned on, and the prompt asks for dark grey, so no colour leaks into a mono portrait.

My role

Solo, from the first test prompt to launch. I ran the lighting research, designed the interface and the mascot, built the app, and wrote the prompt system behind it. It launched in August 2026.

Decisions

  1. Lighting you can see

    Nobody can describe a 35-degree key light from the front left in words, and the model needs very particular words anyway. So the interface is visual and the language lives in the code. The trade-off: every control needs a tested translation, and that layer has to be retuned when the model changes.

  2. The prompt system stays on the server

    The prompt layer is the product, so it runs in Vercel Functions and never reaches the browser. The trade-off: every generation goes through the server, and nobody can inspect or tweak the prompt from the client.

  3. Credits priced by resolution

    Portraits cost credits: 1 at 2K, 5 at 4K. It isn't something people need all the time: most people use it once, for themselves or for their team, so paying per portrait fits better than a subscription. An agency plan is the one place a subscription could make sense, but that stays on credits too, to keep things simple. The trade-off: less predictable revenue than a monthly plan.

Let's build something.

Launching a product, need a new site, or hiring? Tell me what you're working on.