Hi HN, I built an open-source pipeline that turns AI model metadata into dark fantasy RPG character portraits, and here's the twist: each model generates its own.
How it works (4 stages):
1. Creator → Monster. GPT-5.2 plays "Dark Fantasy Loremaster", it analyzes the AI company's name and assigns a monster archetype + color palette. "Black Forest Labs" → Wyrdwood Witch-Hart. "ByteDance Seed" → Spriggan Code-Dancer. "xAI" → Rune-Eyed Homunculus.
2. Model → Item + Material. A second GPT-5.2 role ("Creative Art Director") maps each model's size and modality to a holdable item. Image models get weapons (small=dagger, large=greatsword). Video models get time/vision tools (hourglasses, mirrors). Audio gets resonance tools. 3D gets construction tools. So Qwen Image Max (large, image) → Colossal Calligrapher's Greatsword made of Starforged Brass.
3. Self-portrait. The model's own fal.ai endpoint generates a portrait of itself as the monster holding the item. FLUX.2 paints its own Witch-Hart. Seedream paints its own Spriggan. The prompt is literally just: {material} {monster} holding {item}.
4. Style unification. Every raw portrait gets restyled through Seedream v4.5's edit endpoint with the creator's color palette + a global style reference to make them look cohesive.
Everything is cached as markdown files (human-readable, git-diffable), uploaded to S3 via Bun's native S3 API, and served on the site: https://modeldrop.fyi
The whole thing runs on the Vercel AI SDK (@ai-sdk/fal for images, ai package for text generation) with Zod schemas for validation. All prompts, identity caches, and generation metadata are version-controlled.
What I think is interesting: the same pipeline produces wildly different results because each image model has its own "style fingerprint." FLUX portraits look different from Seedream portraits even with identical prompt structure. The restyle pass smooths this out but you can still feel the model's personality.
Would love feedback. What creators or models am I missing?
okandship•1h ago
How it works (4 stages):
1. Creator → Monster. GPT-5.2 plays "Dark Fantasy Loremaster", it analyzes the AI company's name and assigns a monster archetype + color palette. "Black Forest Labs" → Wyrdwood Witch-Hart. "ByteDance Seed" → Spriggan Code-Dancer. "xAI" → Rune-Eyed Homunculus.
2. Model → Item + Material. A second GPT-5.2 role ("Creative Art Director") maps each model's size and modality to a holdable item. Image models get weapons (small=dagger, large=greatsword). Video models get time/vision tools (hourglasses, mirrors). Audio gets resonance tools. 3D gets construction tools. So Qwen Image Max (large, image) → Colossal Calligrapher's Greatsword made of Starforged Brass.
3. Self-portrait. The model's own fal.ai endpoint generates a portrait of itself as the monster holding the item. FLUX.2 paints its own Witch-Hart. Seedream paints its own Spriggan. The prompt is literally just: {material} {monster} holding {item}.
4. Style unification. Every raw portrait gets restyled through Seedream v4.5's edit endpoint with the creator's color palette + a global style reference to make them look cohesive.
Everything is cached as markdown files (human-readable, git-diffable), uploaded to S3 via Bun's native S3 API, and served on the site: https://modeldrop.fyi
The whole thing runs on the Vercel AI SDK (@ai-sdk/fal for images, ai package for text generation) with Zod schemas for validation. All prompts, identity caches, and generation metadata are version-controlled.
Repo: https://github.com/okandship/MODELDROP (CC0, public domain)
What I think is interesting: the same pipeline produces wildly different results because each image model has its own "style fingerprint." FLUX portraits look different from Seedream portraits even with identical prompt structure. The restyle pass smooths this out but you can still feel the model's personality.
Would love feedback. What creators or models am I missing?