Discuss a project →

How we made this website readable by AI answer engines

Six concrete choices behind spotiflow.eu: a direct answer at the top of every page, a Markdown twin of each page, an llms.txt index, structured data that describes the company group, open access for AI crawlers, and a static build with no client-side rendering.

When someone asks an AI assistant "who can integrate HubSpot with our ERP in Portugal?", the assistant does not browse a website the way a person does. It fetches a few pages, often without running JavaScript, extracts text, and tries to decide which sentences answer the question. A site that is pleasant for people can still be hard for machines to read.

We rebuilt spotiflow.eu with both readers in mind. This article lists what we did and why, so you can apply the same choices to your own site.

1. A direct answer at the top of every page

Each page opens with one or two sentences that answer the question the page exists for, before any marketing copy. On a service page, that sentence says what the service is, who it is for and what it delivers.

Answer engines tend to quote short, self-contained passages. If the answer is spread across a hero slogan, three cards and a paragraph further down, the engine has to reassemble it, and often gets it wrong or picks another source. People benefit too: they know within seconds whether they are on the right page.

How to apply it: for each page, write down the single question it answers. Then make the first paragraph a complete answer to that question, one that still makes sense if it is quoted on its own.

2. A Markdown twin of every page

Every HTML page has a clean Markdown version at the same address with .md instead of the trailing slash. For example, /services/ is also available as /services.md. Each HTML page points to its twin with a <link rel="alternate" type="text/markdown"> tag.

Markdown removes navigation, scripts and layout, leaving headings, lists and text. That is cheaper for a crawler to process and leaves less room for extraction errors. It also gives agents that read documentation-style content a predictable format.

3. An llms.txt index

At the root of the site, /llms.txt lists every important page with a one-line description and a link to its Markdown version, grouped by section. It works like a table of contents written for language models.

To be clear, llms.txt is a community proposal, not a standard that the major engines have committed to. It costs very little to publish, and some agents and developer tools already read it. We treat it as a cheap bet, not as the main lever.

4. Structured data that says who is who

Spotiflow Europe belongs to a small group of companies with the same founder: Stratenet SRL in Belgium, Spotiflow LLC in the United States, and Spotiflow Europe, a Portuguese company. Humans get that from the footer. Machines need it spelled out.

Every page carries JSON-LD (schema.org) describing:

  • the organisation itself, with its legal name, tax number and country;
  • the founder as a Person, referenced by a stable identifier;
  • the two sister companies as separate organisations, linked through the same founder rather than presented as one brand;
  • the page itself, with WebPage, Service, FAQPage or BlogPosting types and a breadcrumb trail.

The aim is to stop an engine from merging three legal entities into one, or from assigning one company's services to another. Being precise about entity boundaries matters more to us than adding every schema type available.

5. Open doors for AI crawlers

robots.txt explicitly allows the crawlers that feed AI assistants and answer engines, along with the classic search engines, and points to the sitemap. If you block them, you cannot appear in their answers. Whether to allow them is a business decision. For a services company that wants to be recommended, the answer was easy.

6. Static HTML, no rendering surprises

The site is generated ahead of time by a small build script and served as plain files from a global edge network. There is no framework rendering content in the browser. Every crawler, with or without JavaScript, receives the same complete HTML.

Static delivery also helps with the basics that still matter: fast responses, stable URLs with trailing slashes, a real 404 page, permanent redirects from www to the main domain, and an XML sitemap rebuilt on every deploy.

What we deliberately did not do

  • No keyword stuffing or hidden text for bots. Machines and people read the same words.
  • No auto-generated pages. Every page exists because a real question deserves an answer.
  • No cookie banner or chat widget in front of the content. The site sets no tracking cookies, so there is nothing to consent to and nothing to hide the text.

A short checklist for your own site

Check Quick test
Direct answer up front Can the first paragraph be quoted alone and still answer the question?
Works without JavaScript Disable JavaScript and reload: is the content still there?
Clean machine version Is there a Markdown or plain-text version of key pages?
Entities are explicit Does your JSON-LD name your legal entity and related companies correctly?
Crawlers allowed Does robots.txt allow the AI crawlers you want to appear in?
Index available Do you publish a sitemap and, optionally, an llms.txt?

None of this replaces having something worth citing. It just removes the reasons an answer engine might skip you.

Have a project in mind?

Tell us what you need to build, connect or fix.

Discuss a project →