Varshal Nirbhavane SEO & CRO — Case File
Method demonstration · Not a client, not a competitor

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.

Findings

Nine observations, in fix order.

Every row below was directly observed; nothing is inferred from tooling I can't show.

Prioritized fix register — mutualofomaha.com, observed 2026-08-04
#FindingImpact / effort
1Zero 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
2A 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
3Sitemap-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
4Legacy 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
5No 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
6Duplicate 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
7Performance: 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
8No 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
9Neutral 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.