Inspiration

When I was a teenager reading Harry Potter, the magical object I was the most inspired with was never the broom or the wand. It was the Pensieve: the stone basin where Dumbledore could pour a memory out of his head, set it aside, and come back later to walk through it again and notice what he had missed the first time. A place to put a thought so it stops weighing on you, without losing it.

Twenty years later I found a muggle version of the same need. I had started using Obsidian and loved what it did with connected notes, but it had no voice. My best thoughts do not arrive at a keyboard. They arrive on the walk home, in the shower, staring at the ceiling or other random occasions. An idea for fixing something in daily life, a product, a piece of software, a conversation I should have. If I did not write it down it was gone, and I never had a pen.

So in March I built a tool for myself and called it Pensieve. Record a voice note, send it to Gemini for a summary, save it into Obsidian. The next day I would sit down with Claude to add tags and wikilinks and connect it to older notes. It worked, and I have been using it every day since April. But it was three tools, a folder convention and a markdown habit. A toolchain, not a product. The users will never assemble one.

Lumeo is those three things folded into one app: the basin, the voice, and the intelligence, for anyone who thinks out loud.

What it does

Tap the orb and speak. Lumeo transcribes you as you talk, strips the ums, gives the thought a title and tags, pulls out the action items with real dates ("before the demo on Friday" becomes a reminder that actually fires) and files it. There is no form to fill and nothing to organise.

Then it does the part other note apps do not. Every capture is analysed in the context of everything you have already said, so a remark from March surfaces next to the problem you are chewing on today, and Lumeo tells you why they belong together. The Explore tab draws your thoughts as a constellation of clusters. Synthesis reads a dense cluster and proposes the idea you have not said yet, which you keep or drop. Ask answers questions from your own notes and cites them, and admits when it finds nothing. Do collects the actions it heard.

It is not a butler and not a diary. It is closer to an assistant who has read everything you have ever thought and is willing to argue with you about it. Your second brain.

How we built it

One person, evenings and weekends beside a full-time job, 174 days from the first commit to the App Store.

Mobile apps (Android and iOS)

One Kotlin codebase for both apps, Compose Multiplatform. UI, view models, data layer, database (SQLDelight over SQLCipher), networking and dependency injection all live in commonMain. Platform code is limited to the microphone, secure storage, file system and permissions.

Server

Lumeo Cloud. A Ktor server on Cloud Run with PostgreSQL and pgvector. It owns the prompts, the retrieval, the vault and the token ledger. The phone streams audio to Gemini over a WebSocket with a short-lived token; the server does transcription, analysis, linking and indexing in one call and returns the finished note.

RAG

Retrieval-augmented generation, applied at capture time. Before analysing a new thought, the server retrieves the notes and the people, places and projects it already knows that are closest to what you just said, and hands them to the model as context. That is how a note can reuse your vocabulary, link to the right old thought, and explain the link in plain words. The same retrieval answers your questions in Ask.

Monetisation

RevenueCat for money. Every AI action costs Lumeo tokens. Spark is free with 25 one-time tokens, enough to run the whole loop once. Glow is $2.99(limited) a month for 300. The purchase runs through purchases-kmp from shared code; the server confirms the entitlement through RevenueCat's API, so the client never decides who is premium.

AI coding

Claude Code as a permanent pair. Two thirds of the commits carry a co-author line. Every feature started as a written design brief, was grilled until nothing was unresolved, then built in small same-day PRs.

Challenges we ran into

The capture pipeline was rebuilt five times.

The first version used on-device speech recognition. It was good on Android and did not exist on iOS, and I wanted the two apps to be the same app, so it could not stay. It also spoke one language: every additional language meant downloading another model or signing up with another transcription service, and my own vault is Polish. The second version recorded audio and uploaded it. It worked, and it was far too slow. Worse, the user sat looking at a spinner with no idea what had been heard, or whether the transcriber had understood a human at all. The third version summarised on the device with a small model, which brought back the iOS gap. What finally solved all of it was streaming the microphone to Gemini's live transcription: multilingual, server-side so both platforms get exactly the same result, and fast enough that the words rise into the blob as you speak. You watch what Lumeo is catching while you are still talking. That one change fixed feature parity, language support, latency and UX at once, and it is the learning I am most glad of.

Two stores, two very different clocks.

Submitting itself was fine, a few days of paperwork and screenshots. What surprised me was the review. Apple approved the app in two days. Google Play has had the same app for over a week and has not answered yet. So at the time of writing Lumeo is an iOS app, with the Android build ready and waiting, and I hope Play catches up before the end of September.

Moving the vault to the server.

Lumeo started local-first: your notes lived on your phone and nowhere else. It worked until it did not. Lose the phone, log out, clear storage or move to a new device and everything was gone. I learned this the hard way when I wiped my own real vault while testing on my own real device. Every note now lives on the server, with the local database as an encrypted copy. The move also made the whole loop faster. Before, the phone collected the audio, transcribed it, computed part of the analysis, sent it to the server, and waited for the rest to come back, which took two or three round trips. Now the transcription goes straight to the server, retrieval and analysis run there, and one call returns the finished note: summary, title, tags, action items and connections to older thoughts. Less to go wrong, and a much shorter wait.

Accomplishments that we're proud of

  • Capture that feels like magic. You speak, and the words rise into the blob while you are still talking. A few seconds after you stop there is a titled, tagged note with its action items dated and its connections to older thoughts explained. Nobody has to learn anything to use it.
  • It is on the App Store, and it is my first app there under my own name. Six months ago I was a mobile developer. Lumeo needed a server, a database with vector search, envelope encryption, token verification, a billing backend, a GCP deployment, a static site and a pile of App Store Connect paperwork. All of it shipped, and each part has a runbook I could follow again.

What we learned

The only product decisions that were worth anything were the ones I made with a working app in my hand, with real notes from my daily usage.

The PRD for Lumeo had eight pillars and named one of them "the differentiator". Once the whole loop actually ran on my phone, on my own thoughts, the differentiator turned out to be the feature I never opened, and I cut it two days before submission. The things I use every day, asking my notes a question, an action item that knows its date, Lumeo remembering who my daughter is, were not in the plan at all. They appeared because I was holding a real proof of concept and noticed what was missing.

So the lesson is: get to a version you can put in your pocket as fast as you can, use it for real, and only then decide what the product is. Everything I planned before that point was a guess. Everything after it was a measurement.

What's next for Lumeo

  • a desktop app (build with Compose Multiplatform)
  • server side notifications. Currently lumeo is using on-device notifications that are using clock and work manager
  • different AI models to choose from for features like "ask", "grill-me"
  • bring back the "Grill-me" feature that go over the ideas from your notes and ask hard questions to shape the idea for real. I had it already, but when it was local. It was inefficient with tokens and not working properly with RAG. I would like to revisit
  • multi-notes from one recording/transcript. Currently one recording produces one note, even if user is talking chaotically about seeral topics. This is not a natural human behaviour. I want to make the Lumeo smarter and split the recording into several notes

Built With

Share this project:

Updates

Submission history