> ## Documentation Index
> Fetch the complete documentation index at: https://academy.pathfindr.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Start Building With ChatGPT

> A practical guide to building your first Custom GPT using the GPT Builder inside ChatGPT.

export const Quiz = ({question, options, correctIndex, explanation}) => {
  const [selected, setSelected] = useState(null);
  const [showResult, setShowResult] = useState(false);
  const handleSelect = index => {
    if (showResult) return;
    setSelected(index);
    setShowResult(true);
  };
  const isCorrect = selected === correctIndex;
  return <div className="my-8 p-6 rounded-2xl border border-zinc-200 dark:border-zinc-700 bg-gradient-to-br from-zinc-50 to-white dark:from-zinc-900 dark:to-zinc-800 shadow-sm">
      <div className="flex items-center gap-3 mb-4">
        <div className="flex items-center justify-center w-10 h-10 rounded-xl bg-blue-100 dark:bg-blue-900/40">
          <span className="text-xl">📝</span>
        </div>
        <div className="flex flex-col">
          <p className="font-semibold text-zinc-800 dark:text-zinc-100 m-0">Knowledge Check</p>
          <p className="text-xs text-zinc-500 dark:text-zinc-400 mt-0.5 m-0">Select the best answer</p>
      </div>
      </div>
      
      <p className="text-zinc-700 dark:text-zinc-200 font-medium mb-5 text-lg leading-relaxed">{question}</p>
      
      <div className="space-y-3">
        {options.map((option, index) => {
    const isSelected = selected === index;
    const isCorrectOption = index === correctIndex;
    let optionStyles = "border-zinc-200 dark:border-zinc-600 hover:border-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/20";
    if (showResult) {
      if (isCorrectOption) {
        optionStyles = "border-green-500 bg-green-50 dark:bg-green-900/30";
      } else if (isSelected && !isCorrectOption) {
        optionStyles = "border-red-500 bg-red-50 dark:bg-red-900/30";
      } else {
        optionStyles = "border-zinc-200 dark:border-zinc-700 opacity-60";
      }
    }
    return <button key={index} onClick={() => handleSelect(index)} disabled={showResult} className={`w-full text-left p-4 rounded-xl border-2 transition-all duration-200 ${optionStyles} ${!showResult && 'cursor-pointer'} ${showResult && 'cursor-default'}`}>
              <div className="flex items-start gap-3">
                <div className={`flex-shrink-0 w-6 h-6 rounded-full border-2 flex items-center justify-center text-xs font-bold ${showResult && isCorrectOption ? 'border-green-500 bg-green-500 text-white' : showResult && isSelected && !isCorrectOption ? 'border-red-500 bg-red-500 text-white' : 'border-zinc-300 dark:border-zinc-500 text-zinc-500 dark:text-zinc-400'}`}>
                  {showResult && isCorrectOption ? '✓' : showResult && isSelected ? '✗' : String.fromCharCode(65 + index)}
                </div>
                <span className="text-sm text-zinc-700 dark:text-zinc-200 leading-relaxed">{option}</span>
              </div>
            </button>;
  })}
      </div>
      
      {showResult && <div className={`mt-5 p-4 rounded-xl ${isCorrect ? 'bg-green-100 dark:bg-green-900/40 border border-green-200 dark:border-green-800' : 'bg-amber-100 dark:bg-amber-900/40 border border-amber-200 dark:border-amber-800'}`}>
          <div className="flex items-start gap-3">
            <span className="text-xl">{isCorrect ? '🎉' : '💡'}</span>
            <div className="flex flex-col">
              <p className={`text-sm font-semibold m-0 mb-1 ${isCorrect ? 'text-green-800 dark:text-green-200' : 'text-amber-800 dark:text-amber-200'}`}>
                {isCorrect ? 'Correct!' : 'Not quite right'}
              </p>
              <p className="text-sm text-zinc-600 dark:text-zinc-300 m-0 leading-relaxed">{explanation}</p>
          </div>
          </div>
        </div>}
    </div>;
};

export const GlossaryRow = ({title, description, children, flip = false, titleClassName = "text-2xl font-semibold tracking-tight text-zinc-950 dark:text-white", descriptionClassName = "mt-3 text-base leading-7 text-zinc-700 dark:text-zinc-300"}) => {
  return <div className="not-prose my-12">
      <div className="grid grid-cols-1 sm:grid-cols-[1fr_1.6fr] gap-10 items-start">
        {}
        <div className={flip ? "sm:order-2" : "sm:order-1"}>
          <div className={titleClassName}>{title}</div>
          {description ? <div className={descriptionClassName}>{description}</div> : null}
        </div>

        {}
        <div className={flip ? "sm:order-1" : "sm:order-2"}>
          <div className="rounded-2xl overflow-hidden bg-transparent pointer-events-auto">
            {children}
          </div>
        </div>
      </div>
    </div>;
};

## What you'll learn

Custom GPTs are your own purpose-built versions of ChatGPT. You give them a name, a set of instructions, and optionally a knowledge source or external connection — and they deliver consistent, on-point results every time, without you re-explaining the context.

<CardGroup cols={4}>
  <Card title="Understand Custom GPTs" icon="square-1">
    What they are and when to build one
  </Card>

  <Card title="Plan your GPT" icon="square-2">
    Define scope, instructions, and knowledge
  </Card>

  <Card title="Build and connect" icon="square-3">
    Set up the Configure tab and add data sources
  </Card>

  <Card title="Share and scale" icon="square-4">
    Publish to your team or workspace
  </Card>
</CardGroup>

***

## What is a Custom GPT?

A Custom GPT is a version of ChatGPT you configure yourself. It has your instructions baked in, your knowledge sources connected, and your preferred conversational style set — so every conversation starts exactly where it needs to.

The GPT Builder is available to all ChatGPT Plus, Team, and Enterprise users. You do not need to write code.

| Regular ChatGPT                   | Custom GPT                   |
| --------------------------------- | ---------------------------- |
| You re-explain context every time | Instructions are persistent  |
| General-purpose                   | Built for a specific task    |
| Personal use                      | Shareable across your team   |
| No memory between sessions        | Can reference your documents |

<Info>
  **Enterprise stat:** According to OpenAI's March 2025 enterprise report, users who work with Custom GPTs save an average of **40–60 minutes per day** on repetitive tasks. 20% of all enterprise messages are now processed via a Custom GPT or Project.
</Info>

<Accordion title="Test your understanding">
  <Quiz
    question="What makes a Custom GPT different from a regular ChatGPT conversation?"
    options={[
  "Custom GPTs use a more powerful AI model",
  "Custom GPTs retain your instructions, knowledge, and style across every conversation",
  "Custom GPTs are available on the free plan",
  "Custom GPTs can access the internet by default"
]}
    correctIndex={1}
    explanation="The key advantage of a Custom GPT is persistence. Your instructions, knowledge files, and configuration apply to every conversation automatically. You never re-explain the brief or re-upload documents — the GPT already knows."
  />
</Accordion>

***

## Where to find the GPT Builder

<Columns cols={2}>
  <Card title="Access via My GPTs">
    <img src="https://mintcdn.com/pathfindr/0Og7YOK8gX91P7mj/images/gptsExplorePages.webp?fit=max&auto=format&n=0Og7YOK8gX91P7mj&q=85&s=590446a927f14acad5e051196fa39c68" alt="GPTs Explore page in ChatGPT" title="GPTs Explore page" style={{ width:"100%" }} width="1920" height="602" data-path="images/gptsExplorePages.webp" />

    In ChatGPT, click your **profile icon** in the top right, then select **My GPTs**. From here you can see GPTs you have created or have access to, and click **Create a GPT** to open the builder.
  </Card>

  <Card title="The Configure tab">
    <img src="https://mintcdn.com/pathfindr/0Og7YOK8gX91P7mj/images/gptCreateAndConfigureTab.webp?fit=max&auto=format&n=0Og7YOK8gX91P7mj&q=85&s=80de38ddb2ca32cb21956b37a0df7cb2" alt="GPT Create and Configure tabs" title="GPT Builder tabs" style={{ width:"100%" }} width="1920" height="962" data-path="images/gptCreateAndConfigureTab.webp" />

    The builder has two tabs: **Create** (a conversational setup flow) and **Configure** (manual fields). Always use **Configure** — it gives you full control over every setting and is faster once you know what you are doing.
  </Card>
</Columns>

***

## Planning your Custom GPT

Before you open the builder, define these three things. GPTs without clear planning are hard to test and easy to misuse.

<Steps>
  <Step title="One-sentence task description">
    Write exactly what this GPT does. Example: "This GPT helps account managers write personalised follow-up emails after client meetings, using the notes the user provides."

    If it takes more than one sentence, narrow the scope.
  </Step>

  <Step title="What it needs to know">
    List the documents, policies, or templates your GPT should reference. These become your knowledge sources. Supported formats: PDF, Word (.docx), plain text. In 2026, you can also connect Google Drive or Slack natively.
  </Step>

  <Step title="Who will use it">
    If it is just for you, keep it private. If your team will use it, decide on sharing before you build — ChatGPT Team workspaces let you publish GPTs internally so the whole organisation can find and use them.
  </Step>
</Steps>

***

## Building your Custom GPT

<Columns cols={2}>
  <Card title="Instructions field">
    <img src="https://mintcdn.com/pathfindr/0Og7YOK8gX91P7mj/images/gptInstructions.webp?fit=max&auto=format&n=0Og7YOK8gX91P7mj&q=85&s=0521ee313aa1b751d91e53782e6d940a" alt="GPT Instructions field in the Configure tab" title="GPT Instructions" style={{ width:"100%" }} width="1920" height="516" data-path="images/gptInstructions.webp" />

    The **Instructions** field is the most important configuration you will make. This is the persistent system prompt — it tells the GPT what to do, how to respond, what to avoid, and what format to use.

    *Example instruction structure:*

    ```text theme={null}
    You are a follow-up email writer for the account management 
    team at [Company]. When the user shares meeting notes, write 
    a personalised follow-up email that:
    - Opens with a specific reference to something discussed
    - Summarises the key agreed actions (numbered list)
    - Closes with a clear next step and proposed date
    Keep it under 180 words. Professional but warm.
    ```
  </Card>

  <Card title="Knowledge sources">
    <img src="https://mintcdn.com/pathfindr/0Og7YOK8gX91P7mj/images/gptKnowledge.webp?fit=max&auto=format&n=0Og7YOK8gX91P7mj&q=85&s=79444c13501f8c60b97113d2c15a76db" alt="GPT Knowledge upload section" title="GPT Knowledge" style={{ width:"100%" }} width="1920" height="516" data-path="images/gptKnowledge.webp" />

    Click **Upload files** to add reference documents. Your GPT will search these automatically when relevant.

    **Supported formats:** PDF, Word (.docx), plain text, CSV

    **New connectors (2026):**

    <Note>
      ChatGPT now supports native connections to **Google Drive**, **Slack**, and **Power BI** as knowledge sources — not just uploaded files. Enterprise admins can enable these in workspace settings under **Connections**.
    </Note>
  </Card>
</Columns>

***

## Capabilities and model selection

<Columns cols={2}>
  <Card title="Capabilities">
    <img src="https://mintcdn.com/pathfindr/0Og7YOK8gX91P7mj/images/gptCapabilities.webp?fit=max&auto=format&n=0Og7YOK8gX91P7mj&q=85&s=6381389b8e2e0e64370931e35cb3df00" alt="GPT Capabilities panel" title="GPT Capabilities" style={{ width:"100%" }} width="1920" height="694" data-path="images/gptCapabilities.webp" />

    In the Configure tab, scroll to **Capabilities**. Toggle on what your GPT needs:

    * **Web search** — for GPTs that need current information
    * **Image generation** — for creative or visual tasks
    * **Code interpreter** — for data analysis, file processing, or calculations

    Only enable what the GPT actually needs. Extra capabilities can confuse it.
  </Card>

  <Card title="Model selection">
    <img src="https://mintcdn.com/pathfindr/0Og7YOK8gX91P7mj/images/gptModelSelection.webp?fit=max&auto=format&n=0Og7YOK8gX91P7mj&q=85&s=a88092c1357f3ef9f3bb1e03f3ef3cb2" alt="GPT Model selection panel" title="GPT Model selection" style={{ width:"100%" }} width="1920" height="694" data-path="images/gptModelSelection.webp" />

    **New in 2026 (Enterprise):** ChatGPT Team and Enterprise admins can now **pin a specific model version** to a GPT — ensuring all users get consistent responses regardless of which model ChatGPT defaults to.

    For most workplace GPTs, the default model works well. Use model pinning when consistency across time is critical (e.g., a compliance GPT where answer drift is a risk).
  </Card>
</Columns>

***

## Memory and context

<Columns cols={2}>
  <Card title="Enhanced memory across sessions">
    <img src="https://mintcdn.com/pathfindr/I3XbhzOlK6BeuXVO/images/chatgptGuideMemory.webp?fit=max&auto=format&n=I3XbhzOlK6BeuXVO&q=85&s=693f9e1a65b2151eb93ba253ed556f16" alt="ChatGPT Memory settings" title="ChatGPT Memory" style={{ width:"100%" }} width="1920" height="1080" data-path="images/chatgptGuideMemory.webp" />

    **New in 2026:** ChatGPT's enhanced Memory now works across sessions. When a user enables Memory, ChatGPT remembers key context from past conversations — including preferences, past decisions, and recurring tasks. This makes Custom GPTs even stickier for power users who return to the same GPT regularly.

    Memory is controlled per-user in **Settings → Personalisation → Memory**.
  </Card>

  <Card title="Managing what gets remembered">
    <img src="https://mintcdn.com/pathfindr/I3XbhzOlK6BeuXVO/images/chatgptGuideManageMemory.webp?fit=max&auto=format&n=I3XbhzOlK6BeuXVO&q=85&s=1e92cfba4cd782da710682fd9d3673b4" alt="ChatGPT Manage Memory panel" title="Manage Memory" style={{ width:"100%" }} width="1920" height="1080" data-path="images/chatgptGuideManageMemory.webp" />

    Users can see what ChatGPT has remembered and delete specific memories at any time. As a GPT builder, include a note in your instructions about what the GPT should prioritise remembering — for example: "If the user shares their job title, team size, or preferred format, remember this for future conversations."
  </Card>
</Columns>

<Tip>
  For enterprise users: data used in Custom GPTs and Projects is **not used to train the base ChatGPT model**. This is confirmed in the OpenAI Enterprise privacy policy. It is safe to reference for organisations with data sensitivity concerns.
</Tip>

***

## Sharing your Custom GPT

<AccordionGroup>
  <Accordion title="Share within your team workspace" icon="users">
    If you are on a ChatGPT **Team or Enterprise plan**, you can publish a GPT to your workspace so all members can find and use it. In the builder, click **Save**, then set visibility to **Anyone in \[workspace name]**.

    Your GPT will appear in the team's GPT library. Members do not need to create their own version — they just open it and use it.
  </Accordion>

  <Accordion title="Share via link" icon="link">
    You can also generate a direct link to your GPT. Click the three-dot menu on your GPT and select **Copy link**. Anyone with the link and a ChatGPT account can access it (subject to the visibility setting you chose).

    This is useful for sharing with external collaborators or embedding a GPT link in a handbook or intranet page.
  </Accordion>

  <Accordion title="Actions and external integrations" icon="plug">
    <img src="https://mintcdn.com/pathfindr/0Og7YOK8gX91P7mj/images/customGptWithZapierActions.webp?fit=max&auto=format&n=0Og7YOK8gX91P7mj&q=85&s=aafc1851c38b2aef8379dd9c6e4d36e0" alt="Custom GPT with Zapier Actions connected" title="GPT Actions" style={{ width:"100%" }} width="1920" height="628" data-path="images/customGptWithZapierActions.webp" />

    Advanced GPTs can connect to external tools via **Actions** — essentially API calls that let the GPT pull data from or push data to other systems. Common use cases: triggering a Zapier workflow, pulling CRM data, or submitting a form.

    Actions require some technical setup. For most workplace GPTs, knowledge files and instructions are sufficient.
  </Accordion>
</AccordionGroup>

***

## Quick checkpoint

You are done with this module when you can do the following:

<CardGroup cols={4}>
  <Card title="Scope your GPT" icon="circle-check">
    You can describe your GPT in one clear sentence
  </Card>

  <Card title="Write instructions" icon="circle-check">
    You have written instructions that define task, format, and scope
  </Card>

  <Card title="Connect knowledge" icon="circle-check">
    You have uploaded at least one file or connected a data source
  </Card>

  <Card title="Add starters" icon="circle-check">
    You have written at least one useful conversation starter
  </Card>
</CardGroup>

<div className="mt-8" />

<Card title="Ready to build?" icon="chess-knight-piece" href="/participant/startBuildingWithTool/chatgpt-challenge">
  Complete the challenge to build and test your first Custom GPT
</Card>
