Guide

RAG chatbot vs custom GPT: when to build

An off-the-shelf assistant such as a custom GPT is usually enough when a small group needs help with a modest, low-risk set of documents. Build your own RAG chatbot when you need per-user permissions, control over retrieval, measurable quality, or the assistant embedded in your own product. Whichever you choose, try the cheap option on real questions first.

What is being compared

A custom GPT is a configured version of ChatGPT: you give it instructions and files, optionally connect it to outside services, and people use it inside ChatGPT. Similar configured assistants exist in other products, including Claude Projects, Gemini Gems and Microsoft Copilot Studio. They differ in detail, but they share one trait: the vendor owns the retrieval, the interface and most of the behaviour.

A custom RAG chatbot is software you own. You decide how documents are parsed and split, how search works, which model answers, what the interface looks like and what gets logged. If the pattern itself is unfamiliar, start with what RAG is and when to use it.

So the real choice is not about which technology is smarter. Both may rest on similar models and on similar retrieval ideas. It is a choice about who controls each layer, and how much that control is worth to you.

Custom GPTs specifically are being retired

If you are considering a custom GPT by name, check its status first. At the time of writing, in November 2026, OpenAI's help centre says custom GPTs are scheduled to retire on 11 December 2026, with a later date for some enterprise workspaces. It also points creators towards plugins as the migration path. Custom actions do not carry over through the migration, so those connections must be recreated.

Details of this kind change, so read OpenAI's retirement FAQ before you commit. The episode also makes a wider point that belongs in your decision: when a vendor owns the product, the vendor sets its lifespan. That is not a reason to avoid hosted assistants, but it is a reason to keep your source documents and instructions somewhere you control, so that moving is an inconvenience rather than a rebuild. For the rest of this guide, "off-the-shelf assistant" means any product in this category.

When an off-the-shelf assistant is enough

A hosted assistant is often the right answer, and building should not be the default. It tends to be enough when most of these are true:

  • The audience is small and already has accounts. A team that already pays for the product can use the assistant without any new deployment.
  • The content is modest and fairly stable. A handbook, a style guide or a set of process documents fits well. Products have limits on files and sizes, so check them against your content.
  • Everyone may see everything. If all users are allowed to read all the documents, you do not need retrieval that varies by person.
  • A wrong answer is cheap. If people use the output as a starting point and check it themselves, occasional errors are tolerable.
  • You are still testing the idea. A configured assistant can show within days whether people want this at all, before anyone writes code.

That last point is the most undervalued. An internal trial reveals which questions people really ask, and that list is valuable however you proceed, because it becomes the first draft of your test set.

When building your own is justified

Each of the following is a concrete requirement that hosted assistants may handle poorly or not at all. Check the current product before assuming either way, as enterprise tiers and connectors do cover some of this ground.

Permissions differ by user

If a sales representative must not see HR documents, or one customer must never see another's data, the restriction has to be enforced during retrieval, outside the model. A prompt asking the model to keep a secret is not access control. In your own system, each search carries the user's identity and filters results before the model sees them. The guide on LLM guardrails and prompt injection defence explains why this boundary matters.

Retrieval quality decides the outcome

Hosted products generally hide their parsing, chunking and ranking. That is fine until an answer is wrong and you cannot tell why. Dense tables, part numbers, legal clauses and near-duplicate document versions are common sources of trouble. With your own pipeline you can inspect what was retrieved and change it, for example by adding hybrid search and reranking.

You need to measure quality

If someone will ask "how accurate is it, and did last week's change make it worse?", you need a repeatable test run and access to each step. That is straightforward with your own code, as described in how to evaluate a RAG system, and often awkward from outside a hosted product.

The assistant lives in your product

Customers on your website should not need an account with an AI vendor. Your own branding, login, conversation history and handover to a human agent all point towards building, or at least towards a vendor API rather than a consumer assistant.

Answers must trigger actions under your rules

Looking up an order or raising a ticket involves your systems, your audit requirements and possibly an approval step. Hosted connectors can do some of this, but complex rules are easier to enforce in code you control.

Data handling rules are strict

Data residency, retention periods, contractual terms and the option of a self-hosted model can rule products in or out. These differ by plan and change over time, so read the vendor's current terms and involve whoever is responsible for compliance. Do not rely on a general impression, or on a blog post, including this one.

Side-by-side comparison

These are general tendencies rather than product specifications.

ConcernOff-the-shelf assistantCustom RAG chatbot
Time to first versionHours to daysLonger, depending on scope
Upfront engineeringLittle or noneSignificant
Ongoing workMostly updating contentRunning a service, plus updating content
Cost patternUsually per seatBuild cost, hosting and usage
Retrieval controlLimited and often opaqueComplete
Per-user permissionsDepends on product and planDesigned to your rules
Testing and tracingLimited visibilityFull access to each step
InterfaceThe vendor'sYours
Model choiceUsually limited to the vendor'sYours, including self-hosted
Main dependency riskProduct changes or retirementYour own maintenance capacity

The cost row deserves care. Seat pricing is easy to predict but scales with people, while usage pricing scales with questions and with how much context you send. Neither is automatically cheaper, so estimate both from your own expected usage and the vendors' current price lists. The guide on controlling LLM cost and latency covers the usage side.

A test that settles most cases

You can often make this decision with evidence and very little spending. Keep the trial short and write down the outcome.

  1. Collect real questions. Gather a few dozen from support tickets, chat logs or colleagues, including several that your documents cannot answer.
  2. Load a representative sample of documents into a hosted assistant, including your awkward ones: tables, old versions and long PDFs.
  3. Record each result. Was the answer correct? Did it cite the right source? Did it decline when it should have?
  4. Sort the failures by cause. Missing content needs better documents, and no amount of engineering will fix that. Failures in parsing or search suggest that a custom pipeline might help.
  5. Check the hard requirements. Separately from quality, list the needs in this guide that apply to you and confirm whether the product meets each one.

A simple script is enough to score the same questions against any candidate, so that the comparison stays fair if you later build:

# Illustrative only. ask_candidate is your own wrapper around each option,
# and a person fills in the "correct" column afterwards.
import csv

def run_trial(questions, ask_candidate, path):
    with open(path, "w", newline="", encoding="utf-8") as handle:
        writer = csv.writer(handle)
        writer.writerow(["question", "answer", "correct"])
        for question in questions:
            writer.writerow([question, ask_candidate(question), ""])

If the assistant answers your questions acceptably and meets your hard requirements, stop there. You have saved a build. If it fails, you now hold a list of specific reasons and a test set, which makes for a far better starting point than a general feeling that you need something custom.

Mistakes to avoid on either path

  • Building because it feels more serious. A custom system nobody maintains will degrade. Someone has to own the index, the evaluations and the model upgrades.
  • Treating uploaded instructions as secret. Assume that a determined user can extract instructions and knowledge files from an assistant, so do not place anything confidential in one that is widely shared.
  • Letting the only copy live in the tool. Keep documents and prompts under your own version control or storage, whichever route you pick.
  • Skipping the unanswerable questions. An assistant that invents answers is often worse than one that says it does not know, and only testing will show which you have.

Moving from one to the other

Starting with an assistant does not trap you. Your questions, your cleaned documents and your instructions all transfer to a custom build, so the trial is rarely wasted. The first version of a custom system can also be small; building a RAG chatbot in Python shows the basic shape. The two routes can coexist, too, with a hosted assistant for internal convenience and a custom chatbot for customers.

If your requirements point towards building, the RAG development page describes what I can help with.

Frequently asked questions

Is a custom GPT a RAG system?

In a loose sense, when it answers from uploaded knowledge files, because it retrieves content and passes it to a model. The difference is that the vendor controls how documents are parsed, searched and ranked, so you cannot inspect or tune these steps as you could in your own pipeline.

Are custom GPTs still available?

At the time of writing, OpenAI's help centre says they are scheduled to retire on 11 December 2026, with a later date for some enterprise workspaces, and points creators towards plugins. Check OpenAI's current documentation, because these details may change.

Is building a RAG chatbot always more accurate?

No. A custom build gives you the means to improve accuracy, but a poorly built pipeline can do worse than a hosted product. The only reliable comparison is to run both on the same realistic questions and score the results.

Can I start with an off-the-shelf assistant and build later?

Yes, and this is often sensible. The real questions you collect, the documents you clean and the instructions you refine all carry over. Keep your own copies of them outside the tool so that moving remains simple.