saas · Aug 5, 2026

codetrain.ai

40/100 Thin

Scores higher than 36% of 1,391 multi-step funnels we have measured. Among the 1,074 saas funnels in that group, higher than 25%.

How this was measured

Measured by Roentgen 1.20 on 2026-08-05. 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 40 · mobile 40.

Walk 24 links on the entry page, 14 walkable. 1 matched a funnel step; we captured 2 pages in all, this one included.

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

What we recorded

The funnel, frame by frame

2 steps 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

▲ strongest
3 tactics

$24 +3 more  ·  1 proof point

FAQFree trialPricing tiers
Compare
02

Compare

▼ thinnest
1 tactic
Free trial

In their own words

35 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
AI Coding Tutor That Never Writes Your Code | CodeTrain
Meta description
CodeTrain is a Socratic AI coding tutor: it asks questions, reviews what you write, and runs your tests, but never writes the code for you. Free to start.
Headline
AI writes the code. Make sure your engineers still understand it.
Section headings
What is CodeTrain?The skill is quietly leaving the buildingLearn by doing, on the code that mattersEvery course is a line. Every stop is a class.Not autocomplete. Not a course generator.For engineering teamsPricingQuestions, answered+8 more, not shown
Buttons and links
Start freeStart free, no cardTalk to sales▶ Play with sound 1:05 · narratedCOURSE How LLMs Actually Work NEW ▸COURSE Learn to Code in Python ▸COURSE Object-Oriented Python ▸COURSE JavaScript Fundamentals ▸COURSE JavaScript: Functions & Data ▸+2 more, not shown
Prices on the page
$24$24.$0$32

What we found

4 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

Offer clarity1 of 1

Makes the pricing ladder explicit free, $24/mo, $32/seat

Action path1 of 4

Offers a free trial or free tier free tier

Friction reduction2 of 2

Answers buyer objections Does CodeTrain write code for you?
Offers a free trial or free tier also shown under Action path

What we didn’t find

7 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 see7 of 11 applicable

Trusted-by logo wall 1,168 of the 1,539 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

13 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 12 measured checks need work1 could not be measured — not counted either way

Body text size

type:body-text-size

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

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

Named controls

a11y:named-controls

20 buttons/links have no accessible name (icon-only, no aria-label).

FixAdd aria-label to icon-only buttons and links.

Oversized images

weight:oversized-images

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

“POTD3.png” is 639px wide, displayed at 127px

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

Landmark regions

structure:landmark-regions

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

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

Tap-target size (mobile)

mobile:tap-target-size-mobile

66 of 90 interactive targets are under 44×44px on mobile.

smallest: “✕” at 20×22px

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

Worth knowing3

Line length

25 paragraphs run past ~95 characters per line.

FixCap measure at ~60-75ch for comfortable reading.

type:line-length
Label in name

1 control has an aria-label that does not contain its visible text, so voice-control users cannot activate it by saying what they see.

FixMake the accessible name start with the visible label text.

a11y:label-in-name

Not measurable1

Page weight

At least 0.4 MB across 9 measurable resources, but 23 cross-origin resources did not expose a size. The true weight cannot be determined from the page.

weight:page-weight

Clear4

Text contrast (WCAG AA) · Mobile viewport · Language declared · Image alt text

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#39aaaa
accent#39aaaa
bg#05070a
surface#05070a
text#98a3b3
See the roles applied
accent

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

the roles, doing their job
The quick brown fox40px
Jumps over the lazy dog38px
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
10pxAa
11pxAa
12pxAa
13pxAa
14pxAa
15pxAa
16pxAa
18pxAa
19pxAa
20pxAa
38pxAa
40pxAa
WEIGHTS
Aa400
Aa500
Aa600
Aa700
Aa800
FAMILIES
Fraunces · -apple-system
rendered in their own type system · webfont not loaded. system fallback if uninstalled

Measured, found none

2 of 8 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