Technical SEO teardown: Mutual of Omaha.
Why this target: a more-than-century-old Omaha institution, deep YMYL (Medicare, life insurance), and emphatically not a law firm — so I can show working method without publicly critiquing a potential employer or its competitors. One caveat before anything else: sites this large accumulate this kind of debt structurally, not carelessly. This is about method, not mockery.
Method: raw HTML via curl, robots.txt, sitemap.xml, SERP checks, Lighthouse 13 lab run (mobile emulation). All observations 2026-08-04. No internal access — the last section lists exactly what that means I can't know.
Nine observations, in fix order.
Every row below was directly observed; nothing is inferred from tooling I can't show.
| # | Finding | Impact / effort |
|---|---|---|
| 1 | Zero structured data on the three money pages checked — homepage, /life-insurance, /medicare-supplement-insurance each contain no JSON-LD blocks at all. For a YMYL insurer, Organization, Product, and FAQPage markup are table stakes for entity clarity — and increasingly for AI answer engines. | High / Medium |
| 2 | A single flat sitemap.xml — no index segmentation by content type, changefreq="monthly" stamped on every URL, and zero lastmod attributes. Google ignores changefreq but rewards credible lastmod; this sitemap tells crawlers nothing about what changed. | Medium / Low — the easiest win here |
| 3 | Sitemap-vs-robots conflict: /life-insurance/whole-life-insurance/v2 is listed in sitemap.xml while robots.txt carries "Disallow: /life-insurance/whole-life-insurance/v2" — the sitemap invites a crawl that robots forbids. Two more near-conflicts exist on trailing-slash variants (fl-disclaimer, digital-fulfillment). | Medium / Low |
| 4 | Legacy robots directives: "Disallow: /medicare/" and "Disallow: /life/" sit in a ~400-line single-block robots.txt while live content runs at /medicare-solutions and /life-insurance — crawl-policy archaeology that nobody has pruned. Requires a log-file check before touching, but almost certainly prunable. | Medium / Medium |
| 5 | No title system on money pages (verified at head level): homepage "Life Insurance, Finance, Medicare from Mutual of Omaha"; /life-insurance "Life Insurance Basics, Coverage, Online Quotes" — comma-separated keyword style, no brand suffix; /medicare-supplement-insurance the same pattern. Some deeper pages do carry "| Mutual of Omaha." Inconsistency this visible usually means no owner. | Medium-high / Low |
| 6 | Duplicate H1s: /life-insurance and /medicare-supplement-insurance each render the same H1 twice (a responsive-template pattern), and the homepage H1 is a single product promo — "Instant Coverage With Guaranteed Whole Life Insurance" — rather than a statement of what the company is. | Low-medium / Low |
| 7 | Performance: Lighthouse mobile lab scored 29, with LCP 6.8s, total blocking time 3,060ms, and a 1.3s server response. Lab numbers under throttling, clearly labeled as such — but 3 seconds of main-thread blocking is a JavaScript problem under any measurement regime. | High / High |
| 8 | No og:image on any of the three pages checked — links shared to Slack, Teams, or LinkedIn render bare. Small fix, disproportionate to how often B2B insurance links get forwarded. | Low / Low |
| 9 | Neutral observation, not a defect: robots.txt has no AI-crawler policy — GPTBot, ClaudeBot, PerplexityBot are neither blocked nor differentiated. In 2026 that should be a deliberate decision either way, not a default. | — / Low |
Verbatim evidence held for each row: response bodies, robots.txt lines, sitemap entries, and the Lighthouse JSON — available in any interview.
What I could not verify from outside — and won't pretend to know
- Field Core Web Vitals: the keyless PageSpeed API was quota-limited on test day; real user data needs CrUX or the owner's Search Console. My lab numbers are directional, not field truth.
- Canonical behavior beyond the three pages fetched — the ones checked were correct and self-referencing.
- Rendered-DOM differences: raw HTML is not what Googlebot renders; a rendering crawl would confirm whether client-side JavaScript changes the picture (finding 7 suggests it might).
- Internal-link depth and orphan rate — needs a full crawl, not a homepage read.
- Sitemap coverage of the /advice/ content library — my extraction suggested it's under-represented, but the file was truncated in analysis, so that stays a suspicion, not a finding.
An audit that doesn't state its blind spots is marketing. This section is the part I'd want a vendor to show me.
What this demonstrates for Berry Law
This is the depth and the format of Phase 01 in the 90-day plan: verbatim evidence, a fix order ranked by impact against effort, honest uncertainty labels, and zero findings that dissolve under one follow-up question. Berry Law's own estate got the same treatment — three domains' worth — before I wrote a word of that plan.