Building Three Products as a Solo Developer — The Honest Breakdown
Most "I built a thing" posts skip the boring parts. They show the launch tweet, the traffic spike, maybe a revenue screenshot. They don't show the 14 months of broken scrapers, the database migrations at 2am, or the moment you realize nobody is coming to your site because Google doesn't know it exists.
I'm a data analyst at a bank in Baku, Azerbaijan. Over the past two years, I've built three products outside of work: a job aggregator, a digital marketing platform, and a technical blog. All three are live. None of them made me rich. Here's what actually happened.
The Products
birjob.com — Job Aggregator
BirJob scrapes 77+ job sources across Azerbaijan and combines them into a single search. The backend is 91 Python scrapers running on a schedule, deduplicating against a PostgreSQL database. The frontend is Next.js.
The whole thing runs on about $25/month. No Kafka. No Kubernetes. Just async Python, a Neon Postgres instance, and Vercel.
Why did I build it? Azerbaijan didn't have a decent job aggregator. Job seekers had to check dozens of individual company career pages, Facebook groups, and scattered job boards. I thought I could fix that with web scraping. I was right about the problem — but underestimated how much maintenance 91 scrapers require.
reklamyeri.az — Digital Marketing Services
Reklamyeri.az is a digital marketing services platform for the Azerbaijani market. It connects businesses with marketing solutions — SEO, social media, paid ads, content creation.
Building a marketplace is harder than building a tool. With BirJob, I had one user type (job seekers). With reklamyeri.az, I needed to attract both service providers and businesses looking for marketing help. Two-sided marketplaces are a cold start problem, and I'm still working through it.
ismatsamadov.com — Technical Blog
ismatsamadov.com is where I write about the things I'm learning and building. AI, machine learning, data engineering, Python, SQL — 70+ articles so far. It started on Medium, then I moved to my own domain.
The blog isn't a product in the traditional sense. It doesn't generate revenue. But it's the reason I got my current job — a hiring manager found my fraud detection articles and reached out directly. That single outcome justified every hour I spent writing.
What I Got Right
Solving a real problem first
BirJob works because the problem is obvious. If you're looking for a job in Azerbaijan, you don't want to check 77 websites. You want one. That clarity made every product decision easier — if a feature didn't help someone find a job faster, I didn't build it.
Choosing boring technology
Python, PostgreSQL, Next.js. Nothing exotic. I picked tools I already knew well. When a scraper breaks at midnight (and they do), I don't want to be debugging an unfamiliar framework on top of the actual problem.
The stack across all three products:
| Layer | Technology | Why |
|---|---|---|
| Scraping | Python, aiohttp, BeautifulSoup, Playwright | Async for speed, Playwright for JS-rendered sites |
| Database | PostgreSQL (Neon) | Reliable, great for deduplication queries |
| Frontend | Next.js, Tailwind CSS | SSR for SEO, fast iteration with Tailwind |
| Hosting | Vercel (frontend), GitHub Actions (scrapers) | Free tier covers most of it |
| Blog | Next.js, MDX | Same stack as other projects, zero learning curve |
Writing about what I build
Every technical problem I solve becomes a blog post on ismatsamadov.com. Graph-based fraud detection models. Data pipeline architecture. SQL optimization. This creates a feedback loop: building gives me things to write about, and writing sharpens my understanding of what I built.
It also generates backlinks. When I write about how BirJob's scraping pipeline works, people link to both the article and the product. Free marketing.
What I Got Wrong
Underestimating maintenance
Building 91 scrapers is hard. Keeping them running is harder. Websites change their HTML structure, switch to SPAs, add Cloudflare protection, move to GraphQL APIs, or just go offline. I've disabled 15 scrapers because the maintenance cost exceeded the value of the jobs they returned.
If I started over, I'd build fewer, more reliable scrapers rather than trying to cover every source.
Building before validating distribution
With reklamyeri.az, I built the platform before figuring out how to get service providers and clients onto it. A marketplace with no supply or demand is just a website. I should have started with a simple landing page and manual matchmaking before writing any code.
Ignoring SEO for too long
BirJob was live for months before I added proper meta tags, structured data, or a sitemap. I assumed "if I build it, they will come." They didn't. Google doesn't index what it can't understand.
The fix was straightforward — Schema.org markup, canonical URLs, proper heading hierarchy, a blog with relevant content. But those months of zero organic traffic were lost time.
The Economics of Solo Side Projects
People always ask about revenue. Here's the honest picture:
| Product | Monthly Cost | Revenue | Real Value |
|---|---|---|---|
| birjob.com | ~$25 | Sponsored job posts | Portfolio piece, SEO authority, user base |
| reklamyeri.az | ~$12 | Early stage | Marketplace experience, local market knowledge |
| ismatsamadov.com | ~$12/year | $0 | Job offer, professional network, learning |
The blog costs almost nothing and has returned the most value — a direct job offer. BirJob costs the most but has the largest growth potential. Reklamyeri.az is the riskiest bet because marketplaces either work or they don't; there's rarely a middle ground.
Total monthly spend across all three products: under $40. That's the reality of solo development in 2026 — cloud infrastructure is cheap enough that cost isn't the bottleneck. Time is.
Time Management (Or Lack Thereof)
I work full-time as a data analyst. I'm finishing an MBA. I maintain three products.
I won't pretend I have a perfect system. Some weeks I write three blog posts. Other weeks, nothing. Some months I ship features to BirJob every day. Other months I'm just fixing broken scrapers and that's all I can manage.
What does work:
- Morning writing. I write blog posts for ismatsamadov.com before work, when my head is clear. Trying to write after 8 hours of staring at SQL produces garbage.
- Weekend blocks. Big features get built on Saturday mornings. 4 focused hours beat 10 scattered ones.
- Automated monitoring. BirJob's scrapers run on GitHub Actions with Telegram notifications. If something breaks, I know immediately — I don't have to check manually.
- Saying no to features. Every feature request I don't build is time I keep. The hardest skill in solo development is deciding what not to build.
The Azerbaijan Factor
Building tech products in Azerbaijan has specific advantages and disadvantages.
Advantages:
- Underserved market. Many niches that are saturated in the US or Europe are wide open here. There was no proper job aggregator before BirJob. The digital marketing space that reklamyeri.az targets is still fragmented.
- Growing tech sector. Azerbaijan's ICT sector revenues grew 12.5% in 2024. The government approved a Digital Economy Strategy for 2026-2029 with 50+ initiatives. Internet penetration is 89%. The market is growing.
- Low competition for content. Very few people write technical content in English from Azerbaijan. Writing on ismatsamadov.com about local tech problems gives me a unique angle that resonates globally.
Disadvantages:
- Small market. 10 million people. The total addressable market for most products is a fraction of what you'd get targeting English-speaking users.
- Payment infrastructure. Integrating payments in Azerbaijan requires working with local payment providers. International solutions like Stripe aren't available.
- Talent pool. If I ever need to hire, the pool of developers familiar with modern stacks is smaller than in larger tech hubs.
Practical Advice for Other Solo Builders
If you're thinking about building something on the side, here's what I'd tell you based on two years of doing it:
1. Start with a problem you personally have. I needed a job aggregator. I needed a place to write. I saw gaps in the local marketing space. Building for yourself means you're always your own first tester.
2. Ship the smallest thing that works. BirJob v1 had 10 scrapers and no frontend — just a PostgreSQL table I queried manually. That was enough to validate the idea before I spent months building a full Next.js app.
3. Write about what you build. A blog post about your architecture, your mistakes, or your results costs nothing and can return enormous value. My blog at ismatsamadov.com has directly led to job offers and professional connections.
4. Own your domain. Don't just write on Medium or dev.to. Get yourname.com and build there. The SEO value accrues to you, not to a platform. A domain costs $12/year. Vercel hosting is free. There's no excuse.
5. Expect 6-12 months before anything happens. BirJob got meaningful organic traffic after about 8 months. My blog started ranking on Google after 6 months of consistent posting. If you need instant gratification, side projects will disappoint you.
6. Track everything. Google Search Console, analytics, error monitoring. You can't improve what you don't measure. Half of my best product decisions came from looking at what users actually searched for on BirJob.
What's Next
BirJob is expanding beyond simple job aggregation. Sponsored listings, email notifications, and HR tools are already live. The next step is making the matching smarter — using the data from 77+ sources to surface the right jobs to the right people.
Reklamyeri.az needs more supply-side work. Getting quality marketing service providers on the platform is the current bottleneck.
And ismatsamadov.com will keep getting new articles. Writing is the one thing that compounds — every article makes the domain stronger, the backlink profile richer, and the professional network wider.
None of these products are finished. That's the thing about solo projects — they're never finished. You just keep shipping.