Illustrative case study

A fictional business. The figures are a modelled scenario, not a client result.

Case study · Signal · 8-month engagement

Felspar Bank

Digital bank for freelancers · New York · New York

How a freelancer neobank fixed the crawl traps hiding its best tax and invoicing guides

FLSP.OPN▲ +148% organic account openings
FELSPAR · NEW YORKFLSP.OPN +148% · JUNK.URL -97% · GDE.IDX 41% → 96% · INP.MOB 380ms → 140ms · FLSP.OPN +148%

01 · Pre-market

Google was reading the junk, not the guides.

Faceted help-centre search created 200,000 crawlable URLs, so Google spent its time on junk and missed Felspar's high-intent guides.

Felspar Bank is a New York digital bank built for freelancers: business accounts, invoicing and tax set-asides in one app. Its help centre held some of the best free guidance on quarterly estimated taxes and invoicing on the web. Almost nobody found it through search.

Every filter on the help-centre search produced a new URL, and every URL was crawlable. Googlebot had a finite number of visits to spend on the site and spent most of them paging through near-identical result lists, while new guides waited weeks to be discovered and the ones it did find were slow to respond on a phone.

Where Googlebot spent its visits

Before78% of crawl on junk URLs
After6% of crawl on junk URLs

Share of Googlebot requests to faceted /help/search URLs, from server logs. Green is crawl spent on guides and account pages.

Audit ledger · diagnosis

  1. CRWLCritical200,412crawlable /help/search URLs from every topic × tag × sort × page combination, all 200 OK and self-canonical.
  2. LOGSCritical78%of Googlebot requests in 30 days of server logs went to search-result URLs. The average guide was recrawled every 41 days.
  3. INDXHigh1,086of 1,840 tax and invoicing guides sat in “Discovered / Crawled – currently not indexed”: only 41% were in the index.
  4. LINKHigh5.2average clicks from the homepage to a guide; most were reachable only through a JavaScript search box with no crawlable links.
  5. PROGMedium92%boilerplate overlap across the 50 state tax-deadline pages, which competed with each other instead of ranking.
  6. SCHMMedium0structured data blocks on guides or account pages: no Article, HowTo, BreadcrumbList or BankAccount markup.
  7. VITLHigh380msmobile INP at p75. The help-centre search widget hydrated 410 KB of JavaScript on every single guide.

02 · The trade

Four positions, taken in order.

Built on our Signal plan (technical seo): fix how the site is crawled first, then make every page Google can now reach worth indexing, then make it fast.

Programmatic pages

POS.01

Fifty thin state pages became fifty useful ones, built from data instead of boilerplate.

  • State tax-deadline pages generated from a deadline, rate and form dataset, each with unique figures
  • 120 invoice templates by profession, each with a worked example and a downloadable sample
  • Quality gate: a page publishes only with at least 60% unique copy and a real data table
  • Hub pages per tax topic linking every child page in plain HTML

Crawl budget

POS.02

Close the faceted search to crawlers so Googlebot spends its visits on the guides.

  • robots.txt disallow on /help/search parameters; noindex on the remaining result pages
  • Internal links rewritten to parameter-free guide URLs; 3,400 redirects consolidated
  • XML sitemaps rebuilt to 1,840 canonical guides, split by topic with lastmod
  • Weekly log-file checks to confirm the crawl actually moved

Structured data

POS.03

Tell search engines exactly what each page is: a guide, a how-to or an account.

  • Article with author, datePublished and dateModified on every guide
  • HowTo on step-by-step filing and invoicing guides
  • BreadcrumbList across the help centre to mirror the new topic hubs
  • BankAccount and FAQPage on account pages, validated in Search Console

Core Web Vitals

POS.04

Stop the search widget from blocking every tap on a guide.

  • Search widget loaded on interaction instead of hydrating on page load
  • JavaScript bundle split: 410 KB down to 96 KB on guide templates
  • Long tasks broken up so the main thread yields to input
  • Field monitoring of INP per template, with a 200 ms budget in CI

03 · Trading session

8 months, printed as one trading day.

  1. M1

    MONTH 1 · 09:30

    Opening bell: audit

    Full crawl, 30 days of server logs and a Search Console export. The 200,412 faceted URLs mapped and sized.

  2. M2

    MONTH 2 · 10:15

    Faceted search closed

    Robots rules and noindex shipped on /help/search. Internal links repointed to clean guide URLs.

  3. M3

    MONTH 3 · 11:05

    Sitemaps and hubs

    Sitemaps rebuilt to 1,840 canonical guides. Topic hubs give every guide a crawlable path within three clicks.

  4. M4

    MONTH 4 · 12:00

    Widget deferred

    Help-centre search loaded on interaction; bundle split. Mobile INP falls below 300 ms.

  5. M5

    MONTH 5 · 13:20

    State pages rebuilt

    Fifty state tax-deadline pages regenerated from data; the first twenty go live after the quality gate.

  6. M6

    MONTH 6 · 14:10

    Schema everywhere

    Article, HowTo, BreadcrumbList and BankAccount markup deployed and validated across templates.

  7. M7

    MONTH 7 · 15:00

    Invoice templates

    120 profession-specific invoice templates published. Guide indexation passes 90%.

  8. M8

    MONTH 8 · 16:00

    Closing bell

    Regression alerts for parameters and vitals, a runbook for the in-house team, and a quarter-ahead content plan.

04 · Closing prices

Every symbol closed in the green.

FLSP.OPN▲ good

+148%

Organic account openings

JUNK.URL▼ good

-97%

Crawlable junk URLs

GDE.IDX▲ good

41% → 96%

Guide pages indexed

INP.MOB▼ good

380ms → 140ms

INP (mobile)

Modelled scenario for a fictional business — not a client result. Rankings and traffic are never guaranteed; see our Terms.

FLSP.OPN · Organic account openings

▲ +148%

88145203260M0M1M2M3M4M5M6M7M8
  1. M0 100idx
  2. M1 103idx
  3. M2 109idx
  4. M3 121idx
  5. M4 142idx
  6. M5 168idx
  7. M6 197idx
  8. M7 226idx
  9. M8 248idx

Organic account openings, indexed to the pre-engagement month (100). Lift follows the guides as they enter the index.

Quotation sheet · Google US ranking, M0 → M8

QueryVol/moPrevLastChg
quarterly estimated taxes freelancer12,10038#3▲ 35
invoice template for freelancers9,90027#2▲ 25
business bank account for freelancers6,60019#4▲ 15
self-employed tax deductions checklist5,40046#5▲ 41
1099-nec what to do as a freelancer3,60054#6▲ 48
late payment invoice wording1,900n/r#7▲ new
new york freelance isn’t free act invoice880n/r#2▲ new

n/r: not ranking in the top 100. Modelled positions; volumes are illustrative US monthly estimates.

Closing bell

Get a plan like this

If crawlers are spending their time in the wrong corner of your site, Signal is where we start: logs, crawl paths, index coverage and vitals.

← Back to all case studies