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.
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.
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 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.
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?
What is actually documented
OpenAI publicly states that ChatGPT Search may:
- Rewrite a user’s request into one or more targeted search queries.
- Review the initial results.
- Issue additional, narrower queries based on entities or facts discovered.
- 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.
{
"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.
| Question | Best 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
best hotels near McCormick Place Chicago
quiet business hotels Chicago near McCormick Place
Chicago convention hotels under $300
best hotels South Loop Chicago business travelersPurpose: establish the candidate universe.
B. Independent editorial comparisons
best hotels near McCormick Place independent review
Chicago South Loop hotel reviews business travelers
best Chicago hotels for conferences quiet roomsPurpose: find comparative assessments rather than only vendor claims.
C. Official hotel verification
Once candidates are discovered:
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 policyPurpose: verify factual claims.
D. Price and fee validation
"[hotel name]" Chicago room rates [dates]
"[hotel name]" destination fee parking fee
"[hotel name]" refundable rate [dates]
"[hotel name]" total price taxes feesPurpose: distinguish headline rate from actual cost.
E. Quietness and room quality
"[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]" noisePurpose: investigate a subjective criterion that official pages cannot establish reliably.
F. Wi-Fi and work suitability
"[hotel name]" Wi-Fi reviews business traveler
"[hotel name]" internet speed complaints
"[hotel name]" workspace desk room reviewG. Gym quality
"[hotel name]" fitness center photos
"[hotel name]" gym equipment review
"[hotel name]" fitness center hoursH. Transportation and location
"[hotel name]" to McCormick Place walking time
"[hotel name]" McCormick Place shuttle
"[hotel name]" CTA accessI. Risk and contradiction search
"[hotel name]" complaints
"[hotel name]" bed bugs
"[hotel name]" renovation construction 2026
"[hotel name]" recent ownership change
"[hotel name]" closed pool gym unavailablePurpose: deliberately search for reasons not to recommend a leading candidate.
4. Initial fan-out versus adaptive fan-out
The first queries are category-level:
best quiet business hotels near McCormick PlaceSuppose 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:
"Hyatt Regency McCormick Place" noise reviews
"Marriott Marquis Chicago" destination fee
"Hilton Garden Inn McCormick Place" gym
"Home2 Suites Chicago McCormick Place" Wi-Fi reviewsIf one result mentions construction, that creates another branch:
"Marriott Marquis Chicago" construction renovation 2026This 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.
{
"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.
{
"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:
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 → retainThis 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:
| Criterion | Example weight |
|---|---|
| Location and conference access | 25% |
| Total price and value | 20% |
| Quietness and room quality | 20% |
| Service and recent guest consensus | 15% |
| Wi-Fi and work suitability | 10% |
| Gym quality | 5% |
| Cancellation flexibility | 5% |
These weights are an illustrative recommendation model, not an OpenAI internal fixed formula.
Example:
{
"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:
Base suitability score: 8.7
Stale-price penalty: -0.3
Conflicting-noise evidence: -0.2
Final adjusted score: 8.2
Confidence: moderateThe 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:
| Hotel | Best for | Main drawback |
|---|---|---|
| Hotel A | Shortest conference walk | More expensive |
| Hotel B | Best quiet/value balance | Smaller gym |
| Hotel C | Best gym and amenities | Longer transit |
| Hotel D | Lowest price | Mixed 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:
Search “best hotel”
→ take result number one
→ recommend itIt is closer to:
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 factsHow 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.