Skip to content

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

(Two meanings)

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”.

ApproachWhat is optimizedWhere the result showsHow it is measured
SEOContent, structure, speed, internal linking, external linksIn the Google and Bing results listRankings, clicks and impressions in Search Console data
GEO (generative)Fact density, quotable fragments, machine readabilityIn ChatGPT, Perplexity, Gemini and Google AI Overviews answersHow often the model names the brand and quotes the domain on a fixed set of questions
AEODirect answers to specific questionsFeatured snippets, the People Also Ask block and voice assistantsSnippet share and the number of question-form queries
Local SEO (geographic GEO)NAP data (name, address, phone), Google Business Profile, LocalBusiness schemaIn Google Maps and the local results packCalls, directions and queries with a city name
Four directions, one technical foundation.

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

(Rendering)

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

(Process)

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.

  1. 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.

  2. 02

    Technical block

    1-2 weeks

    Rendering, speed, status codes, canonical and hreflang, robots.txt, sitemap.

  3. 03

    Content

    2-4 weeks

    The direct answer in the first hundred words, prices with numbers, an FAQ block, quotable fragments.

  4. 04

    Entities

    Google Business Profile, directories, profiles, one and the same version of the company description everywhere.

  5. 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.

ServiceScopePrice
SEO Basicup to 5 pages, a full technical and content audit300 EUR
SEO Plusup to 10 pages, speed and AI optimization500 EUR
SEO PROup to 20 pages, competitor analysis800 EUR
AI SEO basic implementationschema, bot access, quotable fragments for the main pages700 EUR or two payments of 350 EUR
AI SEO standard implementationthe basic scope, rendering, content rewriting, a measurement system1200 EUR or two payments of 600 EUR
SEO maintenancemonthly work, measurements and a reportfrom 80 EUR per month
Prices are final: I am not a VAT payer, so nothing is added to these numbers. Payment is due in 5 business days.

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

(Honestly)

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?
GEO optimization, or Generative Engine Optimization, is work that makes ChatGPT, Perplexity, Gemini and Google AI Overviews name a company and quote its website in their answers. It includes technical cleanup, a quotable content structure and schema markup. In Latvia GEO sometimes also denotes geographic or local SEO, so the meaning is worth clarifying at the start of the conversation.
How does GEO differ from SEO?
The goal of SEO is a position in the search engine results list; the goal of GEO is a quote in an AI-generated answer. The technical foundation is shared: a fast page, readable HTML, a clear structure. The form of the content differs: for SEO a good page as a whole is enough, but GEO needs individual paragraphs that are understandable even when pulled out of context.
How much do GEO and SEO optimization cost?
A full audit of up to 5 pages costs 300 EUR, up to 10 pages with speed and AI optimization 500 EUR, up to 20 pages with competitor analysis 800 EUR. AI SEO implementation costs 700 EUR for the basic scope and 1200 EUR for the standard scope, both amounts can be split into two monthly payments. Maintenance starts from 80 EUR per month. Prices are final - I am not a VAT payer.
How long until results appear?
Bots notice technical changes within 2-6 weeks. The first changes in AI answers I usually see 6-10 weeks after implementation. In classic Google search niche queries take 3-6 months, and more competitive terms a year or longer.
Can you guarantee that ChatGPT will recommend my company?
No, and nobody can. Models answer inconsistently, and the same question on two days can give different sources. What can be guaranteed is the execution: that bots can access the site, that the content is readable without JavaScript, that the facts are in a quotable form, and that visibility is measured on a fixed set of questions every month.
Does llms.txt really work?
llms.txt is a proposal, not an approved standard, and no major model maker has publicly confirmed reading it. I prepare it because it takes half an hour and breaks nothing, but I do not promise a result from it. A much bigger impact comes from a robots.txt without accidentally blocked AI bots, a valid sitemap.xml and content that is in the HTML.
Why does my React website not appear in AI answers?
Most likely because the content is rendered by the browser. GPTBot, PerplexityBot and ClaudeBot do not execute JavaScript, so they receive empty HTML. Check the page source: if you cannot find the text there, the bots do not see it. The solution is server-side rendering, static generation or a prerender layer, and it is usually one week of work.

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.