We signed up for 28 SaaS products as strangers. 24 had a defect in sign-up.
Your sign-up works. On the second try.
In October we did what your next customer does: started the free trials of 28 SaaS products, signed up and tried the ~10 flows that matter. A person re-checked the findings. One trial form failed on the first submit, every time. The second try worked. None of it threw an error. An uptime check sees a green page.
A 30-minute call with me. I'll tell you which of the eight patterns I'd check first on your product. No deck.

I'm not writing this from above. I run a small SaaS too, and I've spent 20+ years in testing. For weeks our own sign-up chart showed zero while people were signing up. The sign-up worked. The tracking event behind it didn't. Nobody broke it. Nobody owned it.
Not careless teams. Unowned flows.
Marcel Veselka, founder of Wopee.io
Six numbers from 28 products
On each product, an AI agent read the website, signed up for the free trial, logged in and tried the ~10 flows that matter most. We re-checked the findings by hand and threw out anything we couldn't reproduce or that was our mistake.
- 24 of 28had an open defect in sign-up, registration or the trial form. 17 of them at High or Medium.
- 17 at High or Medium
- 24 with an open defect
- 4 with no sign-up we could use or test
- 10 of 28showed a price or a saving on the page that didn't match what you're charged or get.
- 10 with a price that didn't match
- 19 with a pricing or number defect
- 10 of 28fired ad or analytics tags without consent: before the cookie banner was answered, or after “Reject all”.
- 12 of 28told a stranger, on login, sign-up or password reset, whether an e-mail address has an account.
- About 55%of valid findings are visible before the user even logs in.
- 110 on the public website
- 90 on sign-up, login and reset
- The rest, inside the app
- 67 of 250core app flows were not green. 60 of them failed on a real defect in the app.
- 183 passed (73%)
- 60 failed on a real defect
- 1 our own wrong expectation
- 6 couldn't run
- 28 products tested
- 381 findings filed
- 363 still valid after our re-check (95%)
- Median 12 valid findings per product
- 25 of 28 with at least one High still open
- 37 High (10%)
- 124 Medium (34%)
- 202 Low (56%)
Most are small. That's the point: small things pile up where nobody is looking.
What kept coming back
Recurring patterns, anonymised across products: never one product's exact text, amount or screen.
- #1A defect in sign-up or the trial form24/28
- #2The price on the page is not the price you pay10/28
- #3Tags fire without consent10/28
- #4Login tells a stranger who has an account12/28
- #5Silent or unclear errors14/28
- #6Onboarding dead ends in a fresh trial13/28
- #7Dates, statuses and contact data shown wrong14/28
- #8A broken or wrong link19/28
- #1
The front door: sign-up, registration, trial form
24/2824 of 28 products · 17 at High or Medium
One trial form failed on every first submit and worked on the second. E-mailed sign-in links that never work, so the only way in is “Forgot password”.
The blind spot: The last person to test sign-up is usually the person who built it, on their own logged-in machine.
- #2
The price on the page is not the price you pay
10/2810 of 28 products · 19 of 28 with a pricing or number defect
Two different products advertised “save 20%” on yearly billing. On both, the real saving was 16.7%.
The blind spot: Pricing lives in three places: the marketing site, the billing provider and the app. Nobody compares them after a price change.
- #3
The banner asks. The tags already fired.
10/2810 of 28 products · 18 findings, 13 of them High
Ad and analytics tags fired before the visitor answered the cookie banner, in some cases even after “Reject all”.
The blind spot: Marketing adds a tag through a tag manager. Nobody re-checks the network tab after the next campaign. (Observed network behaviour, not a legal opinion.)
- #4
Your login screen answers strangers
12/2821 findings · 15 products · 12 of 28 reveal who has an account
Login, sign-up or reset screens that confirm whether an e-mail has an account. Passwords e-mailed in plain text. No e-mail verification.
The blind spot: Each screen was written to be helpful. Nobody looked at all three together from an attacker's point of view.
- #5
Failures that stay silent or unclear
14/2822 findings · 14 products
A refused deletion reported as a success. Endless spinners instead of an error. A generic “unknown error” when the real problem was a server that couldn't be found.
The blind spot: Error paths get clicked least, so they get tested least. Nothing throws an error, so an error tracker has nothing to catch.
- #6
The trial that leaves you stuck
13/2821 findings · 13 products
Trials that couldn't connect a data source or upload a file, locked features with no word on how to unlock them, wizards that saved an empty draft. In one product, a payment request on the first day of the free trial.
The blind spot: Teams test onboarding with their own account, which has data, a paid plan and history. Nobody sees a fresh, empty trial.
- #7
Data that shows up wrong
14/2823 findings · 14 products
Dates in several formats across one app, times in the wrong time zone, a status that means one thing on the dashboard and another in the list, different phone numbers for the same office.
The blind spot: Each screen formats its own data. Nobody compares the same record across screens, or the website with the app.
- #8
Broken links, sometimes on the money button
19/2833 findings · 19 products · 3 with a call or trial button that opened a 404
Links to pages that no longer exist, across navigation, help and policy pages. In 3 products, it was the button that books a call or starts a trial.
The blind spot: The site and the app are deployed separately. URLs change on one side, and the other side never hears about it.
And the small stuff that adds up: 25 of 28 had a language leftover or a typo. None of these will lose you a customer on its own. Together they tell a prospect how carefully the rest was built.
If nobody signs up as a stranger, a stranger finds your bugs first.
Want to know which pattern to check first on yours? Send me your URL.
What you can do this week
Each item takes under an hour. Do 1, 2 and 3 before every release and you're ahead of most of the 28 products we tested.
1. Write down your 10 critical flows
The ones that would hurt if they broke silently. A starter list:
| # | Flow | Done when |
|---|---|---|
| 1 | Sign up with a fresh e-mailDone when: You're inside the app on the first submit | You're inside the app on the first submit |
| 2 | Verify e-mail / magic linkDone when: The link logs you in | The link logs you in |
| 3 | Log in with a wrong password, then the right oneDone when: The error stays visible, then you get in | The error stays visible, then you get in |
| 4 | Reset passwordDone when: The new password works | The new password works |
| 5 | Pick a plan and pay (sandbox)Done when: The invoice matches the pricing page | The invoice matches the pricing page |
| 6 | First “aha” action in an empty accountDone when: It works with zero data | It works with zero data |
| 7 | Invite a teammateDone when: They can log in | They can log in |
| 8 | Your core action (send, publish, export...)Done when: The result arrives | The result arrives |
| 9 | Upgrade or downgradeDone when: Plan and price change correctly | Plan and price change correctly |
| 10 | CancelDone when: It actually cancels | It actually cancels |
2 to 10. The one-hour checks
- 2Sign up as a stranger after every releaseIncognito window, a new e-mail (
you+release42@yourdomain.com), no saved passwords. Submit once. Did it work the first time? - 3Do the pricing mathFor every “save X%”, compute
1 − yearly ÷ (12 × monthly). Pay for 10 months and get 12: that saves 16.7%, not 20%. Then compare the pricing card, the comparison table, the checkout button and the invoice. - 4Open DevTools before you touch the cookie bannerIn the Network tab, filter by your ad and analytics domains. Load the page, click “Reject all” and reload. Anything that fires is a finding.
- 5Ask your login screens who existsTry login, sign-up and reset with an e-mail that has no account, then with one that does. If any message differs, a stranger can tell them apart.
- 6Crawl your links
npx linkinator https://your-site.com --recurseThen click every call-to-action at the end of your product tour by hand. - 7Run a quick accessibility pass on sign-up and pricing
npx lighthouse https://your-site.com/signup --only-categories=accessibility --view - 8Mistype the password and look away for 10 secondsIs the error still there when you look back?
- 9Open the dashboard of a brand-new accountDo the numbers make sense with zero data? Does any percentage divide by zero?
- 10Switch the language and read only the buttonsLeftovers hide in buttons, e-mails and error messages, not in headlines.
How a 6-week pilot works
Your ~10 critical flows, run from your CI or with one click. A 6-week pilot for SaaS teams with no QA yet. Wopee.io runs an AI agent that uses your web app like a real user. It reads the screen, not your code, so a renamed button doesn't break the test.
- Week 1
Pick the flows, get the first findings
- We agree on your ~10 flows together: sign-up, login, pricing to checkout, your core action, invites, cancel.
- The agent signs up as a stranger and walks them.
- First findings with steps and screenshots in the first week.
In October: median 1 h 41 min from starting on a new product to its first filed findings (13 products timed).
- Weeks 2 to 6
From your CI, or on demand
- Your CI or one click
- ~10 flows run
- Report in minutes
- We run it from your CI, or on demand: you or we click one button and get the report in a few minutes.
- We improve and maintain the tests for you as your product changes.
- You see a green run or a short list of real defects. Nothing else.
- Every week
A person reviews every failure
- A red test is a question: is it the app, or is it our test? We answer it before you see it.
Red testA person checks the trace and videoApp defect: sent to you, with evidenceOur test: we fix it, you never hear about itIn October, 15 of 381 findings didn't hold up on our own re-check. We closed them ourselves.
Some sign-ups need a human step (CAPTCHA). We'll ask you for a test account.
- End of week 6
What you get
- Defects with steps, a recording and one line of business impact.
- Your ~10 flows, running and maintained by us. Green means they work, red means a reviewed defect.
- An end-of-pilot report: what we found, what your team fixed, what's still open.
- When you hire QA later, they start from running flows and evidence, not a blank page.
End of week 6: the report, and you decide whether to keep going.
Honest limits
- CAPTCHAs, bot walls and 2FA stop any unattended agentWe need a test bypass, a test account, or one human step. A CAPTCHA is protection, not a bug.
- The agent can be wrongThat's why a person reviews every failure. We promise evidence and review, not zero false alarms.
- It doesn't replace unit testsOr a QA lead's judgement. It covers the thin top layer unit tests can't see: can a user sign up, pay and do the main thing in today's build?
- It isn't a penetration test or a legal auditThe security and consent findings are the basics a careful user would notice.
- It takes a few rounds to settleExpect the first week to include test fixes on our side.
Our own mistakes, with the numbers
I run a small SaaS too. We shipped 262 releases in six weeks. I know the “we'll test it properly after this release” feeling from the inside. Here's what went wrong during these 28 runs.
- Our first round was only 56% greenOn the 18 products with a full first round, 101 of 180 passed. After we fixed our own test wording and test data, 123 of 180 (68%). 20 of the 22 extra passes came from fixing our own tests; 2 came after the vendor apparently fixed the bug.
- 15 of 381 findings were our mistakeWe misread a setting, or couldn't reproduce it. We closed them ourselves. That's 4% noise, and it's why a person reviews findings before you see them.
- Our pass/fail judge doubted 8 of 10 passes on one productEvery one was checked against the trace. The rule now: proof, or it isn't a pass.
- Bot walls won some rounds7 sign-ups stayed blocked for an unattended agent, and three app suites never ran.
- We forgot a file5 tests on one product couldn't run because our sample file was missing. Not their bug. Ours.
- The cookie banner comes firstBanners blocked clicks until we made “accept cookies” the first step of every test. Obvious in hindsight.
What went right: from starting on a new product to its first filed findings with screenshots took a median of 1 hour 41 minutes (13 products timed). 21 products got their first findings in one evening, with agents working in parallel and one person supervising.

Start here: send me your URL
- Your URL
- The flows we'd check first
- 30-min call, if it fits
Book 30 minutes or message me on LinkedIn. I'll tell you which of the eight patterns I'd check first on your product, and whether a pilot makes sense for you. No deck. Nothing from the check is ever posted.
How we counted
- 28 products from the top of a scored list of Czech and Slovak software companies, tested between 14 and 17 October 2026. Not a random sample of SaaS. Almost all are bilingual, which inflates the mixed-language numbers.
- Free or trial plans and public pages only, as any new user would. No paid tiers, real customer data, load tests or security probing beyond what a normal sign-up shows.
- Findings re-checked by a person on 16 and 17 October (341 of the 363 valid ones carry a re-check note). Of 381 filed, 15 were closed as our mistake and 3 as apparently fixed by the vendor, which leaves 363 valid. All counts come from one export taken on 19 October 2026.
- Severity and categories are ours. No vendor had confirmed any finding by 19 October. Consent findings describe network behaviour only and aren't a legal opinion.
- We don't publish product names, screenshots of tested apps, quoted error texts, exact amounts or details that would identify a product. If you think you recognise yours, you probably recognise a pattern that 10 other products share.