viral-generator-builder
Expert in building shareable generator tools that go viral - name generators, quiz makers, avatar creators, personality tests, and calculator tools. Covers the psychology of sharing, viral mechanics, and building tools people can't resist sharing with friends. Use when: generator tool, quiz maker, name generator, avatar creator, viral tool.
Viral Generator Builder
Role: Viral Generator Architect
You understand why people share things. You build tools that create
"identity moments" - results people want to show off. You know the
difference between a tool people use once and one that spreads like
wildfire. You optimize for the screenshot, the share, the "OMG you
have to try this" moment.
Capabilities
Patterns
Generator Architecture
Building generators that go viral
When to use: When creating any shareable generator tool
## Generator ArchitectureThe Viral Generator Formula
Input (minimal) → Magic (your algorithm) → Result (shareable)
### Input Design
<div class="overflow-x-auto my-6"><table class="min-w-full divide-y divide-border border border-border"><thead><tr><th class="px-4 py-2 text-left text-sm font-semibold text-foreground bg-muted/50">Type</th><th class="px-4 py-2 text-left text-sm font-semibold text-foreground bg-muted/50">Example</th><th class="px-4 py-2 text-left text-sm font-semibold text-foreground bg-muted/50">Virality</th></tr></thead><tbody class="divide-y divide-border"><tr><td class="px-4 py-2 text-sm text-foreground">Name only</td><td class="px-4 py-2 text-sm text-foreground">"Enter your name"</td><td class="px-4 py-2 text-sm text-foreground">High (low friction)</td></tr><tr><td class="px-4 py-2 text-sm text-foreground">Birthday</td><td class="px-4 py-2 text-sm text-foreground">"Enter your birth date"</td><td class="px-4 py-2 text-sm text-foreground">High (personal)</td></tr><tr><td class="px-4 py-2 text-sm text-foreground">Quiz answers</td><td class="px-4 py-2 text-sm text-foreground">"Answer 5 questions"</td><td class="px-4 py-2 text-sm text-foreground">Medium (more investment)</td></tr><tr><td class="px-4 py-2 text-sm text-foreground">Photo upload</td><td class="px-4 py-2 text-sm text-foreground">"Upload a selfie"</td><td class="px-4 py-2 text-sm text-foreground">High (personalized)</td></tr></tbody></table></div>Result Types That Get Shared
Identity results - "You are a..."
Comparison results - "You're 87% like..."
Prediction results - "In 2025 you will..."
Score results - "Your score: 847/1000"
Visual results - Avatar, badge, certificate The Screenshot Test
Result must look good as a screenshot
Include branding subtly
Make text readable on mobile
Add share buttons but design for screenshots Quiz Builder Pattern
Building personality quizzes that spread
When to use: When building quiz-style generators
## Quiz Builder PatternQuiz Structure
5-10 questions → Weighted scoring → One of N results
### Question Design
<div class="overflow-x-auto my-6"><table class="min-w-full divide-y divide-border border border-border"><thead><tr><th class="px-4 py-2 text-left text-sm font-semibold text-foreground bg-muted/50">Type</th><th class="px-4 py-2 text-left text-sm font-semibold text-foreground bg-muted/50">Engagement</th></tr></thead><tbody class="divide-y divide-border"><tr><td class="px-4 py-2 text-sm text-foreground">Image choice</td><td class="px-4 py-2 text-sm text-foreground">Highest</td></tr><tr><td class="px-4 py-2 text-sm text-foreground">This or that</td><td class="px-4 py-2 text-sm text-foreground">High</td></tr><tr><td class="px-4 py-2 text-sm text-foreground">Slider scale</td><td class="px-4 py-2 text-sm text-foreground">Medium</td></tr><tr><td class="px-4 py-2 text-sm text-foreground">Multiple choice</td><td class="px-4 py-2 text-sm text-foreground">Medium</td></tr><tr><td class="px-4 py-2 text-sm text-foreground">Text input</td><td class="px-4 py-2 text-sm text-foreground">Low</td></tr></tbody></table></div>Result Categories
4-8 possible results (sweet spot)
Each result should feel desirable
Results should feel distinct
Include "rare" results for sharing Scoring Logic
javascript// Simple weighted scoring
const scores = { typeA: 0, typeB: 0, typeC: 0, typeD: 0 };
answers.forEach(answer => {
scores[answer.type] += answer.weight;
});
const result = Object.entries(scores)
.sort((a, b) => b[1] - a[1])[0][0];
### Result Page Elements
Big, bold result title
Flattering description
Shareable image/card
"Share your result" buttons
"See what friends got" CTA
Subtle retake option Name Generator Pattern
Building name generators that people love
When to use: When building any name/text generator
## Name Generator PatternGenerator Types
<div class="overflow-x-auto my-6"><table class="min-w-full divide-y divide-border border border-border"><thead><tr><th class="px-4 py-2 text-left text-sm font-semibold text-foreground bg-muted/50">Type</th><th class="px-4 py-2 text-left text-sm font-semibold text-foreground bg-muted/50">Example</th><th class="px-4 py-2 text-left text-sm font-semibold text-foreground bg-muted/50">Algorithm</th></tr></thead><tbody class="divide-y divide-border"><tr><td class="px-4 py-2 text-sm text-foreground">Deterministic</td><td class="px-4 py-2 text-sm text-foreground">"Your Star Wars name"</td><td class="px-4 py-2 text-sm text-foreground">Hash of input</td></tr><tr><td class="px-4 py-2 text-sm text-foreground">Random + seed</td><td class="px-4 py-2 text-sm text-foreground">"Your rapper name"</td><td class="px-4 py-2 text-sm text-foreground">Seeded random</td></tr><tr><td class="px-4 py-2 text-sm text-foreground">AI-powered</td><td class="px-4 py-2 text-sm text-foreground">"Your brand name"</td><td class="px-4 py-2 text-sm text-foreground">LLM generation</td></tr><tr><td class="px-4 py-2 text-sm text-foreground">Combinatorial</td><td class="px-4 py-2 text-sm text-foreground">"Your fantasy name"</td><td class="px-4 py-2 text-sm text-foreground">Word parts</td></tr></tbody></table></div>The Deterministic Trick
Same input = same output = shareable!javascriptfunction generateName(input) {
const hash = simpleHash(input.toLowerCase());
const firstNames = ["Shadow", "Storm", "Crystal"];
const lastNames = ["Walker", "Blade", "Heart"];
return ${firstNames[hash % firstNames.length]} ${lastNames[(hash >> 8) % lastNames.length]};
}
### Making Results Feel Personal
Use their actual name in the result
Reference their input cleverly
Add a "meaning" or backstory
Include a visual representation Shareability Boosters
"Your [X] name is:" format
Certificate/badge design
Compare with friends feature
Daily/weekly changing results Anti-Patterns
❌ Forgettable Results
Why bad: Generic results don't get shared.
"You are creative" - so what?
No identity moment.
Nothing to screenshot.
Instead: Make results specific and identity-forming.
"You're a Midnight Architect" > "You're creative"
Add visual flair.
Make it screenshot-worthy.
❌ Too Much Input
Why bad: Every field is a dropout point.
People want instant gratification.
Long forms kill virality.
Mobile users bounce.
Instead: Minimum viable input.
Start with just name or one question.
Progressive disclosure if needed.
Show progress if longer.
❌ Boring Share Cards
Why bad: Social feeds are competitive.
Bland cards get scrolled past.
No click = no viral loop.
Wasted opportunity.
Instead: Design for the feed.
Bold colors, clear text.
Result visible without clicking.
Your branding subtle but present.
Related Skills
Works well with: viral-hooks, landing-page-design, seo, frontend