Naramine: Giving Web Novels a Voice Without Leaving the Page
How a self-described starter turned his own listening itch into a browser extension that reads Wattpad and Royal Road stories aloud, runs its free tier on the reader's own machine, and plans to win over the platforms instead of scraping them
Key Lessons
- •Know whether you are a starter, and stop designing companies for a finisher
- •Build inside the platform instead of pulling its readers away
- •Make the first audio chunk tiny so playback starts before the file exists
- •Store generated content in the user's browser, not on your servers
- •Run the free tier on the user's hardware and sell the GPU as the upgrade
- •When usage comes in waves, sell a one-time gift instead of a subscription
- •Build the fair before you invite the crowd
- •Mine competitor keywords, then outwrite them one article a day
- •Partner with the small platforms first and take the receipts to the big ones
My CV does not tell one story, it tells a dozen short ones. I moved between Java, C#, and Ruby on Rails. I spent four years as a teaching assistant at the Politehnica in Timisoara, started a PhD I never finished, taught kids to code for three years in a collaboration with Nokia, and ran an outsourcing firm through the peak crypto years with clients and operations spread across the world. Somewhere in there I wrote a fantasy novel and did a stretch of investing in the stock market. For a long time I read that list as a lack of discipline. Eventually I read it correctly: I am a starter. I love taking things from zero to the point where they produce results, and I get restless in the long steady middle. Naramine is the first product I have designed around that fact instead of against it: a browser extension that reads web novels aloud, on the page where they live.

A starter, on purpose
The realization about being a starter did not arrive as a business insight, it arrived as self-acceptance. Once I stopped treating every unfinished decade-long ambition as a failure, the pattern looked less like flakiness and more like a preference with rules: I am at my best initiating something, pushing it until it works, and handing the marathon to someone or something else. That reframe produced a list of things I wanted to have done, the fantasy book, the investing period, and, at the top, a product of my own. Naramine is that checkbox, but it is also a test of whether I can build a company shaped like me.
Andrei’s resume looks fragmented, Java to C# to Ruby on Rails, four years teaching at the Politehnica, an abandoned PhD, an outsourcing firm, a fantasy novel, until you apply his own reframe: he is a starter, energized by taking projects from zero to first results and drained by the long steady middle. Instead of fighting that, he now designs for it, picking products that can reach a self-sustaining state quickly and planning early for automation and helpers to carry the marathon stretch. The standard startup script quietly assumes a finisher, someone who wants to run the same company for fifteen years, and a starter who signs up for that script abandons it at year two and calls himself undisciplined. Temperament is an input to company design just like market size. Figure out which kind of founder you are from the evidence of your own history, then choose the product shape, exit points, and delegation plan that fit the person who will actually be running it.
Half a billion views and no play button
The stories I wanted to consume are not on Audible. They are on Wattpad, Royal Road, Archive of Our Own, and Honeyfeed, self-publishing platforms that together pull roughly 500 million views a month and serve as the launch ramp for authors the big publishing houses ignore. I did not want to read them on a screen, I wanted to listen, while walking, driving, doing dishes. The tooling for that is surprisingly bad.
Generic text-to-speech products exist, Eleven Labs and Speechify among them, but they share a structural flaw: they pull you out of the site. You extract or import the text and consume it in their app, which makes them traffic devourers from the platform’s point of view, an invitation to litigation rather than partnership. And they do not understand the shape of a web novel: chapters, pagination, the need to autoplay into the next installment at two in the morning. The voices, where free, tend toward the soporific. So for a long time Naramine existed as a private backend, an engine only I used, feeding my own listening habit. In the last three months I gave it an interface and turned it into a product ready for beta.
The existing text-to-speech tools all make the same move: extract the story from the platform and play it in their own app. That works until you notice whose lunch it eats, because web novel platforms live on ads, comments, and community, and a tool that siphons readers off the page is a traffic devourer they have every incentive to fight, in court if necessary. Naramine is an extension precisely so it can stay on the page: it reads the chapter where it is published, follows the pagination, and leaves every pageview, comment, and vote where the platform can count it. That shape is what lets Andrei position it as an accessibility layer platforms could tolerate or even endorse, rather than a parasite they must kill. When your product feeds on someone else’s content, the architecture is also the legal strategy: pick the shape that adds to the host’s metrics instead of draining them, and you convert a future plaintiff into a future partner.
Chunks, buffers, and the next chapter
The demo I show people is mundane on purpose: open a story, press play, and the chapter starts speaking within seconds. Getting to mundane took engineering. Audio is generated chapter by chapter, and the first chunk of each chapter is deliberately tiny so playback can begin almost immediately; the chunks then grow until the pipeline settles into normal flow. While you listen, the system pre-buffers ahead, and when a chapter ends it has already begun preprocessing the next one in the background, so autoplay between chapters feels like one continuous audiobook rather than a series of loading screens.
Everything generated lands in IndexedDB, in the listener’s own browser. A heavy user’s cache can reach tens or even hundreds of megabytes, so there is a clear data control and a download option, but none of it ever touches my servers.
A chapter of a web novel runs around ten thousand characters, and synthesizing all of it before playing would mean a long silent spinner. Naramine instead generates a very small first chunk so the play button responds within seconds, then produces progressively larger chunks until the pipeline reaches normal flow, pre-buffering ahead of the listener and preprocessing the next chapter in the background before the current one ends. Minutes of compute still happen, but they hide behind consumption time the listener was going to spend anyway. This is the streaming insight applied to generative products: what users feel is latency to first value, not total processing time, and the two can be decoupled almost completely. Whatever your product generates, slice the work so the first slice is nearly free, ship it the moment it exists, and let the rest of the job run behind the experience instead of in front of it.
Every minute of audio Naramine generates is cached in IndexedDB on the listener’s own machine, sometimes tens or hundreds of megabytes of it, with a clear-data control and a download option for the user. Andrei’s servers never store the stories or the audio derived from them, and that decision does double duty. Economically, his storage bill is zero and stays zero as usage grows, which matters enormously for a solo founder with an 80 percent margin target. Legally, it keeps him a tool rather than a distributor: a service that hosts copies of authors’ copyrighted stories, or audio derived from them, has built a library it must defend, while audio generated on demand and held only on the reader’s device looks like the reader’s own personal-use copy. When your product transforms content you do not own, ask where the transformed bytes live, because that answer decides both your infrastructure costs and which side of a copyright argument you are standing on.
The same engine twice: Kokoro as free and as paid
The voice engine is Kokoro, open source, and I run it in two very different ways. Basic mode is Kokoro JS executing locally in the listener’s browser: on my Mac it synthesizes at about 1.3 times listening speed, which is enough to stay ahead of the narration, but on weak hardware it can drop below 1.0, around 0.8 on some machines, and the audio stutters while the pipeline catches up. It is also limited to English. Premium mode runs the heavier models on GPUs through Modal: cold starts of two to three seconds, audio delivered in chunks with the first one arriving very fast, better voices, additional languages, and no dependence on the listener’s laptop.
The economics are almost embarrassing. Processing 50 chapters on Modal costs under a dollar at my current setup, and Modal gives every account 30 dollars of free credits a month; I have noticed that multiple organizations under one account each seem to receive their own 30 dollars, a loophole I am treating as beta-phase budget rather than a business model. Sentry watches for errors. Heatmaps can wait.
Naramine’s Basic tier is the same open source engine as Premium, Kokoro, but executed as Kokoro JS in the listener’s own browser, so every free user brings their own compute and Andrei’s marginal cost for the entire free tier is zero. The limits of local execution, roughly 1.3x listening speed on a good laptop but stuttering below realtime on weak hardware, and English only, are exactly the pitch for Premium, which runs bigger models on Modal GPUs with two to three second cold starts, better voices, and more languages, at under a dollar per 50 chapters. The elegance is that the free tier demos the paid tier by being honest about its own ceiling: the user who feels the stutter understands precisely what the upgrade buys. If your workload can run client-side at acceptable quality, that is a free tier that cannot bankrupt you, with an upsell built out of physics instead of feature gates.
Sparkles, and a ten dollar gift
Premium is priced in credits I call Sparkles: a typical chapter of around 10,000 characters costs about 20 of them. What I refuse to do is charge a monthly subscription. Web novel reading happens in waves, a two week binge on a story, then nothing for a month, then another binge, and a subscription punishes exactly that behavior, forcing people to cancel and resubscribe or quietly pay for silence. So the model is a one-time purchase, around 10 dollars, framed as a gift you give yourself, with the Sparkles lasting as long as they last. My cost behind a 10 dollar purchase is on the order of a dollar and a half, which keeps the margin near 80 percent, and I am deliberately staying away from the expensive commercial TTS engines that would eat that margin alive.
Web novel readers binge: two weeks inside one story, a quiet month, then another binge. A monthly subscription taxes the quiet month, teaches users to cancel, and turns every resubscription into a fresh purchase decision. Andrei prices Naramine Premium as a roughly 10 dollar one-time purchase of Sparkles credits, about 20 per chapter, framed as a gift you give yourself, with costs behind it near a dollar fifty for an 80 percent margin. The one-time frame lowers the entry barrier, matches the wave shape of real usage, and eliminates dunning, churn dashboards, and the resentment of paying for silence. Subscriptions are the default because spreadsheets love them, not because users do. Look at your actual usage pattern first: if value arrives in bursts, credits that never expire align price with value, and the customer who returns after a quiet month arrives grateful instead of guilty.
A fair, not a funnel
My marketing plan starts with a Discord, and the Discord starts with characters. Before scale, before ads, I want the server to feel like a fair, several stalls, each run by a personality: a master of ceremonies who makes announcements, drops tips, proposes events. In the beginning those characters will be me, performing on several voices, which given what I am building feels appropriate. Later, friends can take over roles, or a part-time community manager. Members get a one-time gift of Sparkles for joining, financed by those Modal free credits, and the calendar gets challenges, events, and loyalty mechanics designed to grow a nucleus of users who evangelize the product because they feel like citizens of it.
Only then comes promotion, in a deliberate order: Reddit first, organically, building reputation by being useful in the web novel communities rather than shame-plugging the product; the Discord catches and keeps whoever arrives. Paid ads are a maybe, an experiment for later, possibly targeting keywords and genres, and I have already talked myself out of using the platforms’ logos in ad creatives, which implies partnerships that do not exist yet.
Andrei’s launch sequence inverts the usual order: first a gamified Discord, characters acting as masters of ceremonies, a Sparkles gift for joining funded by Modal’s 30 dollars of monthly free credits, challenges and events on a calendar, and only then Reddit promotion, with ads as a distant maybe. The logic is that acquisition without retention infrastructure is a leaky bucket: a launch spike that lands on a product with no community evaporates, while the same spike landing in a running fair leaves behind a nucleus of evangelists who feel like early citizens. The fair also costs almost nothing, free credits, performed characters, a founder doing voices, which fits a pre-revenue budget. Before spending on reach, build the place where arrivals stay, give the first ones a gift and a role, and let the community be running, warm, and slightly theatrical before the first stranger walks in.
Everyone googles “listening”
The SEO plan is unglamorous and specific. People do not search for “text to speech for web novels”, they search for “Wattpad listening” and its siblings, platform by platform. Those queries are long-tail, intent-rich, and much less contested than the generic TTS keywords the big players fight over. The plan is keyword research first, including a hard look at what competitors like Eleven Labs already rank for, then articles targeted at the listening intent for each platform I support, published at a cadence closer to one a day than one a month, starting before launch so the compounding starts early.
Nobody types “browser extension text to speech for self-published fiction” into Google; they type “Wattpad listening” or “listen to Royal Road stories”, one platform at a time. Andrei’s SEO plan targets exactly those queries: run keyword research seeded from the platforms he supports, mine the keyword profiles of incumbents like Eleven Labs for proven intent, and publish a targeted article at a near-daily cadence, beginning before launch so the compounding clock starts early. The insight is that a niche tool does not need a content brand, it needs to be the answer to the precise search its buyer types on the day the need appears, and long-tail platform-plus-intent queries are both cheap to win and pre-qualified. Your established competitors have already paid to discover which keywords convert; their ranking pages are a free content plan. Read them, pick the intersection with your niche, and outpublish them where they are too big to bother.
The platforms are the endgame
Everything above is shaped by one strategic choice: Naramine stays an accessibility tool, and I want relationships with the platforms rather than a war. That rules out mass scraping and the kind of features that antagonize the people whose content my users love. It also dictates the partnership sequence. Wattpad belongs to a very large East Asian corporation, and an unlaunched solo founder does not get that meeting. The smaller platforms, still counting their users in the millions, have the same reader-retention problem and answer their own email. The plan is to win one of them as a proof of concept, an official integration, engagement numbers, authors who like what it does for their audience, and then take those receipts into the bigger conversations. The stakeholder list is already built on LinkedIn, and the outreach materials are drafted.
Andrei wants official relationships with the web novel platforms, but Wattpad is owned by a very large East Asian corporation, and a solo founder with an unlaunched extension does not get that meeting. So the sequence starts lower: the smaller platforms, still counting users in the millions, share the same reader-retention problem, answer their own email, and can say yes without a committee. One legitimate integration there produces the assets the big conversation requires, engagement numbers, an accessibility story, authors who vouch for it, receipts instead of promises. He has already assembled the stakeholder list on LinkedIn and drafted the outreach before launch, because partnerships have lead times just like sales. Treat platform partnerships like fundraising: get quick yeses from those who can afford to give them, convert the yeses into evidence, and climb the ladder with proof in hand instead of cold-emailing the summit first.
Mobile is the elephant
I will say the uncomfortable number out loud: 80 to 90 percent of the people reading on these platforms are on their phones, and Naramine today is a desktop browser extension. Chrome first, then Edge and the other Chromium browsers. Firefox does allow extensions on mobile, but its curated catalog is limiting; Safari on desktop is plausible, Safari on mobile is uncertain. A native mobile app is clearly a necessity, and it is deliberately later work, because the hard problems there are real: autoplay and chapter navigation with a locked screen, inside ecosystems built to prevent exactly that kind of background behavior. I would rather nail the desktop experience, prove the model, and arrive on mobile with revenue than fight Apple and Google on day one.
Two weeks out
Naramine leaves beta in about two weeks, two sprints from now. The sprints have names: gamification and polishing. The polish list is honest, one essential button still needs the right name, tooltips and microcopy need full sentences, and the extension’s install-time permissions are being audited down to the minimum, because nothing kills an install like a scary permissions dialog. Sentry is already watching for errors. Then it ships, and the starter in me gets what he came for: real users, real feedback, and a product that produces results while I figure out which parts of the marathon to automate, delegate, or, knowing myself, hand to a character with a better voice than mine.
Advice extracted from this journey
Know whether you are a starter, and stop designing companies for a finisher
Andrei's resume looks fragmented, Java to C# to Ruby on Rails, four years teaching at the Politehnica, an abandoned PhD, an outsourcing firm, a fantasy novel, until you apply his own reframe: he is a starter, energized by taking projects from zero to first results and drained by the long steady middle. Instead of fighting that, he now designs for it, picking products that can reach a self-sustaining state quickly and planning early for automation and helpers to carry the marathon stretch. The standard startup script quietly assumes a finisher, someone who wants to run the same company for fifteen years, and a starter who signs up for that script abandons it at year two and calls himself undisciplined. Temperament is an input to company design just like market size. Figure out which kind of founder you are from the evidence of your own history, then choose the product shape, exit points, and delegation plan that fit the person who will actually be running it.
Build inside the platform instead of pulling its readers away
The existing text-to-speech tools all make the same move: extract the story from the platform and play it in their own app. That works until you notice whose lunch it eats, because web novel platforms live on ads, comments, and community, and a tool that siphons readers off the page is a traffic devourer they have every incentive to fight, in court if necessary. Naramine is an extension precisely so it can stay on the page: it reads the chapter where it is published, follows the pagination, and leaves every pageview, comment, and vote where the platform can count it. That shape is what lets Andrei position it as an accessibility layer platforms could tolerate or even endorse, rather than a parasite they must kill. When your product feeds on someone else's content, the architecture is also the legal strategy: pick the shape that adds to the host's metrics instead of draining them, and you convert a future plaintiff into a future partner.
Make the first audio chunk tiny so playback starts before the file exists
A chapter of a web novel runs around ten thousand characters, and synthesizing all of it before playing would mean a long silent spinner. Naramine instead generates a very small first chunk so the play button responds within seconds, then produces progressively larger chunks until the pipeline reaches normal flow, pre-buffering ahead of the listener and preprocessing the next chapter in the background before the current one ends. Minutes of compute still happen, but they hide behind consumption time the listener was going to spend anyway. This is the streaming insight applied to generative products: what users feel is latency to first value, not total processing time, and the two can be decoupled almost completely. Whatever your product generates, slice the work so the first slice is nearly free, ship it the moment it exists, and let the rest of the job run behind the experience instead of in front of it.
Store generated content in the user's browser, not on your servers
Every minute of audio Naramine generates is cached in IndexedDB on the listener's own machine, sometimes tens or hundreds of megabytes of it, with a clear-data control and a download option for the user. Andrei's servers never store the stories or the audio derived from them, and that decision does double duty. Economically, his storage bill is zero and stays zero as usage grows, which matters enormously for a solo founder with an 80 percent margin target. Legally, it keeps him a tool rather than a distributor: a service that hosts copies of authors' copyrighted stories, or audio derived from them, has built a library it must defend, while audio generated on demand and held only on the reader's device looks like the reader's own personal-use copy. When your product transforms content you do not own, ask where the transformed bytes live, because that answer decides both your infrastructure costs and which side of a copyright argument you are standing on.
Run the free tier on the user's hardware and sell the GPU as the upgrade
Naramine's Basic tier is the same open source engine as Premium, Kokoro, but executed as Kokoro JS in the listener's own browser, so every free user brings their own compute and Andrei's marginal cost for the entire free tier is zero. The limits of local execution, roughly 1.3x listening speed on a good laptop but stuttering below realtime on weak hardware, and English only, are exactly the pitch for Premium, which runs bigger models on Modal GPUs with two to three second cold starts, better voices, and more languages, at under a dollar per 50 chapters. The elegance is that the free tier demos the paid tier by being honest about its own ceiling: the user who feels the stutter understands precisely what the upgrade buys. If your workload can run client-side at acceptable quality, that is a free tier that cannot bankrupt you, with an upsell built out of physics instead of feature gates.
When usage comes in waves, sell a one-time gift instead of a subscription
Web novel readers binge: two weeks inside one story, a quiet month, then another binge. A monthly subscription taxes the quiet month, teaches users to cancel, and turns every resubscription into a fresh purchase decision. Andrei prices Naramine Premium as a roughly 10 dollar one-time purchase of Sparkles credits, about 20 per chapter, framed as a gift you give yourself, with costs behind it near a dollar fifty for an 80 percent margin. The one-time frame lowers the entry barrier, matches the wave shape of real usage, and eliminates dunning, churn dashboards, and the resentment of paying for silence. Subscriptions are the default because spreadsheets love them, not because users do. Look at your actual usage pattern first: if value arrives in bursts, credits that never expire align price with value, and the customer who returns after a quiet month arrives grateful instead of guilty.
Build the fair before you invite the crowd
Andrei's launch sequence inverts the usual order: first a gamified Discord, characters acting as masters of ceremonies, a Sparkles gift for joining funded by Modal's 30 dollars of monthly free credits, challenges and events on a calendar, and only then Reddit promotion, with ads as a distant maybe. The logic is that acquisition without retention infrastructure is a leaky bucket: a launch spike that lands on a product with no community evaporates, while the same spike landing in a running fair leaves behind a nucleus of evangelists who feel like early citizens. The fair also costs almost nothing, free credits, performed characters, a founder doing voices, which fits a pre-revenue budget. Before spending on reach, build the place where arrivals stay, give the first ones a gift and a role, and let the community be running, warm, and slightly theatrical before the first stranger walks in.
Mine competitor keywords, then outwrite them one article a day
Nobody types "browser extension text to speech for self-published fiction" into Google; they type "Wattpad listening" or "listen to Royal Road stories", one platform at a time. Andrei's SEO plan targets exactly those queries: run keyword research seeded from the platforms he supports, mine the keyword profiles of incumbents like Eleven Labs for proven intent, and publish a targeted article at a near-daily cadence, beginning before launch so the compounding clock starts early. The insight is that a niche tool does not need a content brand, it needs to be the answer to the precise search its buyer types on the day the need appears, and long-tail platform-plus-intent queries are both cheap to win and pre-qualified. Your established competitors have already paid to discover which keywords convert; their ranking pages are a free content plan. Read them, pick the intersection with your niche, and outpublish them where they are too big to bother.
Partner with the small platforms first and take the receipts to the big ones
Andrei wants official relationships with the web novel platforms, but Wattpad is owned by a very large East Asian corporation, and a solo founder with an unlaunched extension does not get that meeting. So the sequence starts lower: the smaller platforms, still counting users in the millions, share the same reader-retention problem, answer their own email, and can say yes without a committee. One legitimate integration there produces the assets the big conversation requires, engagement numbers, an accessibility story, authors who vouch for it, receipts instead of promises. He has already assembled the stakeholder list on LinkedIn and drafted the outreach before launch, because partnerships have lead times just like sales. Treat platform partnerships like fundraising: get quick yeses from those who can afford to give them, convert the yeses into evidence, and climb the ladder with proof in hand instead of cold-emailing the summit first.
