What custom gpts are and the GPT store
A custom GPT is a configured version of ChatGPT that you set up once for a job you do over and over, then reuse (or publish) without rebuilding the setup every time. Think of it as ChatGPT plus a fixed system prompt, a set of files, optional tool connections, and a name, all bundled into a shareable unit that lives in the GPT Store.
You already know how to write a good prompt. A custom GPT is what you reach for when one good prompt is not enough: when the instructions are long, when the same reference files matter every time, or when other people need to run the job without seeing the machinery.
Anatomy of a custom GPT
Open the builder at chatgpt.com/gpts/editor (Plus, Pro, Team, or Enterprise). A custom GPT is made of a few parts:
- Instructions: the persistent system promptsystem promptThe hidden set of instructions that defines how an AI assistant behaves before any user types a question: its role, tone, limits and rules.View full definition →. This is the behavior contract, not a one-off request.
- Knowledge: files you upload (PDFs, docs, spreadsheets) that the GPT can read on every conversation.
- Capabilities: toggles for Web Search, Canvas, Advanced Data Analysis (Code Interpreter), and image generation.
- Actions: connections to external APIs so the GPT can fetch or send real data.
- Conversation starters: example prompts shown on the launch screen.
The builder has a conversational setup mode, but for anything serious you should edit the Configure tab directly. The conversational mode is convenient and vague; the Configure tab is where you control exactly what the instructions say.
The concrete example: a brand voice writer
Say your company has a tone guide: warm, direct, no hype, British spelling, never use the word "leverage." Marketing, sales, and support all need to write in that voice. Pasting the guide into every chat is brittle and inconsistent.
Build a "Acme Brand Voice Writer" GPT instead.
Instructions (the contract):
You are Acme's brand voice writer. Rewrite or draft copy in Acme's
voice: warm, direct, plain. No hype words (leverage, synergy,
game-changing, unlock). British spelling. Sentences under 25 words
where possible. Active voice.
When the user gives raw copy, return: (1) the rewritten version,
(2) a one-line note on what you changed and why.
If the request conflicts with the tone guide in your knowledge files,
follow the tone guide and say so briefly.Knowledge: upload acme-tone-guide.pdf and a dos-and-donts.md. Now every conversation starts with the full guide loaded, no pasting.
Capabilities: turn Web Search off (you do not want it inventing facts about products), keep Canvas on so writers can edit drafts side by side.
Conversation starters: "Rewrite this homepage hero," "Draft a launch email," "Tighten this paragraph."
Now anyone on the team opens one GPT and gets consistent output. That consistency is the whole point: the instructions and the tone guide do not drift between people or sessions.
When a custom GPT beats a saved prompt
You can save prompts as text snippets, and ChatGPT Projects let you set custom instructions plus shared files scoped to a workspace. So when is a full custom GPT the right tool? Use this decision lens.
ReachReachThe number of unique people exposed to your message in a given period. Unlike impressions, reach counts each person once, no matter how often they see it.View full definition → for a custom GPT when:
- Multiple people need the same behavior. A saved prompt lives on your machine; a GPT is shareable by link or published to your workspace.
- The instructions are long and stable. A 600-word behavior contract belongs in a config, not retyped.
- You need bundled knowledge files that apply to every conversation, not just one.
- You need Actions. Only custom GPTs (and the APIAPIApplication Programming Interface: a standardised interface that lets applications communicate and exchange data without knowing each other's internal workings.View full definition →) can call external services on a trigger.
- You want a clean launch surface: a name, an icon, and starter prompts for non-technical users.
A saved prompt or Project is enough when:
- It is just you, and the prompt is short.
- The context changes every time, so a fixed instruction set would only get in the way.
- You are iterating fast and do not want to maintain a published artifact.
Rough rule: Projects are for *your* recurring work with shared files; custom GPTs are for *packaging a repeatable job for others* (or for a clean, named tool you return to). They overlap, and that is fine.
Build a Custom GPT from Scratch
Actions: where custom GPTs get powerful
A GPT Action lets your custom GPT call an external API during a conversation. This is the same idea as function calling on the API, but configured through an OpenAPI schemaschemaA schema is the formal blueprint that defines how data is structured, named, typed, and related within a database, file, or message.View full definition → in the builder instead of code.
Extend the brand voice writer: suppose approved product facts live in an internal endpoint. You give the GPT an Action so it can fetch real specs instead of guessing. You define the action with an OpenAPI schema like this:
openapi: 3.1.0
info:
title: Acme Product Facts
version: "1.0"
servers:
- url: https://api.acme.com
paths:
/products/{sku}:
get:
operationId: getProductFacts
summary: Get approved facts for a product SKU
parameters:
- name: sku
in: path
required: true
schema: { type: string }
responses:
"200":
description: Product facts
content:
application/json:
schema:
type: object
properties:
name: { type: string }
claims: { type: array, items: { type: string } }Paste that into the Action editor, add an auth method (API key or OAuth), and the GPT can now call getProductFacts when a user asks it to write copy for a SKU. The model decides when to call it based on your instructions and the action's `summary`. See Actions in the docs for auth and schema details.
Two things to internalize:
- Write clear `operationId` and `summary` fields. The model uses them to decide whether and how to call the action. Vague summaries cause missed or wrong calls.
- Actions run with the permissions you configure. If the GPT is published, treat the action as a public door into that API.
Actions vs connectors
Do not confuse Actions with Connectors. Connectors link ChatGPT to data sources like Google Drive, SharePoint, or GitHub for retrieval inside chats and Projects. Actions are custom API calls you wire into a specific GPT. Use Connectors to bring in your documents; use Actions to hit a custom endpoint or trigger an operation.
Publishing and the GPT store
The GPT Store is where published custom GPTs are discovered. When you finish building, you choose visibility:
- Only me: private.
- Anyone with the link: shareable, unlisted.
- Workspace (Team/Enterprise): visible to your org only.
- Public: listed in the Store for everyone.
To publish publicly you need a verified builder profile (a name or a verified domain). The Store organizes GPTs into categories and surfaces popular ones. OpenAI has run a revenue program for US builders based on usage; treat specifics as subject to change and check current terms rather than assuming a fixed rate. The official overview is at help.openai.com.
One sharp limitation to remember: **a public GPT runs on the *user's* ChatGPT account and plan**. Free users may hit different model access than you did while building. Test as a non-builder before you ship.
Knowledge check
1. What best describes the purpose of a custom GPT compared to writing a single good prompt?
2. In a custom GPT, what role do the 'Instructions' play?
3. Why does the lesson recommend editing the 'Configure' tab directly rather than relying on the conversational setup mode?
4. Select ALL situations where building a custom GPT is a better choice than writing a single prompt each time.
Select all the correct answers.
5. Select ALL of the following that are genuine parts (components) of a custom GPT as described in the lesson.
Select all the correct answers.
Custom GPTs vs the API: knowing which side you are on
This is the distinction that separates people who *use* ChatGPT from people who *build products* on OpenAI.
A custom GPT lives inside ChatGPT. It is bounded by the ChatGPT app: the user must have a ChatGPT account, the UI is fixed, and you configure it with instructions, files, and Actions. No code required.
The OpenAI API (the Responses API and the older Chat Completions API) is for embeddingembeddingAn embedding is a numerical vector that represents data (text, images, or items) in a way that captures meaning, so similar items sit close together in space.View full definition → the model in *your own* application. You write code, you control the interface, you pay per tokentokenA token is the basic unit of text that language models process, often a word fragment, whole word, or punctuation mark rather than a single character.View full definition →, and you can use function calling, structured outputs, the Agents SDK, and more.
The same brand voice job, on the API side, looks like this:
from openai import OpenAI
client = OpenAI()
TONE_GUIDE = open("acme-tone-guide.md").read()
resp = client.responses.create(
model="gpt-4.1",
instructions=f"Rewrite copy in Acme's brand voice.\n\n{TONE_GUIDE}",
input="Rewrite: 'We leverage cutting-edge synergy to unlock value.'",
)
print(resp.output_text)Same instructions, same tone guide. The difference is *where it runs*: inside ChatGPT for your team, versus inside your own app for your customers.
How to choose:
- Custom GPT when the audience is ChatGPT users, you want zero infrastructure, and the ChatGPT UI is fine.
- API when you need it inside your product, automated at scale, behind your own auth, or wired into a backend. If you need structured outputs (guaranteed JSON shapes) or programmatic orchestration with the Agents SDK, you are on the API.
A common path: prototype the behavior as a custom GPT to validate the instructions quickly, then port the proven instructions into an API integration when you need scale or a custom interface.
Maintaining a custom GPT
A published GPT is a small product. Treat it that way.
- Version your instructions. Keep the instruction text in a file in your repo or notes. The builder has no real version history, so keep your own.
- Re-test after model updates. Behavior can shift when the underlying model changes. Keep a short list of test prompts and rerun them.
- Keep knowledge files current. A stale tone guide produces stale output. Re-upload when the source changes.
- Audit Actions. If the GPT is public and calls an API, review what that endpoint exposes.
Key Takeaways
- Use a custom GPT when a job repeats, the instructions are long and stable, the same files matter every time, or other people need to run it without seeing the setup. Use a saved prompt or Project for personal, fast-changing work.
- Build in the Configure tab, not the conversational mode, so you control the exact instructions, knowledge files, and capabilities.
- Add Actions (with clear
operationIdandsummaryfields in an OpenAPI schema) when the GPT needs live external data; use Connectors to pull in documents. - Remember the boundary: a custom GPT lives inside ChatGPT for ChatGPT users; the OpenAI API (Responses, function calling, structured outputs, Agents SDK) is for embedding the model in your own product. Prototype as a GPT, port to the API when you need scale.
- Treat a published GPT as a product: version your instructions yourself, re-test after model updates, and keep knowledge files current.
What to do, from this lesson
These actions are compiled in the role's Playbook.
- Toggle off every custom GPT capability not required by the task
- Own team GPTs at workspace/admin level and publish workspace-only