How I built Halloweegie

I wanted a costume finder that thinks like a person does: not "what movie do you like," but "who's dressing up with me, and who do we each get to be?"

🎬 For now, Halloweegie only picks from about 400 popular movies from the '90s and 2000s (1990–2009), so no newer movies or TV yet.

398movies, 1990–2009, hand-curated from 600
4,780costume cards written by Beam
~1.27MBeam output tokens across 3 jobs
~1 secto try every way to split a crew of 5
Results for an example crew of five, each person matched to a role
One of the example crews (made-up people). Try them: one click, then "Try another crew."

1. Beam writes a costume card for every character

For each movie, I sent Beam the title, its Wikipedia summary and the Wikidata cast list, and asked for every role someone would actually dress up as, as strict JSON. That includes objects (the Heart of the Ocean) and 1–3 iconic group scenes. Here's one card, colored by where each part ends up:

Costume text

Austin Powers

Wear
Blue velvet suit, ruffled shirt, cravat, Chelsea boots
Hair
Brown shaggy mop
Props
Union Jack guitar
Ratings chaotic good
Funny
Scary
Sexy
Iconic
From your closet
+ flattering, masc↔femme, passive↔dominant
Group building
Pairs with
Dr. Evil, Vanessa, Fembot, Mr. Bigglesworth…
Size
normal (a second Beam pass)
Portrayed
white man
Costume text

What you'd actually wear. This is the biggest part of what makes two characters "close."

Ratings + alignment

How the costume feels. This is what moved Austin Powers away from James Bond (same spy plot, funny 4 vs. 1) and toward The Mask.

Group building

Who goes with whom, how big the role is, and the look as cast, which is only used to help someone find a character who looks like them, never to rule anyone out.

Guardrails I wrote into the prompt: no cards for Nazis or real hate groups, and never skin-tone makeup to "match" a character. The look comes from outfit, hair and props.

2. Beam tags each movie's vibe, then each role's size

Plot alone put Austin Powers next to Casino Royale. So Beam tagged every movie with humor (spoof, deadpan…), tone (campy, gritty…), aesthetic (what the people look like as a group: "1960s mod, velvet suits, go-go boots") and subgenre. A second pass tagged every role's age, species and physical size, so a baby gets Mini-Me or the spellbook, not Dorothy.

3. Every character becomes a point

My first version made each movie a point, with its characters averaged in. That blurred everything: the Sanderson sisters got watered down by the kids and the talking cat. People dress up as characters, not movies, so now every character is its own point:

Text embedded with OpenAI text-embedding-3-small; ratings and alignment z-scored and attached as numbers.

Eight weighting setups as stacked bars: movie info, vibes, cards, costume profile and card scores
I compared eight weightings side by side before settling on the final mix.
The first character-neighbors page: Winifred Sanderson's card next to her eight closest characters
The first time I switched to characters as points. This is when the results started feeling right.

Here's how Austin Powers' neighbors changed as I added each piece:

What the model knewClosest to Austin Powers
Movie plot onlyCasino Royale, Ocean's Twelve, Mission: Impossible
+ Beam's vibe tagsScary Movie 3, Mars Attacks!, White Chicks
+ card ratingsMen in Black, The Mask, Zoolander, Ace Ventura
Characters as pointsAustin → Zoolander, Ace Ventura, Harry Dunne, young Elvis

And it started finding costumes across genres with the same energy: 25% of neighbors came from a different genre with plot only, up to 33% with costume and vibe only. Try it in the character explorer.

4. Building the group

  1. Your taste = how close each character is to the ones you picked.
  2. Groups come from Beam's "pairs with": the three Sanderson sisters list each other. A whole franchise counts as one cast, so Foxxy, Felicity and Vanessa can all join Austin.
  3. Who plays whom: for up to 5 people, it tries every subset of your crew and every way to hand out the roles. That's brute force, but small enough to take about a second in your browser, so it always finds the real best instead of guessing.
  4. Fit, per person: look (strictly / prefer / don't care), hair color and length (wig ok?), size (babies and pets get mini roles like Mr. Bigglesworth), and their own vibe. The person who wants "sexy" gets Alotta Fagina; the one who wants "funny" gets Dr. Evil.
Say your crew is you, your partner, two friends and a baby, and you love Morticia, Winifred and Cher. Every mix of you gets its own best costume:
Just you → Morticia Addams
You + your partner → Morticia + Gomez
You + your two friends → the three Sanderson sisters, plus a "recreate the scene" idea
You + your partner + the baby → Morticia, Gomez and baby Pubert (mustache and all)
All five → the whole Addams Family (your friends as Wednesday and Grandmama, the baby as Pubert)

5. Fair casting

When I tested with a friend of mine who's Black, the app kept casting him as creatures, and Jurassic Park offered him the T-rex instead of Samuel L. Jackson's character. Two things were going on, and I fixed both:

And when a group can't all match, "strictly" is a hard rule for people of color and bends first for white people, because there are far fewer roles that look like them, so their matches are the ones most likely to run out. Me and my friend both on strict → Mia + Marsellus, Trinity + Morpheus, or me as Ethan Hawke next to him as Denzel in Training Day.

None of this limits who you can be. "Match my look" only changes what shows up first. Turn it off and every character is open to everyone, and the costume is always the outfit, hair and props.

6. How well Beam did

CheckResult
Character cards that match a name in Wikidata's cast list91%
Within 1 point of my own blind grade: masc↔femme14 / 14
… iconic12 / 14
… flattering11 / 14
… from your closet9 / 14
Same good↔evil as me12 / 13

Where it struggled: picking the iconic look. Vanessa Kensington came back as "blonde bob, black catsuit," then "mod dress, go-go boots," then "spy suit," and never as her famous silver dress. Beam also rates a lot of side characters as iconic, so I keep only roles rated 4+ and hand-cut the rest (Titanic is just Jack, Rose and the Heart of the Ocean).

7. What's next

A better quiz: instead of naming characters, choose between groups ("Genie, Jasmine and Aladdin, or Gomez, Morticia and Fester?"). An outfit pass: one iconic look per character, written as a checklist of exactly what you need. Ratings as words: testing whether "hilarious" beats "funny = 4." Learning from "Not for us": each no should teach the app your taste.

Find your costume →