I Built a Side Project That Replaced My Full-Time Income. Here's the Boring Truth.
Published on BirJob.com · March 2026 · by Ismat
I want to write the article I wish had existed when I started. Not the "I made $10K in my first month!" fantasy. Not the polished indie hacker thread. The real version, where most days are boring, nothing goes viral, and the revenue chart looks like a very gentle hill instead of a hockey stick.
BirJob is a job aggregator for Azerbaijan. It scrapes 82 active job sites, deduplicates the listings, and puts them in one searchable place. As of March 2026, it handles 9,400+ job listings daily and generates enough revenue that I haven't needed a traditional job in over a year.
That last sentence sounds impressive. The 18 months of work it took to get there? Mostly not impressive. Mostly tedious. Mostly debugging scrapers at midnight, writing the same SQL query for the hundredth time, and staring at analytics dashboards that showed single-digit daily visitors for months.
Here's the whole story, with the boring parts left in.
The Idea (January 2024)
The origin story isn't glamorous. I was job hunting, checking 15+ websites every day, and it was driving me insane. Some sites were in Azerbaijani, some in Russian, some in English. Some had modern UIs, others looked like they were built in 2004 (and hadn't been updated since). Most had no filters, no search, no way to sort by date.
I thought: "Someone should aggregate all of these." Then the obvious follow-up: "Why not me?"
That's it. There was no market research, no competitive analysis, no validation framework. Just frustration and a willingness to spend my evenings writing Python scripts instead of watching Netflix.
In hindsight, this was fine. The best validation for a product is that you personally need it. The danger of heavy upfront research is that you convince yourself the idea is bad before you've tried. But it was also somewhat reckless. I got lucky that the market was underserved enough for my half-baked approach to find users.
For those interested in the technical architecture, I wrote a detailed breakdown on our blog about building on zero-cost infrastructure. The short version: GitHub Actions for scheduling, Vercel for hosting, Supabase for the database. All free tiers. My total infrastructure cost for the first 8 months was literally zero.
Months 1-3: The Embarrassing First Version
The first version of BirJob scraped three websites. Three. And it broke constantly. I'd come back from work, run the scraper manually, fix whatever broke, update a static HTML page, and push it to Netlify. The "automation" was me.
The website looked terrible. No CSS framework, no responsive design, no search. Just a list of job titles with links. I showed it to a friend and he said, very diplomatically, "It's functional."
I almost quit here. Not because it was hard — because it was embarrassing. I'd told people I was "building a startup" and what I actually had was a manually-updated list of 87 job postings on a page that looked like a 1997 GeoCities site.
I kept going because of one thing: I was using it myself. Every day. It was saving me time even in its terrible state. If it was useful to me, it might be useful to others.
Months 4-8: The Unsexy Middle
This is the part nobody writes about. The four months where you're building, building, building, and nobody cares.
I added more scrapers. Went from 3 to 15 to 30 to 47, eventually reaching the 82 active sources you can see today. Each one was a separate mini-project: figure out the site's structure, write the parser, handle edge cases, test it, add it to the rotation. Some took an afternoon. Some took a week. The SOCAR downstream scraper took me four days because their website was partially rendered in JavaScript and I didn't know what a headless browser was yet.
I rebuilt the frontend in Next.js. Added a database. Set up GitHub Actions to run scrapers automatically. Wrote deduplication logic (which I got wrong three times before getting it right). Added search. Added filters. Added pagination.
Nobody noticed. My analytics showed 3-7 visitors per day. I wasn't sure if they were real visitors or just me checking if the site was still up.
This is the phase that kills most side projects. The dopamine from the initial idea is gone. The product exists but nobody's using it. You start wondering if you're wasting your time. Every successful indie hacker has been through this. The ones who made it are the ones who kept building anyway.
The First Real Users (Month 9)
September 2024. I'd been sharing BirJob links in a few Azerbaijani Telegram groups whenever someone asked about job sites. Low-effort, not spammy, just "hey, here's a tool I built that might help."
One day I checked analytics and saw 147 visitors. Not 7. 147. Someone had shared BirJob in a large university student group. The next day: 312. The day after: 89 (the novelty wore off, apparently).
But a floor had been established. From that point, daily traffic never dropped below 30-40. Some of those students kept coming back. They told friends. Friends told friends.
The lesson: distribution matters more than product quality at the early stage. My product was the same before and after that Telegram share. The only thing that changed was that people knew it existed.
Month 10: The First Revenue
Revenue didn't come from a grand monetization strategy. It came from an email.
A small IT company in Baku emailed asking if they could post a job directly on BirJob. I didn't have that feature. I built it in four days — a simple form that let companies submit a paid job posting for 15 AZN (about $9 USD).
First customer paid on October 3, 2024. I remember the exact date because I stared at the payment notification for a full minute, not believing it. Fifteen manat. From a product I'd built myself. It felt like a million.
Revenue months 1-6:
| Month | Revenue (AZN) | Paying Customers |
|---|---|---|
| October 2024 | 15 | 1 |
| November 2024 | 45 | 3 |
| December 2024 | 120 | 6 |
| January 2025 | 240 | 9 |
| February 2025 | 410 | 14 |
| March 2025 | 580 | 17 |
Not hockey stick growth. More like... a gentle ramp. This is what real early revenue looks like for most indie products. If you're reading this and your product made $30 last month, you're doing fine. Seriously.
What "Replace My Income" Actually Means
I need to be specific here because "replaced my full-time income" can mean very different things.
My last full-time salary was 1,800 AZN/month. Not high. Not low. Middle-of-the-road for a non-tech role in Baku. BirJob passed that threshold around month 14 (December 2025), when revenue crossed 2,000 AZN consistently.
But revenue isn't income. There are costs. Hosting (I eventually outgrew free tiers). Payment processing fees. The occasional paid tool. Tax considerations. After everything, my actual take-home from BirJob is... comfortable. Not luxurious. I'm not buying a Tesla. But I'm not checking my bank account anxiously anymore, which is a milestone I don't take for granted.
If I'd been replacing a 4,000 AZN developer salary, the timeline would be significantly longer. Context matters.
The Boring Truth About What I Actually Do Every Day
You want to know the glamorous life of an indie product builder? Here's a typical Tuesday:
8:00 AM — Check if the morning scraper run completed successfully. It usually does. When it doesn't, debug whatever broke. Last Tuesday, the Azercell scraper failed because they changed their API's JSON field from _id to id. Took 20 minutes to fix.
8:30 AM — Check email. Customer support questions (usually "how do I post a job?" or "why isn't my listing showing up?"). Answer them.
9:00 AM — Work on whatever the current priority is. Some days it's a new feature. Some days it's fixing a bug. Some days it's writing a blog article for SEO. Today it's refactoring the deduplication logic because it's been producing false positives.
12:00 PM — Lunch. Actually eat away from the computer. This took discipline to establish.
1:00 PM — More building. Or more often, more debugging. Production systems always have something broken. Always. The question isn't "is something broken" but "is the broken thing important enough to fix right now?"
4:00 PM — Analytics review. What pages are getting traffic? Where are people dropping off? Are the scrapers returning fewer results than usual (which might mean a source site changed)? This is 20 minutes of staring at numbers that usually say "same as yesterday."
5:00 PM — Done. Most days. Sometimes I work in the evening if something's genuinely urgent. But I've learned to protect my evenings.
That's it. No pitching investors. No networking lunches. No growth hacking. Just building, fixing, and supporting. Every day. It's boring. And I love it.
The 14 Things I Got Wrong
Since everyone loves a good failure list:
1. I built a chat feature nobody used. Spent two weeks on it. Zero engagement. Removed it.
2. I tried to add salary estimation using ML. The data was too sparse. The estimates were laughably wrong. Shelved.
3. I underpriced the paid job postings initially. 15 AZN was too cheap for businesses and made the product seem unserious. Raising the price actually increased conversions.
4. I spent a month on a mobile app before realizing the responsive website was good enough. Month wasted.
5. I didn't invest in SEO until month 8. Should have started on day one. SEO is the slowest growth channel but the most durable.
6. I tried to scrape boss.az using their public HTML. Turned out it's a Next.js SPA powered by GraphQL. Rewrote the scraper three times.
7. I deployed broken code on a Friday night. Twice. Both times I spent my Friday evening fixing it instead of relaxing.
8. I argued with a user who left negative feedback instead of learning from it. The feedback was valid.
9. I built features I thought were cool instead of features users actually asked for. Cool features got no usage. User-requested features got immediate adoption.
10. I tried running ads before the product was ready. Paid for traffic that bounced immediately. Wasted about 200 AZN.
11. I didn't write tests for the scrapers. When I changed shared code, multiple scrapers broke silently. Added tests eventually, but fixing the accumulated breakage was painful.
12. I tried to do everything myself for too long. There's a point where the solo founder heroics need to give way to getting help, even if it's just a freelancer for a specific task.
13. I compared my revenue to US-based indie hackers. Their market is 30x bigger. The comparison was meaningless and demoralizing.
14. I didn't take a single day off for the first five months. Burned out so badly I couldn't code for a full week. Counterproductive.
What Actually Drove Growth
In order of impact, here's what actually moved the needle for BirJob:
1. SEO (organic search). This is 60% of traffic and 100% of sustainable growth. Blog articles about job hunting, career roadmaps, interview tips — all bringing in people searching for career advice. Those people discover BirJob exists and start using the job search. The flywheel is: content → traffic → users → more data → better content.
2. Word of mouth. About 25% of traffic. People telling other people. You can't buy this. You earn it by being useful consistently. Every user who comes back tomorrow is a user who might tell a friend.
3. Telegram groups. About 10%. Sharing in relevant communities (not spamming — answering questions and occasionally linking to BirJob when genuinely helpful).
4. LinkedIn posts. About 5%. Sharing insights from BirJob's data. What skills are trending, which companies are hiring, etc. People follow for the data, discover the product.
What didn't work: paid ads (too expensive for the LTV), Twitter (Azerbaijani audience is tiny there), Instagram (wrong audience for a job platform), cold email (nobody responds, everyone hates it).
The Honest Numbers: Now
I won't share exact revenue because I'm private about finances. But I'll share the metrics that matter:
- Daily active users: 1,200-1,800 range
- Active scraper sources: 82 (out of 91 written, with 15 disabled)
- Job listings processed daily: ~9,400
- Revenue trend: Growing 12-18% month-over-month
- My monthly costs: Under 150 AZN total
- Time to ramen profitability: 14 months
These numbers would be embarrassing in San Francisco. In Azerbaijan, they represent a real, growing business that's solving a real problem for real people. Market size matters, but market size isn't everything.
Advice for People Considering a Side Project
Start with a problem you personally have. If you don't use your own product, you'll lose motivation when nobody else does either. My strongest advantage is that I'm my own first user. I know what's broken because it annoys me.
Keep your day job longer than you think you should. I quit early. It worked out, but it also caused financial stress that affected my decision-making. If I'd stayed employed for 3 more months, the transition would have been smoother.
Launch embarrassingly early. My first version was mortifying. It also taught me things that six more months of building in private never would have.
Boring ideas are good. Job aggregation is not exciting. Nobody gets venture capital for job aggregation in Azerbaijan. But it's a real problem with a clear use case and a straightforward business model. Boring + useful beats exciting + speculative.
The work is daily. Not when inspiration strikes. Not when you feel like it. Daily. Consistency beats intensity. I'd rather work 3 focused hours every day than 12 hours on a random Saturday.
Tell people what you're building. Fear of judgment is real but overrated. For every person who thinks you're silly for building a job scraper, there's another person who needs exactly what you're building.
Sources
- BirJob.com internal analytics data, 2024-2026
- Vercel, Supabase, and GitHub Actions usage logs
- Personal financial records (redacted)
- Indie Hackers community, "Revenue Milestones" database (for benchmarking)
I'm Ismat, and I build BirJob — a job aggregator that scrapes 80+ Azerbaijani job sites so you don't have to. If this helped, check our blog for more.
