<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ChatGPT on Ted Factory</title><link>https://tedfactory.com/en/tags/chatgpt/</link><description>Recent content in ChatGPT on Ted Factory</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 02 May 2026 09:57:07 +0900</lastBuildDate><atom:link href="https://tedfactory.com/en/tags/chatgpt/index.xml" rel="self" type="application/rss+xml"/><item><title>Ladder Pick Development Plan</title><link>https://tedfactory.com/en/apps/ladder-pick/plan/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/en/apps/ladder-pick/plan/</guid><description>&lt;h1 id="ladder-pick--chatgpt-app-development-plan"&gt;Ladder Pick — ChatGPT App Development Plan&lt;a class="anchor" href="#ladder-pick--chatgpt-app-development-plan"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Project name&lt;/strong&gt;: &lt;code&gt;ted-mcp-servers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App name (App Directory display)&lt;/strong&gt;: Ladder Pick&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App language&lt;/strong&gt;: English first (UI / tool description / privacy policy all in English; only the plan document is in Korean)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="official-developer-documentation-reference-links"&gt;Official Developer Documentation Reference Links&lt;a class="anchor" href="#official-developer-documentation-reference-links"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="core-documents-must-read"&gt;Core Documents (Must-Read)&lt;a class="anchor" href="#core-documents-must-read"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Apps SDK Home&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk"&gt;https://developers.openai.com/apps-sdk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quickstart (includes Todo example)&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/quickstart"&gt;https://developers.openai.com/apps-sdk/quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP Server Concepts&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/concepts/mcp-server"&gt;https://developers.openai.com/apps-sdk/concepts/mcp-server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP Apps in ChatGPT&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/mcp-apps-in-chatgpt"&gt;https://developers.openai.com/apps-sdk/mcp-apps-in-chatgpt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="design"&gt;Design&lt;a class="anchor" href="#design"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;UX Principles&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/concepts/ux-principles"&gt;https://developers.openai.com/apps-sdk/concepts/ux-principles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UI Guidelines&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/concepts/ui-guidelines"&gt;https://developers.openai.com/apps-sdk/concepts/ui-guidelines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Design Components&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/plan/components"&gt;https://developers.openai.com/apps-sdk/plan/components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tool Definitions&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/plan/tools"&gt;https://developers.openai.com/apps-sdk/plan/tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use Case Research&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/plan/use-case"&gt;https://developers.openai.com/apps-sdk/plan/use-case&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="build"&gt;Build&lt;a class="anchor" href="#build"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MCP Server Setup&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/build/mcp-server"&gt;https://developers.openai.com/apps-sdk/build/mcp-server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ChatGPT UI Build&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/build/chatgpt-ui"&gt;https://developers.openai.com/apps-sdk/build/chatgpt-ui&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;State Management&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/build/state-management"&gt;https://developers.openai.com/apps-sdk/build/state-management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Authentication&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/build/auth"&gt;https://developers.openai.com/apps-sdk/build/auth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Example Apps (GitHub)&lt;/strong&gt;: &lt;a href="https://github.com/openai/openai-apps-sdk-examples"&gt;https://github.com/openai/openai-apps-sdk-examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UI Library (GitHub)&lt;/strong&gt;: &lt;a href="https://github.com/openai/apps-sdk-ui"&gt;https://github.com/openai/apps-sdk-ui&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="deployment--testing--submission"&gt;Deployment / Testing / Submission&lt;a class="anchor" href="#deployment--testing--submission"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Deployment Guide&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/deploy"&gt;https://developers.openai.com/apps-sdk/deploy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Testing Guide&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/deploy/testing"&gt;https://developers.openai.com/apps-sdk/deploy/testing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ChatGPT Connection&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/deploy/connect-chatgpt"&gt;https://developers.openai.com/apps-sdk/deploy/connect-chatgpt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App Submission &amp;amp; Maintenance&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/deploy/submission"&gt;https://developers.openai.com/apps-sdk/deploy/submission&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App Submission Guidelines (Policies / Rules)&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/app-submission-guidelines"&gt;https://developers.openai.com/apps-sdk/app-submission-guidelines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Developer Mode Setup&lt;/strong&gt;: &lt;a href="https://platform.openai.com/docs/guides/developer-mode"&gt;https://platform.openai.com/docs/guides/developer-mode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="guides--references"&gt;Guides / References&lt;a class="anchor" href="#guides--references"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Security &amp;amp; Privacy&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/guides/security-privacy"&gt;https://developers.openai.com/apps-sdk/guides/security-privacy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Metadata Optimization&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/guides/optimize-metadata"&gt;https://developers.openai.com/apps-sdk/guides/optimize-metadata&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Troubleshooting&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/deploy/troubleshooting"&gt;https://developers.openai.com/apps-sdk/deploy/troubleshooting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API Reference&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/reference"&gt;https://developers.openai.com/apps-sdk/reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Changelog&lt;/strong&gt;: &lt;a href="https://developers.openai.com/apps-sdk/changelog"&gt;https://developers.openai.com/apps-sdk/changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="general-references"&gt;General References&lt;a class="anchor" href="#general-references"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Apps in ChatGPT (Help Center)&lt;/strong&gt;: &lt;a href="https://help.openai.com/en/articles/12503483-apps-in-chatgpt-and-the-apps-sdk"&gt;https://help.openai.com/en/articles/12503483-apps-in-chatgpt-and-the-apps-sdk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App Directory Submission (Help Center)&lt;/strong&gt;: &lt;a href="https://help.openai.com/en/articles/20001040"&gt;https://help.openai.com/en/articles/20001040&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App Directory Browsing&lt;/strong&gt;: &lt;a href="https://chatgpt.com/apps"&gt;https://chatgpt.com/apps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="goals"&gt;Goals&lt;a class="anchor" href="#goals"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Build a &lt;strong&gt;&amp;ldquo;Ladder Pick&amp;rdquo;&lt;/strong&gt; app that can be listed on the ChatGPT App Directory.&lt;/li&gt;
&lt;li&gt;Enable the complete flow — entering participants / items → generating a ladder (random matching) → revealing results — through an &lt;strong&gt;interactive widget (iframe)&lt;/strong&gt; within a chat.&lt;/li&gt;
&lt;li&gt;After testing with ChatGPT Developer Mode, the ultimate goal is &lt;strong&gt;App Directory submission / approval / Publish&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="assumptions--scope"&gt;Assumptions / Scope&lt;a class="anchor" href="#assumptions--scope"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;MVP&lt;/strong&gt;: Interactive widget (iframe UI) + MCP tool-based. The widget provides core interactions such as entering participants / items, displaying results, and reshuffling.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Out of scope (initial)&lt;/strong&gt;: Login / payments, real-time multiplayer, complex animations, external data integration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No authentication required&lt;/strong&gt;: Since there is no external service integration, we start without OAuth / authentication flows.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Safety / Policy&lt;/strong&gt;: No write operations to external systems. Tool hint annotations:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;readOnlyHint: false&lt;/code&gt; — Not true because internal state is created / modified&lt;/li&gt;
&lt;li&gt;&lt;code&gt;destructiveHint: false&lt;/code&gt; — No irreversible external impact&lt;/li&gt;
&lt;li&gt;&lt;code&gt;openWorldHint: false&lt;/code&gt; — No public internet state changes&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="user-experience-ux-scenarios"&gt;User Experience (UX) Scenarios&lt;a class="anchor" href="#user-experience-ux-scenarios"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="basic-flow-interactive-widget"&gt;Basic Flow (Interactive Widget)&lt;a class="anchor" href="#basic-flow-interactive-widget"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;The user types &lt;code&gt;@Ladder Pick&lt;/code&gt; or something like &amp;ldquo;play a ladder game.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;ChatGPT calls the &lt;code&gt;create_game&lt;/code&gt; tool, and the &lt;strong&gt;Ladder Pick widget&lt;/strong&gt; is displayed in an iframe.&lt;/li&gt;
&lt;li&gt;Within the widget:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Players&lt;/strong&gt; list: Add / remove participant names (default 4)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Items&lt;/strong&gt; list: Add / remove result items (prizes / roles)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Options&lt;/strong&gt;: Reveal mode (All at once / One by one), Seed (auto / custom)&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;&amp;ldquo;Pick!&amp;rdquo;&lt;/strong&gt; button → Generate matching results&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Results area:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;All at once&lt;/strong&gt;: Display the full matching table immediately&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One by one&lt;/strong&gt;: Reveal one person at a time with the &amp;ldquo;Reveal Next&amp;rdquo; button&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;Reshuffle&amp;rdquo;&lt;/strong&gt; button: Reshuffle with a new seed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;ldquo;Export&amp;rdquo;&lt;/strong&gt; button: Copy results as text&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="text-fallback"&gt;Text Fallback&lt;a class="anchor" href="#text-fallback"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Even without the widget, ChatGPT can display tool call results as text (table).&lt;/li&gt;
&lt;li&gt;Example: &amp;ldquo;Ladder Pick, match A,B,C,D with 1st,2nd,3rd,4th&amp;rdquo; → Text table response&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="error-cases"&gt;Error Cases&lt;a class="anchor" href="#error-cases"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fewer than 2 participants → Error message: &amp;ldquo;At least 2 players are required.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Item count ≠ participant count → Error message: &amp;ldquo;Number of items must match number of players. You have {n} players and {m} items.&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Items list empty → Error message: &amp;ldquo;Items list cannot be empty.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="functional-requirements"&gt;Functional Requirements&lt;a class="anchor" href="#functional-requirements"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="input"&gt;Input&lt;a class="anchor" href="#input"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Participant list (Players)&lt;/strong&gt;: 2–20 people&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Result items (Items)&lt;/strong&gt;: Must be &lt;strong&gt;exactly the same count&lt;/strong&gt; as participants (error returned on mismatch)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Options&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;Reveal mode: &lt;code&gt;all&lt;/code&gt; | &lt;code&gt;one-by-one&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Seed: Auto-generated or user-specified (for reproducibility)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="output"&gt;Output&lt;a class="anchor" href="#output"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Matching results&lt;/strong&gt;: Player ↔ Item 1:1 mapping&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ladder visualization&lt;/strong&gt;: Canvas-based visual ladder (vertical lines + horizontal rungs + color-coded path animations)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="state--storage"&gt;State / Storage&lt;a class="anchor" href="#state--storage"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Module-level &lt;code&gt;Map&amp;lt;gameId, GameState&amp;gt;&lt;/code&gt; for in-process in-memory management&lt;/li&gt;
&lt;li&gt;Unique ID issued on game creation; subsequent reshuffle / reveal_next lookups use that ID&lt;/li&gt;
&lt;li&gt;No persistent storage (resets on server restart; this is sufficient for the initial version)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="technical-design"&gt;Technical Design&lt;a class="anchor" href="#technical-design"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="architecture-based-on-official-structure"&gt;Architecture (Based on Official Structure)&lt;a class="anchor" href="#architecture-based-on-official-structure"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;ChatGPT Apps consist of two components:&lt;/p&gt;</description></item><item><title>AI Services and Tools (1): ChatGPT / Gemini / Claude</title><link>https://tedfactory.com/en/books/ai-for-startup/ai-services-and-tools-1/</link><pubDate>Sun, 04 Jan 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/en/books/ai-for-startup/ai-services-and-tools-1/</guid><description>&lt;h1 id="ai-services-and-tools-1"&gt;AI Services and Tools (1)&lt;a class="anchor" href="#ai-services-and-tools-1"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;There are organizations that build AI models. They may publish their models, offer their own end-user services powered by those models, or provide APIs so developers can use the models. Based on public models, others may also create and release “derivative models” optimized for their own purposes, or ship them as services/APIs.&lt;/p&gt;
&lt;p&gt;Meanwhile, many teams don’t train models from scratch. Instead, they integrate AI features into products quickly by using APIs offered by others. In this ecosystem, new services and tools keep appearing, helping organizations of all sizes—from startups to large enterprises—apply AI to business. In this chapter, we’ll focus on well-known AI services and tools and introduce what each offers and how they’re commonly used.&lt;/p&gt;</description></item><item><title>Ladder Pick in ChatGPT</title><link>https://tedfactory.com/en/apps/ladder-pick/</link><pubDate>Mon, 02 Mar 2026 00:00:00 +0900</pubDate><guid>https://tedfactory.com/en/apps/ladder-pick/</guid><description>&lt;h1 id="ladder-pick-in-chatgpt"&gt;Ladder Pick in ChatGPT&lt;a class="anchor" href="#ladder-pick-in-chatgpt"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="what-are-chatgpt-apps"&gt;What Are ChatGPT Apps?&lt;a class="anchor" href="#what-are-chatgpt-apps"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://openai.com/index/introducing-apps-in-chatgpt/"&gt;&lt;strong&gt;ChatGPT Apps&lt;/strong&gt;&lt;/a&gt; is a feature introduced by OpenAI in October 2025 that allows external service providers to integrate their services into ChatGPT. It is built on &lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt;, which provides a standard for LLMs to invoke external tools. ChatGPT Apps takes this a step further by extending the standard so that &lt;strong&gt;interactive UI and logic&lt;/strong&gt; from external services can be embedded directly within the ChatGPT chat interface. In other words, MCP established the standard for &amp;ldquo;LLMs using external capabilities,&amp;rdquo; and the scope of those capabilities has expanded beyond simple data retrieval and execution to include user-facing interactive UI. On top of this, OpenAI launched the &lt;a href="https://chatgpt.com/apps"&gt;App Directory&lt;/a&gt;, a marketplace where users can discover and try a wide variety of apps. For developers, this creates an opportunity to expose their apps to ChatGPT&amp;rsquo;s massive user base and potentially monetize them.&lt;/p&gt;</description></item></channel></rss>