Inspiration

My mother calls me a genius at forgetting things.

Even things I tell myself I absolutely must remember somehow slip away.

And nobody writes notes about the things they carry every day. Writing "don't forget your phone" on your phone feels absurd.

In old Japanese family dramas, there was a scene I always envied: as the husband heads out, his wife asks him at the door, "Do you have your handkerchief?" Today's AI is smart enough. Couldn't it do the same thing?

One of my biggest regrets is also a kind of forgetting. I lost touch with someone important who had always looked out for me. I was busy, lost the note with their contact information, and by the time I thought to thank them, many years had passed. If I had realized sooner, I could have called their workplace and asked how to reach them again.

If I could remember the important things I've forgotten, when I need them, my life would be so much better.

That's why I built kakeratta.

What it does

kakeratta is a personal timeline where dedicated AI personas connect fragments of your day and bring them back when they matter. Search can't find what you've forgotten exists. kakeratta brings it back.

Just post a thought, photo, link, or voice note. Personas can remember details, answer questions, suggest plans, and remind you of something you never thought to set a reminder for.

  • Dedicated memory for each person or interest. Separating memories isn't about hiding things. It keeps each persona focused, so the right fragment comes back and the context stays small as the timeline grows.
  • Silence is the default. Most posts get no reply. If every AI commented on every post, the timeline would drown.
  • Memories have an ending. Temporary memories can expire, while others come back for review: keep, postpone, or forget?
  • Memory you can inspect. Facts link back to your posts. You can see and correct what each persona remembers.
  • Personas grow with your interests. When a new topic builds up in a persona's memory, it suggests a dedicated persona at check-in. One tap on Create it drafts the new persona, moves the related memories to it, and narrows the original persona's routing so those posts reach only the new one.
  • Ask your timeline. Use @ai to recall past events, explore your notes and plans, search the Web, or get help with kakeratta.

The demo video shows the core loop. The README covers built-in personas, routing, models, built-in @ai questions, external @agent requests, and setup.

How we built it

kakeratta uses a Go API and JavaScript PWA. The hosted version uses Firebase Authentication, Firestore, and private Cloud Storage, with Pub/Sub and Cloud Tasks for asynchronous processing. Posts and jobs are saved in one transaction, preserving processing order within each conversation.

The local version runs on plain files without Firebase. Both versions use the same data layout, so users can export their hosted data and continue locally, keeping their data under their own control.

Replies, schedules, and memory are kept separate

Each persona response passes through separate stages:

  1. Analyze and route. Images and locations are analyzed once and shared across personas. Personas are selected by conditions or keywords, with routing reasons saved.
  2. Reply or stay silent. Nemotron 3 Super (Super) handles everyday posts. Deep requests use Nemotron 3.5 Super VL (Super VL) for research and Nemotron 3 Ultra (Ultra) for the final answer.
  3. Plan and validate. Scheduling is handled separately, with code-enforced permissions and Super VL review. Failed actions never produce false success claims.
  4. Remember. After publishing, a separate call decides whether to keep a short record of what the user said. Failed updates retry independently.

This separation prevents replies from silently changing schedules or rewriting memory.

Tavily powers the Web search tool used by personas and direct @ai research requests, with news and date filters for timely searches and source links that users can follow.

Your own agent, through MCP

For advanced users who want to connect personal resources or execute external actions, kakeratta exposes an MCP server. The project includes an optional self-hosted Hermes integration running inside NVIDIA NemoClaw / OpenShell, using Nemotron via Nebius Token Factory.

The included Google integration can periodically check Gmail and Google Calendar. User-defined rules and optional Hermes triage select relevant items. Gmail messages can be summarized, while Calendar events are formatted compactly. Candidates appear as review cards on the timeline, with links to their original sources. Only items explicitly approved by the user become normal posts available to personas and their memory.

Credentials and external access stay in the user's environment. kakeratta retains control of scheduling, validation, and memory updates. Built-in models handle normal interactions and take over persona asks if Hermes does not respond in time.

Every model call is measured

Every model call is logged by purpose and retry scope, making it possible to identify expensive stages and measure the impact of optimizations.

See the README and Under the hood for architecture, models, and integrations.

Challenges we ran into

Giving the AI the right context

Initially, each persona used OKF (Open Knowledge Format), a wiki of linked Markdown files maintained by AI. But everyday fragments scattered thin information across the wiki. Recording AI answers made it worse: they overwhelmed what the user actually said.

So I dropped OKF. What matters is what the user says, because you can't find it anywhere else. User fragments became chronological records, and AI answers are kept only when saved as Favorites. Each persona now combines current facts linked to source posts with recent records. Daily check-ins consolidate records into facts, while older history remains searchable. This gives the AI both the bigger picture and what's on the user's mind now, without passing everything into context.

Making each post cheap enough to post freely

After moving more tasks to Super VL, a single-persona post cost about $0.009 (1.4 yen), including routing, answering, and memory. That's enough to make you hesitate before jotting down a thought.

Reasoning overhead. Logging model calls revealed where the cost came from. Super VL's median routing reasoning was about 1,430 tokens versus about 70 for Super, and it once spent 1,905 tokens writing a one-line memory record. Using a more capable model for every task wasn't the answer. I needed to match each task to the smallest model that could handle it reliably.

Routing. With full persona instructions, Nemotron 3.5 Lightning (Lightning) missed personas. Ultra was more accurate, but in an earlier configuration, routing on Ultra accounted for about half of all AI spend. Instead of relying on a bigger model, I simplified the task: route using short conditions rather than full persona instructions, and require a reason for every excluded persona. Users can inspect and correct those reasons.

A replay of 20 real posts with this simpler routing showed:

Model Cost / call Mean latency Matches vs. reference
Super ~0.063¢ 1.91 s 17/20
Ultra ~0.29¢ 2.28 s 19/20
Lightning ~0.045¢ 6.55 s 17/20

Super became the default router at 22% of Ultra's cost. Lightning was cheaper but far slower. All three Super mismatches involved one persona. This was a small replay, not a benchmark.

Unnecessary work. Logging every model call also revealed avoidable costs. Images and locations are analyzed once and shared. Schedule processing runs only when needed. Limiting Ultra to the final deep answer reduced one deep reply's cost by 48%. Moving the mechanics of claiming Hermes jobs from the model into code reduced its model calls from four to two, cutting cost by about 70%.

Model assignment. Super now handles routing, everyday answers, and memory. Super VL handles direct built-in @ai questions, plus more demanding or less frequent tasks such as deep research, schedule review, check-ins, and summaries. Ultra is reserved for final deep answers. This keeps routine posts cheap without giving up stronger reasoning where it matters.

The result: The first two single-persona production posts after these changes cost $0.0028 (about 0.44 yen) and $0.0037 (about 0.58 yen), including routing, answering, and memory. Both finished in six to seven seconds. Compared with the earlier $0.009 per post, that's a cost reduction of roughly 60–70%, bringing these everyday posts well below the 1 yen threshold that made me hesitate.

Heavier requests cost more by design. A direct @ai question is a research request, so it runs on Super VL to support thorough research, at about $0.005–0.020. A post that also creates a schedule costs about $0.010–0.020, because planning and review run as separate stages only when needed. Asking a persona to look into something "in detail" is the heaviest everyday case: it researches on Super VL and composes the final answer on Ultra. In one measured example, three research calls, the Ultra answer, and the memory update came to about $0.016 (about 2.4 yen).

Costs converted at approximately ¥156/USD.

Accomplishments that we're proud of

On paper, I needed three things: a notebook to write anywhere, a planner to know when to act, and sticky notes to keep what mattered visible. kakeratta brings all three together. I can post from a PC or phone, even offline, or by voice through an Alexa skill (working in my environment; certification submitted).

It also does what a paper notebook can't. Each post records a rough location, so I can ask "When did I last go to Tokyo?" I can photograph a page of a book with my thoughts, and later ask what I was reading and how I felt about it.

But the uses I rely on most are the everyday ones.

I have gout, and I take medication every morning.

Before kakeratta, I'd sometimes wonder whether I'd taken my pill that morning. I would count the empty pockets in the blister pack to figure it out, but I still wasn't sure. A daily alarm wouldn't solve that. It would remind me even when I'd already taken it. With kakeratta, I simply post that I've taken my medicine. My persona uses that record to know when a reminder isn't needed. If I haven't recorded it, it can check in with me.

My father cares for my mother, and they live far away from me. Every month, I send him a gift of food or something to drink. Sometimes I realized too late, and the gift arrived after the start of the month. Now, if I haven't posted that I've chosen a gift, his persona can remind me while there's still time. Once I've chosen one and posted about it, there's no need to remind me again. When he tells me what he thought of a gift, I post it, and his persona remembers. The next time I choose, it can bring back what he enjoyed. Instead of just repeating a monthly routine, I can put more thought into choosing something he'll love.

These may seem like small things, but they're exactly the things I wanted AI to help me with. Not another app that asks me to organize my life, but one that fits into it. A notebook, a planner, and little reminders, all connected through simple fragments of everyday life.

I'm proud that I built something I actually rely on, running mostly on Nemotron 3 Super rather than Ultra, and affordable enough to use every day.

What we learned

A smarter AI doesn't necessarily make a better app

With coding agents, I can describe a complex feature and get a working implementation. So I thought that with the right harness, an LLM should be able to answer questions and take notes at the same time.

But it wasn't that simple. Even capable models would neglect one task or give shallow answers. Pointing out a problem and asking the model to reconsider sometimes produced the same answer again. Switching to more powerful models sent costs soaring.

So I split each turn into separate stages: routing, answering, planning and validation, and memory updates. Everyday notes don't need long, elaborate reasoning. By narrowing each model's job, the results became more consistent, and even the relatively inexpensive Nemotron 3 Super could handle its tasks reliably.

But that didn't mean kakeratta could give the same thoughtful answers as general-purpose AI assistants.

Looking at Muse, Dots, Grok bot, and other Personal AI services, I saw capable models, rich information sources, and the ability to handle complex questions and research. Some can even operate a browser to make reservations. Trying to match all of that with kakeratta wouldn't be realistic, either technically or financially.

I originally wanted to build a Personal AI for people around me who aren't particularly tech-savvy. But I came to think they'd be better off starting with those general-purpose AI services.

Meanwhile, I use kakeratta every day.

I turn to other AI tools for questions and research, and toss everyday events and passing thoughts into kakeratta. The AI doesn't reply to every post, and that's a good thing. When I'm just leaving a note, I don't want follow-up questions or speculative answers. I want it to remember what matters and bring it back when I need it.

For example, if I tell kakeratta I've already taken my medication, it can skip the unnecessary reminder. If the reminder does arrive, I can simply tap "Done." These small everyday conveniences aren't always easy to achieve with today's general-purpose AI agents.

I also realized that the more personal memories we entrust to an AI service, the harder it becomes to leave that service. That's why kakeratta lets users export their data and continue using it with the local version.

As I explored other Personal AI services and kept experimenting with kakeratta in my own daily life, I realized that its value isn't in replacing general-purpose AI. It's in the small conveniences those tools don't quite cover, and in letting people keep their own data, regardless of which AI they choose to use.

What's next for kakeratta

  • No API key required. Today, using kakeratta requires your own Nebius Token Factory API key. I'd like to work with Nebius on per-user keys, usage tracking, and prepaid credits, so anyone can get started without managing API credentials.
  • OAuth for the MCP server. Let people grant other AI agents read access to a persona's memory — scoped per persona, read-only and revocable — so the assistant they already use can answer with what kakeratta remembers.
  • A smartphone app. Adding a web app to the home screen is still a hurdle for many people. A native app would make installing kakeratta and enabling notifications more familiar.
  • Your own tools for any persona. Users will be able to register MCP servers and tools and attach them to any persona.
  • A community persona repository. A persona is more than a prompt: it has routing conditions or keywords, behavior, memory structure, and tools. Packaged together, personas could be shared like apps. One example is a persona that researches AI news every morning and explains the background that makes it matter.

The goal is simple: whatever catches your attention, or whatever you don't want to forget, you toss into kakeratta and stop worrying about forgetting it.

Built With

  • bluesky-at-protocol
  • cloud-firestore
  • firebase-authentication
  • firebase-hosting
  • go
  • google-cloud
  • hermes
  • javascript
  • model-context-protocol
  • nebius-token-factory
  • nemoclaw
  • nvidia-nemotron
  • openshell
  • storybook
  • tavily-api
  • terraform
  • web-speech-api
Share this project:

Updates

Submission history