Case study · Silvo Systems

How I AEO'd my own agency in one afternoon

Working session on silvo.systems itself. Same playbook I run on client sites. Real numbers, real fixes, no spin.

Logan Hoffman, founder··~7 min read

The setup

I run an AEO/SEO agency. I sell schema, citation tracking, content pipelines, press pitching. So when I checked the audit score on my own site — using the audit tool I built — the result was a problem.

silvo.systems scored 68/100 on AEO. Citation rate was 33%. Two of three queries cited me. Both were branded queries. On the discovery queries any real prospect would type — best AEO agency Long Island, how to find a contractor on Long Island — I was at zero.

Mid score. AEO agency. Embarrassing.

So I gave myself one afternoon. Same on-page playbook I run for clients. Here is what I changed and what moved.

What was actually broken

The audit flagged three real problems:

  1. Schema and llms.txt drift. Both still described Silvo as a contractor-only configurator agency. We pivoted positioning two months ago to AEO/SEO discipline-specialized for two verticals. The schema and llms.txt still told the old story. So every LLM that scraped silvo.systems was being given the wrong description.
  2. Only one AI-friendly schema type. FAQPage was there. Service, Person, HowTo, Article — missing.
  3. Robots.txt was generic. A single User-agent: * wildcard. No explicit bot allowlist.

What I shipped

1. Schema rewrite

Full Organization rewrite with a 15-topic knowsAbout array. Topical authority signals matter for AEO citation lift. hasOfferCatalog nested with all four SKUs. founder linked to a separate Person schema for me with my own knowsAbout and sameAs links.

Then a Service schema for each tier — Audit, Foundations, Authority, Domination — each with provider back-reference to the Organization, areaServed array, and an Offer with UnitPriceSpecification using the MON unit code for monthly retainers.

Skipped aggregateRating entirely. Per Google's 2019 self-serving review policy — still in force in 2026 — faking reviews on your own Organization schema is a sitewide manual-action risk. I'll add it to individual Service nodes once I have real third-party reviews from clients.

2. llms.txt and llms-full.txt

Full rewrite of llms.txt to match the actual positioning. Both verticals named. New pricing. Founder bio. Key pages indexed.

Added a new llms-full.txt with the concatenated full content of every important page. The llms.txt spec is a navigational index. The community convention llms-full.txt is a one-shot ingestion file. Anthropic, FastHTML, Mintlify all ship one. Forward-compatible insurance — LLM platforms aren't fetching either file at meaningful volume in April 2026 (per aeoengine's log analysis) but the dev-tooling crawlers that DO read it are exactly my target audience's tech stack.

3. Robots.txt explicit allowlist

Replaced the wildcard with explicit User-agent entries for 20+ AI bots. Every major retrieval and training crawler named. The current 2026 list:

  • OpenAI: GPTBot, OAI-SearchBot, ChatGPT-User
  • Anthropic: ClaudeBot, Claude-SearchBot, Claude-User (the deprecated anthropic-ai and Claude-Web are no longer active)
  • Google: Google-Extended, GoogleOther
  • Apple: Applebot, Applebot-Extended
  • Perplexity: PerplexityBot, Perplexity-User
  • Meta: Meta-ExternalAgent, FacebookBot
  • Plus: Bytespider, CCBot, cohere-ai, MistralAI-User, Amazonbot, DuckAssistBot, YouBot

For an AEO-positioned agency, allowing training bots is the deliberate flywheel choice. I want my content training the next generation of models. Most agencies block the training crawlers and only allow retrieval bots. Different bet.

4. Layout metadata

Title rewritten to Silvo Systems — AEO + SEO for Long Island service businesses. Meta description trimmed to 156 characters with the AEO hook, both verticals, and the free-audit CTA. Person schema injected globally so every page carries author signal.

5. SITE_URL canonicalization

The constant was silvo.systems (no www). The actual served URL was www.silvo.systems. So my schema @id values used one domain string and my llms.txt used another. Self-contradicting on an AEO site. Fixed.

The numbers

Audit before, audit after, same day, same tool:

PillarBeforeAfterΔ
Technical100100
On-Page10092-8 (meta desc 179c, fixed in followup)
Content7676— (Flesch 47 still failing)
Performance8888
Local8888
AEO6874+6
Overall8887-1 (meta desc, fixed)

What did NOT move — and why that's the right answer

Citation rate stayed at 33% same-day. This is the part most agencies oversell.

On-page schema does not move discovery-query citations. The Princeton Generative Engine Optimization paper (arXiv:2311.09735, KDD 2024) ran controlled experiments on what tactics actually lift LLM citation rates. The top three: cite sources inline, add direct quotes from authorities, embed concrete statistics. Each produced ~30-40% relative lift. None of them are schema.

Schema makes you parseable. Citations come from authority signals — brand mentions on Wikipedia (where ChatGPT pulls 7.8% of citations from, per Profound's 680M-citation dataset), Reddit (Perplexity's top source at 6.6%), YouTube and LinkedIn (Google AI Overviews' favorites).

The press-release angle most SEO firms still pitch? Press releases are 0.04% of LLM citations (per ALM Corp's analysis). Don't pay an agency to send press releases for AEO. It will not work.

Discovery-query citations come from off-page work: earned editorial in trusted publications, directory presence on platforms LLMs treat as authoritative, founder content on Reddit and LinkedIn, Wikidata entries, original research that gets cited by other sites. None of that happens in an afternoon.

What this looks like for a client engagement

Schema and metadata work is the foundation tier — $2,500 setup + $1,500/mo. It produces the score-lift you can see in a tool like silvo.systems/audit. Useful, necessary, not the moat.

The actual citation rate movement — the metric that matters for your business — comes from press, directories, and content. That work lives in the Authority tier. 0% to 40%+ in 90 days is the target. Not from schema. From getting your business named on the platforms LLMs actually pull from.

If your AEO agency is selling you a schema audit and calling it AEO, they are selling you the easy 30%. Make sure the other 70% is in the contract.

What I'm doing next

  1. Re-audit silvo.systems on May 27 (Day 30) to capture what off-page work changes the discovery-query citation rate.
  2. Apply the same playbook to my mom's therapy practice in Commack as my first published client case study. Day-0 baseline already captured: AEO 47/100, citation rate 0% on discovery queries.
  3. Bring up the silvo-ops tracker so silvo.systems gets queried daily across Anthropic, OpenAI, Perplexity, and Google AI Overviews. Public dashboard. Eat own dog food in production.

If you want yours audited, the tool is at silvo.systems/audit. It runs the same six-pillar audit I ran on myself. Free, no signup, no email gate. The output looks exactly like the table above.

If your number is mid and you want it to stop being mid, three founding spots are open at 50% off the retainer in exchange for a published case study. Book a 30-minute scoping call.