Repository navigation
seo: put the numbers back in 220 product snippets, and stop a bench flap from 404ing the best-converting page - #2625
Merged
Conversation
…from 404ing the best converting page, retire the second dead answer Third audit. Two of these are mine. #2620 moved the registry one-liner in front of the measured lead in the product description. Registry descriptions run to a median of 166 characters against a 155 cap, so capSnippet dropped the lead entirely and every one of the 220 product snippets lost its numbers: /products/invo went from "Invo ranks #7 of 104 on trading builder fees collected at $12.8K, #8 of 11 on Crypto trading app iOS App Store ratings at 4.23x (p50, 24h)." to a vendor blurb with nothing measured in it. The vendor's own SERP result already says what the product is; the ranks are the only thing ours carries that theirs does not. A one-liner under 80 characters still leads; a longer one follows the ranks, trimmed to its first clause. #2618 turned the compare thin gate from noindex into notFound. That is right for a pair that structurally has nothing to compare and wrong for one whose data dipped for a render window: /compare/fomo-vs-invo sits at exactly two live shared benches and earns 36 of the site's 289 clicks, so one flapping bench would have 404ed the best converting URL on the property. The 404 now keys on the number of SHARED benches, which is stable, and a live-count dip goes back to noindex, which recovers. The sitemap's 3/4 buffer in adhoc-pairs.ts stays exactly as written: it exists for this flap and its comment says so. The audit proposed lowering it to match the render floor; that would have removed the buffer precisely when crossing it became expensive. And the same retired-bench class as yesterday, second instance: /answers/polymarket-vs-kalshi-fees references pm-fee-comparison too, 404s too, and was advertised by the same hub. The filter added yesterday works; the slug was missing from the set. Its YAML also hand-types "flat 2%", "roughly $0.07" and a "$0.20 / $0.80" crossover, so it must not be revived as written. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L4rjxemTvgRwrCG6D2iK5D
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Third audit. Two of these are mine.
#2620 took every number out of 220 product snippets
Moving the registry one-liner in front of the measured lead looked right. Registry descriptions run to a median of 166 characters against a 155 cap, so
capSnippetdropped the lead entirely:The vendor's own SERP result already says what the product is. The ranks are the only thing ours carries that theirs does not. A one-liner under 80 characters still leads; a longer one follows the ranks, trimmed to its first clause.
#2618 would have 404ed the best-converting page on the site
Turning the compare thin gate from noindex into
notFound()is right for a pair that structurally has nothing to compare, and wrong for one whose data dipped for a render window./compare/fomo-vs-invosits at exactly two live shared benches and earns 36 of the site's 289 clicks (954 impressions, CTR 3.77 %, position 3.18). One flapping bench and it would have gone to 404.The 404 now keys on the number of shared benches, which is stable; a live-count dip goes back to noindex, which recovers.
I did not take the audit's proposed fix here. It suggested lowering the sitemap threshold in
adhoc-pairs.tsfrom 3/4 to 2/3 to match the render floor. That buffer exists precisely for this flap — its comment says so — and removing it right when crossing it became expensive is the wrong direction. The floors differ on purpose; what was wrong was the consequence of crossing.The second dead answer, same class as yesterday
/answers/polymarket-vs-kalshi-feesreferencespm-fee-comparisontoo, 404s too, and was advertised by the same priority-0.9 hub. The filter added yesterday works — the slug was simply missing from the set. Its YAML also hand-types "flat 2%", "roughly $0.07" and a "$0.20 / $0.80" crossover, so it must not be revived as written.pnpm typecheckclean,pnpm lint0 errors,pnpm test305 pass,pnpm validate231 specs.🤖 Generated with Claude Code
https://claude.ai/code/session_01L4rjxemTvgRwrCG6D2iK5D