Self-Publishing a Technical Ebook — What Actually Sold
Self-Publishing a Technical Ebook — What Actually Sold
I have now shipped two technical books: a print-on-demand paperback and a digital ebook. The paperback took eight months to write and produces a trickle of royalties. The ebook took six weeks and outsells it. Here is what I learned about what actually moves copies versus what feels like it should but doesn’t.
The Product That Surprised Me
My assumption going in was that the paperback — more effort, more credibility, higher price — would be the main revenue source. The ebook would be supplementary. The reality was the opposite, and the reason is obvious in retrospect: the audience for a technical book about AI tooling is online, reads on screens, wants to click links in the text, and does not want to wait for shipping.
The ebook converts better at every stage of the funnel. Someone reads a blog post, clicks through to a landing page, sees a $19 ebook, and buys. That same person almost never completes a $34 paperback purchase from a cold landing page. They want to evaluate first, and a lower-friction digital product lets them do that.
The paperback sells mostly to people who already bought the ebook and want a physical copy. It is a back-catalog item, not an acquisition tool.
The Pipeline
The source of truth is a directory of Markdown files, one per chapter. From that single source, both formats are built:
chapters/
ch01-intro.md
ch02-setup.md
...
build/
build_book.py ← assembles chapters, applies transformations
output/
ebook.epub
ebook.pdf ← for direct PDF sales
print.pdf ← for print-on-demand (different margins, bleed)
build_book.py does three things: concatenates chapters in order, applies format-specific transformations (print gets wider margins and bleed marks; the ebook gets hyperlinks and a clickable table of contents), and generates both outputs from the same source.
The single-source approach is essential. I tried maintaining separate print and ebook versions for about three weeks before giving up — the two drifted apart every time I fixed an error in one and forgot to fix it in the other.

Distribution Channels
I sell through three channels, and they are not equal.
Direct PDF Sales
Direct PDF sales (Gumroad or equivalent) generate the highest margin. No platform cut beyond the payment processor fee. The buyer gets an immediate download link, I get the email address for the list, and the transaction is complete. This is the channel I optimize for.
Amazon Kindle (KDP)
Amazon Kindle (KDP) gives discovery. People who have never heard of me find the book through keyword search. The royalty rate is lower — 70% on titles priced $2.99–$9.99, 35% outside that range — but the discovery value is real. I price the Kindle version slightly below the direct PDF to make it competitive there without undercutting the direct channel too aggressively.
Print-on-Demand
Print-on-demand (also through KDP, or IngramSpark) handles the paperback. I set the price at roughly 2× the ebook to cover printing costs and still leave a meaningful royalty. Order volume is low — ten to twenty copies per month — but it requires zero inventory and zero fulfillment work on my part.
The split in practice: roughly 55% of revenue from direct PDF, 35% from Kindle, 10% from print. The percentages shift toward direct over time as the email list grows.
What Actually Drives Sales
Three things move copies. Everything else is noise.
The email list. A launch to 2,000 subscribers who opted in because they read my blog posts outperforms a launch to 50,000 cold social media followers. The list converts because the subscribers already know the content style — they are not being asked to trust a stranger. I spend more time on list building than on any other marketing activity.
Specific, searchable blog posts. The posts that drive the most ebook conversions are not the ones that are most “viral” — they are the ones that rank for specific search queries. A post about debugging a Redis queue silent drop attracts someone with an active problem. That person is much more likely to buy a book about building reliable systems than someone who clicked a general interest link on social media.
The sample chapter. Making the first chapter freely available removed the biggest objection: “I don’t know if this is worth buying.” The conversion rate on the landing page roughly doubled when I added a downloadable sample. The people who download the sample and still don’t buy were never going to buy — the sample does not cannibalize sales, it filters out the wrong audience earlier.

What Did Not Work
Launching on Product Hunt. High visibility, low conversion, wrong audience. Technical practitioners do not browse Product Hunt looking for books. I got a bump in traffic for two days and about twelve sales. The same two days of effort spent writing a specific blog post would have produced more long-term revenue.
Discounting during launch. I launched at 40% off because I thought scarcity pricing would drive urgency. What it actually did was train the audience to wait for discounts. When I raised the price back to normal after the launch window, sales dropped — not because the price was too high, but because people were waiting for the next sale. I stopped doing time-limited discounts entirely. Permanent pricing is cleaner and does not create expectation games.
Building before validating. The first version of the book covered six topics because I thought more content meant more value. After launch, I looked at what readers actually highlighted and what they asked follow-up questions about. Three of the six topics generated almost all the engagement. In retrospect I should have sold a shorter, more focused book faster and expanded only if demand justified it.
The Maintenance Cost
A technical book about tooling that changes goes stale. I now budget roughly one day per month to update examples, check that code samples still run, and add sections covering things that changed significantly since publication. The alternative — letting the book go stale — leads to refund requests and bad reviews that compound.
The Markdown-source pipeline makes updates manageable. I edit the chapter files, rebuild both formats, upload the new files to Gumroad and KDP, and notify existing buyers that an update is available. The whole process takes two to three hours. Buyers who bought direct get lifetime updates; Kindle buyers get the update automatically if they re-download.
The Honest Revenue Number
In the first twelve months, the ebook generated approximately $4,200 in net revenue across all channels. That is not life-changing money, but it is money that arrives without me doing anything after the initial writing and occasional updates. The slope matters more than the absolute number: month-over-month revenue has grown every month as the blog drives more organic search traffic to the landing page.
The paperback added roughly $600 over the same period. Worth having — it costs nothing once set up — but not worth prioritizing over the ebook and the blog that feeds it.
The ebook described here covers building multi-agent AI systems on a single machine. The build pipeline and chapter structure are described in detail in the Build & Projects section.