SYS/CASE
Digital product creation · SEO · AI engineering · in production
SEO & GEO audit — the internal tool that analyses Google and AI engines
By Mathieu Milon, AI engineer growth & CRO · Published
This is not a brochure site or a public SaaS. It is the Django backend the studio uses to audit classic SEO (crawl, keywords, SERP) and GEO — Generative Engine Optimization: a brand's visibility in ChatGPT, Gemini, Perplexity, Claude answers. The same apps attach to RankyDocky.
SEO + GEO · in production
Context
On SEO engagements, gluing Screaming Frog, Search Console, a spreadsheet and a SERP tool no longer holds once you also need to know what AI engines say about the brand. The studio therefore built its own audit engine — two Django apps, seo_audit and geo_audit — to analyse client sites and review generative answers.
Problem
A classic crawler sees tags, not meaning. It also does not see whether ChatGPT cites a competitor instead of the client, or whether Gemini hallucinates an offer. We needed a semantic audit pipeline (BERTopic, spaCy) and visibility tracking across several LLMs, async, with a dashboard — without making it a public product.
Approach
Same family of stack as RankyDocky (RankyDocky is in fact a fork of it): Django, GraphQL, React, Celery for long jobs (30 to 120 s), SSE for progress. Two distinct domains, one backend.
SEO audit
Crawl, content parsing, performance metrics, keywords, rank tracking, SERP preview, link analysis, scheduled reports. The semantic engine (BERTopic, spaCy, HuggingFace) goes further than meta tags: topics, clustering, recommendations.
GEO audit
Visibility on ChatGPT, Gemini, Perplexity, Claude and Google: mentions, sentiment, position in the answer, trends, competitors, brand-hallucination detection. This is the dashboard the marketing mockup shows in SVG — illustrative, not a client KPI.
RankyDocky integration
RankyDocky was forked from this tool. The SEO/GEO GraphQL schemas are already in its backend, commented out. Reattaching the apps is copying seo_audit and geo_audit, uncommenting the schema, wiring Celery — without migrating authentication. CRM and audit then share the same tenant.
Tools
- Django · GraphQL
- BERTopic · spaCy
- Celery · SSE
- React
Where AI comes in
In the craft, not only in the code: topic modeling, semantic scoring, questions to LLMs for GEO, reports. GSD agents also speed up the making of the tool itself — I automate my audit work, I do not sell a chatbot.
Results
In production on client analyses. Not a commercial SaaS, so no usage metric to display — the deliverable is the audit, not a subscriber count.
SEO
crawl, keywords, SERP, links, reports
GEO
5 AI engines tracked · mentions · sentiment
Fork
stack reused by RankyDocky
Takeaway
- 1
Instrument your own craft: an SEO consultant who ships an audit engine no longer waits for the market tool to see what LLMs say about a client.
- 2
GEO is not glued-on SEO: you have to query the engines, detect hallucinations, follow a trend — another data model.
- 3
An analysis backend and a CRM can share the stack. RankyDocky does not have to rewrite the audit: it just has to reattach the apps.
Visuals
Illustrative dashboard preview — mockup, not a product screenshot.
Related expertise: SEO, SaaS, AI engineering.
A similar project?
Let's talk about your next engagement
A funnel, a product or an extract to analyse: book a 30-minute call, written scoping within 48h.