SEO intelligenceEdgelink Technology

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.

live read
LCP4.2 s on mobile — 1.7 s over the good threshold
sampleRotating sample observations from the deterministic audit fixture. All values are sample data.
26
checks per audit
5
score dimensions
1
PDF per cycle
scattered → assembled → indexed

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.

HTTP statusTitlesMetaCanonicalRobotsSitemapJSON-LDHeadingsInternal linksImage altLCPCLSINPSearch ConsoleSERP positionAI analysisPDF report
01 — Play first, sign up later

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.

Instant audit
sample engine

No account · deterministic preview · 26 checks in the real audit

Type a domain and watch the instrument work. This is a deterministic preview of the real pipeline — same stages, same severity model, no crawl.

Crawl
fetch · cheerio
Measure
LCP · CLS · INP
Analyse
schema-validated
Report
A4 · PDF
preview only · not a live crawl
02 — The workspace

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.

Audit record29 Oct 2026 · 11:23 UTC
example-dental-clinic.com / single-page technical audit
sample dataCompleted
AI-assisted score

Weighted across five categories

live
Needs work

4 failed · 6 warning checks
12 prioritised fixes

Technical
68
On-page
82
Content
75
Core Web Vitals
60
Schema
80
mock integrationsai fixture
Critical findings03 shown of 12
  • 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.

Quick wins · under two hours
  • Add a self-referencing canonical using the final https URL.
  • Reduce the hero image weight and preload it from the same origin.
Measured signals
LCP
4.2 s
target ≤ 2.5 s
CLS
0.08
target ≤ 0.1
INP
280 ms
target ≤ 200 ms
PSI
61
target 90+
Report

edgelink-seo-audit-example-dental-clinic-2026-10-29.pdf

6 pages · 232 KBready

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 checks

Status, canonical, robots directives, heading structure, internal links and alt coverage — plus robots.txt and sitemap validation.

Performance

LCP · CLS · INP

Core Web Vitals are compared to published thresholds and attributed to render-blocking and unused script weight.

AI prioritisation

versioned JSON contract

Claude returns a schema-validated breakdown: critical issues, quick wins and fixes ordered by impact and effort.

Client reporting

PDF + delivery log

A branded A4 report rendered from the stored audit, downloadable behind authentication and delivered by notification.

03 — Inside the instrument

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
Signal observatory
TechnicalPerformanceContentSchema
Sample
reading · example-dental-clinic.comillustrative
instrument 02 / live signalspointer-reactive

hover a row to reconfigure the plate

Specimen · Can a search engine get in? live view
robotscanonicalsitemapnoindexentry
26 checks · 5 crawl rules
sample fixturerev 2026.10
04 — The pipeline

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.

01 — Queue

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.

request
↗example-dental-clinic.comqueued

→ audit.create · status QUEUED

→ queue.add("seo-audit-jobs", { attempt: 1 })

→ worker.pickup · waiting

scroll to advance the pipeline
02 — Crawl

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.

crawl · page source200 OK
<title>Northstar Dental · Pune
<meta name="description">…
<link rel="canonical">/services
<h1>missing
<script type="application/ld+json">missing
title
ok
canonical
301
json-ld
0
03 — Measure

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.

field measurements · mobilefixture
LCP4.2s
target ≤ 2.5 s
CLS0.08
target ≤ 0.1
INP280ms
target ≤ 200 ms
PSI61
target 90+

measured against published thresholds · provenance stored with the audit

04 — Analyse

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.

deterministic checks → analysisschema v1.0
9
failing
10
warnings
7
passing
12 prioritised recommendations
each with impact, effort and a verification step
05 — Report

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.

puppeteer · A4ready
EDGELINKtechnical audit
website health report
example-dental-clinic.com
61/ 100
6 pagesA429 oct 2026
WHATSAPP · MOCKEDEMAIL · MOCKEDAUTH-GATED DOWNLOAD
05 — Client reporting

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.
Sample report · 6 pagessample data
EDGELINKTechnical audit
Website health report

example-dental-clinic.com
technical SEO audit

61 / 100
AI-assisted audit score
Prepared for
Northstar Dental
Business
Dental clinic · Pune
Analysis
Claude sonnet
EDGELINK01 · Executive summary

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.

Score breakdown
Technical
68
On-page
82
Content
75
Core Web Vitals
60
Schema
80
Recommendation

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.

06 — From curiosity to client

Three moves. One habit.

Each step turns a visitor into someone with a stored, comparable result — which is what actually makes a retainer defensible.

01 / Curious

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 preview
02 / Convinced

Run 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 audit
03 / Committed

Make 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 schedules

Already 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 workspace
07 — Security & privacy

Built 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.

session · httpOnly · sameSite lax

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.

Ready when your next client is

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