What is the difference between technical GEO and technical SEO?
Technical SEO is the older job: make a site crawlable and fast enough that Google can index it and rank it. Render, Core Web Vitals, clean markup, valid sitemaps. Technical GEO adds the layer AI engines need on top of that. An engine like ChatGPT or Perplexity does not just index your page, it tries to extract a specific fact, your APR, your monthly fee, your eligibility cutoff, and repeat it back to a customer as an answer. That only works if the fact is exposed as machine-readable structured data, not buried in a JavaScript widget the parser never runs. So technical GEO is the same foundation plus the schema, the llms.txt and crawler access, and the parser-friendly markup that let an engine read your numbers and trust them. In finance the gap between the two is wide, because finance sites are the ones most likely to render their rates in client-side JavaScript.
What is FinancialProduct schema and why does it matter for a finance site?
FinancialProduct is the schema.org type for a financial product, with subtypes for the things finance brands actually sell: LoanOrCredit for loans, lines, and cards, BankAccount for current and savings accounts, InvestmentOrDeposit for deposits and brokerage products. It carries the exact fields an engine needs to quote you correctly: annualPercentageRate, interestRate, and feesAndCommissionsSpecification. When your rates page is marked up with the right subtype and accurate values, an AI engine can read the APR as a number with a label rather than guessing from prose or a screenshot of a table. Without it, the engine sees a page that clearly mentions rates but cannot tell which number is the headline APR, which is a fee, and which is an example from a comparison row. That is when it pulls a stale figure from a third-party aggregator instead of your live one. Accurate FinancialProduct markup is how you become the source the engine cites for your own price.
Do AI engines actually read llms.txt?
llms.txt is a published convention, a plain-text file at your domain root that lists the pages and content you want AI systems to use, in a clean, link-first format. Adoption across engines is still uneven and evolving, so we treat it as one input rather than a guaranteed channel. The more load-bearing technical controls are the ones that decide whether an AI crawler reaches your pages at all: your robots directives, your handling of agents like GPTBot, PerplexityBot, and ClaudeBot, and whether your rate content is in server-rendered HTML those crawlers can read without executing JavaScript. We set up llms.txt because it is low cost and signals intent, but we never let it stand in for the access and rendering work that actually determines what an engine can parse.
Why are JavaScript-rendered rate tables a problem for AI engines?
Because the number a customer sees and the number a parser sees are not the same. A modern finance rate table is often a client-side component: the page ships an empty shell, then JavaScript fetches the live rates and paints them in. A human browser runs that JavaScript, so the customer sees a correct APR. Many AI crawlers do not fully render JavaScript, or render it inconsistently, so the parser sees the empty shell, or a loading state, or nothing where the rate should be. The engine still wants to answer the question, so it fills the gap from somewhere it can read: a comparison site, an old cached version, a press release with a rate from two quarters ago. Your real, current, compliant number was right there on the page, and the engine never saw it. The fix is to make sure the rate exists in the raw HTML and in FinancialProduct structured data, so the parser reads the same value the customer does.
Are FAQ rich results still worth marking up for?
Not for the reason most people think. Google restricted FAQ rich results to a narrow set of government and health sites in August 2023, and as of 2026 it has dropped the FAQ search appearance entirely, so FAQPage markup no longer earns you those expandable accordions in Google results. Anyone still selling FAQ schema as a way to win SERP real estate is selling something that does not exist anymore. We still implement FAQPage markup, but for a different and honest reason: it is clean, machine-readable question-and-answer data that AI engines and other parsers can lift directly when a customer asks a question your FAQ already answers. For a finance brand, pairing a precise question like what is the APR on this card with an accurate, compliance-reviewed answer in structured form is a good way to feed an engine the exact response you want it to give. The value is in being parseable, not in a Google rich result.
How do you measure whether the technical work actually changed anything?
We measure parse accuracy, not just whether the schema validates. Validation is the floor: every FinancialProduct, BreadcrumbList, and FAQPage block has to be error-free in the structured-data tooling. Above that, we check the thing that matters, whether the engines can now read your numbers. We confirm your rate content appears in server-rendered HTML, that AI crawlers can reach it, and then we watch what the engines actually quote: does ChatGPT name your correct APR, does Perplexity cite your rates page instead of an aggregator, does the figure in the answer match the figure on the live page. When an engine still quotes a stale or wrong number, that is a parse or access failure we trace back to a specific page and fix. The report leads with that, the gap between the number on your page and the number in the AI answer, and how it closes over time.