`ignoreBuildErrors: true` kept the type checker quiet. Turning it off found twelve product bugs.

I ran a three-lens assessment in parallel: content/SEO, design/UX, architecture, all against live GA/GSC telemetry. I expected the top priority to come back as something technical: a crawl block, a canonical mismatch, schema markup gaps on the money pages. What I saw converge across all three lenses was fabricated trust signals.

That convergence is why B-092 went from brainstorm to promoted phase the same day it was logged. One lens flagging fabricated trust signals is a hypothesis. Three independent lenses flagging it against live search telemetry is a sequencing instruction.

Phase Q existed because of that finding. The calculator money pages are YMYL. Google holds financial advice to a stricter quality bar than informational content, and the ranking gap wasn’t going to close with new content or backlink acquisition. It was going to close by removing what was actively signalling dishonesty to quality evaluators. That became Q.0.

What fabricated trust signals look like on a calculator site

Not invented expert bios. Not fake testimonials. On a UK financial calculator site, fabricated trust signals are more mundane and harder to catch on first review:

  • Stale rate data presented as current: mortgage rates or stamp duty thresholds from a prior tax year, no date qualification, no “as of” framing
  • “Up to date” or “verified” language on content that hadn’t been touched in months
  • Implied editorial authority (review language, confidence phrasing) with no named reviewer behind it

Each of these tells Google’s YMYL evaluators that a page is claiming trustworthiness it hasn’t earned. The claim isn’t loudly false. It’s quietly incoherent. That incoherence is detectable, and on YMYL money pages it maps directly onto quality penalty risk.

Q.0 was the integrity sweep. I reframed stale rate articles explicitly: “based on rates as of [date]” instead of implied-current. Trust signal language was either substantiated or cut. I audited the money calculators for implied claims they couldn’t back.

Out of scope for Q.0: adding trust signals, building E-E-A-T infrastructure, internal link equity. Those came next.

Why the deletion sprint ran before the addition sprint

Q.1 shipped the same day as Q.0. It plumbed link equity from the 48-article corpus into the money pages, plus named-reviewer E-E-A-T on the calculator pages themselves. The four money calculators had been internal link dead-ends: zero inbound links from the article corpus, zero engineered second pageview. Q.1 closed that gap.

Named reviewers and engineered link paths are genuine quality improvements. They should move rankings. But they land differently depending on what else is on the page. Adding a named reviewer to a page that still has unsubstantiated implied-current rates doesn’t improve signal coherence. It compounds the incoherence. You’re asking Google to weigh a legitimate E-E-A-T signal against a fabricated one in the same document.

Fabricated signals don’t coexist neutrally with genuine ones. They discount them. The common failure mode, and the assumption underlying most YMYL content strategies, is the inverse: that adding enough legitimate signals will eventually outweigh the problematic ones. That’s not how quality evaluators work. You don’t accumulate your way past incoherence.

Q.0 had to run first so that Q.1’s additions landed on cleared ground.

Q.2a: the type errors masking product correctness

Q.2a wasn’t in the Phase Q plan at the outset. I hit it during the type gate work.

next.config.mjs was running with typescript.ignoreBuildErrors: true. The repo had no typecheck script and no CI beyond a weeks-red Playwright workflow. strict: true in tsconfig was decorative: the setting was present, the build disregarded it on every deploy.

Removing ignoreBuildErrors surfaced twelve masked product errors. Twelve is not a corner case; it’s structural. Each masked error is a divergence between the deployed product’s behaviour and what the type system would have enforced. On a site where the product is the calculation, where a wrong output on a stamp duty or mortgage figure is a direct quality signal, masked type errors sit in the same category as stale rates: they produce outputs that can’t be trusted.

All twelve were fixed. A Quality Gate CI step now blocks the build on type errors. That was the structural close of Phase Q: integrity sweep, substantiated signals, correctness infrastructure. In that order.

The three-lens assessment method

A single-lens content/SEO audit would likely have led with link equity and content gaps. Both are correct findings. Neither is Q.0.

Convergence across three independent lenses running against the same GSC telemetry is a stronger prior than any one lens reaching the correct conclusion. When all three return fabricated trust signals as the primary drag, the sequencing isn’t a judgment call. It’s the output. B-092 promoted same day because the assessment wasn’t ambiguous.

The parallel three-lens approach will be the default for future phase planning on this site. One lens produces a hypothesis. Three produce a phase.

What Phase R is, and why it came after

Phase R shipped the same day as Phase Q: R.1 and R.2, the carry-your-numbers feature. Mortgage and stamp duty calculators now hand the property price between each other via ?price=; the useCarriedNumberParam hook reads the carried value on mount and pre-fills the destination. An insight panel (“Where £X sits”) shows the figure in context.

R.1 and R.2 are engagement depth: the cross-calculator journey is the kind of second-pageview path Q.1’s link equity work supports. But R wasn’t the right first move. Building cross-calculator engagement into pages with fabricated trust signals means directing user journeys through the quality-penalty zone. You fix the zone first.

The sequencing held: integrity sweep (Q.0) → substantiated signals (Q.1) → correctness infrastructure (Q.2a) → engagement depth (R.1+R.2).

The finding

The fastest YMYL ranking gain available to these pages wasn’t new content. It wasn’t backlinks. It wasn’t even the named reviewers or the internal link network, both of which mattered and both of which shipped.

It was removing the fabricated trust signals that were discounting the genuine ones.

I established this via the three-lens assessment before any code shipped. The phase structure reflects the assessment output directly: Q.0 was the first shipment, not a later cleanup pass. That’s the correct sequencing when the convergence signal is clear: execute the move that removes the biggest signal drag, not the one you’d prefer to start with.

Clean the floor first.

All writing