Challenge Styles Reference

A comprehensive reference for every challenge style, format, and difficulty level in the Eko challenge system.

Abbreviations

Style Abbreviations

AbbreviationStyle SlugFull Name
MCmultiple_choiceMultiple Choice
FTGfill_the_gapFill the Gap
DQdirect_questionDirect Question
RLreverse_lookupReverse Lookup
FTfree_textFree Text
PIRprogressive_image_revealProgressive Image Reveal
CVconversationalConversational

Format Abbreviations

AbbreviationFormat SlugFull Name
BFObig_fan_ofBig Fan Of
KALknow_a_lot_aboutKnow A Lot About
RAMrepeat_after_meRepeat After Me
GWDgood_with_datesGood With Dates
DOSdegrees_of_separationDegrees of Separation
UTWused_to_work_thereUsed to Work There
PPpartial_picturesPartial Pictures
OGoriginatorsOriginators

Overview

Eko's challenge architecture has two layers:

LayerPurposeCountExamples
StylesPresentation mechanics (how the challenge is rendered and answered)7multiple_choice, free_text, conversational
FormatsExperience wrappers (the themed personality around a challenge)8big_fan_of, originators, good_with_dates

A format selects from a subset of eligible styles and layers on its own voice, knowledge type, and tone. A single fact can be challenged in many style + format combinations across 5 difficulty levels.

Generation modes:

  • Pre-generated (5 styles): Content is created ahead of time by AI, stored in fact_challenge_content, and served instantly.
  • Runtime (2 styles): Content is generated live during the user session via multi-turn AI dialogue.

Challenge Styles (7)

multiple_choice

PropertyValue
GenerationPre-generated
Voice registerOption curator
PersonalityPresents 4 curated options where each feels plausible while one clearly fits when you know the answer. Frames the selection as a commitment.

How it works: The user sees a setup narrative, a conversational question, and 4 options. Exactly 1 option is correct. Distractors are plausible and in the same category as the correct answer.

style_data schema:

{
  "options": [
    { "text": "Option A", "is_correct": false },
    { "text": "Option B", "is_correct": true },
    { "text": "Option C", "is_correct": false },
    { "text": "Option D", "is_correct": false }
  ]
}
  • Exactly 4 options, exactly 1 with is_correct: true
  • No "N/A", "None of the above", "All of the above", or "Unknown"
  • Correct answer position varies

Example phrasings:

  • "Take a look at these options -- which one do you think it is?"
  • "One of these is the real answer. Can you spot it?"
  • "Here's the lineup -- do you know which one fits?"
  • "Four possibilities, one truth. What do you think?"

Reveal tone:

  • Correct: Validates reasoning, acknowledges why other options were tempting
  • Wrong: Shows why the correct option fits better, connects the distinction to a memorable detail

Emphasis: Lean into the fun of weighing options and committing to a choice. Pull back from clinical "which of the following" quiz-show phrasing.

Used by formats: Big Fan Of (default), Know A Lot About, Repeat After Me, Good With Dates, Used to Work There (default), Partial Pictures, Originators


fill_the_gap

PropertyValue
GenerationPre-generated
Voice registerPuzzle architect
PersonalityPresents an incomplete statement and invites the reader to supply the missing piece. Positions the blank at the most meaningful word.

Note: This style absorbed the former statement_blank style (migration 0160). SB was mechanically identical ("fill a blank" pattern) and its best voice prefixes were merged into FTG's pool for variety.

How it works: The user sees a statement with a ___ gap. They type the missing word or phrase. The gap should feel like a puzzle piece that clicks satisfyingly into place.

style_data schema:

{
  "complete_text": "The Eiffel Tower was built in 1889",
  "answer": "1889",
  "acceptable_answers": ["1889", "eighteen eighty-nine"]
}
  • complete_text (required): Full sentence with the answer filled in
  • answer (required): The blanked word/phrase
  • acceptable_answers (optional): Alternative phrasings accepted as correct

Example phrasings:

  • "There's a piece missing here. Can you fill it in?"
  • "This story has a gap -- do you know what completes it?"
  • "One detail is missing. Can you finish what's started?"
  • "The sentence needs you -- can you complete it?"

Reveal tone:

  • Correct: Celebrates the perfect fit, shows how the missing piece completes the whole picture
  • Wrong: Shows how the piece fits with narrative context

Emphasis: Lean into the satisfaction of completing something. Pull back from sterile "fill in the blank" worksheet energy.

Used by formats: Repeat After Me (default)


direct_question

PropertyValue
GenerationPre-generated
Voice registerFocused questioner
PersonalityPoses a single, focused question and creates space for the reader to recall or reason their way to the answer. No safety net -- no options to choose from.

How it works: The user reads the setup, then answers a single direct question with no options or hints. The setup must do heavy lifting since there are no cues.

style_data schema:

{
  "expected_answer": "The Mariana Trench",
  "acceptable_answers": ["Mariana Trench", "Challenger Deep"],
  "answer_type": "name"
}
  • expected_answer (required): Concise answer string
  • acceptable_answers (optional): Alternative phrasings
  • answer_type (optional): Expected format ("number", "name", "date", "phrase")

Example phrasings:

  • "But here is the question -- do you know the answer?"
  • "So here is what I want to know -- can you tell me?"
  • "Okay, this is the real test -- do you know?"
  • "Here is what stumps most people -- what's your answer?"

Reveal tone:

  • Correct: Rewards recall with a detail that goes beyond the answer
  • Wrong: Delivers the answer as a discovery with a memorable detail

Emphasis: Lean into the satisfaction of knowing something from memory. Pull back from flat "what is X?" textbook interrogation.

Used by formats: Good With Dates (default)


reverse_lookup

PropertyValue
GenerationPre-generated
Voice registerClue arranger
PersonalityLays out a trail of clues and asks the reader to deduce the identity of something. The setup IS the challenge -- each sentence is a progressively narrower clue.

How it works: The setup provides a series of clues that get increasingly specific. The user must deduce the identity of the described thing (a person, place, event, or concept) from those clues alone.

style_data schema:

{
  "answer": "The Eiffel Tower",
  "key_identifiers": ["iron structure", "Paris", "1889", "temporary"],
  "category": "place"
}
  • answer (required): The thing being described
  • key_identifiers (optional): Most distinctive clues from the description
  • category (optional): Type of thing ("person", "place", "event", "concept")

Note: This style always needs a dedicated image (never inherits the fact's entity image) to avoid spoiling the answer.

Example phrasings:

  • "From the clues above, can you figure out what is being described?"
  • "All the clues point to one answer. Do you know what it is?"
  • "The mystery has been laid out -- can you solve it?"
  • "Based on these details, what do you think this is?"

Reveal tone:

  • Correct: Celebrates the deduction, traces back through the clues
  • Wrong: Unmasks the answer dramatically, highlights the key identifier

Emphasis: Lean into the thrill of deduction and the "aha" moment. Pull back from flat "what is being described?" without mystery energy.

Used by formats: Used to Work There, Originators (default)


free_text

PropertyValue
GenerationPre-generated
Voice registerReflective questioner
PersonalityPoses open-ended questions that push beyond recall into reasoning, analysis, or opinion. No single correct answer -- invites multiple valid perspectives.

How it works: The user reads the setup and responds in their own words. Scoring evaluates key concepts covered, reasoning quality, and depth. The correct_answer is an expanded 4-8 sentence narrative.

style_data schema:

{
  "key_concepts": ["cultural significance", "engineering innovation", "tourism impact"],
  "sample_answer": "The Eiffel Tower represents...",
  "scoring_guidance": "Full credit for mentioning engineering + cultural impact. Partial for surface-level observations."
}
  • key_concepts (required): Non-empty array of concepts a strong answer should touch on
  • sample_answer (required): Well-written example response
  • scoring_guidance (optional): Notes on what merits partial vs full credit

Example phrasings:

  • "In your own words -- how would you explain this?"
  • "What do you think is the most important takeaway here?"
  • "How would you describe this to someone who has never heard of it?"
  • "Here's a question for you -- why do you think this matters?"

Reveal tone:

  • Correct: Acknowledges their insight, highlights what made their perspective strong, adds a complementary angle
  • Wrong: Gently redirects by sharing the key insight as a discovery

Emphasis: Lean into the value of personal perspective and original expression. Pull back from recall-style "name the X" questions disguised as open-ended.

Used by formats: Big Fan Of, Know A Lot About (default), Good With Dates, Degrees of Separation, Used to Work There, Originators


progressive_image_reveal

PropertyValue
GenerationRuntime
Voice registerVisual puzzle-master (via partial_pictures format)
PersonalityReveals images progressively, from heavily obscured to fully visible, challenging users to identify the subject as early as possible.

How it works: An image is progressively unblurred or revealed in stages. The user guesses the subject at each stage. Earlier correct guesses earn more points. This style is generated at runtime (CC-003) and does not have pre-generated content in fact_challenge_content.

style_data schema: N/A (runtime-generated)

Used by formats: Partial Pictures (default)


conversational

PropertyValue
GenerationRuntime
Voice registerVaries by format
PersonalityMulti-turn AI dialogue where the challenge unfolds through back-and-forth conversation. Each turn scores the user's response and presents the next question.

How it works: The user enters a multi-turn conversation with an AI host. Each turn is scored 0.0-1.0. The AI adapts questions based on previous answers, progressively increasing difficulty. Sessions have a defined number of turns (typically 3-5). Generated at runtime (CC-003) via processConversationalTurn().

style_data schema: N/A (runtime-generated)

Supported format-specific prompts exist for: big_fan_of, know_a_lot_about, degrees_of_separation. All other formats fall back to a generic quiz-host prompt.

Used by formats: Big Fan Of, Know A Lot About, Degrees of Separation (default)


Challenge Formats (8)

big_fan_of -- Big Fan Of

PropertyValue
Display nameBig Fan Of
TaglineShow your fandom
Knowledge typefandom
ToneLight
ConversationalYes
Long-formNo
Iconheart
Color#ef4444 (red)
Pairs withknow_a_lot_about

Description: Prove how well you know the things you love -- sports teams, bands, shows, and more.

Supported styles: multiple_choice (default), free_text, conversational

Voice personality: Enthusiastic superfan. Energy of two fans meeting at a convention. Celebratory and insider-coded -- assumes the person loves the topic as much as you do.

Energy: High-warmth, celebratory.

Topic categories: sports, entertainment, people, places, food-beverage, cooking, animals, travel, tv, fashion, games, music, movies


know_a_lot_about -- Know A Lot About

PropertyValue
Display nameKnow A Lot About
TaglineDeep knowledge flex
Knowledge typeskill
ToneStandard
ConversationalYes
Long-formNo
Iconbrain
Color#8b5cf6 (purple)
Pairs withbig_fan_of

Description: Test your expertise on topics you claim to know inside and out -- science, history, tech, and beyond.

Supported styles: free_text (default), multiple_choice, conversational

Voice personality: Meticulous expert. Confident, authoritative -- energy of a specialist testing a colleague. Respects the person as someone who takes the domain seriously.

Energy: Confident, authoritative.

Topic categories: science, history, geography, technology, how-things-work, math, spelling-grammar, geology, architecture, business, finance


repeat_after_me -- Repeat After Me

PropertyValue
Display nameRepeat After Me
TaglineComplete the phrase
Knowledge typememory
ToneLight
ConversationalNo
Long-formNo
Iconquote
Color#f59e0b (amber)

Description: Fill in famous quotes, song lyrics, and well-known phrases from memory.

Supported styles: fill_the_gap (default), multiple_choice

Voice personality: Nostalgic completionist. Playful, warm -- the energy of finishing someone else's sentence because you both know it.

Energy: Playful, warm.

Topic categories: quotes, music, movies, history, culture, spelling-grammar, publishing


good_with_dates -- Good With Dates

PropertyValue
Display nameGood With Dates
TaglineWhen did it happen?
Knowledge typetemporal
ToneStandard
ConversationalNo
Long-formNo
Iconcalendar
Color#3b82f6 (blue)

Description: Pin events, discoveries, and milestones to the right date or era.

Supported styles: direct_question (default), multiple_choice, free_text

Voice personality: Timeline detective. Precise yet wonder-filled -- dates are not just numbers, they are anchors in a larger story.

Energy: Precise, investigative.

Topic categories: history, current-events, sports, science, culture, events


degrees_of_separation -- Degrees of Separation

PropertyValue
Display nameDegrees of Separation
TaglineConnect the dots
Knowledge typeassociation
ToneStandard
ConversationalYes
Long-formYes
Icongit-branch
Color#10b981 (emerald)

Description: Trace surprising links between people, places, and events through conversational back-and-forth.

Supported styles: conversational (default), free_text

Voice personality: Connection-chaser. Curious, conspiratorial -- the energy of "wait until you hear how these are connected." Sees hidden links between seemingly unrelated things.

Energy: Curious, conspiratorial.

Topic categories: people, entertainment, culture, history, music, movies, sports


used_to_work_there -- Used to Work There

PropertyValue
Display nameUsed to Work There
TaglineMatch the career
Knowledge typecareer
ToneStandard
ConversationalNo
Long-formNo
Iconbriefcase
Color#6366f1 (indigo)

Description: Link notable people to the companies, teams, or institutions where they made their mark.

Supported styles: multiple_choice (default), reverse_lookup, free_text

Voice personality: Insider narrator. Revelatory, knowing -- the energy of sharing a "not many people know this" career detail.

Energy: Revelatory, knowing.

Topic categories: business, people, entertainment, technology, sports


partial_pictures -- Partial Pictures

PropertyValue
Display namePartial Pictures
TaglineWhat are you looking at?
Knowledge typevisual
ToneLight
ConversationalNo
Long-formNo
Iconimage
Color#ec4899 (pink)

Description: Identify places, animals, and landmarks from progressively revealed images.

Supported styles: progressive_image_reveal (default), multiple_choice

Voice personality: Visual puzzle-master. Teasing, deductive -- the energy of a slow reveal where each clue narrows the field.

Energy: Teasing, deductive.

Topic categories: geography, animals, art, architecture, places, nature, countries, space


originators -- Originators

PropertyValue
Display nameOriginators
TaglineWho made it first?
Knowledge typecreator
ToneRigorous
ConversationalNo
Long-formNo
Iconlightbulb
Color#f97316 (orange)

Description: Match inventions, artworks, theories, and cultural milestones to their original creators.

Supported styles: reverse_lookup (default), multiple_choice, free_text

Voice personality: Origin historian. Reverential, precise -- the energy of "let me tell you who did it first, and why it mattered."

Energy: Reverential, precise.

Topic categories: science, art, technology, culture, music, history, publishing, design


Difficulty Levels (5)

LevelLabelDescriptionGuidance
1EasyDirect recall of the most prominent factTarget the most well-known aspect. Generous context in setup. Correct answer clearly distinguishable.
2MediumRecall with some contextual reasoningTarget a secondary detail requiring careful reading. Plausible but distinguishable distractors.
3HardRequires connecting multiple pieces of informationSynthesize two or more pieces of information. All distractors highly plausible.
4ExpertDeep knowledge or cross-domain reasoning requiredTarget obscure details. Shorter setup assumes strong background. Specialized knowledge needed.
5MasterExpert synthesis across multiple facts or domainsChallenges even subject matter experts. Near-miss distractors. Requires evaluation or prediction.

Style-to-Format Matrix

Which styles are available in which formats. Bold = default style for that format.

Formatmultiple_choicefill_the_gapdirect_questionreverse_lookupfree_textprogressive_image_revealconversational
Big Fan Ofdefaultyesyes
Know A Lot Aboutyesdefaultyes
Repeat After Meyesdefault
Good With Datesyesdefaultyes
Degrees of Separationyesdefault
Used to Work Theredefaultyesyes
Partial Picturesyesdefault
Originatorsyesdefaultyes

Source Files

FileWhat it defines
packages/shared/src/schemas.tsChallengeStyleSchema (7 styles), ChallengeFormatSlugSchema (8 formats), KnowledgeTypeSchema
packages/ai/src/challenge-content-rules.tsChallengeStyle type (5 pre-gen), ChallengeFormatSlug type, validation rules
packages/ai/src/config/challenge-style-rules.tsPer-style setup/challenge/reveal/correct_answer guidance + style_data schemas
packages/ai/src/config/challenge-style-voices.tsPer-style voice personality, register, example phrasings
packages/ai/src/config/challenge-format-voices.tsPer-format voice personality, register, energy
packages/ai/src/config/challenge-format-rules.tsPer-format refinements for all text fields
packages/ai/src/config/challenge-difficulty.ts5 difficulty level definitions
packages/ai/src/conversational-challenge.tsRuntime conversational style logic and format-specific prompts
supabase/migrations/0105_challenge_formats.sqlDB enums for challenge_style and challenge_format_slug
supabase/migrations/0108_seed_challenge_formats.sqlFormat seed data (display names, taglines, style mappings, topic mappings)