saas · Aug 9, 2026

ottyapp.com

25/100 Sparse

Scores above 43% of 525 entry-page captures we have measured. Among the 289 saas funnels in that group, above 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

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.

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 free trial

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 1050 of 1369 measured funnels run this
Pricing tiers 636 of 1248 measured funnels run this
Press / "as seen in" 448 of 1769 measured funnels run this
Demo / docs entry 440 of 1256 measured funnels run this
Lead-capture form 310 of 1256 measured funnels run this
Us-vs-them comparison 304 of 1777 measured funnels run this
Proof above the fold 292 of 1777 measured funnels run this
Usage / adoption proof 224 of 1369 measured funnels run this
Scarcity / urgency copy 94 of 1769 measured funnels run this

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

13 run · 4 flagged

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

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

Readability & contrast1 flagged

Text contrast (WCAG AA) needs workcontrast: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

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

Mobile & tap targetsclear

Mobile viewport passesmobile:mobile-viewport

Responsive viewport meta is present.

Typography1 flagged

Body text size needs worktype:body-text-size

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

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

Accessibility hygieneclear

Language declared passesa11y:language-declared

html[lang] is set for screen readers.

Image alt text passesa11y:image-alt-text

All 10 content images carry alt text.

Heading levels notea11y:heading-levels

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

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

Weight & delivery2 flagged

Page weight needs workweight: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.

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

Render-blocking resources passesweight:render-blocking-resources

3 stylesheets/scripts in <head> block first paint.

fix Defer non-critical JS (defer/async) and inline only critical CSS.

Oversized images needs workweight: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

fix Serve responsive sizes (srcset/sizes) matching the rendered width.

Structure & reachabilityclear

Landmark regions notestructure:landmark-regions

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

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

Keyboard reachability notestructure:keyboard-reachability

12 elements look clickable but cannot be reached by keyboard.

“01”, “Who is Otty for: me, my partner, o”, “02”

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

Form usabilityclear

Autocomplete hints noteforms:autocomplete-hints

No autocomplete attributes across 1 field. browsers cannot autofill.

fix Add autocomplete="email"/"tel"/"name" to identity fields.

Inline validation passesforms:inline-validation

1 field carries validation attributes (required/pattern/aria-invalid).

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

We also looked for Elements and Playbook match, and found none on this funnel.

X-ray a funnel

Your competitor's funnel is one URL away.

Give your AI real references · Measured facts, not taste

Similar crawls