Every number now shows its receipts
Esta entrada solo está disponible en inglés por ahora.

Most SEO dashboards fail quietly. A ring says 60% indexed, a report says 100%, and nobody can explain the difference. A comparison shows −34% because the sync happened to miss a week. An "undo" button forgets what it undid.
We just finished a five-phase rebuild of the indexsubmit workspace with one rule: a number that can't prove itself doesn't get displayed.
One coverage number, everywhere
Your monitored URLs now have exactly one classification — indexed, not indexed, unknown, checked-but-unverifiable, or not checked yet — computed by a single shared module with one denominator rule. The overview ring, the daily trend, the traffic analysis, and your client reports all read the same source, so "12 of 20" means 60% on every surface that shows it (each surface reads its own snapshot in time, but the rule never differs). No more dueling denominators.
A failed check never erases what you already knew. If a URL was indexed yesterday and today's check errored, you still see "indexed" — with a small flag telling you the verdict may be stale. "Checked but no verdict" and "never checked" are different rows, because they need different actions.
Comparisons that explain themselves
Week-over-week and year-over-year comparisons are only shown when the data syncs can prove they covered every day of both periods. Otherwise you get the reason: "sync history incomplete", or "comparison period incomplete (missing 2026-09-14 +3 more)". A percentage over holes is worse than no percentage.
An inventory that scales, a drawer that explains
The URL table now runs entirely on the server — search, state filters, sorting, and pagination all happen in the database. On a seeded 50,000-URL tenant, deep pages measured in single-digit milliseconds at the query layer. Click any URL and a drawer shows the full inspection record, its last ten state changes, related alerts, and a "request recheck" button that queues through the same quota system as the daily checks.
Undo that remembers
Dismissing a mention is undoable, and the undo restores the real previous state — if something else changed the row since, the undo tells you instead of stomping over it. Tag removal offers a one-click undo too. Destructive actions (revoking a client report link, unlinking GA4, deleting keywords or groups) ask first.
Reports your client can read
Client reports are now a site-level page. Choose live data or a fixed period; the report labels which one it is, and fixed-period reports state their coverage change in percentage points and call out when your monitored inventory grew mid-period. Every alert carries a suggested action. The share link is shown once, copyable, and revocable the moment your client relationship does.
And the plumbing
Alerts link to their evidence — a rank alert opens the exact keyword and day, an index-loss alert opens the URL's drawer. First-run setup shows live progress instead of a spinner. The workspace got one compact header with a coverage badge and a site switcher. Everything responds from 375px up, both color themes were contrast-audited by script, and new interface copy ships in English and Chinese.
Full details live in the changelog. The short version: if a number appears in indexsubmit now, it carries its own receipts.
