Smallest body text is 9px (base ~18px). below the ~16px readable floor.
fix Keep body copy ≥15-16px; reserve sub-13px for fine print only.
saas · Aug 9, 2026
30/100 Sparse
Scores above 18% of 1,252 multi-step funnels we have measured. Among the 959 saas funnels in that group, above 10%.
Coverage is detection coverage, not a verdict — it counts the conversion tactics we could prove are present, out of the 11 that apply to a saas funnel.
Measured by Roentgen 1.20.1, one of our versioned rulesets. A capture is read once and its measurements freeze there, so the stamp says which ruleset read this one.
Walk 30 links seen, 17 walkable, 1 matched, and we walked 2 pages.
the entry page’s own title, headline, buttons and prices — quoted, never paraphrased
measuredextracted directly from the live page. a fact, not an opinionSelf-hosted Personal Finance Tracking
xpenser is an open-source, self-hostable personal finance tracker for income, expenses, dashboards, multi-currency reports, API access, MCP, and Telegram workflows.
Self-hosted personal finance tracking with xpenser
Product-led paths for finance tracking
Real screens, not a placeholder finance app
API access is a product surface
Personal finance workflows first
Learn Cleverbrush from a working app
Connected entry points
Start hosted, then self-host when ready
Self-hosted personal finance tracker+7 more, not shown
structural bands identified on this funnel, cropped from its own capture
measuredextracted directly from the live page. a fact, not an opinion
conversion tactics we could prove are present, with the on-page text that evidences each
measuredextracted directly from the live page. a fact, not an opinionemail, password, confirmPassword
API REFERENCE
used by
applicable tactics we checked for and did not see on any step we reached
measuredextracted directly from the live page. a fact, not an opinionAbsence is a measurement, not a recommendation: we do not know why a tactic is missing, whether it belongs here, or whether adding it would change anything. Where a walk stopped early, a tactic living deeper would also read as not detected.
contrast, mobile, typography, accessibility, weight — each with what would fix it
measuredextracted directly from the live page. a fact, not an opinion100% of measurable text passes WCAG AA.
Responsive viewport meta is present.
Smallest body text is 9px (base ~18px). below the ~16px readable floor.
fix Keep body copy ≥15-16px; reserve sub-13px for fine print only.
3 paragraphs run past ~95 characters per line.
fix Cap measure at ~60-75ch for comfortable reading.
html[lang] is set for screen readers.
All 23 content images carry alt text.
4 controls have an aria-label that does not contain its visible text, so voice-control users cannot activate it by saying what they see.
fix Make the accessible name start with the visible label text.
At least 0.3 MB across 39 measurable resources, but 48 cross-origin resources did not expose a size. The true weight cannot be determined from the page.
3 stylesheets/scripts in <head> block first paint.
fix Defer non-critical JS (defer/async) and inline only critical CSS.
6 images are shipped at more than 2x the width shown.
“toolfio-light-badge.png” is 834px wide, displayed at 200px
fix Serve responsive sizes (srcset/sizes) matching the rendered width.
No <header> or <footer> landmark. screen-reader users cannot jump between regions.
fix Wrap the page in <header>, <main> and <footer> (or matching ARIA roles).
3 fields carry validation attributes (required/pattern/aria-invalid).
palette by on-page usage · type rendered live
measuredextracted directly from the live page. a fact, not an opinionBody copy in their text role, on a surface card.
Body copy set at their measured paragraph size. This is how their product reads to a first-time visitor. same family, same scale, same weight.
We also looked for Elements and Playbook match, and found none on this funnel.