Getting income every month is better than seeing cash burning in your bank account.
I considered selling and had a few offers.
But If I sold, I couldn’t figure out what I would be doing.
If I am going to build a new product, then why am I not doing it now?
Vacation? I tried to do nothing for a week or two, it gets boring quickly.
Maybe, I lack imagination, but I didn’t find a meaningful reason to sell.
I launched https://t.co/9KmQTXjZZq on May 29, 2022, 4 years ago 🥳
Since then, it has grown to $33K MRR with over 1,000 paying customers and executed more than 100,000,000 API requests.
It is nothing impressive compared to the recent successes of people making millions in months after launch. But for me, it was life-changing:
0. A lot of luck involved, but I proved to myself I can achieve things.
1. Build my life the way I want it.
2. This allowed me to spend a lot of time with my kids and family. I almost didn’t miss any important events for them.
3. To fund pleasures. I have been reading every day, traveling, and meeting interesting people.
4. To give back to others and sponsor certain projects/people.
One of the biggest successes for me is that I found ways to sustain my motivation to work on the product, and I don't see why I would stop.
Grateful to everyone who supported me on this journey.
And onto the next chapter. 🚀
Ask me anything.
Help me test Uneed.
Can an outsider beat the founder launching on their own platform?
Support ScreenshotOne at https://t.co/zKczPerz6E 🫶
I will report the number of visitors after the launch.
Consider supporting Piotr, too:
This guy makes over $12,000/month from screenshots.
Solo founder.
Tons of competition.
STILL successful.
We talked and broke down exactly how he did it. No fluff, just pure gold:
> How to pick your projects (2:18)
> Why competition is actually good (3:07)
> Simple framework for launching fast (4:36)
> How to talk to customers (7:09)
> Tools for running a $100K saas (9:45)
> Why you shouldn't listen to anybody (13:13)
Couldn’t fall asleep at night. Then I had a flight in the morning, then a train. After spending the whole day traveling, I expected to be completely exhausted.
But the moment I arrived at the https://t.co/FF2aAwm3Pj residency, I immediately got energized. So many nice and interesting people.
Huge thanks to Thomas (@T_Zahil) for organizing the event!
Rebuilt notifications for ScreenshotOne's API usage:
1. Added multiple recipients.
2. Slack notifications.
3. New templates to make the message clearer.
There is still a lot to improve and add.
💡 But it could be a separate API product to manage and send notifications 🤔
Introducing: https://t.co/jJaPKWEeIK 🎉
The largest searchable library of SaaS pricing pages on the internet.
Trying to find good SaaS pricing page references is annoying.
Every search lands you on the same blog post from 2019 with 10 outdated screenshots.
So we built 💸 Pricing Pages 💸
989 real SaaS pricing pages. Each one screenshotted, tagged by design pattern, and filterable.
→ 11 feature filters: highlighted tier, free trial, calculator/slider, monthly/yearly toggle, feature comparison rows, hidden prices, add-ons, tooltips, sticky header, free tier, enterprise tier
→ 11 extras filters: testimonials, customer logos, FAQs, ratings, email capture, bento grids, awards, chat widgets, credit card logos, custom quotes, newsletter signup
→ Filter by tier count (1–5)
Built for SaaS founders, PMs, and designers who want real references — not a stale listicle.
Free to browse.
https://t.co/jJaPKWEeIK
Back in January, @robhope reached out — he was looking to offload some of his projects.
Conversion Factory ended up buying the https://t.co/jJaPKWEeIK domain from him. No website, no codebase. Just the domain.
Once we had the time to work on it, we went from blank canvas to launched site in about a month.
The tech stack:
→ Next.js + TypeScript
→ Drizzle + Neon for the database
→ Vercel for hosting
→ ScreenshotOne for capturing every pricing page at high res
→ Tagging layer for the design pattern classifications
The brand:
We wanted it to feel like money — classic, valuable, instantly recognizable. So we pulled inspiration from the US dollar bill: the typography, the engraving line work, the deep greens. Every detail in the brand quietly references what pricing pages are actually about.
Free to browse: https://t.co/jJaPKWEeIK
I grew ScreenshotOne to over 900 paying customers in more than 3 years with 2 API endpoints and around 30 options.
For an API product, adding new features is a huge problem. Every new endpoint or option you add will stay with you forever. Forever!
Nobody will migrate and spend time on your breaking changes. And you don’t want to be that annoying API provider that breaks something every week, and everybody complains about. You want your product to be synonymous with reliability.
Damn, I don’t even have API versions. I support every option I have ever added and keep them all backward compatible.
I am heavily inspired by Java and Go. Old code should keep working.
But there is a price for all that. It is unimaginably hard to implement feature requests. And yet you have large paying customers who ask for more and more.
My current approach is:
- have a vision of where I am going;
- add primitives slowly;
- make them reusable for future capabilities.
For example, many customers asked to add full-page screenshot slicing. I didn't want to add it and make the API more complex.
But now when I have a vision, the feature perfectly fits it. ScreenshotOne is becoming a reliable vision layer for agents: give a URL and get what you need from it.
The same feature will later power more agentic workflows, but it will be battle-tested in production first.
Build simple primitives aligned with your vision that, in combination, make customers powerful and help them extract more value from your product.
Shipped an improvement for customers analyzing screenshots with AI.
Instead of feeding one massive screenshot into the model, you can split it into overlapping slices and analyze them separately 👉 https://t.co/jqYxZiUj4H
That often produces better results than sending a single long screenshot.
I am trying a new format, posting customer stories written by them (plus a bit of editing with their approval).
@nico_jeannen shared how he uses ScreenshotOne to automate onboarding in his ads analytics platform https://t.co/5okiboYhnl 👉 https://t.co/O9cbCpNXcg
The hardest websites to screenshot are commerce websites.
Animations, sales and localization pop-ups, cookie banners, chat widgets, lazy loading...
I created https://t.co/1utBlDyDu7 for myself to improve ScreenshotOne’s rendering. It also helps potential customers assess the rendering quality quickly.
All screenshots are generated automatically from publicly accessible websites, without manual cleanup or intervention.
I will keep improving banner blocking, rendering consistency, and rendering heuristics until screenshots look as close to the real browsing experience as possible.
New video on Flue, Sandcastle, and doing it yourself!
It covers:
1️⃣ Flue by @FredKSchott. An agent harness framework
2️⃣ Sandcastle by @mattpocockuk. A TypeScript library for orchestrating coding agents in sandboxes
Thanks to @DmytroKrasun's ScreenshotOne for sponsoring!
The less MRR I had, the more I "knew" what I was doing.
Now my MRR is higher than my follower count. But ironically, I feel less confident giving advice.
So many nuances. What truly works? What doesn’t? What was luck?
But one thing I do believe:
Being lucky never hurts, but if you are building in a validated market, making money becomes a question of skill, persistence, and time.
Still incredibly hard. But possible.
Don’t give up. Keep going.
After many years of knowing and following @DmytroKrasun I finally signed up for a paid @screenshotone plan ✌️
Such a cool product and ridiculously easy to use