saas · Aug 9, 2026

ottyapp.com

25/100 Sparse

Scores higher than 43% of 577 entry-page captures we have measured. Among the 311 saas funnels in that group, higher than 34%.

Walk 18 links seen, 5 walkable, and 0 matched a funnel step. If this funnel continues past the entry page, we did not reach it — everything below is measured from the entry page alone.

How this was measured

Measured by Roentgen 1.20.1 on 2026-08-09. 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 25 · mobile 25.

Captured Homepage / Lander
Step 1 · Homepage / Lander1 / 1

What we recorded

The funnel, frame by frame

1 step walked

see their whole funnel without clicking through it. scored step by step

measuredextracted directly from the live page. a fact, not an opinion
Homepage / Lander
01

Homepage / Lander

2 tactics

$5.99 +1 more

FAQFree trial

In their own words

16 quoted

the entry page’s own title, headline, buttons and prices — quoted, never paraphrased

measuredextracted directly from the live page. a fact, not an opinion
Page title
Otty: Cycle Tracking App for Couples | Never Drift Apart
Meta description
Otty is the cycle tracking app built for couples. Phase-by-phase nudges, a shared calendar, and a sea otter who helps you never drift apart. Free on iOS.
Headline
Period tracker for couples.
Section headings
Attention, aimed at the right day, is the whole relationship.I'm a sea otter. I hold things.Never drift apart.Five features, printed plainly.Five phases, one cycle. Here's what each one actually feels like.What couples say. Straight from the App Store.The things people want to know first.Reading, for the weeks between.
Buttons and links
Add meDownload on the App StoreJoin the Android list
Prices on the page
$5.99$39.99

Sections

4 identified

structural bands identified on this funnel, cropped from its own capture

measuredextracted directly from the live page. a fact, not an opinion
Hero section of ottyapp.com
Hero1% down the page
FAQ section of ottyapp.com
FAQ75% down the page
Pricing section of ottyapp.com
Pricing88% down the page
Footer section of ottyapp.com
Footer95% down the page

What we found

2 tactics

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 opinion

Action path1 of 4

Offers a free trial or free tier free trial

Friction reduction2 of 2

Answers buyer objections FREQUENTLY, UNDERSTANDABLY, ASKED. The things people want to know first. Six questions, an
Offers a free trial or free tier also shown under Action path

What we didn’t find

9 of 11 applicable

applicable tactics we checked for and did not see on any step we reached

measuredextracted directly from the live page. a fact, not an opinion

What we didn’t see9 of 11 applicable

Trusted-by logo wall 1,168 of the 1,539 funnels we checked
Pricing tiers 699 of the 1,385 SaaS funnels we checked
Press / "as seen in" 508 of the 1,960 funnels we checked
Demo / docs entry 477 of the 1,393 funnels we checked
Lead-capture form 342 of the 1,393 funnels we checked
Us-vs-them comparison 332 of the 1,968 funnels we checked
Proof above the fold 314 of the 1,968 funnels we checked
Usage / adoption proof 237 of the 1,539 funnels we checked
Scarcity / urgency copy 101 of the 1,960 funnels we checked

Absence 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.

How well it’s built

14 run · 5 flagged

contrast, mobile, typography, accessibility, weight — each with what would fix it

measuredextracted directly from the live page. a fact, not an opinion

5 of 14 measured checks need work

Text contrast (WCAG AA)

contrast:text-contrast-wcag-aa

82% of measurable text passes WCAG AA. 4+ runs fail.

worst: “26” at 1.38:1 (13px, #e8d8da on #ffffff). needs 4.5:1

FixRaise text/background contrast to ≥4.5:1 (≥3:1 for large text), especially on CTAs and body copy.

Body text size

type:body-text-size

Smallest body text is 10px (base ~20px). below the ~16px readable floor.

FixKeep body copy ≥15-16px; reserve sub-13px for fine print only.

Page weight

weight:page-weight

At least 5.5 MB across 22 measurable resources. 12 cross-origin resources did not expose a size, so the real total is higher.

FixCompress and lazy-load below-the-fold media; drop unused third-party scripts.

Oversized images

weight:oversized-images

9 images are shipped at more than 2x the width shown.

“back-pain-before-period.png?fit=768%2C43” is 768px wide, displayed at 280px

FixServe responsive sizes (srcset/sizes) matching the rendered width.

Tap-target size (mobile)

mobile:tap-target-size-mobile

19 of 29 interactive targets are under 44×44px on mobile.

smallest: “Otty” at 60×31px

FixGive tappable controls a ≥44×44px hit area. the touch minimum.

Worth knowing4

Heading levels

1 heading skips a level (e.g. <h2> followed by <h4>). Screen-reader users navigate by this outline.

FixStep heading levels one at a time; use CSS for size, not a deeper level.

a11y:heading-levels
Landmark regions

No <header> landmark. screen-reader users cannot jump between regions.

FixWrap the page in <header>, <main> and <footer> (or matching ARIA roles).

structure:landmark-regions
Keyboard reachability

12 elements look clickable but cannot be reached by keyboard.

FixUse <button>/<a>, or add role + tabindex="0" and a key handler.

structure:keyboard-reachability
Autocomplete hints

No autocomplete attributes across 1 field. browsers cannot autofill.

FixAdd autocomplete="email"/"tel"/"name" to identity fields.

forms:autocomplete-hints

Clear5

Mobile viewport · Language declared · Image alt text · Render-blocking resources · Inline validation

Brand kit

5 colour roles

palette by on-page usage · type rendered live

measuredextracted directly from the live page. a fact, not an opinion
full palette ordered by on-page usage %
primary#d4a017
accent#d4a017
bg#fff4f4
surface#fffaf9
text#4d2128
See the roles applied
accent

Body copy in their text role, on a surface card.

the roles, doing their job
The quick brown fox52px
Jumps over the lazy dog44px
A subheading in their voice20px

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.

  • List item one, at body scale
  • List item two
  • List item three
Type scale, weights & families
SIZE SCALE
9pxAa
10pxAa
11pxAa
12pxAa
13pxAa
14pxAa
15pxAa
16pxAa
17pxAa
20pxAa
44pxAa
52pxAa
WEIGHTS
Aa400
Aa500
Aa600
Aa700
Aa800
FAMILIES
Plus Jakarta Sans · Be Vietnam Pro
rendered in their own type system · webfont not loaded. system fallback if uninstalled

Measured, found none

2 of 9 layers

layers we ran on this funnel that came back empty

measuredextracted directly from the live page. a fact, not an opinion

Elements — the atomic pieces — price anchors, ratings, guarantees — with their verbatim on-page text

Playbook match — which funnel play this page runs — measured, evidence-quoted

We ran these passes 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.

X-ray a funnel

Your competitor's funnel is one URL away.

Give your AI real references · Measured facts, not taste

Similar crawls