fix(compare): correct four stale counts and four wrong prices - #21
Merged
Conversation
Every comparison entry was audited against the vendor's own site, with the
JavaScript-rendered pricing pages driven through a real browser rather than
guessed at.
Counts left over from when TablePro shipped 18 databases. Postico promised
"Postgres plus 17 other databases" and named five engines "and 13 more";
HeidiSQL named five "plus 13 more". Both read as 18, on pages whose own
comparison table said 25 two rows below.
postico.description five named + 13 -> + 20
postico.verdict Postgres + 17 -> + 24
postico.ogPunchline Postgres + 17 -> + 24
heidisql five named + 13 -> + 20
Prices that contradicted their own entry. The OG card is generated from its own
fields, so it drifts silently from the page it advertises — and nobody sees an
OG image until it is already being shared.
postico.ogCompetitorMetaHtml $40 -> $69 (entry said $69/$99 throughout)
datagrip.ogCompetitorMetaHtml $100 -> $99 (entry said $99 throughout)
Prices now stale against the vendor, both read off the rendered page:
datagrip $9.90/mo -> $10.90/mo jetbrains.com/datagrip/buy
navicat $1,299 perpetual -> $1,599 navicat.com/en/store/navicat-premium
Postico's $69 personal (3 devices) and $99 per device commercial were checked
against eggerapps.at and are correct as written. Beekeeper's $108/yr Indie is
correct: their page renders $9, $14 and $18 per month.
DBeaver's desktop tiers are NOT verified. Their buy page renders prices only
behind an async quantity selector, and the figures that do render belong to Team
Edition roles. "Free / from $99/yr PRO" is left exactly as it was rather than
replaced with a guess.
Two guards so this cannot rot back:
- Relative counts must total 25. "plus N more" has to be re-derived every time
the driver count moves and nobody remembers to, which is how four of them
ended up describing an app that no longer exists. Scoped to the sentence,
because Postico's verdict names Postgres twice and counting the whole string
turns a correct 25 into a false 26.
- Any price on an OG card must appear elsewhere in the same entry, which is
exactly the check that $40 and $100 would have failed.
The four affected OG images are regenerated.
This was referenced Aug 17, 2026
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.
Every comparison entry audited against the vendor's own site. The JavaScript-rendered pricing pages (JetBrains, DBeaver, Navicat) were driven through a real headless browser rather than guessed at.
Counts left over from the 18-database era
Postico promised "Postgres plus 17 other databases" and named five engines "and 13 more". Both read as 18 — on a page whose own comparison table said 25 two rows below. Same for HeidiSQL.
postico.descriptionpostico.verdictpostico.ogPunchlineheidisql.longDescriptionPrices that contradicted their own entry
The OG card is generated from its own fields, so it drifts silently from the page it advertises — and nobody sees an OG image until it's already being shared.
postico.ogCompetitorMetaHtml$40$69— entry said $69/$99 throughoutdatagrip.ogCompetitorMetaHtml$100/yr$99/yr— entry said $99 throughoutPrices now stale against the vendor
Both read off the rendered page:
$9.90/mo$10.90/mo$1,299 perpetual$1,599 perpetualConfirmed correct, left alone
Deliberately NOT changed
DBeaver's
Free / from $99/yr PROis unverified. Their buy page renders prices only behind an async quantity selector; the figures that do render ($810/$410/$255/$155/$82) belong to Team Edition roles, not the desktop tiers. Rather than substitute a guess, it's left exactly as it was — flagging it here so it's on the record as the one open item.DataGrip's
$99 first year / $79 second / $59 from year threeis likewise unverified — JetBrains' page only exposes monthly. Given monthly rose from $9.90 to $10.90, the annual figures may have moved too.Two guards so this can't rot back
Relative counts must total 25. "plus N more" has to be re-derived every time the driver count moves, and nobody remembers to — which is how four of them ended up describing an app that no longer exists.
Scoped to the sentence, because Postico's verdict names Postgres twice ("excellent for Postgres alone. TablePro covers the same ground for Postgres plus 24 other") and counting the whole string turns a correct 25 into a false 26. The first version of this test failed on exactly that and caught its own bug.
Any price on an OG card must appear elsewhere in the same entry — precisely the check
$40and$100would have failed.Verification
Four affected OG images regenerated and visually inspected — Postico's now reads
$69and "Postgres plus 24 more", with its25 DATABASESstat finally agreeing with its own punchline.