Indie TM #13: Teaching the Browser to Read Web Novels Aloud
What we learned at our thirteenth meetup, where Andrei Statescu demoed Naramine and the room rewrote his onboarding

The thirteenth edition kept the format we discovered last time: one founder, one product, the whole evening. Andrei Statescu brought Naramine, a browser extension built around accessibility that turns the stories on web novel platforms, Wattpad, Royal Road, Archive of Our Own, Honeyfeed, into audio you listen to without ever leaving the page. What made the evening different from #12 was the stage of the company. DataDriven arrived with three years of history to audit; Naramine is two weeks from leaving beta. So instead of dissecting decisions already made, the room got to argue about decisions still open, and it did not hold back: by the end of the night the onboarding had been redesigned from the floor, a new upsell button had been invented and named, and the legal section had grown a watermarking requirement. The full first-person story is in his journey; this recap focuses on what the room did to the plan.

A starter shows his work
Andrei introduced himself through a career that refuses to be summarized: transitions across Java, C#, and Ruby on Rails, four years as a teaching assistant at the Politehnica, a PhD started and never finished, three years of programming courses for kids in a collaboration with Nokia, an outsourcing firm run through the crypto boom with clients scattered across the world. Plus a written fantasy novel and a period of stock market investing, items from a list of things he wanted to have done. The thread tying it together, he said, is that he is a starter: he loves taking projects from zero to the point where they produce results, and he does not pretend otherwise anymore. A product of his own was the next item on the list.
Naramine began as that most honest of origins: a private backend he built to feed his own listening habit, used by exactly one person. The platforms it serves add up to roughly 500 million views a month and function as the launch ramp for authors the big publishing houses ignore, yet none of them offers a decent native way to listen. In the last three months the private engine grew an interface and became a beta.
The demo: a story that reads itself
The demo looked simple, which was the point. Open a chapter, press play, and the story starts speaking within seconds. Underneath: audio generated chapter by chapter, with a deliberately tiny first chunk so playback starts almost immediately and progressively larger chunks after it; pre-buffering while you listen; the next chapter preprocessing in the background before the current one ends, so autoplay feels like one continuous audiobook. Generated audio lands in IndexedDB in the listener’s own browser, which in heavy use can mean tens or hundreds of megabytes, so there is a clear data control and a download option. Nothing is stored on Naramine’s servers, a choice that is as much legal strategy as architecture.
The competitive contrast wrote itself. The generic tools, Eleven Labs and Speechify among them, pull the reader out of the site to consume the text in their apps, which makes them traffic devourers from the platforms’ perspective and litigation bait; none of them understands chapters, pagination, or autoplay, the actual shape of a web novel. Naramine stays on the page, keeps every pageview where the platform can count it, and positions itself firmly as an accessibility tool that would rather build relationships with the platforms than scrape them into hostility.
Kokoro twice, Modal once, and an eighty percent margin
The engine is Kokoro, open source, run two ways. Basic executes Kokoro JS locally in the listener’s browser: about 1.3x listening speed on a decent Mac, but on weak hardware it can fall to around 0.8x and stutter, and it only speaks English. Premium runs heavier models on GPUs through Modal.com, with cold starts of two to three seconds, chunked delivery tuned so the first piece arrives fast, better voices, and more languages. The economics drew appreciative noises: 50 chapters cost under a dollar to process, Modal hands every account 30 dollars of free monthly credits, and Andrei has noticed that multiple organizations under one account each seem to collect their own 30 dollars, a loophole he is treating as beta budget, not business model.
Monetization follows the reading behavior rather than the SaaS playbook. Premium is priced in credits called Sparkles, about 20 per typical 10,000-character chapter, bought as a roughly 10 dollar one-time gift rather than a subscription, because web novel reading comes in waves and a subscription taxes the quiet weeks. Cost behind a 10 dollar purchase is around a dollar and a half, keeping the margin near 80 percent, which is also why the expensive commercial TTS engines are excluded on principle. Sentry watches errors; heatmaps do not exist yet; the extension’s install permissions are being audited down to the minimum before launch.
The room rewrites the onboarding
The sharpest feedback of the night went after the signup flow. The beta asks for an account up front, and the room was united against it: an extension install is already a commitment, and a registration wall before the first listen doubles the drop-off exactly where the product should be showing off. The proposed pattern was specific: an anonymous ID under the hood, Firebase-style, that accumulates progress from the first play, and a deferred “create an account to save your progress” prompt that appears once there is progress worth saving, or when payment enters the picture. Someone also flagged the looming identity sprawl, site account, Discord account, payment identity, platform logins, as friction to design away before it calcifies.
Naramine’s beta asked for an account before the first listen, and the room unanimously voted that wall down: installing an extension is already a commitment, and demanding registration before the product has demonstrated anything doubles the drop-off at the exact moment of maximum skepticism. The replacement pattern is an anonymous ID created silently on first use, Firebase-style, which accumulates listening progress from the first play, followed by a “create an account to save your progress” prompt that appears only once there is progress worth protecting, or when money changes hands. That prompt converts because it offers the user protection for something they now own, instead of demanding tribute for something they have not yet received. Audit your own funnel for identity demands that arrive before value does, and move each one to the moment it genuinely serves the user; the database can wait longer than your drop-off rate can.
Boost buttons and drunken voices
The Basic versus Premium boundary generated the evening’s best product invention. The room’s principle: differentiate on more than voice quality, but never cripple Basic, because a free tier that does not work is an advertisement against the product. The invention was the Boost button: when local processing falls behind, below 95 percent of listening speed, say, the stutter itself becomes the sales moment, and a friendly “Too slow? Boost this chapter” offer appears exactly where the pain is. Micro-copy matters here, “boost” and “finish faster” rather than anything that shames the user’s laptop. As delight went, someone proposed easter-egg voices for Premium, drunken narrators, regional accents, the kind of thing communities screenshot and share.
Naramine’s free tier synthesizes speech on the listener’s own hardware, and on weak laptops it drops below listening speed and stutters. The room’s suggestion: detect that moment, processing under roughly 95 percent of playback speed, and surface a small in-context offer, “Too slow? Boost this chapter”, that hands the stalled chapter to the paid GPU pipeline. This beats any pricing page because the user is experiencing the exact problem Premium solves at the second the offer appears; no abstract feature comparison is required. Two disciplines keep it honest: the free tier must remain genuinely usable, since a deliberately hobbled Basic reads as bait and poisons trust, and the copy must sound like help, boost, speed up, finish faster, never like a penalty for owning an old laptop. Map where your product’s real friction lives and put the upgrade there, phrased as a favor. A pricing page asks users to imagine the pain; an in-context upsell arrives while they feel it.
Show the value in the first sixty seconds
The onboarding conversation extended past accounts into the first-run experience. The current flow asks a fresh user to find the extension icon, open a story, and wait for processing, too many steps before the magic. The room’s fix: ship a sample chapter, pre-processed, that plays instantly after install, with visual guidance, arrows, small animations, pointing at the extension icon and the player, so the first minute contains the whole pitch. The same thinking extends to the landing page, where a short video or gif of the install-and-activate flow would do more than any paragraph. And the polish list grew: an essential button still needs a real name, ON and OFF states are currently ambiguous, tooltips are missing, and micro-copy should graduate to full sentences.
Naramine’s first-run flow asked a new user to locate the extension icon, navigate to a story, and wait through initial processing before hearing anything, which stacks three chances to give up in front of the moment that sells the product. The room’s redesign: bundle one pre-processed sample chapter that plays instantly after installation, and guide the user to it with arrows and small animations pointing at the extension icon and the player, so the “oh, that is what this does” moment lands inside the first minute. A short gif of the same flow on the landing page extends the trick to before the install. The general rule is that onboarding has one job, reaching the demonstration of core value as fast as possible, and it is entirely legitimate to pre-cook content to get there. Users forgive a canned sample; they do not forgive a blank screen and a spinner where the magic was supposed to be.
Subtitles for audio
One UX request came up repeatedly, from several directions: highlight the text as the voice reads it, with autoscroll following along. Implemented as an overlay, a kind of subtitle layer the extension draws, it would leave the platform’s page untouched, which keeps the legal posture clean while adding the read-along experience that language learners, people with dyslexia, and plain distracted humans all benefit from. Andrei took it on board as a priority for the polish sprints.
The most repeated UX request at Indie TM #13 was for Naramine to highlight the words as the voice reads them and autoscroll the page in sync, drawn as an overlay, a subtitle layer belonging to the extension, so the platform’s own page is never modified. The overlay detail carries the strategy: rewriting a host site’s DOM is the kind of intrusion platforms punish, while an overlay stays clearly on the tool’s side of the line. The feature itself doubles the product’s audience, because synchronized text-plus-audio serves language learners, readers with dyslexia, and anyone whose attention drifts, turning a convenience app into a legitimate accessibility story, which is exactly the positioning Naramine wants with the platforms. When your product converts content from one modality to another, keeping the two synchronized and visible is rarely optional polish; it is often the difference between a gadget and a tool people depend on.
Where the lawyers live
The legal segment was short but pointed. Storing other people’s content on your own servers is the line you do not cross, and Naramine’s client-side caching already respects it. Voice cloning of public figures is the other bright line. If voice upload ever ships, open source projects like Chatterbox make it technically trivial, the room’s requirement was clear disclaimers plus audio watermarking, so any generated clip can be traced back to the account that made it. Wattpad’s own audio experiment came up too: it shipped with a flat, low-quality TTS voice, which is less a threat than an invitation, evidence the platforms know their readers want audio and have not solved it, best answered through legitimate collaboration rather than a feature war. A mobile idea from the audience, pre-caching a book’s text so chapters play with the screen locked, got flagged by its own proposer as stolen traffic against ad-monetized platforms, the kind of feature to build only with an agreement in place.
Voice upload is on Naramine’s long-term list, and open source projects like Chatterbox make cloning technically trivial, which is precisely the danger: the same feature that lets a reader narrate with a beloved voice lets someone clone a public figure, and an accessibility tool becomes a deepfake factory in one news cycle. The room’s prescription was to build the guardrails before the feature, not after the incident: explicit disclaimers at upload, and audio watermarking baked into every generated clip so a file circulating anywhere can be traced back to the account that produced it. Traceability changes the conversation from “your tool made this” to “this account broke our terms, and here is the proof”, which is the difference between a product problem and a user problem. Any generative feature with abuse potential deserves the same treatment: assume misuse on day one, watermark the output, and price the safety sprint into the launch plan rather than the crisis plan.
Ship it already
The closing argument came from the whole room at once: launch. The remaining plan, two sprints covering gamification and polish, the button rename, the permissions audit, then out of beta in about two weeks, met general approval precisely because it was short, and the audience pushed to keep it that way: separate the true launch blockers from the comfort work, get the MVP into strangers’ hands, and let real feedback drive the next sprint instead of a longer beta. Andrei, a self-declared starter two weeks from the start line, did not need much convincing.
When Andrei laid out two more sprints before leaving beta, gamification, an unnamed button, tooltip polish, a permissions audit, the room applied a single filter to every item: will a new user hit this in their first ten minutes? A confusing permissions dialog fails that test, because it kills the install itself; a not-yet-gamified Discord and an imperfect tooltip do not, because nobody churns over them in week one. Everything that fails the test is a launch blocker; everything else is comfort work that can ship in the sprint after launch, informed by what real users actually stumble on. The audience’s push to launch immediately was not recklessness but sequencing: a beta that runs long defers the only feedback that matters, strangers using the product without you in the room. Sort the list, ship the blockers, and let the comfort work compete for priority against real user complaints, a competition it usually loses.
Thirteen editions in
Edition twelve was an audit of a company with three years of history; edition thirteen was the opposite and just as good: a pre-mortem, run live, on a product still two weeks from its first stranger. The single-story format held up at both ends of the company lifecycle. What the room gave Andrei was the thing a solo founder cannot generate alone, a dozen fresh pairs of eyes on the exact surfaces a new user will touch, the signup wall, the first minute, the stutter, the permissions dialog, before those surfaces start costing real users. And what Andrei gave the room was a catalog of solo-founder engineering worth stealing: a free tier that runs on the user’s own hardware, storage pushed into the browser where it costs nothing and threatens no one, pricing shaped like the usage instead of like a spreadsheet, and a partnership strategy that starts where the yeses are cheap. In two weeks it ships. See you at the fourteenth.
Advice from this event
Defer the account until the user has something to save
Naramine's beta asked for an account before the first listen, and the room unanimously voted that wall down: installing an extension is already a commitment, and demanding registration before the product has demonstrated anything doubles the drop-off at the exact moment of maximum skepticism. The replacement pattern is an anonymous ID created silently on first use, Firebase-style, which accumulates listening progress from the first play, followed by a "create an account to save your progress" prompt that appears only once there is progress worth protecting, or when money changes hands. That prompt converts because it offers the user protection for something they now own, instead of demanding tribute for something they have not yet received. Audit your own funnel for identity demands that arrive before value does, and move each one to the moment it genuinely serves the user; the database can wait longer than your drop-off rate can.
Put the upgrade button inside the moment of friction
Naramine's free tier synthesizes speech on the listener's own hardware, and on weak laptops it drops below listening speed and stutters. The room's suggestion: detect that moment, processing under roughly 95 percent of playback speed, and surface a small in-context offer, "Too slow? Boost this chapter", that hands the stalled chapter to the paid GPU pipeline. This beats any pricing page because the user is experiencing the exact problem Premium solves at the second the offer appears; no abstract feature comparison is required. Two disciplines keep it honest: the free tier must remain genuinely usable, since a deliberately hobbled Basic reads as bait and poisons trust, and the copy must sound like help, boost, speed up, finish faster, never like a penalty for owning an old laptop. Map where your product's real friction lives and put the upgrade there, phrased as a favor. A pricing page asks users to imagine the pain; an in-context upsell arrives while they feel it.
Preload one perfect sample so the product demos itself on install
Naramine's first-run flow asked a new user to locate the extension icon, navigate to a story, and wait through initial processing before hearing anything, which stacks three chances to give up in front of the moment that sells the product. The room's redesign: bundle one pre-processed sample chapter that plays instantly after installation, and guide the user to it with arrows and small animations pointing at the extension icon and the player, so the "oh, that is what this does" moment lands inside the first minute. A short gif of the same flow on the landing page extends the trick to before the install. The general rule is that onboarding has one job, reaching the demonstration of core value as fast as possible, and it is entirely legitimate to pre-cook content to get there. Users forgive a canned sample; they do not forgive a blank screen and a spinner where the magic was supposed to be.
Synchronized highlighting turns a listening tool into an accessibility tool
The most repeated UX request at Indie TM #13 was for Naramine to highlight the words as the voice reads them and autoscroll the page in sync, drawn as an overlay, a subtitle layer belonging to the extension, so the platform's own page is never modified. The overlay detail carries the strategy: rewriting a host site's DOM is the kind of intrusion platforms punish, while an overlay stays clearly on the tool's side of the line. The feature itself doubles the product's audience, because synchronized text-plus-audio serves language learners, readers with dyslexia, and anyone whose attention drifts, turning a convenience app into a legitimate accessibility story, which is exactly the positioning Naramine wants with the platforms. When your product converts content from one modality to another, keeping the two synchronized and visible is rarely optional polish; it is often the difference between a gadget and a tool people depend on.
If users can upload voices, watermark the audio from day one
Voice upload is on Naramine's long-term list, and open source projects like Chatterbox make cloning technically trivial, which is precisely the danger: the same feature that lets a reader narrate with a beloved voice lets someone clone a public figure, and an accessibility tool becomes a deepfake factory in one news cycle. The room's prescription was to build the guardrails before the feature, not after the incident: explicit disclaimers at upload, and audio watermarking baked into every generated clip so a file circulating anywhere can be traced back to the account that produced it. Traceability changes the conversation from "your tool made this" to "this account broke our terms, and here is the proof", which is the difference between a product problem and a user problem. Any generative feature with abuse potential deserves the same treatment: assume misuse on day one, watermark the output, and price the safety sprint into the launch plan rather than the crisis plan.
Sort your launch list into blockers and comfort, then ship the blockers
When Andrei laid out two more sprints before leaving beta, gamification, an unnamed button, tooltip polish, a permissions audit, the room applied a single filter to every item: will a new user hit this in their first ten minutes? A confusing permissions dialog fails that test, because it kills the install itself; a not-yet-gamified Discord and an imperfect tooltip do not, because nobody churns over them in week one. Everything that fails the test is a launch blocker; everything else is comfort work that can ship in the sprint after launch, informed by what real users actually stumble on. The audience's push to launch immediately was not recklessness but sequencing: a beta that runs long defers the only feedback that matters, strangers using the product without you in the room. Sort the list, ship the blockers, and let the comfort work compete for priority against real user complaints, a competition it usually loses.
Join the next meetup
We meet regularly in Timisoara to share what we're building, swap tactics, and roast each other's products. Everyone is welcome.
Join us on Luma