Latest / The Indie Hacker Podcast with Fexingo: Solo Developers, SaaS Side Projects, and Independent Tech / How a Solo Dev Built a SaaS With No Landing Page
Transcript
- Lucas: So a solo developer hits ten thousand dollars in monthly recurring revenue in five months — and he never built a landing page. Luna: Wait — no homepage at all? No 'Sign Up for Free' button? Lucas: None. No website. No email capture. No pricing page. The product was an API — a single endpoint that lets you generate and send invoices. You sign up by making your first API call. That's it. Luna: That's wild. But how do people even find it if there's nowhere to land? Lucas: That's the part that makes this a genuinely different distribution story. The developer, who goes by the handle 'InvoiceDev' on Hacker News, launched the product as a CLI tool first — you could run a command like 'invoice create --amount 50 --client ACME' and it would create an invoice through his API. He posted the CLI on Hacker News, and the conversation was entirely about the tool, not the business behind it. Luna: So the CLI was the landing page. That's clever. Lucas: Exactly. Developers don't want to read about your product — they want to try it. He made trying it a single command. 'npm install invoice-cli', run it, and boom — you've generated an invoice. He didn't ask for an email. He didn't show a pricing table. The tool just worked, and if you wanted to do more, you read the docs, which were just a GitHub README. Luna: But ten thousand dollars a month from a CLI and a README? That's a lot of invoices. Lucas: He charged a flat fifty cents per invoice — no tiers, no monthly subscription. So at ten thousand dollars, that's twenty thousand invoices a month. And he got there in about five months. The key is that his customers weren't end-users sending one invoice a month — they were other developers building invoicing into their own apps. One customer was a freelance marketplace that integrated his API to handle payments between clients and freelancers. That one integration alone accounted for about three thousand dollars in monthly usage. Luna: So it's less about volume per user and more about embedding the API into someone else's product. That's a classic api first play. Lucas: Right. And he made it incredibly easy to embed. The API was a single POST endpoint. You send the invoice data, it returns a PDF link. That's it. He didn't build a dashboard, didn't build a web UI for managing invoices — just the API and a CLI wrapper around it. The entire 'product' was maybe two thousand lines of Node.js code. Luna: If today was actually useful to you, the way these stay ad-free is listener support — you can find us at buy me a coffee dot com slash fexingo. Lucas: Yeah, we love doing these deep dives on unconventional builds, and knowing it's helpful keeps us going. So back to the story—the most interesting part is how he handled pricing transparency with no landing page. Lucas: He had a single line in the README: 'Pricing: $0.50 per invoice, first 50 free.' No signup required to start. You just make requests, and after you hit 50 free invoices, he sends you a Stripe link to add a card. No subscription, no commitment. Luna: That's a really low-friction model. Developers hate jumping through hoops to try something. Lucas: Absolutely. And he told me that his biggest competitor was a company with a beautiful landing page, a free trial, and a three-tier pricing table. His conversion rate from trial to paid was actually higher because there was no trial — you just started paying when you needed to. He said the psychological barrier of 'signing up' is higher than the barrier of 'I've already used it 50 times and it works'. Luna: That's a great insight. So many indie hackers spend weeks perfecting their landing page copy and CTA buttons. He spent that time building the API docs and the CLI. Lucas: Exactly. And the docs were crucial. He wrote them in a very conversational, problem-solving style. For example, instead of 'Authentication: Use Bearer token in Authorization header', he wrote 'To get started, just run the CLI with no arguments. It'll walk you through it.' Developers respond to that — it signals that you respect their time. Luna: What about customer support? Without a website, where do people go with questions? Lucas: GitHub issues and a Discord server. He said he spent about an hour a day on support in the beginning, but as the docs improved, that dropped to about fifteen minutes. And because his users were developers, they often helped each other in Discord. He had a channel called 'show and tell' where people posted what they built with his API. That became his best marketing — seeing real integrations. Luna: So the community became the landing page in a sense. Lucas: Exactly. He never had to write a blog post or run an ad. The CLI went viral on Hacker News, then Reddit's r/node, and then a few developers tweeted about it. One integration with a popular no-code tool got picked up by a tech newsletter, and that drove a spike of about a thousand new users in a week. He didn't even know the newsletter had mentioned him until his Stripe dashboard started lighting up. Luna: What's the biggest takeaway for someone listening who's building a SaaS right now? Lucas: I think it's that distribution isn't about where you put your landing page — it's about where your users already are. Developers are on GitHub, on Hacker News, in Discord servers. Meet them there with a tool that solves one specific problem, not a website that tries to sell them on a vision. He didn't sell 'invoicing software' — he sold 'send an invoice from your terminal.' That's a concrete, testable value prop. Luna: And he kept it simple. No dashboard, no analytics, no onboarding emails. Just the API. Lucas: Right. He's now at about eighteen thousand dollars MRR, and he still doesn't have a website. He says he might build one eventually, but it's not a priority. His churn is under two percent because the people who use his API have built it into their own products — switching costs are high. That's the moat: integration, not a brand. Luna: So for indie hackers listening, the question might be: what's the CLI version of your SaaS? What's the single command that solves a problem? Lucas: That's exactly the right question. And it doesn't have to be a CLI — it could be a Slack bot, a GitHub Action, a Chrome extension. The point is to make the first interaction feel like a tool, not a product. Once they're using it, you've already won the hardest part of the funnel.