Friction
The testers’ own words

What blocks your users, told by real testers

We hand your journey to real Android users, who complete it while thinking out loud. You get the narrated videos, the moments of hesitation detected automatically, and a summary of 5 to 10 frictions ranked by severity — each with the video excerpt that proves it.

No credit card to start. Secure payment through Stripe when you change plan.

  1. 00:41 Finds the entry point alone no hesitation
  2. 01:12 Stuck on “Postcode” 18 s with no input
  3. 02:03 Goes back ×3 between home and cart
  4. 02:41 3 taps on “Pay” no visual feedback
  5. 03:05 Gives up on payment comes back later

Hesitation timeline — an internal dry run, not a customer study.

The words

They put it better than we do

A friction is not a number: it is a sentence, with the tone and the silence around it. The summary quotes them; it does not summarise them away.

I thought I had to confirm it, but it was already saved. I started over for nothing.
Nadia, 34 Flash mission · 12 min
I looked for the button for twenty seconds. It is top right, but I could not see it.
Karim, 41 Study mission · 24 min
I could not tell whether my cart was confirmed. So I did it all again.
Léa, 27 Flash mission · 9 min
These three verbatims are not customer data. They come from an internal dry run, on our own app. No study has been run end to end with real testers yet, because the “UX missions” module of the tester app is not written: what you see here is the shape of the deliverable, not its content.
What it does

Concretely

Real testers, not personas

Friction builds on the Android community already gathered around PlayTesterHub: there is no panel to recruit from scratch, and the testers are French-speaking. That is what makes a result possible in 48 hours.

Two modes of testing

On the tester’s own phone, with screen and voice recorded — natural use, real context. Or on a pool phone, driven remotely from the tester’s browser: for an unpublished app or a specific model, with nothing to install on their side.

Hesitations are detected, not guessed

Long pauses, back-and-forth between two screens, repeated taps, drop-offs, crashes: the moments that stick are located in the video and timestamped, so the analyst goes straight to the passage that matters.

A summary reviewed by an analyst

5 to 10 frictions ranked by severity, each with its video excerpt and a concrete recommendation. The customer gets a shareable summary page, not a folder of videos to sift through.

Consent, withdrawal and deletion

Testers are filmed and recorded: explicit consent per mission, versioned, right of withdrawal, and deletion of videos within the announced period. A tester who withdraws owes nothing and can ask for their video to be deleted.

One excerpt

A video, timestamped to the second

The summary does not say “payment is confusing”. It writes down the moment, the sentence and what the app answered — and the reader jumps to that second of the video.

02:38 “OK, I tap and… wait, nothing happens?”

02:41 3 repeated taps on “Pay” — no visual feedback for 4 s

02:47 “Oh, it actually worked. It says so in small print, there.”

03:05 abandons the payment, returns to home

02:38 what the tester says

what the product detected: repeated tap, pause, drop-off, crash

The excerpt beside it is a formatting example, from the same dry run. It is not transcribed automatically: Whisper transcription is not wired, the analyst writes down what they hear while reviewing the video.

In all honesty

What we do not do

A product that hides its limits wastes everybody's time. Here are ours, today.

  • No real tester has used the module yet: the tester app (screen + voice) is not written, and `~/playtesterhub` has not been modified — Friction provides the API contract, not the client.
  • No tester payment is made: the scale (15 € per Flash mission, 25 € per Study mission) is a computation of what is **owed**, not a payout. Testers’ status still has to be settled with an accountant.
  • Whisper transcription is not wired: the interface exists, no provider is configured.
  • No video byte upload: the core only accepts `.apk`/`.aab`/`.zip`, so without a URL the route returns `501`. R2 storage is phase 2.
  • The pool video player is not implemented: `player_url` is `null`, and says so.
  • No study has been run end to end with real testers: the 48-hour delay is a target, not a measured figure.
  • Automatic deletion of videos after 90 days is not tooled: the procedure is written, the job remains to be done.
  • Stripe is not wired: plans are listed, no customer payment is open.

Hand us a journey

Describe what your users have to accomplish. You get the verbatims, the timestamped hesitations and a summary of 5 to 10 frictions, each with the excerpt that proves it.