I had 42 pulls, a credit card that was dangerously within reach, and two banners staring back at me. On the left, the character everyone said was meta. On the right, the one I actually liked. Both were limited. Both would disappear in a few days.
I did what any reasonable person does in that situation: I opened a coin flip website.
Then I closed it, because a cookie banner asked me to accept 847 partners.
Then I opened another one. It wanted an account.
Then I opened a random number generator that looked like it had been designed in 2003 and had a 3-second ad before showing me a number.
And somewhere between the third pop-up and the fourth "accept all", I thought:
Why is the simplest decision in the world the hardest thing to do on a computer?
That night, I didn't pull. I opened my code editor instead.
The tiny problem behind the big project
The gacha dilemma is silly. I know that. But it's also the perfect example of a much more common problem.
We hesitate constantly:
- Which of these two apartments should I take?
- Which candidate do we hire?
- Which feature do we build next?
- Which restaurant do we pick when nobody wants to decide?
And for all of these, we either overthink for 40 minutes, or we ask a friend who cares way less than we do.
I didn't want to build "a random generator". I wanted to build the thing I wished existed at 1:47 AM: something that opens instantly, does one job perfectly, and gets out of the way.
No account. No ads. No cookie banner. No loading spinner. No internet.
Just a decision.
So I built Capricio
Capricio is a small desktop app for Windows, made with Tauri 2, Angular 22 and Rust.
It does four things, and it tries very hard to do them well:
- Coin flip: with custom labels, so you can flip between "Banner A" and "Banner B" instead of Heads and Tails.
- Random number: min/max, optional no-repeat, instant result.
- List draw: paste a list, pick one or several winners, with or without replacement.
- Weighted pros & cons: list your arguments, give them a weight, and get a verdict with a score and a percentage gap.
The whole thing is designed around one rule: a decision should take less than three clicks.
There's a short animation, a "Play again" button, full keyboard navigation, four languages (English, French, German, Spanish), light/dark/system themes, and a local history so you can look back at what you decided, and whether you actually followed through.
And here's the part I'm most proud of: it's 100% offline.
No account. No telemetry. No tracking. No ads. Your arguments, your lists, your history, they never leave your machine. Not because of a privacy policy, but because there is no server to send them to.
What building it taught me
I thought this would be a weekend project. It wasn't.
1. Rust makes "fast" feel effortless
All the sensitive logic lives in Rust: the random draws, the weighted scoring, the bias detection when only one side of a pros/cons list is filled. Angular only renders. That separation is not just architectural purity, it's what makes the app feel instant.
Cold start is under 1.5 seconds. The installer is under 15 MB (without the system WebView). Idle memory stays under 50 MB.
When you're half-asleep trying to make a decision, those numbers are not specs. They're the difference between using the app and closing it.
2. The hardest part of a decision tool is trust
If I'm going to let an app decide something for me, even something small, I need to trust it. So I unit-tested the scoring and random modules heavily. Not because it's a checklist, but because a decision helper that is subtly wrong is worse than no decision helper at all.
3. Constraints are a feature
I removed things. A lot of things. No cloud sync in V1. No export. No social features. No "AI-powered decision engine".
Every feature I added was a reason for someone to hesitate before making a decision, which is exactly the opposite of the goal.
4. The pause is the product
This is the one that surprised me most.
People don't actually want an app to decide for them. They want permission to stop circling. The coin flip doesn't choose for you, it shows you how you feel about the result.
Capricio is not an oracle. It's a pause button with a clean interface.
The moment it became real
A few days after publishing it, a friend texted me a screenshot.
He had used the pros & cons screen to decide whether to accept a job offer. He told me he already knew the answer, he just needed to see it written down, weighted, and laid out in front of him.
That's when it stopped being "the app I built because of a gacha banner" and became something I actually want to maintain.
Try it
Capricio is free, open source, and available now.
- Microsoft Store: Download Capricio
- GitHub: Martzcode/Capricio
It's built for Windows 10/11 today, with a cross-platform architecture underneath (macOS and Linux builds are possible).
If you try it, two small favors
- Star the repo on GitHub. It takes two seconds, and for a solo open-source project, it genuinely helps more than you'd think, it's often how other developers discover the project.
- Leave a rating on the Microsoft Store if the app is useful to you. Ratings are the main signal that tells new users "this is legit, and it's maintained." If something's missing or broken, tell me in the review or open an issue, I read everything.
And if you have a better idea for the next feature, open an issue. I built this because I couldn't decide between two banners. I'd love to hear what you can't decide between.
Final thought
We spend so much energy trying to optimize decisions, and so little energy noticing that most of them don't need optimizing. They need a nudge.
So here's my nudge to you: next time you're stuck between two options, don't open fifteen tabs. Flip a coin. Notice your reaction to the result.
You'll probably have your answer before the animation even ends.
That's how Capricio was born. Not from a product strategy, but from a very tired developer, a gacha banner, and a refusal to accept one more cookie pop-up.

Top comments (0)