Every scan starts with a question that sounds silly: "What do you know about [business]?" The answers are often wrong in the same ways. Wrong city. A service the business definitely offers, described as not offered. "Pricing not available" for a company with a public pricing page. A free plan that "doesn't exist" because it's only mentioned in an app screenshot.
None of these are ranking problems. They're extraction problems. The fact exists somewhere, but not in a form an AI reading the page can pull out. This guide is a checklist for fixing that.
Key takeaways
AI assistants read your site as plain text. Facts that live in images, JavaScript-only components, PDFs, or vague marketing copy are invisible. State each fact in a short, literal sentence, close to your business name, on a page whose title matches the question. Confirm it with structured data.
How an assistant reads a page
When a crawler such as OAI-SearchBot or PerplexityBot fetches your page, what it works with is essentially the HTML text. Heavily scripted content may not render. Images aren't read for text. Layout, animation and design are gone.
Try it yourself: view the page source, or use any HTML-to-text converter, and read what survives. Most businesses are surprised. The hero says "Smiles that last a lifetime" and the services are icons with one-word labels. The pricing is a table built from a JavaScript component. The address is a Google Maps iframe.
An assistant reading that sees: a dental clinic, somewhere, that does something, at some price.
The fact checklist
Below is what assistants consistently look for, split by business type, with a "bad" and "good" example for each. The good examples share a shape: one fact per sentence, the business name nearby, plain words.
Local businesses
| Fact | Where AI looks | Bad | Good |
|---|---|---|---|
| Location | Page text, contact page, schema | A map embed and "Visit us!" | "ABC Dental is at 12 Seaport Road, Kakkanad, Kochi 682030." |
| Services | Service pages, headings | Icon grid: "Cosmetic", "Ortho" | "ABC Dental offers Invisalign clear aligners, dental implants and children's dentistry." |
| Hours | Contact page, schema | Image of a hours board | "Open Monday to Saturday, 9am to 7pm. Closed Sundays." |
| Prices | Service pages, FAQ | "Contact us for a quote" | "Invisalign treatment at ABC Dental starts at ₹1,20,000." |
| Who you serve | About page, service pages | "Everyone is welcome" | "We treat children from age 3, adults and seniors." |
| Reviews | Directories, Google | Testimonial carousel on site | Claimed, active profiles on Google and Practo with recent reviews |
| Booking | Contact page | "Book now" button only | "Book online, call +91 484 000 0000, or walk in. Same-day appointments available." |
SaaS and digital products
| Fact | Where AI looks | Bad | Good |
|---|---|---|---|
| What it is, for whom | Homepage first paragraph | "The future of finance is here" | "Ledgerly is bookkeeping software for freelancers and solo consultants." |
| Pricing | Pricing page, in text | Plans in a JS toggle, prices in images | "Ledgerly costs $19 per month. A free plan supports up to 5 clients." |
| Free plan or trial | Pricing page | Mentioned only in signup flow | "Free plan available, no card required." |
| Integrations | Integrations page, docs | Logo wall | "Ledgerly integrates with Stripe, PayPal, QuickBooks and Google Drive." |
| Platforms | Homepage, footer | App store badges only | "Available on web, iOS and Android." |
| Comparisons | Dedicated pages | None | "Ledgerly vs Wave: Ledgerly adds time tracking and Stripe sync; Wave is free with paid payments." |
| Limits | Pricing page, docs | Buried in terms | "The free plan includes 5 clients and 20 invoices a month." |
Agencies and consultants
| Fact | Where AI looks | Bad | Good |
|---|---|---|---|
| Specialism | Homepage, services | "Full-service digital agency" | "Northline is a Shopify development agency for fashion brands." |
| Location and reach | About, contact | Not stated | "Based in Bangalore, working with clients across India and the UK." |
| Team size | About | Not stated | "A team of 12 designers and developers." |
| Pricing model | Services, FAQ | "Every project is different" | "Projects start at ₹4,00,000. Retainers from ₹1,50,000 a month." |
| Proof | Case studies | Logo wall | Named case studies with outcomes: "Increased checkout conversion by 18% for Sable & Co." |
Where to put each fact
A fact stated once, on the right page, beats the same fact scattered vaguely across ten pages.
- Location, hours, contact: a dedicated contact page, repeated in the footer as text, and in
LocalBusinessstructured data. - Each service or feature: its own page with the customer's name for it in the title and first sentence.
- Pricing: one page, in HTML text, with numbers. If prices genuinely vary, give ranges and starting prices.
- Comparisons: one page per major competitor you're compared with.
- Everything else people ask: a FAQ page with the question as the heading and a two-sentence answer.
Write to be quoted
Assistants lift sentences, so give them sentences worth lifting. A few rules that hold up in our scans:
- Lead with the fact. "ABC Dental offers Invisalign" beats "Looking for a straighter smile? We can help."
- Name yourself near the fact. Pronouns get lost when a paragraph is extracted. "Ledgerly integrates with Stripe" survives; "it integrates with Stripe" doesn't.
- Use the customer's words. If people search "clear aligners" and "Invisalign", say both.
- Be specific. Numbers, names, cities. "Serving Kochi, Kakkanad and Edappally" is extractable; "serving the greater metro area" isn't.
- Keep sentences short. One fact each. Extraction models handle short declaratives far better than compound sentences.
Confirm with structured data
Once the text is right, add Schema.org markup so machines can confirm it. Use LocalBusiness (or a subtype such as Dentist) for local businesses, following Google's local business structured data guide, SoftwareApplication with offers for software, Organization for agencies, and FAQPage on genuine FAQ pages.
A minimal local business example:
{
"@context": "https://schema.org",
"@type": "Dentist",
"name": "ABC Dental",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 Seaport Road, Kakkanad",
"addressLocality": "Kochi",
"postalCode": "682030",
"addressCountry": "IN"
},
"telephone": "+91 484 000 0000",
"openingHours": "Mo-Sa 09:00-19:00",
"url": "https://abcdental.example",
"priceRange": "₹₹"
}
Structured data is a confirmation, not a replacement. The text has to say it too.
The mirror test
The fastest way to find your gaps is to ask each assistant "What do you know about [your business]?" and read the answer against the tables above. Every wrong or missing fact points at a page that needs a sentence. TangentFlow runs this as the first step of every scan, flags each incorrect fact, and drafts the sentence and the page it belongs on.
Then re-ask in two to four weeks. Facts stated plainly on crawlable pages tend to be picked up on the next fetch. If one isn't, check whether the page is blocked or unreachable for bots, which is covered in our crawler guide.
FAQ
Should I put every fact on the homepage? No. Put the two or three most important ones there (what you are, for whom, where) and give the rest their own pages. Assistants retrieve specific pages for specific questions.
Does it matter if my prices change? Yes, keep them current. A wrong price quoted by an assistant is worse than no price. If you can't commit to a number, publish a starting price or range and date it.
What about PDFs? Some crawlers read PDFs, but treat them as secondary. Anything important in a brochure PDF should also be in HTML text.
Is a FAQ page really that useful? It's one of the most-cited page types we see for specific-need questions, because the heading matches the question and the answer is short. Write real questions, not marketing.
Sources
- Schema.org, LocalBusiness, SoftwareApplication, Organization, FAQPage
- Google Search Central, Local business structured data
- Google Search Central, AI features and your website
- OpenAI, Overview of OpenAI crawlers
- TangentFlow, Which AI crawlers to allow and which to block
- TangentFlow, Where AI assistants get their answers



