Scenario · The bigger jobs
The crawl found four hundred problems
A full crawl comes back with hundreds of findings and somebody has to decide what matters.
A crawl that comes back with hundreds of findings is not a to-do list — most of those findings are the site working exactly as intended, and triaging all of them by hand takes a day and produces a different answer depending on who's doing it. This sorts every finding into fix, safely ignore, or needs a person to decide, each with a stated reason, so the actual work is a short, real list instead of a wall of noise nobody has the stomach to read.
What to ask for
See it work
A real run of Crawl-finding disposition:
PASS 1 fix · 0 needs-human · 3 dismiss
[info] 3 of 4 finding(s) (75%) need no work — each with a stated reason. That is the half of crawl triage that was being done by hand
report: ./out/crawl-finding-disposition-crawl-finding-disposition.html
csv: ./out/disposition.csvThe captured report, exactly as a run hands it to a client —open the full report ↗
A crawl’s output is not a to-do list, which is the mistake that makes crawls useless. Four hundred findings triaged by hand takes a day and produces inconsistent decisions; most of them are the site working as designed.
- Get the URL set right first. The sitemap-and-robots read establishes what the site declares. A crawl scoped differently from the declared site produces findings about URLs nobody intended to publish, which is noise that looks like signal.
- Run the crawl. The deep crawl is the data-gathering step and it is the cheap part. Resist reading it directly — a raw crawl export is where triage goes to die.
- Disposition every finding before touching one. The crawl-disposition pass classifies each as fix, dismiss, or needs-human, with the reason stated. The classification turns on what kind of URL it is: noindex on a paginated archive, a tag page or a thank-you page is correct behaviour; the same noindex on a service page is a page removed from Google. Duplicate headings and crawler spelling flags are dismissed with a reason, because they are hand-dismissed nearly every time.
- Read the needs-human queue, and only that. This is the actual work product — the findings where the right answer depends on what the page is for. It should be a short list; if it is not, the disposition rules need tuning rather than the site.
- Sanity-check the fix queue against the pages that matter. Grade on-page SEO for the practice’s top service pages directly. A crawl finding on a high-value page outranks fifty on archive pages, and crawl output is not ordered by commercial importance.
- [manual] Work the queue, routing each item to its own procedure. Broken links, redirects, missing titles, thin content — each has a scenario. This one hands them over.
- Re-crawl and diff, not re-crawl and re-read. The value of the second crawl is what changed.
Dismissed-with-a-reason is the deliverable
A dismissed finding with a stated reason can be reviewed and can be reversed. A finding that was simply never looked at is indistinguishable from one nobody noticed. The disposition pass exists because that distinction is the difference between a crawl that gets run again and one that does not.
What this does not cover
Fixing anything. This ends with a queue, not a repaired site — each fix then follows its own procedure. It also cannot tell you a finding matters commercially: a noindex on a page nobody should index is the site working correctly, and a noindex on the practice's highest-value service page is a catastrophe, and the crawler reports both identically.