Bank Compass

Published 2026-09-07

Four of Our Card Pages Told You We Could Not Verify Data We Already Had

On 21 August we wrote the editorial analysis for all 41 cards we track. On 22 and 23 August we verified the per-category earning rates for those same 41 cards. Nobody went back to the prose. For two weeks, four pages told readers to go and look somewhere else for a figure that was already further down the page.

Key takeaways

  • Four card pages — Chase Sapphire Preferred, PNC Cash Rewards, TD Cash and U.S. Bank Altitude Connect — stated that our catalog had no verified rewards data. It did, verified one or two days after those sentences were written.
  • The cause was ordinary and boring: prose and data live in different files on purpose, and updating one does not touch the other.
  • Every automated check we run passed the whole time. Type checking, linting, 457 unit tests and a full production build have nothing to say about a sentence that has quietly stopped being true.
  • The fix is a test that compares what the prose claims about our data against what the catalog actually holds. It now runs on every commit.
  • We are publishing this because our editorial policy says corrections are made in public, and a policy nobody ever tests is decoration.

What the pages said, and what was actually in the catalog

Every product page on this site carries an editorial section: our reading of what the verified figures mean, kept deliberately separate from the figures themselves. Those sections were written on 21 August 2026 for all 41 credit cards we track.

On 22 and 23 August we ingested a new field for the same 41 cards — the per-category earning rates, each with the issuer page it came from and the date we read it. That is the work that made the rewards calculator possible. What it did not do was change a single word of the analysis written two days earlier.

On four cards, the analysis had said the rewards were unverified. That had been true when it was written. It stopped being true almost immediately, and stayed published until 6 September.

What the page told the reader, against what the catalog held
CardWhat the page saidWhat we actually had
Chase Sapphire Preferred“the one whose rewards structure we have not been able to verify”5x, 3x, 2x and 1x rates, verified 22 Aug
PNC Cash Rewards“our catalog has no verified rewards summary for it”4% fuel, 3% dining, 2% groceries, verified 23 Aug
TD Cash“no confirmed earning structure for it”3% and 2% on chosen categories, verified 23 Aug
U.S. Bank Altitude Connect“records the cap without the exact figure”The $1,000 quarterly cap, with its figure
What the page told the reader, against what the catalog held

Why this is worse than publishing a number that has aged

A stale figure misinforms you. This did something different and, we think, worse: it told you this site could not help you with the single thing you came to the page for, and sent you off to the issuer to find it — while the answer sat a few hundred pixels further down the same page, sourced and dated.

The whole proposition of Bank Compass is that every rate, fee and cap links to where it came from and when we read it. A page that understates its own data is not a small blemish on that promise. It is the promise failing in the direction nobody checks, because a site claiming to know less than it does does not look like it is cutting corners.

Every check we run was green the entire time

This is the part worth being precise about, because it is the part that generalises. Nothing was broken. Type checking passed. The linter passed. All 457 unit tests passed. The production build passed. The accessibility sweep across all 155 pages passed.

None of them could have caught it. Every one of those checks asks whether the code is correct. None of them asks whether an English sentence about the data is still true of the data. Between those two questions is where this class of error lives, and it is not a small gap — we had already been bitten through it once, in September, when thirty figures typed into our bank analyses went stale after a data refresh and nothing complained.

That earlier incident produced a test that checks every number asserted in our prose still exists in the catalog. It did not occur to us at the time that a claim about the *absence* of data could rot exactly the same way.

The fix, and why it is a test rather than a promise

We could have corrected the four pages and resolved to be more careful. We have some evidence about how well that works: this is the second time the same structural gap has produced a published error in a month.

So the correction ships with a test. For every card where the catalog holds verified earning rates, it reads the editorial prose and fails the build if that prose claims the rates are unverified. The same check covers caps. It runs on every commit, and it cannot be satisfied by remembering to look.

Writing it took some care in one respect worth mentioning, because it goes to the heart of what this site is for. A page should say when a figure is missing — that rule is why the two Capital One student cards in our lineup carry no APR today and say so plainly rather than quietly filling in a plausible number. The test had to catch the false claim without making the honest one impossible. Its first version failed that: it flagged a Bank of America page for correctly noting that relationship-tier bonuses are not something we verify, and then flagged those same two student cards for correctly saying we have no APR for them. Both patterns were narrowed until only the wrong sentences failed.

What changed on the four pages

Each analysis was rewritten around the figures we hold. Chase Sapphire Preferred now sets out the 5x, 3x, 2x and 1x rates and says which part remains unverified — the issuer's own summary line, not the rates. PNC Cash Rewards leads with the 4% on fuel, the highest fuel rate in our lineup, and the shared annual cap that decides what it is worth. TD Cash explains the self-select structure. U.S. Bank Altitude Connect states the $1,000 quarterly cap and what it puts a ceiling on.

In the course of that rewrite we caught three sentences of our own, written the same afternoon, converting points into dollars. Point redemption value is not a field this catalog verifies, so those sums were resting on a number we do not have. They now stop at the points, and say why.

Why publish this at all

Nobody wrote in. No reader was harmed in a way we can identify, and the four pages have been quietly correct since 6 September. We could have said nothing and the error would have left no trace outside our own commit history.

Our editorial policy commits to correcting errors at the source of the data so the change propagates everywhere at once, to moving the verification date so the page shows it was re-checked, and to recomputing any ranking a correction disturbs. A commitment like that is worth exactly as much as the first time it costs something to keep.

If you find a figure on this site you think is wrong, the contact page reaches a person. That is the other half of the same policy, and it works better than our automated checks did here.

Read how we source, verify and correct figuresThe rules this page was written under: where every figure comes from, how often it is re-checked, and what happens when one of them turns out to be wrong.

Frequently asked questions

Were any of the published figures themselves wrong?

No. The rates, fees and caps in our catalog were correct and correctly sourced throughout. What was wrong was the editorial text describing whether we held them — it said we did not, when we did.

How long were the four pages wrong?

From 22 and 23 August 2026, when the earning rates were verified, until 6 September 2026, when the prose was corrected. Roughly two weeks.

Could this happen to other pages on the site?

The specific failure — prose claiming rewards or caps are unverified when the catalog holds them — is now covered by an automated test on every commit. The general pattern, where an English sentence about our data quietly stops being true, is harder to eliminate. We add a check each time we find an instance rather than relying on remembering.

Why do the prose and the data live in different files?

Because they are different kinds of claim. Every figure in the catalog carries the URL it came from and the date we read it; an editorial judgement has no primary source to cite and would corrupt that structure if it were stored alongside. The separation is deliberate and we would make it again — it is what lets a data refresh rewrite the whole catalog without touching a word of opinion. This incident is the cost of that design, and the test is how we pay it.

Run the numbers

This guide explains the concept. These put your own figures on it.

Free and no sign-up, on financeinyourpocket.com — our sister site.

The content provided on this site is for educational and informational purposes only and does not constitute financial, legal, or tax advice.