No assistant gets it right the first time

rysOS, the executive assistant I am training on my Raspberry Pi


I wanted an executive assistant. Someone who would read my calendar, my email, the minutes of the meeting I had just left and the audio I recorded in the car, and do something useful with all of it without asking me to open a screen and say where to file each thing.

Nobody starts a job knowing how the boss works. A human assistant makes mistakes in the first weeks, asks a lot of questions and gradually works out who is who, what is urgent and what can wait. The same happens with an AI assistant. It does not get it right the first time either, and the most common mistake is to forget that and expect a finished product.

That is how I treated rysOS. It reads my real sources, Google Calendar, Gmail, meeting transcripts and my spoken journal, and writes to a vault, which is what I call my folder of notes as plain text files. It runs as a service on my Raspberry Pi and is mine alone. What matters most about it is that it learns with me. I correct it, it keeps the correction, and the idea is that over time it needs less help. My role is to follow along, correct and teach. This text tells how that works in practice.

Terminal showing the output of the rysos status command, with the vault connected, the Google accounts authenticated, Gemini ready and the day's token usage.
Figure 1. rysOS in the Raspberry Pi terminal. AI-generated illustration, with fictional names and data. The screenshots in this text show the interface in Portuguese. The format follows that of rysOS.

An assistant that asks when it does not know

The first thing I demanded of it was that it never make things up. Give an ordinary chatbot a calendar invite with no description and ask for the meeting agenda. It returns an agenda that is plausible, well written and false. In a record that will become my history of decisions, that is unacceptable. So when an invite arrives without an agenda, in practice with fewer than fifteen characters of description, the model is not even consulted. The summary says the invite came without an agenda. It reads drier, and I prefer it that way.

In the same way, when a transcript mentions a person, a project or a decision that it cannot safely link to something that already exists, it asks. It opens a triage note, with one line for each doubt, and I answer in Obsidian itself with a single word: NOVO to create, "= Nome Exato" to link to a note that already exists, IGNORAR to discard. (The commands are in Portuguese, like the rest of the system.) If the same person is pending in other transcripts, the answer applies to all of them. I answer once, and it does not forget.

Obsidian with the triage note for a meeting, listing people and a project that rysOS could not link on its own, each with the resolution line to fill in.
Figure 2. Triage note in Obsidian: one line per doubt, answered with NOVO, = Nome Exato or IGNORAR. AI-generated illustration, with fictional names and data. The format follows that of rysOS.

It also keeps what it learns. It records the terms that repeat and the times I confirm or correct how it classified a message, and it uses that history again on the next ones.

Its day

At seven in the morning it fetches the day's events and the new emails and prepares, for each meeting, a summary of what is known about it. A bill due today becomes a focus item on the daily dashboard, and those due later become reminders. Every fifteen minutes it checks a folder. When I drop in the transcript of a meeting, or the audio of my journal arrives already transcribed, it builds the minutes, creates the note and stores the original file.

I talk to it through Telegram. A question from me never becomes a note, a vague capture gets an answer instead of becoming a draft, and "boleto pago" (bill paid) closes the corresponding focus item. At eleven at night the day's wrap-up arrives.

Telegram conversation with the rysOS bot: the message saying the condo bill is paid, the confirmation that the focus item was completed and the executive wrap-up of the day.
Figure 3. Conversation with rysOS on Telegram: a bill marked as paid and the day's wrap-up. AI-generated illustration, with fictional names and data. The format follows that of rysOS.

What it learned by making mistakes

It made mistakes in ways I did not expect, and each mistake changed what it does today.

Because of two identical names, it spent a day and a half recreating the same decisions every fifteen minutes and left more than 730 duplicate files in the folder. Today a problem with one decision does not get in the way of the others. On this point it has not fully got the hang of it yet, because decision names can still collide, and I keep an eye on it.

In meetings that came through my other email accounts, it did not recognize me and created a link to a note that did not exist. Nobody warned me, and I only noticed later. Now it uses the complete list of my email addresses.

One report went as far as saying that 26 of my 27 resource notes were duplicates. I went to look before merging, and they were 26 different notes with the same name. Merging everything would have wiped out the collection. Each one got a new name. That mistake was the report's, and I was the one who caught it.

The vault scan once took more than 20 minutes because of a setting in the Google Drive connection. I adjusted it, and today it takes about 11 seconds.

The rules I keep

Following an assistant means keeping a few rules that do not change, even when relaxing them seems better.

The structure, with folders, fields and links, is always assembled by code, and the model only writes sentences. That way, when a note comes out wrong, I know whether the fault was in the code or in a sentence from the AI. Missing information counts as information, so it says it does not know instead of filling the gap. It recognizes things by what actually happened: a meeting by date and participants, a bill by due date and creditor, a transcript by the content of the file. That is why a forwarded email, or a file dropped twice, never generates two notes.

Obsidian with a meeting note: context saying the invite came without an agenda, decisions, next steps and, below, the handwritten notes.
Figure 4. Meeting minutes in Obsidian: what the machine writes stays at the top, and my notes stay below. AI-generated illustration, with fictional names and data. The format follows that of rysOS.

The vault has four fixed areas: Business & Governance, Health & Vitality, Assets & Finance and Family & Relationships. With a closed vocabulary, I can ask "what is pending in Health" and get the complete answer. In meeting notes, what the machine writes stays at the top, and what I write in the body is never overwritten.

And the vault is a folder of Markdown files synchronized with Google Drive. If Obsidian disappeared tomorrow, the files would stay where they are, and any AI, including one that does not exist yet, could read them.

What it does not do

A human assistant is better at everything that requires judgment: negotiating, reading a room, deciding what not to do. If your bottleneck is judgment, hire a person.

A chatbot with calendar and email plugins is faster to set up. Without someone supervising it, one day it will make up something plausible, and you will only find out after using the false fact in a real decision. No-code tools suit teams better. rysOS is for one person, with one Google account, one vault and one authorized user on Telegram. That is a real limitation.

What to expect

It does not decide for me. What it does is get better as I follow along. A meeting becomes a note without me typing. A person mentioned in six meetings accumulates their history on their own page, without me having written that history. A decision recorded today is a line I will reread three months from now to find out whether I was right. Nothing I have ever known is lost, nothing it does not know is made up, and everything can be traced back to the source.

This only stays true as long as I keep watching. If I stop following along, it stops learning and the mistakes go back to slipping through unseen. I wrote this text to remember that: rysOS is a new assistant, and new assistants need attention and time to get the hang of it.

The code

The code is on GitHub, under the name meOS: github.com/rodrigoyujisato/meOS. It is open, under the MIT license. Name, emails and paths become configuration in a .env file, and the repository holds none of my data. To run it you need a Gemini key and, if you want it to read calendar and email, a Google account. The README has the step-by-step, and the system speaks Portuguese.

Thank you, Luis

Luis Alt, thank you for the provocation to explore the possibilities of Obsidian, which came from your LifeOS (luisalt.com/LifeOS). I admire the professional, with your history in Service Design in Brazil and around the world. I admire the person even more, always kind and brilliant.

Warm regards, Rodrigo