A working build of the full agentic SEO/GEO pipeline: baseline audit, research, briefing, writing, quality gating, hidden-post publishing with a symmetry gate, citation and whitespace monitoring, and continuous optimization — now with an authenticated multi-tenant app, a baseline AI-visibility screen, and a client portal. Human oversight at the points that matter, a full audit trail per client, and every metric anchored to a baseline frozen at onboarding.
Open the interactive demo → The visibility screenTwo client-facing numbers, tracked across five AI engines, three runs per prompt per week, against a baseline frozen the day the engagement starts.
The baseline visibility screen is the sales instrument: a prompt-level table showing, for every prompt and every engine, whether the brand appears, whether it links, its position in the answer — and when it is absent, who appears instead (a competitor, or nobody at all). Plus a competitor heatmap, the frozen search-baseline, and a technical-health readout. Run-based mention/citation rates stay internal, for volatility tracking only — the client never sees two things called "citation rate".
Optimize feeds newly discovered content gaps and citation-whitespace queries back to Research — the loop runs monthly, indefinitely. Below-threshold drafts bounce between Quality and Writer up to a configurable number of attempts, then escalate to a human. Articles publish as hidden posts — live URLs discoverable only via the clustered sitemap and llms.txt — until they cross a traffic threshold and the client chooses to make them publicly visible. Every action lands in the per-client audit log.
Runs once at onboarding and is frozen forever — every re-crawl becomes a dated current-state snapshot compared against it, so the before/after story never drifts. Scores existing pages for citability, flags JS-rendered and orphaned content, scans for contradictions, captures the traditional-search baseline (GSC), and records who each engine cites today per query. Audits robots.txt across the six required AI crawlers.
Keyword expansion, conversational long-tail discovery, competitor gap analysis, AI-intent mapping and a hub-and-spoke topical map. Long-tail first is enforced; citation-whitespace queries get a priority bonus. Also generates the client's prompt set (40–100 intent-grouped prompts, funnel-staged) for tracking. Output: a prioritized monthly content plan (8–12 articles).
One brief per planned article: target keywords with fan-out queries, word count, heading structure, internal link targets tagged by cluster (spokes → pillar, pillar → spokes), schema type, competing URLs and a Unique Information Delta directive.
Long-form drafts built for citation: a direct answer in the first 150 words, named entities, sourced facts, a mandatory FAQ, JSON-LD schema, 2,000+ words — and semantic relationship links: every internal link carries a conceptual bridge. Produces native Dutch or English; regulated clients get a mandatory compliance disclaimer. Rewrites target the exact criteria Quality failed.
Scores every draft 0–100 against the Signal Clarity rubric v2 below (weights configurable per client). Bare links are a hard fail; regulated clients get a hard compliance check. Runs a contradiction check against the live corpus — severe conflicts block the draft. Still failing after max attempts → escalated with one-click resolution.
Verifies robots.txt allows all six AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Googlebot, Gemini-Bot, Bingbot), enforces the symmetry gate (JSON-LD must exactly match the rendered page), publishes as a hidden post, requires a plugin webhook confirmation, verifies the live page renders as static HTML, regenerates the clustered sitemap + llms.txt, pings IndexNow and Search Console.
Weekly rankings, GA4 traffic, AI-bot crawls and per-engine appearance across all five engines — the client-facing Visibility and Link Rate scorecard, query ownership and whitespace, hidden-post traffic thresholds, and the decay watchlist: pages scored 0–100 for health, flagged only after two consecutive low reports.
Rewrites intros, extends FAQs, reinforces internal links and refreshes facts on flagged pages, republishes them, and feeds new content gaps and whitespace queries back to Research — closing the loop.
Structured JSON handoffs with PASS / FAIL / NEEDS_REVIEW / ESCALATE_TO_HUMAN statuses, independently triggerable stages, configurable thresholds per client, multi-client state and a central audit log.
Deep intake — company description, tone, brand rules, target audiences, NL/EN, regulated-industry flag — drafted into a brand profile alongside a site crawl. Nothing is written until a specialist approves it.
40–100 intent-grouped, funnel-staged prompts generated from the profile, specialist-approved, then shown read-only to the client — so they catch missing product lines before tracking starts.
Every prompt checked three times per engine; Visibility, Link Rate and Share of Voice with a 4-week rolling average against the frozen baseline. A token-gated, printable web report — with an anonymised demo mode for sales calls.
A per-client dashboard behind its own link: the Visibility scorecard, content inventory, the latest report, and exactly two client decisions — approve/revise/reject drafts, and make a hidden post visible. It can never reach another client's data.
The operator console sits behind a staff session; the client portal and web report carry their own scoped tokens. Brand identity is one config object — white-label ready.
Each published page scored 0–100 on citation status, ranking, traffic, age, factual staleness and competitive displacement — queued for the next refresh cycle only after two consecutive low reports. Nothing acts on a single observation.
What makes content citable by AI engines — every article is scored before it can go live. Weights are configurable per client.
| Criterion | Points | Check |
|---|---|---|
| Direct answer format | 10 | Clear answer to the query within the first 150 words |
| Entity density | 10 | ≥ 8 named and defined entities |
| Fact density | 10 | ≥ 5 verifiable statistics with named sources |
| FAQ section | 10 | Mandatory — ≥ 3 likely follow-up questions with direct answers |
| Structured answers | 10 | Q&A blocks, numbered lists, definition blocks |
| Schema readiness | 10 | Article/BlogPosting + FAQPage + Author JSON-LD |
| Unique Information Delta | 10 | An angle competitors are not covering |
| Word count | 10 | ≥ 2,000 words of expert-level content |
| Semantic relationship links | 10 | Every internal link explains how the two pieces relate (hard requirement) |
| Topical coherence | 10 | Article belongs to a cluster and links stay inside it |
DOM ↔ JSON-LD parity is enforced separately by the Publish symmetry gate — a mismatch holds the article back before it ever goes live.
Three gates keep specialists in control without slowing the machine down: the brand profile and the content plan require specialist approval before production starts; drafts can require client review before publishing (configurable per client, now surfaced in the client portal); the performance report requires specialist sign-off before optimization runs. Anything the agents can't resolve raises an ESCALATE_TO_HUMAN into the escalation queue.
The client-facing dashboard connects over a small authenticated REST API (per-client x-api-key). The operator console runs behind a staff session; the client portal and web report carry their own scoped tokens:
GET /api/plugin/published → published content metadata (URL, title, schema, visibility) GET /api/plugin/performance → rankings, per-engine citations, traffic, whitespace, baseline GET /api/plugin/prompt-set → the approved prompt set, read-only for the client GET /api/plugin/notifications → pending traffic-threshold notifications for the client POST /api/plugin/settings → client settings push (keywords, niche, competitors, voice) POST /api/plugin/content-decision → client approvals (approved / rejected / revision requested) POST /api/plugin/visibility-decision → make a hidden post publicly visible, or keep it hidden POST /api/plugin/publish-confirmation → webhook: the plugin confirms a post is live
The engine, orchestration, gates, scoring, auth, portal and APIs are fully implemented and covered by an automated end-to-end test suite. Every external service (Google Ads, DataForSEO, Search Console, GA4, Ahrefs, WordPress REST, IndexNow, the writing LLM, and per-engine citation checks) sits behind an adapter interface with deterministic mocks, so the whole system runs — and can be demoed — without credentials. Swapping a mock for a live integration is a one-file change per service.
The interactive demo runs the real agents entirely in your browser: onboard a client, run each stage, approve plans, watch the quality retry loop, publish, open the baseline visibility screen, see a citation drop get flagged and optimized, and read the shareable weekly report. Nothing leaves the page.