Independent UX audit Krovvi — AI Second Brain TestFlight build · iOS

A voice-first app
that asks you to read
seven screens first.

Krovvi's premise is that talking is faster than typing. Its onboarding spends six slides and an account wall proving the opposite. We audited the two screens a new user cannot avoid — the onboarding carousel and Home — and found 21 issues, measured the contrast ourselves, and rebuilt both screens to show what we'd ship instead.

21
Findings
4
Critical
8
High
9
Medium
01 — Method

What we looked at, and what we can't claim.

An audit is only worth what its evidence supports. Here is exactly what we had, so you can weigh every finding that follows.

Surface audited
First-run onboarding carousel and the Home screen — the two surfaces no new user can skip.
Evidence
Four of the six onboarding slides (positions 2–5), the account wall (position 7), and Home. Captured from a live TestFlight build.
Framework
Nielsen's heuristics, Apple HIG, and WCAG 2.1 AA — with contrast ratios measured off the screenshot pixels, not estimated by eye.
Severity
Impact × reach. Critical blocks or misleads on first run; High costs comprehension every session; Medium/Low is polish.

Two things we did not see. Onboarding slides 1 and 6 weren't captured, so no finding below rests on them. And animation density — a real complaint from the hands-on session — can't be proved by a still image, so it is tagged observed rather than evidenced. Every other finding points at something you can see in a screenshot on this page.

02 — Measured, not guessed

We sampled the pixels. One thing fails.

Rather than assert "low contrast", we decoded the screenshots and computed WCAG ratios from the actual glyph colours. The result corrected one of our own assumptions — and found a genuine failure somewhere we weren't looking.

Text contrast against its own background

Passes AA Fails AA
AA floor 4.5:1
HeadlineOnboarding
18.83:1
Continue buttonOnboarding
16.34:1
Note titleHome
17.04:1
SubheadOnboarding
7.26:1
Tab bar labelHome
6.74:1
“Skip”Onboarding · ONB-08
5.37:1
TimestampsHome
4.84:1
Search placeholderHome · HOME-11
4.20:1

What this changed. We went in expecting “Skip” to fail accessibility. It doesn't — at 5.37:1 it clears AA and only misses AAA. The real finding is hierarchy, not compliance: Skip is rendered three times dimmer than the Continue button beside it. Meanwhile the search placeholder on Home — which nobody flagged by eye — sits at 4.20:1 and is the one element here that genuinely breaks WCAG AA.

I

Onboarding

Six slides and an account wall, before a single word is spoken.

Krovvi onboarding slide 2: a note card above the headline “It writes it properly.” Krovvi onboarding slide 3: a task list above the headline “Tasks make themselves.” Krovvi onboarding slide 4: a chat exchange above the headline “Ask. Your words answer.” Krovvi onboarding slide 5: a checklist above the headline “And it gets things done.” Krovvi account wall: Continue with Apple or Continue with Google.
1
2
7
!
Slide 2 of 6
ONB-01High

The eye lands on the answer before the question.

Visual hierarchy · F-pattern scanning

All four captured slides put a demo card above the headline. The first thing you see is a simulated note about a dentist appointment — before anything has told you what this app is. The headline that would explain it, “It writes it properly.”, sits underneath, in the position the eye reaches second.

FixHeadline first. The demo card is evidence for a claim — it can't land before the claim exists.
ONB-08MediumMeasured

The way out is three times dimmer than the way on.

Visual hierarchy · WCAG 2.1 contrast

We expected “Skip” to fail accessibility. It doesn't — we sampled the pixels and it measures 5.37:1, which clears AA. That result is the finding: on the same screen, Continue measures 16.34:1. The control that lets someone leave is rendered a third as bright as the one that keeps them going. It passes the letter of the standard and fails its intent. Skip is also correctly placed top-right — the position isn't the problem, the weight is.

FixRaise Skip to the tier the subhead already occupies (7.26:1). Keep a “Not now” on the account screen, where Skip disappears entirely.
ONB-02Critical

Seven screens to reach a microphone.

Time-to-value · progressive disclosure

Count the dots: six onboarding slides, then an account wall. A product whose entire pitch is “talking is faster than typing” asks for seven screens of reading before it will let anyone talk. Every slide is a chance to lose someone who already downloaded the app — the hardest step, already cleared.

FixTwo slides, then the record button. Everything else can be taught later, in context.
ONB-04Medium

Six slides, one layout.

Perceived progress · rhythm

Card, headline, subhead, Continue — identical on every slide, at identical scale and spacing. Nothing but the dot indicator tells you you're advancing rather than looping. Repetition at this length reads as a form to complete, not a story being told.

FixFewer slides. Two screens don't need structural variety to feel like progress.
ONB-03High

Four headlines, four different speakers.

Voice & tone consistency

Read them in sequence and the narrator keeps changing:
“It writes it properly.” — declarative, the app as subject.
“Tasks make themselves.” — passive, no actor at all.
“Ask. Your words answer.” — imperative fragment, second person.
“And it gets things done.” — opens on a conjunction, mid-thought, as if continuing a sentence the user never heard.
Each is a decent line. Together they have no throughline, and the product's personality never resolves.

FixPick one grammatical person and one sentence shape, and hold it across every screen in the flow.
ONB-07Medium

Promises that need permissions nobody asked for.

Expectation-setting · permission priming

The slide shows “Email drafted”, “Meeting on your calendar” and “Reminder set” as already-completed checkmarks — before the flow has requested Mail, Calendar or Reminders access. Presenting granted outcomes for permissions never requested sets up a first session that can only disappoint.

FixAsk for the permission next to the promise, or write the promise to be true without it.
ONB-06MediumObserved

Motion competing with comprehension.

Signal vs. noise

Reported from the hands-on session: the slides carry enough animation that the copy becomes hard to settle on. We can't prove this from a still image, so we're labelling it observed rather than evidenced — but it compounds ONB-03 and ONB-04, where the copy already needs more attention than it's getting.

FixReserve motion for state changes. During onboarding the goal is comprehension, and ambient movement is a tax on it.
ONB-05Critical

The store says optional. The app says required.

Trust · stated vs. actual behaviour

The App Store listing promises: “Notes live on the device; an optional account backs them up.” Slide seven offers Continue with Apple or Continue with Google, and the Skip affordance is gone — it was present on every preceding slide. A user who read the description and chose this app for local-first storage hits a wall that contradicts the reason they installed it.

FixMake the account a soft prompt after the first note exists — when there is finally something worth backing up, and the value has already been delivered.
II

Home

One screen carrying five navigation systems and two of the app's own welcome messages.

Krovvi Home: a search field, All notes and Folders tabs, a list of notes, a coach mark reading “Make your first take”, and a five-item tab bar.
V
N
B
S
!
1
2
3
=
!
1
2
?
?
1
?
Home — first session
HOME-01Critical

Five tabs, four different kinds of word.

Consistency · single classification system

Write is a verb. Tasks is a noun. Krovvi is the company's own name. Settings is a system preference. And between them sits an unlabelled circle. Five slots of equal visual weight, and no two of them are the same category of thing — so there is no rule a user can learn that predicts what any of them does.

FixOne grammatical category — nouns naming destinations — and move Settings off the primary bar entirely.
HOME-02High

Settings has the best seat in the house.

Fitts's law · platform convention

Settings occupies a permanent, thumb-reachable tab — real estate that should belong to something used daily. Meanwhile search already exists, as a field pinned to the top of the screen, furthest from the thumb. Apple's current pattern is the reverse of both: search in the tab bar, settings tucked into a corner. This screen pays rent on two systems and gets the placement wrong on both.

FixSearch moves into the tab bar. Settings becomes an avatar in the top corner — reachable, not resident.
HOME-03High

The most important button on the screen has no name.

Affordance · discoverability of the primary action

Krovvi is a voice-first product. Recording is the one thing it exists to do. That action is a white ring straddling the tab bar, with no label, no icon and no caption — visually closer to an ornament than a control. Every other item in the bar gets a word underneath it. The primary action gets nothing.

FixGive it a label, lift it clearly above the bar, and make it the visual centre of gravity the product's premise says it is.
HOME-04High

Three ways to start. No way to tell them apart.

One clear primary action

The record ring, the + in the top corner, and the Write tab all appear to create something new. Nothing on screen explains how the results differ, which one is primary, or why a voice-first app leads with a button called Write. Three doors to what is probably one room.

FixOne primary action — record. Text entry becomes a clearly secondary control inside it, not a competing tab.
HOME-05High

A voice app that opens on a filing cabinet.

Match between system and mental model

The first thing Home presents is a reverse-chronological list of text you've already dealt with, under a search field and a set of folder tabs. It's a file browser. For a product that says just start talking, the opening screen is a directory of things you've finished saying.

FixLead with the act of recording. The archive is valuable, but it's a destination, not a front door.
HOME-06Medium

Every row shouts at the same volume.

Hierarchy within a list

Title, preview line, timestamp — identical weight, identical spacing, on every single row. Nothing marks a note as new, unread, acted-on or urgent. The list has no opinion about what matters, so the reader has to form one by reading all of it.

FixLet state show: unread carries weight, handled notes recede. Drop the preview line on older entries.
HOME-07High

A coach mark that covers what it's teaching — and gets the fact wrong.

Don't obscure the thing you're explaining

“Make your first take” floats directly on top of an existing note, hiding it. And it is factually wrong: this screen already lists five notes. The app is coaching a first-time action to someone who is demonstrably past it, while blocking their content to do it.

FixAnchor the coach mark to the record button it describes, never over the content stream — and suppress it the moment a note exists.
HOME-08High

The app writes itself into your notes. Twice.

Don't clutter the user's data with system messages

“Your tour of Krovvi 👋” sits in the note list as though the user recorded it. Directly below, the same welcome appears again in Arabic. Two synthetic entries, saying the same thing, permanently occupying a new user's actual history — in a list that is supposed to contain only their own words. Marketing copy filed as user content.

FixOne welcome, dismissible, and not in the note list at all. If it's onboarding, it belongs in onboarding.
HOME-09Medium

Two icons, no labels, no guesses.

Icon-only controls need a single recoverable meaning

Beside the search field sit a sort/filter glyph and a +, both undersized and unlabelled. Neither has a universally-read meaning at that size, and the + in particular collides with the record ring and the Write tab for the same job (see HOME-04).

FixLabel them, or fold sorting into a visible control and delete the + in favour of the one primary action.
HOME-10Medium

One badge is a number. The other is a mystery.

Only use a signifier whose meaning is recoverable

The 1 on Tasks works — it reads instantly as a count of things waiting. That is exactly what makes the bare dot on the Krovvi tab worse: it borrows the same visual language, sitting inches away, but resolves to nothing the user can discover. Having one correct badge on screen sets the expectation the other one breaks.

FixGive it a count or remove it. Don't reuse a “count” signifier for an unquantified “something changed”.
HOME-11MediumMeasured

The one thing here that actually breaks WCAG.

WCAG 2.1 AA — 4.5:1 minimum

Nobody flagged this by eye. We found it by sampling pixels: the placeholder “Search everything you've…” renders at rgb(131,131,131) on the field's rgb(34,34,34) fill — 4.20:1, under the 4.5:1 floor. The field is lighter than the page, which is precisely what pushes the ratio under. Timestamps are marginal too, at 4.84:1.

FixMeasure placeholder text against the field fill, not the page ground, and lift it over 4.5:1.
III

Cross-cutting

Two problems that don't belong to a single screen.

X-01Medium

The store and the app disagree about the product's name.

Identity consistency across touchpoints

Catch8 APP STORE LISTING
Krovvi EVERYWHERE IN THE APP

The listing describes “Catch8”. The product a user then opens calls itself Krovvi, on every screen. This is the very first thing a prospective user reads about the product, and it already contradicts itself before install.

Fix Align the listing with the in-app brand. It is a five-minute change with the largest trust-per-effort ratio in this entire audit.
X-02Critical

Everything is taught up front, so nothing is taught in context.

Progressive disclosure · just-in-time learning

This is the root cause under four separate findings. Product education is either crammed into a carousel before first use (ONB-02, ONB-04) or injected into the user's own note list as fake entries (HOME-07, HOME-08). What the app never does is the simple thing: point at a control the first time that control becomes relevant.

Fixing this one dissolves the other four. That is why it leads the roadmap below, despite being the largest single piece of work in it.

Fix Two slides to set expectation, then teach each control at the moment it first matters — the contextual tour we've prototyped in the redesign.
TODAY 1 2 3 4 5 6 ACCOUNT required First recording 7 screens deep PROPOSED 1 2 First recording 2 screens deep then ACCOUNT optional, dismissible CONTEXTUAL TOUR each control, on first use Slides 1 and 6 were not captured; the count comes from the app's own progress indicator. The account step doesn't disappear — it moves to the point where the user has something to protect.
The change isn't “fewer slides”. It's moving both the account request and the product education after the first recording, so the app proves its premise before it asks for anything.
03 — The full list

All 21 findings, ranked.

Filter by severity or by screen. Severity is impact × reach — how badly it hurts, multiplied by how many users meet it.

IDSeverityFindingHeuristic

Showing 21 of 21

04 — The redesign

What we'd ship instead.

Three screens, rebuilt. These aren't images — they're live HTML, so you can inspect any element. Drag each divider, or focus it and use the arrow keys.

Before: Krovvi onboarding slide with the demo card above the headline. BEFORE
5:14▮▮▮
Skip

Say it once.
We'll write it up.

Egyptian Arabic, English, or both in the same sentence.

Tomorrow's errands
Two things for tomorrow: mama's cake, and a dentist appointment before noon.
Continue
AFTER

Onboarding — 7 screens to 2

The headline moves above the card, so the claim arrives before its evidence. One voice across both slides. Skip lifted to 7:1, where the subhead already sits. Six slides become two, and the account wall leaves the flow entirely.

ONB-01ONB-02ONB-03ONB-04ONB-05ONB-08
Before: Krovvi Home with a five-item tab bar, an unlabelled record ring, and two injected welcome notes. BEFORE
5:08▮▮▮
KrovviMA
Tap to record
Arabic or English — just talk
Recent
Need to meal prep10:18pm
Work on Monday 9am10:05pm
HeyYest.
New here? Take the 40-second tour.
Notes Tasks Ask Search
AFTER

Home — the primary action, first

Recording becomes a labelled hero action instead of an unnamed ring. The tab bar drops to four nouns with search inside it; settings moves to the avatar. Read notes recede, unread carries weight. The tour leaves the note list for one dismissible card.

HOME-01HOME-02HOME-03HOME-04HOME-05HOME-06HOME-08HOME-09HOME-11
Before: a coach mark reading “Make your first take” covering an existing note. BEFORE
5:08▮▮▮
KrovviMA
Tap to record
Arabic or English — just talk
Recent
Need to meal prep10:18pm
Work on Monday 9am10:05pm
Notes Tasks Ask Search
STEP 1 OF 3
This is the button.
Hold it and talk. Let go, and the note writes itself.
Skip tourGot it
AFTER

The tour — anchored, not overlaid

One coach mark at a time, pointing at the control it explains, with the rest of the screen dimmed so nothing important is hidden behind it. It appears the first time a control matters — and never claims this is your first note when five already exist.

HOME-07HOME-08X-02
05 — What we'd ship first

Four of these take an afternoon.

Every finding placed by what it costs to build against what it returns. The top-left quadrant is the argument for starting Monday.

0 2 4 6 8 10 0 2 4 6 8 10 QUICK WINS BIG BETS TIDY UP DEFER X-01 — Medium. Effort 0.8/10, impact 6.0/10. X-01 ONB-08 — Medium. Effort 1.0/10, impact 4.2/10. ONB-08 HOME-11 — Medium. Effort 1.1/10, impact 4.0/10. HOME-11 HOME-10 — Medium. Effort 1.3/10, impact 3.6/10. HOME-08 — High. Effort 2.0/10, impact 6.5/10. HOME-08 HOME-09 — Medium. Effort 2.4/10, impact 3.6/10. ONB-07 — Medium. Effort 2.6/10, impact 4.2/10. HOME-07 — High. Effort 3.0/10, impact 6.6/10. HOME-07 ONB-01 — High. Effort 3.0/10, impact 7.0/10. ONB-01 ONB-03 — High. Effort 3.2/10, impact 5.0/10. HOME-03 — High. Effort 3.5/10, impact 8.0/10. HOME-03 ONB-06 — Medium. Effort 3.4/10, impact 4.0/10. HOME-06 — Medium. Effort 3.8/10, impact 4.2/10. ONB-04 — Medium. Effort 4.2/10, impact 3.6/10. HOME-04 — High. Effort 5.0/10, impact 7.0/10. HOME-02 — High. Effort 5.2/10, impact 7.5/10. HOME-02 ONB-05 — Critical. Effort 5.6/10, impact 9.4/10. ONB-05 HOME-01 — Critical. Effort 6.0/10, impact 8.8/10. HOME-01 ONB-02 — Critical. Effort 6.6/10, impact 9.5/10. ONB-02 HOME-05 — High. Effort 7.4/10, impact 8.0/10. HOME-05 X-02 — Critical. Effort 8.5/10, impact 9.8/10. X-02 IMPLEMENTATION EFFORT → USER IMPACT → Critical High Medium
Effort and impact are our estimates, not the team's — engineering may move anything on the x-axis. The y-axis is what we're paid to have an opinion about.

Ship this week

Low effort, disproportionate return.

  1. Rename the App Store listing to KrovviThe first thing anyone reads currently names a different product.X-01
  2. Delete the duplicate Arabic welcome noteOne welcome, not two, and not filed as the user's own recording.HOME-08
  3. Lift the search placeholder over 4.5:1The only measured WCAG failure in the audit. One token.HOME-11
  4. Raise Skip to the subhead's contrast tierKeep the position. Change the grey.ONB-08
  5. Give the Krovvi tab dot a count, or remove itThe Tasks badge proves the pattern works — match it or drop it.HOME-10

The structural work

Bigger, and where the product actually changes.

  1. Cut onboarding to two slides, defer the accountRemoves the contradiction with your own store listing.ONB-02 · ONB-05
  2. Label the record button and make it the heroThe primary action of a voice-first app currently has no name.HOME-03
  3. Rebuild the tab bar around four nounsSearch in, Settings out, one grammatical category throughout.HOME-01 · HOME-02
  4. Move education into a contextual first-run tourDissolves four separate findings at once.X-02 · HOME-07