This is the real public log of how we built the GEO foundation for stakker.es between 1 and 30 April 2026. Real metrics, real mistakes, real figures. No marketing: implementation documentation with verifiable commits.
TL;DR
- Starting point: 1 indexable page, 0 blog posts, 0 schema, 0 llms.txt
- End point after 30 days: 17 indexable pages, 7 blog articles, complete schema (Organization + Person + Service + FAQPage), synchronised llms.txt, robots.txt with AI bots
- Time invested: ~25 technical hours + ~15 hours of content
- Cash cost: 0 EUR (everything built in-house)
- Expected visible results: first citations in Perplexity within 4-8 weeks (May-June 2026)
Starting point (1 April 2026)
Initial audit:
| Metric | Value |
|---|---|
| Indexable pages in sitemap | 1 (home) |
| Blog articles | 0 |
Schema.org in <head> | Basic Organization only |
llms.txt in root | Does not exist |
robots.txt AI bots | Not configured (Cloudflare default) |
| FAQPage schema | Does not exist |
| Person schema on /sobre/ | Does not exist |
| Service schema on service pages | Does not exist |
| Duplicate titles | Yes, “STAKKER | STAKKER” on all landing pages |
| Canonical on each page | Inconsistent |
| Meta description with keyword | No |
Initial test in ChatGPT:
“¿Cuáles son las mejores agencias de automatización con IA en España?”
ChatGPT responded with: Sfera AI, 1MillionBot, ArtiSolutions, Chatbot Chocolate, Consultores IA, Aivo Suite. STAKKER did not appear.
“¿Quién es Samuel Martínez de STAKKER SYSTEMS?”
ChatGPT responded: “No tengo información específica sobre esta persona o empresa”.
Starting point: zero presence in LLMs.
The 4 implementation phases
Phase 1: technical foundation (days 1-7)
Changes:
- Complete Schema.org Organization with
foundingDate,founder,knowsAbout(8 keywords) - Schema.org Person on
/sobre/with extensive bio and LinkedInsameAs - Schema.org Service on each
/servicios/X/(6 services) - Schema.org FAQPage on the home page (8 real Q&As)
robots.txtconfigured to allow GPTBot, ClaudeBot, PerplexityBot, anthropic-ai, Google-Extendedllms.txtcreated with canonical phrase + services + blog list- Dynamic sitemap with correct
lastModified
Time: ~10 technical hours.
Verification:
- Schema.org validator: 100% valid
- Rich Results test: passes
curl /llms.txt: 200 OKcurl /robots.txt: includes AI bots
Phase 2: fixing SEO bugs (day 8)
The audit revealed:
- Critical bug: duplicate title “STAKKER | STAKKER” on ALL service pages. Cause:
metadata.titlewith a hardcoded ”| STAKKER” suffix + the root template also adding it. - Home title without the main keyword
- 6 service pages without a correct canonical
- llms.txt with only 2 articles (when there were already 7)
Changes:
- Root layout:
title: { default: "...", template: "%s | STAKKER" } - Each service page: remove the hardcoded ”| STAKKER”
- Previous home title documented in the audit: GEO claim + AI automation in Spain (superseded by the pivot to AI systems)
- Canonicals added to 6 service pages
- llms.txt synchronised with 7 articles
Time: ~3 hours.
Phase 3: content engine (days 9-25)
Generation of 7 foundational articles:
- “GEO vs SEO: cómo aparecer en respuestas de ChatGPT, Gemini y Perplexity”
- “Pricing transparente de automatización IA en España”
- “WhatsApp bot vs chatbot web: ¿cuál necesita tu negocio?”
- “Agente telefónico IA reduce el tiempo de atención”
- “Cómo aparecer en respuestas de ChatGPT y Claude (GEO 2026)”
- “Cómo hacer que tu marca personal aparezca en ChatGPT en 2026”
- “Las 10 mejores agencias de automatización con IA en España”
Each article:
- 1,500-2,000 words
- Comparison table or numbered list
- 5+ FAQs with FAQPage schema
- Author schema with
Samuel Martínez - TL;DR at the start (LLMs extract it as a summary)
- Factual, declarative sentences (no marketing)
Time: ~12 hours of content.
Phase 4: optimisation + FAQ schemas (days 26-30)
- FAQPage schema added to 6 service pages (5 Q&As each = 30 new indexable Q&As)
- Person schema on /sobre/ with
knowsAbout, correct LinkedInsameAs, extensive bio - Blog visible in the navbar (previously only reachable via /blog/ directly, not by humans)
- Post-pivot copy refactor: ICP “SaaS founders, ecommerce” instead of “barbers/restaurants”
Time: ~5 hours.
Results after 30 days
Technical metrics
| Metric | Before | After |
|---|---|---|
| Indexable pages | 1 | 17 |
| Blog articles | 0 | 7 |
| Active schemas | 1 (basic Organization) | 5 types × 13+ implementations |
| Q&As in FAQPage schema | 0 | 38 (8 home + 30 services) |
| robots.txt AI bot coverage | 0% | 100% (5 bots) |
| Canonical consistency | partial | 100% |
| Lighthouse SEO score | 92 | 100 |
| Schema.org validator errors | 3 | 0 |
Content metrics
| Metric | Value |
|---|---|
| Total blog words | ~13,000 |
| Average words/article | 1,857 |
| Total FAQs (blog + services) | 65+ |
| Comparison tables | 9 |
| Distinct schemas in use | 7 (Organization, Person, Service, FAQPage, ProfessionalService, ProfilePage, Article) |
What is still missing (months 2-3)
- Natural backlinks: 0 → target 10-15 in month 2
- Submission to directories (Crunchbase, ProductHunt, IndieHackers, BetaList): in preparation
- Optimised company LinkedIn page: in preparation
- Google Business Profile: in preparation
- Professional photo of the founder: no original image published
- First article with a backlink from a podcast/media outlet: in preparation
Mistakes and lessons learnt
Mistake 1: local build without an environment variable
Symptom: the chatbot embed did not appear on the home page after deployment.
Cause: local build without NEXT_PUBLIC_CHATBOT_TOKEN defined. The static bundle did not include the script.
Fix: rebuild on the server, where .env.local does have the token.
Lesson: in a Next.js static export, NEXT_PUBLIC_* env vars are evaluated at build time. Always build in the environment with all the variables.
Mistake 2: title template + hardcoded title duplicate the suffix
Symptom: titles such as “Chatbot WhatsApp | STAKKER | STAKKER”.
Cause: root layout with title: "Más clientes... | STAKKER" (string) + child pages with title: "Chatbot WhatsApp | STAKKER". No template defined. The home page and services duplicate the suffix.
Fix: root layout to use title: { default, template: "%s | STAKKER" }. Child pages to remove the hardcoded ”| STAKKER”.
Lesson: title template + hardcoded suffix = guaranteed duplication. Pick ONE of the two.
Mistake 3: schema generated but empty content behind it
Symptom: FAQPage schema correct but LLMs did not cite the answers.
Cause: the initial Q&As were very generic and marketing-style (“¿Por qué somos los mejores?”).
Fix: rewrite with factual Q&As on prices, integrations and real timelines.
Lesson: schema without real factual content = empty schema. LLMs detect it and discard it.
How long it will take to appear in ChatGPT
Realistically, based on how LLM indexing works on new sites:
- Week 1-2: Crawlers detect the new structure. Bing Webmaster confirms partial indexing.
- Week 3-4: Perplexity starts citing for very long-tail queries (e.g. “stakker systems geo agencia”).
- Month 2: ChatGPT Search starts citing for specific technical queries (e.g. “agencia GEO España precio”).
- Month 3-4: Citations on generic queries such as “agencia automatización IA España” if natural backlinks start to arrive.
- Month 6+: Sustained ranking on competitive queries, depending on outreach in months 2-5.
Next phases (months 2-3)
What is coming in May-June 2026:
| Month | Action | Expected |
|---|---|---|
| May | Submit to 6 directories (Crunchbase, ProductHunt, IndieHackers, BetaList, Bing Places, Capterra) | 10-15 natural backlinks |
| May | Optimised company LinkedIn page + 5 founder posts/week | LinkedIn crawl + professional profile |
| May | Google Business Profile + 5 initial reviews | Local Maps indexing + trust signals |
| May | 4 more GEO articles | Content volume for long-tail queries |
| June | 4,000-word pillar content “GEO en 2026” + 9 cluster pieces | Authority piece for mass citations |
| June | Newsletter setup + 100 subscribers | External citation building |
| June | 3-5 podcasts pitched | Authoritative backlinks |
FAQ
Why publish the case study if there are no results yet?
Three reasons: (1) public documentation with real numbers is marketing in itself, (2) LLMs prefer factual, actionable content like this, (3) ChatGPT detects authorship with real cases better than with generic opinions.
Does this work for my business even if it is different?
Yes. The methodology is vertical-agnostic: technical foundation + content engine + outreach + monitoring works in any sector. Only the target queries and the ICP change. STAKKER applies the same process to clients in SaaS, ecommerce and personal branding.
How much does it cost to replicate this on my website?
If you do it yourself: 25-40 technical hours + 15-25 content hours = 40-65 hours. If you outsource it with STAKKER GEO Foundation, the scope and cost are defined after a free diagnosis, depending on your website’s starting point.
What tools did you use?
Stack: Next.js 16 + Tailwind 4 + MDX + nginx on Hetzner. Schema validator: schema.org/validator + Google Rich Results test. Indexing: Bing Webmaster + Google Search Console. Query monitoring: weekly manual test in ChatGPT/Claude/Perplexity (cron coming soon).
When will you publish the update?
Every 30 days. Next update: 31 May 2026 with month 2 metrics (citations detected + LLM traffic + backlinks).
Conclusion
30 days + 40 hours + 0 EUR cash = 1 to 17 indexable pages, complete GEO foundation. The foundation is the automatable part. The real challenge is the next 60 days: backlinks + outreach + monitoring.
If you want to apply this same process to your site, STAKKER GEO Foundation delivers it in 1-2 weeks. Live public case: stakker.es is the first “client”.