SEO, GEO and AEO optimization
Some clients no longer search in Google - they ask ChatGPT, and your site is not there. I fix the technical base and the content so that the site appears in both places.
What GEO optimization is and why the term is confusing
Leads become rarer even though the site has not changed and the Google rankings are where they were. In a results list a person sees ten links and chooses themselves; in a generative answer the model chooses for them and mentions three to eight sources. If your site is not there, you are not in second place - you do not appear in that answer at all, and you never find out, because there is no click to count.
GEO is Generative Engine Optimization: work that makes ChatGPT, Perplexity, Gemini and Google AI Overviews name your company and quote your site in their answers. In Latvia the abbreviation confuses people, because some understand it as geographic or local SEO. Both meanings are alive, and on this page I talk about both.
GEO is not separate magic on top of SEO. A large part of the work coincides with technical SEO: clean HTML, a fast page, an understandable structure, honest content. What is new is that the page is now also read by a model that cuts fragments out of it and retells them in its own answer.
GEO as generative optimization: visibility in ChatGPT, Perplexity, Gemini and Google AI Overviews answers.
GEO as geographic SEO: visibility in Google Maps, the local results pack and queries with a city name.
The technical foundation is shared by both directions; what differs is the content and the way the result is measured.
SEO, GEO and AEO: how they differ
Three abbreviations denote three goals, not three services. I do all three in one pass, because roughly two thirds of the work is shared.
The common foundation, also for local SEO, is one: a page that responds fast, is readable without JavaScript, is structured with honest headings and contains verifiable facts. Without it I do not sell a separate “GEO package”.
| Approach | What is optimized | Where the result shows | How it is measured |
|---|---|---|---|
| SEO | Content, structure, speed, internal linking, external links | In the Google and Bing results list | Rankings, clicks and impressions in Search Console data |
| GEO (generative) | Fact density, quotable fragments, machine readability | In ChatGPT, Perplexity, Gemini and Google AI Overviews answers | How often the model names the brand and quotes the domain on a fixed set of questions |
| AEO | Direct answers to specific questions | Featured snippets, the People Also Ask block and voice assistants | Snippet share and the number of question-form queries |
| Local SEO (geographic GEO) | NAP data (name, address, phone), Google Business Profile, LocalBusiness schema | In Google Maps and the local results pack | Calls, directions and queries with a city name |
How AI models choose what to quote
The system splits the question into several queries, collects dozens of pages and builds the answer from short fragments. It is the fragment that gets quoted, not the page as a whole. The first requirement: every important paragraph has to be understandable on its own - a paragraph that starts with “as I mentioned above” says nothing when cut out.
The second requirement is numbers. “An individual approach to every client” is not quotable because it contains no information; “a full SEO audit of up to 5 pages costs 300 EUR and takes 3-5 business days” is quotable because it can be retold without changes.
The third requirement is entity clarity: who you are, what you do and where you work, and this information has to match on the website, in Google Business Profile, on LinkedIn and in directories. If on the website you are a designer and developer but in a directory a “marketing agency”, the model chooses the clearest source, and it is usually not yours.
A fragment that is understandable without the rest of the page.
Concrete numbers, amounts, timelines and dates.
A heading phrased as a question, and the answer right below it.
Named clients, industries, cities and products instead of general terms.
An author with a first name, last name and experience, not an anonymous “our team”.
The same information about the company outside the website as well.
Why JavaScript-rendered content does not exist in AI answers
Googlebot executes JavaScript, although with a delay. GPTBot, PerplexityBot and ClaudeBot do not - they read only the HTML sent by the server. If the content appears only after React or Vue runs in the browser, your page is empty to the bot, even though Google indexes it and the forms work. Google describes Googlebot's behavior in the JavaScript SEO basics.
The solution is server-side rendering, static generation or a prerender layer. On this page all the text is in the HTML before the first script, and that is why it can be quoted. Static rendering also solves speed, which is why I build new websites that way from the start. Older WordPress sites usually do not have this problem.
Open the page source with Ctrl+U and search for a sentence from the page. If you find only an empty div, the content is rendered by the browser.
Run curl in the command line and check whether the text is in the server response at all.
Disable JavaScript in the browser's developer tools and reload the page. What you see is what the bot sees.
In Google Search Console's “URL inspection” tool compare the rendered and the raw HTML.
llms.txt and robots.txt for AI bots
robots.txt determines access. I often find that a site is closed to AI bots by accident: a security plugin, a Cloudflare rule or a hosting switch called “AI protection” did it. The first job in every audit is to check whether the bots are allowed in at all.
llms.txt is a proposal, not a standard: a file in which a site lists its most important pages in a machine-readable form. No major model maker has confirmed reading it, so I prepare it - half an hour of work that breaks nothing - but I do not promise a result from it.
Boring things have a bigger impact than llms.txt: a valid sitemap.xml, correct HTTP status codes, canonicals without contradictions and pages that open in under two seconds on a mobile network.
The format is described by the llms.txt specification, and each bot's behavior by its owner's documentation: OpenAI, Anthropic and Perplexity.
GPTBot, OAI-SearchBot and ChatGPT-User: OpenAI's bots for content collection and real-time search.
ClaudeBot and Claude-SearchBot: Anthropic.
PerplexityBot: Perplexity.
Google-Extended: Gemini and AI Overviews. Blocking it does not remove the page from the Google search index, but it removes it from AI answers.
Applebot-Extended: Apple's systems.
Bingbot: Bing and Copilot.
Schema markup: context a machine reads without guessing
Schema markup is a JSON-LD block in the page code that tells the machine what a person reads from the design: this is a service, this is its price, this is a question and this is the answer. The types are maintained by schema.org; the ones Google actually uses are listed in the Google structured data documentation.
Schema is not a ranking factor, and I do not promise it as a rankings booster. It reduces guessing: the less the parser has to guess, the greater the chance that the fragment is used in the right context and with the right price. The same applies to entity clarity outside the code, which is what brand identity sorts out.
In 2023 Google switched off FAQ rich results for most sites, so the expandable questions no longer appear in the search engine. I keep the structure anyway, because AI parsers read it.
Organization: what the company is, its logo and profiles on other platforms.
Service: for every service page, with a description and the area served.
FAQPage: for the question and answer block.
BreadcrumbList: for the navigation path.
LocalBusiness: for the address, phone and opening hours.
Article and Person: for the blog and the author, with a publication date.
If by GEO you mean geographic visibility
Queries like “best dentist in Riga” or “door installation near me” bring clients who are ready to buy today, and the work list for these queries is different.
One warning: I do not make dozens of nearly identical pages with a swapped city name. Google calls these doorway pages and lowers their rankings, and AI models ignore them. A local page is valuable only with real content about the specific place: completed sites, delivery times, prices and a contact person.
Models answer local questions based also on Google Business Profile, directories, forums and reviews. If there is nothing about you there, a polished website alone will not change the answer.
The same name, address and phone in all sources, down to the spelling.
A completed and maintained Google Business Profile with services, photos and replies to reviews.
LocalBusiness schema with the address, coordinates and opening hours.
A flow of reviews that does not stop after the first month.
Separate pages for cities only if each of them has its own content about the specific place.
So the site is found in Google search and quoted by ChatGPT when the client asks there instead of in the search engine.
The most common mistakes I find in audits
The same list repeats in audits regardless of the industry and of how expensive the website was. Most of it can be fixed in two weeks; it gets expensive when the content has to be rewritten and the rendering rebuilt.
The content is rendered by the browser, so the page is empty to AI bots.
Prices are not named anywhere, so the page cannot appear in an answer to a price question.
There is no H1 at all or there are three, and the heading hierarchy is broken for design reasons, not content.
There is no schema, or it is plugin-generated with empty fields.
Contact information differs between the website, Google Business Profile and directories.
A blog with 40 articles about everything and nothing, but without a single article about what the company actually sells.
Images without alt text and without a modern format, dragging down both speed and comprehensibility.
How I work: from audit to measurable visibility
I work alone: the same person who makes the design also writes the code and the schema block. Behind it are 18 years of experience in design and development.
The audit always comes first - I do not sell a subscription for a site whose problems I have not yet seen. The picture that emerges in the audit often changes the plan: sometimes the content work is not needed, because a rendering fix is enough.
Measurement starts with the first block, not at the end: before the first change I record the rankings, traffic, bot requests and the answers to a set of questions in every model.
- 01
Audit
3-5 business days
Technical check, rendering without JavaScript, Search Console data, the state of structured data (schema.org), internal linking, a competitor overview.
- 02
Technical block
1-2 weeks
Rendering, speed, status codes, canonical and hreflang, robots.txt, sitemap.
- 03
Content
2-4 weeks
The direct answer in the first hundred words, prices with numbers, an FAQ block, quotable fragments.
- 04
Entities
Google Business Profile, directories, profiles, one and the same version of the company description everywhere.
- 05
Measurement and maintenance
A fixed set of questions, server logs, a monthly report.
Prices
The choice between Basic, Plus and PRO depends on the number of pages and on how deep we need to go. AI SEO implementation is separate work: there it is not about checking but about real changes on the site - schema, rendering, rewriting content in a quotable form, bot access and a measurement system.
Maintenance only makes sense once the foundational work is done. There are no long-term contracts; maintenance can be stopped with one month's notice.
| Service | Scope | Price |
|---|---|---|
| SEO Basic | up to 5 pages, a full technical and content audit | 300 EUR |
| SEO Plus | up to 10 pages, speed and AI optimization | 500 EUR |
| SEO PRO | up to 20 pages, competitor analysis | 800 EUR |
| AI SEO basic implementation | schema, bot access, quotable fragments for the main pages | 700 EUR or two payments of 350 EUR |
| AI SEO standard implementation | the basic scope, rendering, content rewriting, a measurement system | 1200 EUR or two payments of 600 EUR |
| SEO maintenance | monthly work, measurements and a report | from 80 EUR per month |
How to measure visibility in AI answers
ChatGPT has no Search Console of its own, and no tool shows the full picture. Promises of “full AI visibility control” are sales tricks.
The most important tool is a set of questions: I record whether the brand appears in the answer, in which position and which domain is quoted. Part of this tracking is taken over by AI agents for content and measurement. Google Search Console does not show impressions from AI Overviews separately, so an exact number cannot be obtained from its data.
Server logs: whether GPTBot, PerplexityBot and ClaudeBot enter the site at all, how often and which pages they take.
Analytics: visitors from chatgpt.com, perplexity.ai and copilot.microsoft.com. The number is usually lower than the real one, because some transitions come without a source.
A manual set of questions: 20-40 questions real clients actually ask; I enter them into every model on the same day every month.
Growth of brand queries in Search Console data: an indirect but credible signal, because after an AI recommendation a person often looks up the company name in Google.
What can realistically be promised and what cannot
For a new site, first positions for the terms “SEO optimization” and “SEO services” are not reachable in 6-12 months: agencies with hundreds of pages and domain history have held them for years. What is reachable are longer queries with clear intent, niche questions and the questions people ask AI assistants in full sentences.
I promise: pages that bots can read, and proof from the server logs that they read them.
I promise: content in a quotable form, with prices and timelines.
I promise: a measurement system with a fixed starting point and a monthly comparison.
I promise: an exact list of what was done, when and why.
I do not promise: position No. 1 or a guaranteed place in AI answers.
I do not promise: results within a month. Search engines and models have their own inertia.
Who I have worked with
In manufacturing and construction: Tenter, ARM Metals, Estire and Improvement. In logistics and business services: MLM Cargo, Box Latvia, Universal Solutions and DarbaGuru. In retail and consumer services: Tavasdurvis, Lucky Punch, Cafeteria, Valis Stomatoloģija, Lauvas Zobs and Forevolt. In digital products: Apmeklē.lv, Digitālais Dzintars and LimeBit. The published work is in the website and logo design examples.
In eighteen years I have worked with clients in Latvia, Estonia, Lithuania and the USA. Some projects are new websites with the SEO foundation laid during development, some are cleanups of existing sites. The industries differ, but the first problems are the same: content bots cannot read, prices named nowhere, and schema that is either missing or wrong.
Where to start
Start with an audit for 300 EUR: I check up to five of the most important pages and send a list, sorted by importance, of what is holding back visibility in search engines and AI answers. You can use the list without me too, it is yours.
If you want me to implement the fixes, the cost starts from 700 EUR depending on the scope. Write to connect@gatisdesign.com or contact me through the contact form and include the site address - I send the first assessment within one business day.
Questions
What is GEO optimization?
How does GEO differ from SEO?
How much do GEO and SEO optimization cost?
How long until results appear?
Can you guarantee that ChatGPT will recommend my company?
Does llms.txt really work?
Why does my React website not appear in AI answers?
Start with an audit for 300 EUR. Write to connect@gatisdesign.com and include the site address - I send the first assessment within one business day.

