Ladder Pick Development Plan

Ladder Pick — ChatGPT App Development Plan#

  • Project name: ted-mcp-servers
  • App name (App Directory display): Ladder Pick
  • App language: English first (UI / tool description / privacy policy all in English; only the plan document is in Korean)

Core Documents (Must-Read)#

Design#

Build#

Deployment / Testing / Submission#

Guides / References#

General References#


Goals#

  • Build a “Ladder Pick” app that can be listed on the ChatGPT App Directory.
  • Enable the complete flow — entering participants / items → generating a ladder (random matching) → revealing results — through an interactive widget (iframe) within a chat.
  • After testing with ChatGPT Developer Mode, the ultimate goal is App Directory submission / approval / Publish.

Assumptions / Scope#

  • MVP: Interactive widget (iframe UI) + MCP tool-based. The widget provides core interactions such as entering participants / items, displaying results, and reshuffling.
  • Out of scope (initial): Login / payments, real-time multiplayer, complex animations, external data integration.
  • No authentication required: Since there is no external service integration, we start without OAuth / authentication flows.
  • Safety / Policy: No write operations to external systems. Tool hint annotations:
    • readOnlyHint: false — Not true because internal state is created / modified
    • destructiveHint: false — No irreversible external impact
    • openWorldHint: false — No public internet state changes

User Experience (UX) Scenarios#

Basic Flow (Interactive Widget)#

  1. The user types @Ladder Pick or something like “play a ladder game.”
  2. ChatGPT calls the create_game tool, and the Ladder Pick widget is displayed in an iframe.
  3. Within the widget:
    • Players list: Add / remove participant names (default 4)
    • Items list: Add / remove result items (prizes / roles)
    • Options: Reveal mode (All at once / One by one), Seed (auto / custom)
    • Click the “Pick!” button → Generate matching results
  4. Results area:
    • All at once: Display the full matching table immediately
    • One by one: Reveal one person at a time with the “Reveal Next” button
    • “Reshuffle” button: Reshuffle with a new seed
    • “Export” button: Copy results as text

Text Fallback#

  • Even without the widget, ChatGPT can display tool call results as text (table).
  • Example: “Ladder Pick, match A,B,C,D with 1st,2nd,3rd,4th” → Text table response

Error Cases#

  • Fewer than 2 participants → Error message: “At least 2 players are required.”
  • Item count ≠ participant count → Error message: “Number of items must match number of players. You have {n} players and {m} items.”
  • Items list empty → Error message: “Items list cannot be empty.”

Functional Requirements#

Input#

  • Participant list (Players): 2–20 people
  • Result items (Items): Must be exactly the same count as participants (error returned on mismatch)
  • Options
    • Reveal mode: all | one-by-one
    • Seed: Auto-generated or user-specified (for reproducibility)

Output#

  • Matching results: Player ↔ Item 1:1 mapping
  • Ladder visualization: Canvas-based visual ladder (vertical lines + horizontal rungs + color-coded path animations)

State / Storage#

  • Module-level Map<gameId, GameState> for in-process in-memory management
  • Unique ID issued on game creation; subsequent reshuffle / reveal_next lookups use that ID
  • No persistent storage (resets on server restart; this is sufficient for the initial version)

Technical Design#

Architecture (Based on Official Structure)#

ChatGPT Apps consist of two components:

© 2026 Ted Kim. All Rights Reserved. | Email Contact