ChatGPT App
Jobby.dev ChatGPT App
Run the seeker / recruiter loop in-chat with inline video and inline Stripe Embedded Checkout, powered by the OpenAI Apps SDK.
Last updated
The Jobby.dev ChatGPT App is a first-party integration built on the OpenAI Apps SDK. It exposes the same MCP tool surface as Claude Desktop / Cursor / Zed, but adds three rich inline widgets the Apps SDK renders directly in the chat.
What you get
- Inline video. When the user accepts a match, the InterviewRoom widget mounts a Daily.co iframe inside the ChatGPT message — no app switch, no second tab.
- Inline checkout. When the user upgrades a plan, the UpgradeCheckout widget mounts Stripe Embedded Checkout inline. Card entry happens inside ChatGPT.
- Live queue position.The QueueStatus widget refreshes the user's queue position every ~10 seconds while they're waiting.
Status
Backend MCP surface is fully shipped. The App-side install is gated on OpenAI directory submission (P1 follow-up in specs/features.md). Until approved, ChatGPT users can still drive Jobby.dev via the hosted MCP HTTP endpoint at https://jobby.dev/api/mcp — same tools, no widgets.
Architecture
The App is two pieces:
- Manifest.
apps/chatgpt-app/manifest.jsondeclares the App, its widgets, the MCP endpoint, OAuth scopes, and CSP allowlists. - Widget components. Three React components in
apps/chatgpt-app/widgets/— InterviewRoom, UpgradeCheckout, QueueStatus — that the OpenAI Apps SDK mounts when the corresponding tool result includes a widget content type.
How it activates a widget
Tool results carry a content-type header. When a tool returns e.g. application/json+jobbydev_interview_room, the Apps SDK looks up the widget bound to that content type and mounts it with the tool result as props. Mapping:
jobbydev_interview_room_url→application/json+jobbydev_interview_room→ InterviewRoom widget.jobbydev_create_upgrade_checkoutwithmode: "embedded"→application/json+jobbydev_upgrade_checkout→ UpgradeCheckout widget.jobbydev_queue_status→application/json+jobbydev_queue_status→ QueueStatus widget.
Privacy + scope
Same as the rest of the MCP surface: an agent (in this case the ChatGPT-driven App) can drive every administrative surface but not the live interview tap or off-session charges without prior consent. See the humans-only rule.
Related reading
- Widgets — what each one does and when it mounts.
- Developer guide — building or extending widgets.
- Install: ChatGPT App.