π€ AEO Structuring Agent
BaC Principle
βAI models donβt rank pages β they cite passages. If your content isnβt structured so an LLM can extract a clean, attributable answer, it doesnβt exist in AI search.β β Business as Code Manifesto
Stage: S5 β AEO Structuring
Type: AUTO (~90% automated)
Trigger: After S4 produces optimized_content_batch
Output feeds: 07-Technical-SEO-Agent, 09-Human-Review-Gates (Content Review)
See Map of Content for full vault navigation.
π― Objective
Take SEO-optimized content and restructure it specifically for AI citation. This agent applies the six AEO principles that determine whether an LLM will reference your content in its responses: answer-first structure, FAQ density, entity clarity, schema markup, citation-readiness, and factual conciseness.
Why AEO is a separate stage
SEO optimization (SurferSEO scores, keyword density, heading hierarchy) and AEO optimization (LLM citation patterns, schema markup, answer granularity) are different skill sets with partially overlapping but distinct requirements. A page can score 90 on SurferSEO and 30 on AEO β and vice versa. They require separate passes.
π οΈ Tools & Integrations
tools:
- name: Claude API
used_for: >
Restructuring content sections, generating FAQ Q&A pairs,
writing concise "answer-first" paragraph openings,
disambiguating entity definitions, AEO readiness scoring
api: Messages API
- name: Schema.org validator (validator.schema.org)
used_for: Validate generated JSON-LD markup
api: REST API
- name: Google Rich Results Test
used_for: Confirm FAQ / HowTo / Article schema eligible for rich results
api: REST API (unofficial) or manual check
- name: LLM Citation Probe
used_for: >
Query ChatGPT / Perplexity / Claude with target queries before and after
AEO pass to measure citation improvement
api: OpenAI API, Perplexity API, Claude APIπ The 6 AEO Principles
These principles are applied to every page in the batch:
aeo_principles:
P1_answer_first:
rule: >
Every major section must open with a 1β2 sentence direct answer to the
implicit question its H2 heading poses. The answer must stand alone as
a quotable fact β no preamble, no "In this section we will..."
example:
bad: "In this section, we'll explore what Business as Code means and why it matters."
good: "Business as Code is a methodology for defining business processes as machine-readable, AI-executable specifications that can be versioned, tested, and self-improved."
P2_faq_density:
rule: >
Every page must have a dedicated FAQ section with β₯ 5 questions drawn
from People Also Ask data and AEO query variants identified in S2.
Questions must be phrased exactly as users ask them β not as headings.
schema: FAQPage + Question + Answer
P3_entity_disambiguation:
rule: >
Every key concept, brand name, or technical term introduced in the page
must have an explicit definition on first use. LLMs use entity definitions
to anchor their knowledge graphs. Ambiguous entities don't get cited.
example: >
"Business as Code (BaC) β a methodology for making business processes
machine-readable and AI-executable..." β LLMs can reliably reference this.
P4_schema_markup:
rule: >
Inject JSON-LD schema for each applicable type. At minimum: Article.
For how-to content: HowTo. For FAQ sections: FAQPage. For guides with
steps: HowTo + Steps. For comparison content: Table markup.
priority_schemas:
- FAQPage # highest AEO impact β directly surfaces in AI Overviews
- HowTo # high impact β how-to queries are major LLM traffic
- Article # baseline β authorship, date, publisher
- BreadcrumbList # navigation context for LLMs
P5_structured_citations:
rule: >
Every factual claim must be attributed β either to a primary source
(linked) or to the site's own research/methodology (explicitly stated).
LLMs prefer citing content that itself cites sources; it signals reliability.
example: >
"According to Ahrefs (2024), 96.5% of pages get zero organic traffic..."
β This claim, with citation, is more likely to be referenced by LLMs
than the same claim without attribution.
P6_concise_quotable_paragraphs:
rule: >
Target 2β3 sentences per paragraph (40β80 words). Each paragraph should
contain exactly one idea. Long paragraphs dilute the signal-to-noise ratio
for LLM extraction β the model cannot cleanly extract a single answer.
target_paragraph_length: "40β80 words"
max_paragraph_length: "100 words"β‘ Execution Steps
flowchart TD A["Receive optimized_content_batch<br/>from S4"] B["Score current AEO readiness<br/>per page (0-100)"] C["Apply P1: Rewrite section openers<br/>Answer-first structure"] D["Apply P2: Generate FAQ section<br/>From PAA + AEO query variants"] E["Apply P3: Add entity definitions<br/>First-use disambiguation"] F["Apply P4: Generate JSON-LD schema<br/>FAQPage + HowTo + Article"] G["Apply P5: Add source citations<br/>Flag unsourced claims"] H["Apply P6: Paragraph restructuring<br/>Split long paragraphs"] I["Validate schema markup<br/>Schema.org validator"] J["Score AEO readiness (post-pass)<br/>Target β₯ 75/100"] K["Output: aeo_ready_content"] A --> B --> C --> D --> E --> F --> G --> H --> I --> J --> K
π€ Output Schema
{
"aeo_batch_id": "aeo_2026-04-02",
"processed_at": "2026-04-02T20:00:00Z",
"pages_processed": 8,
"pages": [
{
"page_id": "page_C001",
"url": "/what-is-business-as-code",
"aeo_score_before": 32,
"aeo_score_after": 81,
"principles_applied": ["P1", "P2", "P3", "P4", "P5", "P6"],
"faq_questions_added": 7,
"schema_injected": ["Article", "FAQPage"],
"schema_valid": true,
"citations_added": 3,
"unsourced_claims_flagged": 1,
"content_markdown_with_schema": "[full markdown + JSON-LD]",
"aeo_notes": "Entity definition for 'AI agent' added. 3 paragraphs split for conciseness. FAQ schema validated successfully."
}
],
"batch_summary": {
"avg_aeo_score_before": 38,
"avg_aeo_score_after": 77,
"pages_meeting_target": 7,
"pages_needing_review": 1,
"total_faq_items_added": 48,
"schema_validation_pass_rate": 1.0
}
}π§ͺ AEO Readiness Scoring (0β100)
aeo_scoring:
answer_first_structure:
weight: 20
check: "β₯70% of H2 sections open with direct answer sentence"
score_full: 20 # all sections
score_partial: 10 # β₯50% of sections
score_none: 0
faq_section:
weight: 25
check: "FAQPage schema present + β₯5 questions"
score_full: 25 # schema + β₯5 questions
score_partial: 12 # questions present, no schema
score_none: 0
entity_definitions:
weight: 15
check: "All key terms defined on first use"
score_full: 15
score_partial: 8 # β₯50% of terms defined
score_none: 0
schema_markup:
weight: 20
check: "Article schema + at least one content-type schema (FAQPage/HowTo)"
score_full: 20
score_partial: 10 # Article only
score_none: 0
source_citations:
weight: 10
check: "All factual claims attributed"
score_full: 10
score_partial: 5 # β₯50% of claims cited
score_none: 0
paragraph_conciseness:
weight: 10
check: "β₯80% of paragraphs are β€100 words"
score_full: 10
score_partial: 5
score_none: 0
thresholds:
aeo_ready: "β₯ 75 β passes to Technical SEO + Content Review"
needs_work: "50β74 β flag for additional AEO pass"
not_ready: "< 50 β flag for human copywriter review at Gate #2"π KPIs
| Metric | Target | Alert Condition |
|---|---|---|
| Avg AEO score (post-pass) | β₯ 75/100 | < 60 β review agent prompts |
| Pages meeting AEO target | β₯ 85% | < 70% β flag batch |
| Schema validation pass rate | 100% | Any fail β fix before publish |
| FAQ questions added per page | β₯ 5 | < 3 β supplement from PAA data |
| Unsourced claims flagged | All flagged | 0 (on pages with factual claims) β suspicious |
β οΈ Error Handling
error_rules:
- condition: Schema.org validator returns errors
action: Fix JSON-LD syntax automatically; re-validate
fallback: Remove invalid schema block; flag page for manual schema injection
- condition: AEO score after pass is still < 50
action: Flag page as "needs_human_review" in batch output
fallback: Include in Gate #2 mandatory review (not 10% sample)
- condition: FAQ generation produces duplicate questions
action: Deduplicate using semantic similarity check (Claude API)
fallback: Keep first unique occurrence; discard duplicates
- condition: Entity definition generation creates circular definitions
action: Re-run with explicit "do not define term using the term itself" constraint
fallback: Flag for human editπ Related Files
- 05-Content-Optimization-Engine β Provides
optimized_content_batchas input - 07-Technical-SEO-Agent β Receives schema markup for technical validation
- 04-Keyword-and-Topic-Research-Agent β AEO query variants used for FAQ generation
- 09-Human-Review-Gates β Gate #2 reviews pages with AEO score < 75
- 10-Metrics-and-Self-Improvement β AEO readiness scores tracked as KPI
- 01-Process-Manifest β S5 stage definition