Know what isholding yourwebsite back.
Technical SEO intelligence, automated audits and actionable recommendations — one connected workflow from crawl to client-ready report. No ranking promises, just the signals that actually decide whether you get found.
- 26
- checks per audit
- 5
- score dimensions
- 1
- PDF per cycle
An illustration of eight technical SEO signals — largest contentful paint, heading structure, canonical, structured data, sitemap, image alt text, robots directives and layout shift — assembling into a single indexed page.
Type a domain.
Watch it think.
This is a deterministic preview running in your browser — the same stage names, the same severity language and the same fix format the worker produces. It requires no account and stores nothing. When you are ready for measured data, the button inside hands you over to the real crawl.
Type a domain and watch the instrument work. This is a deterministic preview of the real pipeline — same stages, same severity model, no crawl.
The audit is the product. Not a summary of one.
Score, severity, measured evidence and the exact verification step — on one screen, generated from the stored audit rather than a marketing mock-up. Everything below is rendered by the same components the admin portal uses.
Weighted across five categories
4 failed · 6 warning checks
12 prioritised fixes
- CriticalHeading structure
No H1 element was found on the audited page.
- CriticalStructured data
No JSON-LD block is present, so no rich result is eligible.
- HighLargest Contentful Paint
Mobile LCP is 4.2 s against a 2.5 s good threshold.
- Add a self-referencing canonical using the final https URL.
- Reduce the hero image weight and preload it from the same origin.
- LCP
- 4.2 s
- CLS
- 0.08
- INP
- 280 ms
- PSI
- 61
edgelink-seo-audit-example-dental-clinic-2026-10-29.pdf
Every value above is an assessment fixture, labelled in the UI and PDF. The working product replaces it with the persisted result of a real crawl.
Technical checks
26 deterministic checksStatus, canonical, robots directives, heading structure, internal links and alt coverage — plus robots.txt and sitemap validation.
Performance
LCP · CLS · INPCore Web Vitals are compared to published thresholds and attributed to render-blocking and unused script weight.
AI prioritisation
versioned JSON contractClaude returns a schema-validated breakdown: critical issues, quick wins and fixes ordered by impact and effort.
Client reporting
PDF + delivery logA branded A4 report rendered from the stored audit, downloadable behind authentication and delivered by notification.
Signals first.
Opinions never.
Every finding is tied to something observed: a header, a tag, a measured threshold. Move your cursor over the instrument — it registers the pointer, the same way the crawler registers a page.
- Crawl rules before content
- Vitals against published thresholds
- Structured data and eligibility
- Demand that already exists
hover a row to reconfigure the plate
From a URL to a report, verifiably.
Scroll the job. Each stage writes an event, so the progress bar in the product is database state — not a decorative animation.
A URL enters the queue.
The audit row is written first, then the BullMQ job is submitted with a stable id per attempt. Nothing is queued that the database cannot explain.
→ audit.create · status QUEUED
→ queue.add("seo-audit-jobs", { attempt: 1 })
→ worker.pickup · waiting
The page is read like a crawler.
Fetch and Cheerio extract status, title, meta, canonical, robots directives, headings, links and JSON-LD — with every redirect re-validated against SSRF rules.
External signals attach.
PageSpeed, Search Console and rank data arrive through one adapter switch. In mock mode the deterministic fixtures are used and labelled in the UI and the PDF.
measured against published thresholds · provenance stored with the audit
26 checks become priorities.
Deterministic findings and a schema-validated Claude analysis are merged. Invalid output fails the audit; it never becomes a successful-looking report.
each with impact, effort and a verification step
A report leaves the building.
Puppeteer renders the branded A4 report from the stored audit, page numbers are stamped, and every WhatsApp and email attempt is recorded.
Reports a client can act on.
The PDF is generated from the stored audit — the same values the dashboard shows. Long URLs wrap, recommendation cards avoid page breaks, and every page is numbered.
- Cover & score
- Website, business context, audit id, date and the AI-assisted score.
- Findings
- Critical and important issues, quick wins and the full check register.
- Recommendations
- Finding, fix, impact, effort and the verification step for each.
- Disclosure
- Which integrations were mocked and whether analysis came from Claude.
example-dental-clinic.com
technical SEO audit
- Prepared for
- Northstar Dental
- Business
- Dental clinic · Pune
- Analysis
- Claude sonnet
What the audit found
The site scores 61/100, with 4 failed and 6 warning checks across technical, on-page and Core Web Vitals signals. The highest-leverage fix is compressing and preloading the hero image.
Reduce mobile LCP below 2.5s
Compress and preload the hero image, then serve it in a modern format from the same origin.
Verify: re-run PageSpeed; LCP < 2.5s on mobile.
Three moves. One habit.
Each step turns a visitor into someone with a stored, comparable result — which is what actually makes a retainer defensible.
Play with the instrument
Type any domain into the instant audit. No account, no email — just the stages, a score and the findings the real audit would surface.
Try the previewRun the full audit
Sign in and the same URL goes through the real worker: live crawl, 26 checks, measured signals, Claude analysis and a stored result.
Run a full auditMake it monthly
Attach clients and sites, schedule the audit, and every cycle produces a new report with a recorded delivery attempt for each channel.
See schedulesAlready have a client list? Attach a client, add their site and the monthly schedule produces the next report without anyone remembering to run it.
Sign in to the workspaceBuilt to be audited, not just trusted.
These are implementation facts from this build, not certifications. No compliance standard is claimed and no security guarantee is made.
Crawler locked down
Only http(s), no embedded credentials, private and metadata addresses blocked, DNS answers checked, every redirect re-validated.
Server-side authorization
Every route re-checks the signed session. Client users are scoped by ownership in the query, never by hiding navigation.
Protected automation
Cron routes require a dedicated secret compared in constant time; due schedules are claimed with a conditional update.
Typed trust boundaries
Every request body is validated with Zod on the server. AI output is schema-validated before storage — invalid output fails the audit.
Secrets stay server-side
Database, Redis, Anthropic and notification credentials live in environment variables and are never bundled into client code.
Run the audit.
See the signals.
Start with a single-page technical audit, inspect the measured evidence, and deliver a report with the fixes ordered by impact and effort.
mock mode by default · live Claude opt-in · auth-gated reports