I'm 16, and I've been building Ankita — an open-source desktop AI assistant (Electron, local-first). It's at v2.4.3 now, 713 tests passing, and it has a small but real audience (55 release downloads so far).
None of this is a success story. It's a build-in-public notes dump — the things that actually stuck, learned the hard way.
1. Ship the boring architecture first
Ankita needed tool discovery: the agent has dozens of tools and can't hold all their schemas in context at once. The fashionable answer was embeddings. I built a keyword-category catalog instead — a hand-written map of categories to tool groups, matched with word-boundary regexes.
It's not glamorous. It works, it's zero-dependency, and I understand every failure mode of it. Boring architecture ships; clever architecture gets rewritten.
2. Real users find the bugs your design can't
A DEV.to reader pointed out the real cost of my keyword approach: keyword drift. Once a hand-maintained list goes stale, the agent never even gets offered the tool it needs. I wouldn't have articulated that failure mode on my own — I was too close to it.
Lesson: publish the internals early. People smarter than you will review them for free if you show your work honestly.
3. Make the agent's state visible
One of Ankita's core features is session checklists — a visible to-do list that sits between chat turns, survives reopening the chat, and the agent is reminded to update before finishing. Users don't trust what they can't see. An assistant that silently "does things" feels like a black box; one with a checklist feels like a colleague.
4. Tests are the only reviewer who never sleeps
v2.4.3 shipped with 713 tests green. That's not a vanity number — it's what lets a 16-year-old ship a browser-automation release (a live browser stage next to the chat) without breaking the filesystem security fixes from the release before. Every release that mattered was preceded by the test suite saying "go".
5. Platform algorithms don't care about your project
My launch post on r/SideProject was removed twice by Reddit's automated filters. A modmail appeal went out; while I wait, I moved on. Two Hacker News comments got rejected on a zero-karma account, so the warmup is deliberately paused until October. And r/webdev banned the account outright.
None of this is personal. The lesson: don't fight filters, don't spam to beat them — appeal once, then put the energy back into the product.
6. Credentials are a design decision, not a config file
Early on, API keys sat wherever was convenient. Now Ankita stores them in the OS keychain (Electron safeStorage/keytar). It's the kind of change nobody notices and everybody should make. Security that users don't have to think about is the only security that works.
7. Scope discipline is a feature
The next big thing is Ankita on mobile (React Native + Expo). v1 scope is locked: chat + integrations, nothing else ported. Every time I've let scope creep in, the release slipped. The smaller the v1, the sooner real users touch it.
That's where I am: a desktop assistant that works, a mobile version scoped to the bone, and a long list of mistakes I'm not repeating.
If you've built (or broken) something similar, I'd genuinely like to hear what your list looks like. The repo is open — https://github.com/akyourowngames/A.N.K.I.T.A — and honest feedback is the whole reason I write these.
Top comments (0)