To stop testing ChatGPT prompts by hand, replace the daily copy-paste with a fixed, versioned set of prompts, each with pass criteria such as brand named, URL cited or position. Run the set several times on a schedule through the API or a monitoring tool, and review only flagged changes, because one logged-in run is a single, personalised sample.
Why a daily manual check in ChatGPT gives you an unreliable reading
The manual routine is simple. You open ChatGPT, paste a prompt, read the answer, note whether your brand appears and where, then paste the next prompt. With a couple of dozen prompts, that is a daily block of copy-paste that yields the same spreadsheet row each time. A task that never varies is a task a script can do.
The larger problem is what the routine measures. A logged-in account can carry saved memories, past chat history and custom instructions. We tried to verify OpenAI's help-center wording on memory and Temporary Chat on 5 November 2026, but the pages were not reachable, so we do not quote what OpenAI documents. What follows is our inference: if your account has discussed your brand for months, or your instructions name your sector, the answer may lean towards what the account already knows. A buyer with a fresh account does not get that lean.
For checks that stay manual, open a Temporary Chat or turn off memory, delete saved memories and clear custom instructions, then confirm in OpenAI's current help center what each setting covers. That is the practical way to get rid of old prompts and history before testing.
The second problem is non-determinism. ChatGPT generates each answer by sampling, so the same prompt can name different brands, in a different order, from one run to the next. One run per day is a sample of one. If your brand appears on Monday and not on Tuesday, the manual log cannot say whether visibility changed or the sample did. A reading becomes useful only when each prompt runs several times and you count how often the brand appears.
Turn the prompts you check by hand into a fixed test set
Treat your prompts as a test set: a fixed group of prompts, each with an expected outcome a machine can score.
Write each prompt in full, with the context a buyer would give. "CRM software" is a keyword. "We are a small consultancy moving off spreadsheets; which CRM should we look at, and why?" is a prompt. The explicit version is closer to a real buyer question and easier to score consistently, because the answer has a clear scope.
Then define pass criteria per prompt: brand mentioned or not, position in the list, own URL cited, competitors named. Most of these need only an exact string match on a brand name or a domain. An LLM-as-judge, where a second model grades the answer against a written rubric, is useful for qualitative checks: whether the product description is accurate, the tone favourable, a stated price current. String checks are cheap and predictable; rubric checks cost a model call and need spot checks of their own.
Eval frameworks formalise this. The promptfoo documentation, verified on 5 November 2026, says: "To use assertions in your test cases, add an assert property to the test case with an array of assertion objects." Each prompt becomes a test case; each criterion becomes an assertion.
A hypothetical example for a fictional project management brand, Acme:
- "Which project management tool suits a remote design agency?" Pass: Acme named and acme.example cited. Check: string match.
- "Compare Acme with its main rivals for client approvals." Pass: features described accurately, no retired plan names. Check: LLM-as-judge.
- "What is a cheaper alternative to the market leader for small teams?" Pass: Acme listed, position recorded, competitors logged. Check: string match plus position.
Scoring does not remove the human. An answer may name your brand to warn against it, or confuse you with a namesake. Automation decides which answers a human reads, not whether a human reads any.
Four ways to stop copy-pasting prompts, compared
Each method removes a different part of the manual workload. The first row is the routine you are replacing, kept as a baseline.
| Method | Setup effort | Runs per prompt | Fidelity to the consumer app | Cost driver | What still needs a human |
|---|---|---|---|---|---|
| Manual in the ChatGPT app | None | Usually one | Personalised to your account | Your time | Everything: pasting, reading, logging |
| Manual in Temporary Chat | None | Usually one | Less account history, by our inference | Your time | Everything except clearing history |
| Scheduled API script | Moderate: script, key, scheduler | As many as you set | Closer to the app with web search on, still not identical | Tokens, plus a per-call web search fee | Reviewing flags, maintaining the script |
| Open-source eval framework | Moderate: config file and test cases | As many as you set | Same as the API it calls | Tokens for the tested model and any judge | Writing rubrics, reviewing failures |
| AI visibility monitoring tool | Low: enter prompts and brands | Set by the tool | Depends on how the tool queries each engine | Subscription | Interpreting trends and odd answers |
The free, no-code end of the range is a Temporary Chat plus a spreadsheet log: it costs only time. Open-source eval frameworks cost nothing to install; you pay for the model calls they make. To run the same routine across engines, see how to automate AI visibility checks across ChatGPT, Perplexity and Gemini.
Why the API answer is not the ChatGPT app answer
In our reading of OpenAI's API documentation, a call that does not enable the web search tool answers from the model alone, while the ChatGPT app can search the web before answering. A brand found through search can be missing from a plain API answer, and the reverse. OpenAI's web search guide, verified on 5 November 2026, states: "By default, the model's response will include inline citations for URLs found in the web search results." That makes the own-URL criterion checkable in the API, but only with search on. Even then, the API does not carry a logged-in user's memory or settings: treat it as a controlled reading, not a copy of what each user sees.
Search adds cost. OpenAI's pricing page, verified on the same date, lists web search for all models at $10.00 per 1k calls, plus search content tokens billed at model rates.
Avoid scripting the ChatGPT web interface with browser automation. We could not reach OpenAI's Terms of Use on 5 November 2026 to verify the relevant clause, so we do not quote it. Read the current terms before considering it; we do not recommend it when the API offers programmatic access.
How to schedule, repeat and version the runs
A scheduled run replaces the repetitive part of the manual routine: pasting, reading for a name, logging. Run daily during a launch or a crisis, weekly for steady tracking. For every answer, log the date, the model name, the prompt version, the raw answer and the score. When a score changes, a human reads the stored answer instead of re-running the prompt by hand.
Run each prompt several times, not once
Because answers vary between runs, as described in the first section, each prompt should run several times per scheduled pass. Report a mention rate, the share of runs that name the brand, rather than a yes or no.
Setting a seed does not make runs identical either. OpenAI's cookbook page on the seed parameter, verified on 5 November 2026, says: "Determinism is not guaranteed, and you should refer to the system_fingerprint response parameter to monitor changes in the backend." Log that fingerprint with each run when the API returns it, so a backend change shows up in your log.
Version the prompt set and log the model
Keep the prompt set in a file in git, or in a locked sheet with a version column, and give every reworded prompt a new version. Without that, a wording change reads like a visibility change.
Models change too. OpenAI's deprecations page, verified on 5 November 2026, records: "On October 14, 2026, we notified developers using certain GPT-4 series models of their deprecation and removal from the API on January 14, 2027." A script pinned to one of those models will have to move, and its answers to the same prompts may shift. The model name in your log is what separates that shift from a change in your visibility.
Re-run the full set when the model or the wording changes
Treat the set as a regression test. When the model changes or a prompt is reworded, run the full set and compare it with the previous baseline before reading any trend. To replace a wording, run the old and new versions side by side on the same scheduled runs, compare their mention rates, then retire the old one with a note in the version history. The schedule flags changes; a human still reads the stored answers behind each flag.
What still needs a human once the checks run themselves
Scores flag answers; a human interprets them. A script can confirm that your brand name appears. It cannot reliably judge whether the mention is accurate, favourable and current, or whether a competitor is credited with claims you would dispute. Review time replaces checking time, but it does not drop to zero.
Before concluding that the brand vanished, diagnose odd answers:
- Refusals: check the prompt wording. A prompt that reads like a request for personal data or a sensitive judgement can be refused for reasons unrelated to your brand.
- Truncated answers: check the output length limit in the request and the stored raw answer.
- Generic answers that name no brand: check whether search ran. In the API, an answer without citations may mean the web search tool was not enabled.
- Then re-run the prompt several times before reading a drop as real.
When ChatGPT is not giving you answers, check the prompt and the configuration before you suspect the brand.
In our assessment, some checks are not worth automating: one-off exploratory questions, prompts you are still drafting, and questions asked once for a pitch. Automation pays off for prompts that will be asked the same way many times; until the wording is stable, a manual check in Temporary Chat is enough.
Where to start this week: retire the daily check in five steps
- Export the prompts you check by hand today, from notes, sheets or chat history, into one list.
- Rewrite them into a versioned set with pass criteria for each prompt, following the method for writing tracked prompts that mirror real buyer questions.
- Run a baseline of several runs per prompt, logged with date, model name, prompt version and raw answer. To judge how much data you need, see how many prompts and runs make a visibility change real.
- Schedule the runs with the method you chose from the comparison table, and keep the model name and prompt version on every run so later comparisons are valid. For any check that stays manual, clear memory or switch to Temporary Chat first, so it is not personalised.
- Once a week, review only the flagged changes: read the stored answers, then decide whether the prompt, the model or your visibility moved.
To see where your brand stands before you build your own test set, run a free Namedrop scan on your main prompts.
Sources
- Promptfoo, Assertions and Metrics - LLM Output Validation, consulted 2026-11-05
- OpenAI, Web search | OpenAI API, consulted 2026-11-05
- OpenAI, Pricing | OpenAI API, consulted 2026-11-05
- OpenAI, How to make your completions outputs consistent with the new seed parameter, consulted 2026-11-05
- OpenAI, Deprecations | OpenAI API, consulted 2026-11-05