OA9 OppAlerts from Ben Wills
How AI Search Works: From Prompt to Response A guide for SEOs, AI search marketers, and marketing teams
Work with me
Work in progress Work in progress. Released about a week early, on purpose.

ChatGPT disclosed things in this session that I did not expect it to disclose, and there is no guarantee it stays available. I would rather people had time to use it than had a tidier version of it later.

So: every word of every ChatGPT response here is verbatim, and that part is checked automatically on every build. What is not finished is the presentation. The color coding on the code blocks is incomplete and some of it is imprecise, and there are notes to myself still sitting in the page.

Parts 1 and 2 are close to empty and are getting a lot of detail over the next week or so, along with a cleanup pass on everything else. Worth checking back.

Read the announcement →

Fan-out query construction

How ChatGPT Builds Fan-Out Queries From a Prompt

One sentence becomes nine families of search query, and each family is a page that has to exist somewhere.

Context

How a prompt becomes a set of search queries.

One sentence from a traveler turns into nine families of query: candidate discovery, editorial comparisons, official verification, price validation, noise and room quality, wifi, gym, transport, and a deliberate search for anything that contradicts the rest.

Read the query families as a list of the pages that would need to exist for a hotel to win this. That is the whole exercise for a marketer.

The short version

The mechanics of turning a sentence into searches, worked through with a hotel request.

It starts by noting what is publicly documented: ChatGPT Search may rewrite one request into several targeted queries, review the results, then issue narrower follow-ups based on what it found. The exact query-planning algorithm is not exposed, so what follows is a practical account rather than a description of the internals.

Constraints versus preferences

The first move is turning the request into a specification, and the useful part is the split. A budget ceiling, a location requirement and a date are constraints that disqualify. A decent gym is a preference that scores.

It also lists what the request did not say, which becomes the reason certain facts stay unresolved at the end.

Nine families of query

Each answers a different question: broad candidate discovery, independent editorial comparisons, official verification on the brand's own site, price and fee validation, quietness and room quality, wifi, gym quality, transport, and a deliberate hunt for anything contradicting the rest.

Read that list as a content brief. It is, more or less, the set of pages that would need to exist somewhere on the web for a given hotel to win this question. Note how many of them are not on the hotel's own site.

Initial versus adaptive

The first queries are category-level and name nobody. Once specific properties surface, the second round names them.

Those entity-level queries are where a brand either has evidence behind it or does not.

How results become a recommendation

Candidates get normalized, because the same hotel appears under several names across booking sites. Sources get classified by role, with official pages trusted for facts about the property and reviews trusted for patterns rather than single incidents. Claims get extracted rather than sources collected, so a page is not "good" but supports a specific statement.

Candidates failing a hard constraint get removed outright. The rest get scored, penalized for weak or stale evidence, compared, and then the decisive facts get revalidated before anything is said.

It also lists what does not happen, which is as useful as the rest.

Our prompt could be something like

Explain how fan-out queries are derived. How do you come up with one?

If I say I want to find the best hotel in a particular city and describe roughly what I am looking for, how do you turn my prompt into an actual fan-out query?

Then, when you get those results back, what is the process for deciding what to recommend?

ChatGPT's response

What is actually documented

OpenAI publicly states that ChatGPT Search may:

  1. Rewrite a user’s request into one or more targeted search queries.
  2. Review the initial results.
  3. Issue additional, narrower queries based on entities or facts discovered.
  4. Use relevant conversation context, approximate location, and—when enabled—memory to improve the rewritten query. (OpenAI Help Center)

The exact proprietary query-planning algorithm, ranking weights, and internal reasoning trace are not exposed to me. What follows is the practical, high-level process I use—not a verbatim internal algorithm.

1. Convert the request into a decision specification

Suppose the user says:

Find me the best hotel in Chicago. I’m traveling for a conference at McCormick Place, want to spend under $300 per night, need a quiet room and reliable Wi-Fi, and would prefer a decent gym.

I first turn that into structured requirements.

unclassified, needs review
{
	"decision": "select_hotel",
	"destination": "Chicago, Illinois",
	"trip_purpose": "conference",
	"target_location": "McCormick Place",
	"budget": {
		"maximum_nightly_rate_usd": 300
	},
	"hard_constraints": [
		"available for travel dates",
		"total effective nightly cost within budget",
		"reasonable access to McCormick Place"
	],
	"preferences": [
		"quiet rooms",
		"reliable Wi-Fi",
		"good gym"
	],
	"unknowns": [
		"travel dates",
		"number of guests",
		"parking requirement",
		"refundable rate requirement"
	]
}

That JSON is an illustration of the planning structure, not an internal payload.

Hard constraints versus preferences

This distinction matters.

Hard constraints

A hotel is eliminated if it fails:

  • Available dates
  • Maximum total price
  • Required accessibility
  • Required room occupancy
  • Geographic boundary
  • Essential amenity

Preferences

These affect ranking but normally do not eliminate the hotel:

  • Better gym
  • Quieter rooms
  • More attractive design
  • Better breakfast
  • More luxurious atmosphere

2. Identify the evidence needed

The prompt does not merely require a list of hotels. It requires several different evidence types.

QuestionBest source type
Which hotels are plausible candidates?Maps, travel platforms, hotel guides, local tourism sources
What is the current price?Hotel booking page or live booking inventory
What fees apply?Official hotel page and booking terms
How far is it from the venue?Map or location data
Does it have a gym and Wi-Fi?Official amenities page
Are rooms actually quiet?Recent guest reviews and independent reviews
Is service reliable?Recent review consensus
Is the neighborhood appropriate?Local sources, maps, transportation information
Are there recurring problems?Negative reviews, forums, recent complaints
Is the hotel still operating under the same brand?Current official page and recent sources

This evidence matrix drives the fan-out.

3. Generate query families

A good fan-out is not just ten variations of “best hotel Chicago.”

Each query should answer a distinct question.

A. Broad candidate discovery

unclassified, needs review
best hotels near McCormick Place Chicago
quiet business hotels Chicago near McCormick Place
Chicago convention hotels under $300
best hotels South Loop Chicago business travelers

Purpose: establish the candidate universe.

B. Independent editorial comparisons

unclassified, needs review
best hotels near McCormick Place independent review
Chicago South Loop hotel reviews business travelers
best Chicago hotels for conferences quiet rooms

Purpose: find comparative assessments rather than only vendor claims.

C. Official hotel verification

Once candidates are discovered:

unclassified, needs review
site:hyatt.com Chicago McCormick Place hotel rooms amenities gym Wi-Fi
site:marriott.com Chicago South Loop hotel parking destination fee
site:hilton.com Chicago McCormick Place cancellation policy

Purpose: verify factual claims.

D. Price and fee validation

unclassified, needs review
"[hotel name]" Chicago room rates [dates]
"[hotel name]" destination fee parking fee
"[hotel name]" refundable rate [dates]
"[hotel name]" total price taxes fees

Purpose: distinguish headline rate from actual cost.

E. Quietness and room quality

unclassified, needs review
"[hotel name]" quiet room reviews
"[hotel name]" noise complaints
"[hotel name]" street noise elevator noise reviews
site:tripadvisor.com "[hotel name]" quiet
site:reddit.com "[hotel name]" noise

Purpose: investigate a subjective criterion that official pages cannot establish reliably.

F. Wi-Fi and work suitability

unclassified, needs review
"[hotel name]" Wi-Fi reviews business traveler
"[hotel name]" internet speed complaints
"[hotel name]" workspace desk room review

G. Gym quality

unclassified, needs review
"[hotel name]" fitness center photos
"[hotel name]" gym equipment review
"[hotel name]" fitness center hours

H. Transportation and location

unclassified, needs review
"[hotel name]" to McCormick Place walking time
"[hotel name]" McCormick Place shuttle
"[hotel name]" CTA access

I. Risk and contradiction search

unclassified, needs review
"[hotel name]" complaints
"[hotel name]" bed bugs
"[hotel name]" renovation construction 2026
"[hotel name]" recent ownership change
"[hotel name]" closed pool gym unavailable

Purpose: deliberately search for reasons not to recommend a leading candidate.

4. Initial fan-out versus adaptive fan-out

The first queries are category-level:

unclassified, needs review
best quiet business hotels near McCormick Place

Suppose the initial results repeatedly identify:

  • Hyatt Regency McCormick Place
  • Marriott Marquis Chicago
  • Hilton Garden Inn Chicago McCormick Place
  • Home2 Suites Chicago McCormick Place

The next round becomes entity-specific:

unclassified, needs review
"Hyatt Regency McCormick Place" noise reviews
"Marriott Marquis Chicago" destination fee
"Hilton Garden Inn McCormick Place" gym
"Home2 Suites Chicago McCormick Place" Wi-Fi reviews

If one result mentions construction, that creates another branch:

unclassified, needs review
"Marriott Marquis Chicago" construction renovation 2026

This adaptive refinement is consistent with OpenAI’s public description: Search may review initial results and then issue more specific queries based on what it finds. (OpenAI Help Center)

5. Normalize the candidates

Search results are not recommendations yet.

Different URLs may refer to:

  • The same hotel
  • Separate branches with similar names
  • An old brand name
  • A booking page
  • A review page
  • A restaurant inside the hotel
  • A hotel package rather than a room

I therefore normalize results into hotel entities.

unclassified, needs review
{
	"candidate_id": "hotel_001",
	"name": "Example Hotel Chicago",
	"address": "123 Example Street, Chicago, IL",
	"brand": "Example Hotels",
	"official_url": "https://example.com/chicago",
	"source_urls": [
		"https://example.com/chicago",
		"https://reviews.example/example-hotel",
		"https://booking.example/example-hotel"
	],
	"possible_duplicates": [],
	"identity_confidence": "high"
}

Again, this is a conceptual research record.

6. Classify sources by role

Not all sources answer the same questions.

Official source

Strong for:

  • Address
  • Amenities
  • Policies
  • Room types
  • Published fees
  • Brand claims

Weak for:

  • Quietness
  • Service consistency
  • Whether the gym is genuinely good
  • Real-world Wi-Fi reliability

Booking platform

Strong for:

  • Current availability
  • Displayed price
  • Room inventory
  • Large numbers of guest reviews

Potential weaknesses:

  • Affiliate incentives
  • Incomplete fee presentation
  • Different cancellation terms
  • Reviews aggregated across room types or years

Independent editorial review

Strong for:

  • Comparative context
  • First-hand inspection
  • Descriptions of rooms and facilities

Potential weaknesses:

  • Affiliate relationships
  • One-time visits
  • Stale reviews
  • Rankings influenced by commercial partnerships

Community and user reviews

Strong for:

  • Recurring operational failures
  • Noise patterns
  • Billing problems
  • Service inconsistencies
  • Construction or maintenance issues

Weak for:

  • Estimating actual prevalence
  • Controlled comparisons
  • Verifying technical facts

Map and transportation sources

Strong for:

  • Location
  • Distance
  • Travel time
  • Neighborhood context

Travel times still vary by time of day and mode.

7. Extract claims, not merely sources

Each candidate becomes a set of claims with provenance.

unclassified, needs review
{
	"candidate": "Example Hotel Chicago",
	"claims": [
		{
			"claim": "The hotel has a 24-hour fitness center.",
			"value": true,
			"source_type": "official",
			"source_url": "https://example.com/amenities",
			"verified_at": "2026-07-26",
			"confidence": "high"
		},
		{
			"claim": "Rooms facing the train line are frequently noisy.",
			"value": true,
			"source_type": "review_consensus",
			"source_count": 14,
			"observation_period": "2025-2026",
			"confidence": "moderate"
		}
	]
}

A source is not globally “good” or “bad.” A source may be excellent for one claim and useless for another.

8. Eliminate candidates that fail hard constraints

Before assigning scores:

unclassified, needs review
Candidate A: $372 total per night → eliminate
Candidate B: unavailable on requested dates → eliminate
Candidate C: 45-minute transit trip → eliminate
Candidate D: meets all hard requirements → retain

This is important because a highly rated hotel that exceeds the user’s budget is not the best recommendation for that user.

9. Score the remaining candidates

There is no single universal hidden weighting system that I can expose.

A practical hotel-scoring model might be:

CriterionExample weight
Location and conference access25%
Total price and value20%
Quietness and room quality20%
Service and recent guest consensus15%
Wi-Fi and work suitability10%
Gym quality5%
Cancellation flexibility5%

These weights are an illustrative recommendation model, not an OpenAI internal fixed formula.

Example:

unclassified, needs review
{
	"candidate": "Example Hotel Chicago",
	"scores": {
		"location": 9.5,
		"value": 8.0,
		"quietness": 7.0,
		"service": 8.5,
		"work_suitability": 9.0,
		"gym": 6.5,
		"flexibility": 8.0
	},
	"weighted_score": 8.25
}

10. Apply evidence-quality and uncertainty penalties

Two hotels might both score 8.5, but one score could be based on much stronger evidence.

I may downgrade confidence when:

  • Prices were not checked for exact dates
  • Reviews are old
  • Only vendor claims support an amenity
  • The hotel recently changed brands
  • Review sources conflict
  • The page could not be opened
  • Fees are unclear
  • Construction may be underway
  • There are very few reviews

Conceptually:

conceptual
Base suitability score:       8.7
Stale-price penalty:          -0.3
Conflicting-noise evidence:   -0.2
Final adjusted score:          8.2
Confidence:                    moderate

The most important distinction is:

  • Suitability: How well the hotel appears to fit.
  • Confidence: How trustworthy and complete the evidence is.

11. Compare candidates explicitly

The final recommendation should not simply repeat the top search result.

It should explain the trade-off:

HotelBest forMain drawback
Hotel AShortest conference walkMore expensive
Hotel BBest quiet/value balanceSmaller gym
Hotel CBest gym and amenitiesLonger transit
Hotel DLowest priceMixed service reviews

Then recommend one:

Hotel B is the best overall fit because it stays within the budget, has strong recent quiet-room reviews, and remains close enough to the conference. Hotel A is preferable only if minimizing walking time is worth the higher cost.

12. Revalidate the decisive facts

Immediately before making a commercial recommendation, the most important facts should be checked again:

  • Exact dates
  • Exact total price
  • Taxes and mandatory fees
  • Availability
  • Cancellation terms
  • Essential amenities
  • Current operating or renovation status

Shopping research is similarly designed around clarifying budget and preferences, discovering candidates from merchant and public sources, and comparing price, features, reviews, and other attributes. (OpenAI Help Center)

What causes a new query branch

A follow-up query is usually triggered by one of these:

  • Missing evidence: no reliable price found
  • Ambiguity: two hotels have similar names
  • Contradiction: official page says free Wi-Fi; recent reviews mention charges
  • Risk signal: construction or repeated noise complaints
  • New entity: a previously unknown hotel emerges
  • New constraint: parking turns out to cost $75 nightly
  • Weak source quality: only affiliate listicles support a claim
  • Staleness: the useful review is three years old
  • Geographic error: a result is in the wrong city
  • Coverage saturation: repeated searches return the same candidates

What does not happen

The process is not:

not exposed or proposed
Search “best hotel”
→ take result number one
→ recommend it

It is closer to:

not exposed or proposed
Interpret requirements
→ define evidence questions
→ discover candidates
→ verify official facts
→ investigate subjective qualities
→ search for failures and contradictions
→ normalize and deduplicate
→ eliminate hard failures
→ score remaining options
→ adjust for evidence quality
→ explain the trade-off
→ revalidate volatile facts

How to prompt this well

A strong recommendation prompt should specify:

  • Exact location or acceptable area
  • Dates
  • Budget including or excluding taxes
  • Number of guests and rooms
  • Hard requirements
  • Preferences in priority order
  • Disqualifiers
  • Whether you value convenience, quality, or price most
  • Whether refundable booking is required
  • Whether parking, pets, accessibility, or public transportation matters

For example:

Find the best hotel for a conference at McCormick Place from October 12–15, 2026. One adult, one room, maximum $300 nightly including mandatory fees. It must have reliable Wi-Fi and be within a 20-minute walk or transit ride. Quietness matters more than luxury; a good gym is preferred. Exclude hotels with recurring construction, cleanliness, or billing complaints. Verify prices on official or booking pages and distinguish current facts from review-based judgments.

That prompt directly supplies the information needed to generate useful fan-out queries and a defensible recommendation.