Skip to main content

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.json declares 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_checkout with mode: "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