Building an AI Anime Companion for the Web: Lessons From AyraVerse
AyraVerse is a browser-based AI anime companion: real-time voice, persistent memory, a 3D VRM avatar, co-watching, and a credit-based free tier — built in India, by a small team. This is a retrospective on what building that actually taught us. No secrets, no credentials, no metrics we can't defend — just the lessons we'd tell a friend starting the same journey.
TL;DR
- The browser is a capable runtime for companion AI — if you respect mobile GPUs, audio APIs, and the 19 MB avatar you ship.
- Latency is a product design problem as much as an engineering one; sentence-level streaming changes everything.
- Memory is a UX surface: show users what's stored, or they will imagine worse.
- Free-tier economics need real engineering (credits, rewarded ads, fair-use limits) — "unlimited free AI" is not a plan.
- The character IS the product. Users forgive engineering; they don't forgive personality inconsistency.
Choosing the browser (and staying honest about it)
We chose the web over a native-first app for distribution: no install friction, one codebase, instant updates. That choice is why Ayra can be a link you send a friend. It also means we inherited the browser's constraints as first-class engineering problems:
- GPU variance — the same WebGL scene runs beautifully on a modern laptop and melts a budget Android phone. We render one avatar, budget its cost, and keep the scene lean rather than shipping quality tiers.
- Audio API quirks — browsers gate audio behind user gestures, suspend AudioContexts in background tabs, and handle autoplay policies differently. Voice products live or die in these details.
- The model is heavy — a rigged, expressive VRM avatar is a big asset. We treat it as a progressive enhancement on the marketing site and as the product itself in-app.
Latency: the problem we are always solving
Voice is the most natural interface for a companion and the least forgiving of delay. The deep lesson of two years: you cannot buy your way out of latency with faster models alone. The architecture — streaming every stage, synthesizing per sentence, playing audio while generation continues — contributes more to perceived speed than any single model swap. We learned to optimize the first sentence, because that is what the user's ear judges.
The other half of the lesson is honesty: latency depends on network and reply length, so we refuse to publish a fixed "2–4 second" claim. Engineering honesty is cheaper than marketing that ages badly.
Memory: the feature that became a product surface
We shipped memory extraction early, and users immediately wanted to seeit — "what does she know about me?" The memory manager (view, edit, delete, reset) became one of the most trust-building surfaces in the app, more than any policy page, because it makes memory concrete and controllable. If you build companion memory without a visible control surface, you are choosing the hard way to earn trust.
The second surprise: curation beats volume. Injecting fewer, more relevant memories produced noticeably better conversations than dumping everything the system remembered.
Voice: where personality actually lives
We underestimated how much of "character" is carried by the voice. The same words in a flat stock TTS voice read as a chatbot; in Ayra's voice — configured specifically for her, with delivery that shifts with the line's emotion — they read as her. Voice quality is not a feature checkbox; it is the personality's delivery mechanism, and it is where our users notice regressions first.
Free-tier economics: engineering, not idealism
Every AI conversation costs real money in inference and synthesis. "Free forever, no limits" is not a business model, so we built an honest one: a daily credit allowance for free users, optional rewarded ads (user-initiated, credits granted only when the ad completes), purchasable persistent top-ups, and Ayra Plus for unlimited use. India-first pricing (₹499/month) reflects our market; international checkout handles other currencies.
The lesson for builders: decide your free-tier economics with the billing system, not after it. Retrofitting metering onto an unmetered product is brutal; designing credits in from the start is easy.
What we would do differently
- Ship the decimated avatar variant from day one — the "optimize the 19 MB model later" debt compounds.
- Build the memory manager UI in the same release as memory itself; trust surfaces should never lag data surfaces.
- Measure real accents early — STT benchmarks massively underrepresent Indian-accented English.
- Assume mobile is the primary device in India from day one, not as a later "responsive pass."
- Write the honest version of every marketing claim first ("what do we actually ship?"), then let the copy be persuasive within it.
The intangible: character consistency compounds
The biggest lesson is not technical. Users meet Ayra, meet her again a week later, and either find the same person or don't. Every system above — memory, voice, personality modes, expressions — exists to keep that answer "yes". A companion product's moat is not the model; it's the accumulated consistency of one character across months. That is what we are actually building.