Body text size
type:Smallest body text is 10px (base ~12px). below the ~16px readable floor.
FixKeep body copy ≥15-16px; reserve sub-13px for fine print only.
saas · Aug 28, 2026
60/100 Partial
Scores higher than 66% of 1,391 multi-step funnels we have measured. Among the 1,074 saas funnels in that group, higher than 58%.
Measured by Roentgen 1.26.1 on 2026-08-28. A capture is read once and its measurements freeze there, so the stamp says which ruleset read this one.
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. Per device: desktop 60 · mobile 60.
Walk 14 links on the entry page, 8 walkable. 3 matched a funnel step; we captured 4 pages in all, this one included.
this funnel’s coverage score across measured re-scans
measuredextracted directly from the live page. a fact, not an opinionsee their whole funnel without clicking through it. scored step by step
measuredextracted directly from the live page. a fact, not an opinionthe entry page’s own title, headline, buttons and prices — quoted, never paraphrased
measuredextracted directly from the live page. a fact, not an opinionaskbowtie · your agent, answering questions about your actual site
Install one tag and your own AI agent answers questions about your actual site: analytics, errors, conversions, search, ads, uptime. One MCP, as deep as you wish. Start with a free audit, no signup.
Your agent, answering questions about your actual site.
One tag, one connection. Your agent sees everything your site does.
The questions you actually have. Answered, with the receipts.
Your agent is only as smart as the data you connect.
Not another dashboard. Not GA4. Your agent, your data.
Everything is free right now. The full product, no cost.
The questions a developer actually asks first.
Install one tag. Ask everything else after.
Drop in one tag+7 more, not shown
Install bowtie
Start using bowtie
$11
$340
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 opinionStart free
docs link
706 broken links found
Does my site's data go to Anthropic or OpenAI? + Does the tag slow my site down? + Is this
comparison table: ASKBOWTIE · GA4 · PLAUSIBLE · POSTHOG / SENTRY
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 opinion3 of 10 measured checks need work1 could not be measured — not counted either way
86% of measurable text passes WCAG AA. 4+ runs fail. 27% of text was unmeasurable (over images/gradients). not counted either way.
worst: “· bowtie mcp” at 2.98:1 (12px, #9a9078 on #fbf8f1). needs 4.5:1
FixRaise text/background contrast to ≥4.5:1 (≥3:1 for large text), especially on CTAs and body copy.
Smallest body text is 10px (base ~12px). below the ~16px readable floor.
FixKeep body copy ≥15-16px; reserve sub-13px for fine print only.
45 of 53 interactive targets are under 44×44px on mobile.
smallest: “Home” at 28×15px
FixGive tappable controls a ≥44×44px hit area. the touch minimum.
12 paragraphs run past ~95 characters per line.
FixCap measure at ~60-75ch for comfortable reading.
type:No same-page “skip to content” link was found. Keyboard users tab through the whole nav on every page.
FixAdd a first-in-DOM <a href="#main"> that is visible on focus.
a11y:No <footer> landmark. screen-reader users cannot jump between regions.
FixWrap the page in <header>, <main> and <footer> (or matching ARIA roles).
structure:6 elements look clickable but cannot be reached by keyboard.
FixUse <button>/<a>, or add role + tabindex="0" and a key handler.
structure:At least 0.1 MB across 17 measurable resources, but 19 cross-origin resources did not expose a size. The true weight cannot be determined from the page.
weight:Mobile viewport · Language declared · Render-blocking resources
which funnel play this page runs — measured, evidence-quoted
deriveda deterministic summary generated only from measured facts. labeled, never an LLM guessComparison surface matches the Intent-Match pattern — measured comparison table plus comparison-intent copy
home: comparison table: ASKBOWTIE · GA4 · PLAUSIBLE · POSTHOG / SENTRYcomparison copy
Free vs. credits
A match means this funnel's measurable surfaces fit the playbook's pattern — the quoted language is what fired the detection. A lever is one playbook mechanism observed on-page. We never claim what a brand's ads or emails do; a crawl can't see them. All funnel designs →
Two different things sit side by side here. The claim and its quoted evidence are measured on this funnel, the same way every other fact on this page is. The playbook itself is written guidance — our strategy library, not a measurement of this site — and it lives behind the links above. Nothing on this page recommends what this brand should do.
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.
layers we ran on this funnel that came back empty
measuredextracted directly from the live page. a fact, not an opinionElements — the atomic pieces — price anchors, ratings, guarantees — with their verbatim on-page text
We ran this pass on the pages we captured and found nothing to show. That is a measurement of this funnel, not a recommendation — and it is a different statement from a layer we never ran, which does not appear here at all.