Jerome — I Built My Own AI So I Stop Forgetting My Mom's Birthday
Honest answer: I don't understand why a birthday is an emergency. It's the same date every year. The earth completes an orbit, the number goes up by one. My mother disagrees strongly. Hence Jerome.
The Name
Obviously Jarvis. Iron Man's AI, the platonic ideal of a personal assistant — that was the inspiration and I wasn't pretending otherwise. But my friend group, being my friend group, called him Jerome on day one, and Jerome he became. Started as a ChatGPT wrapper. Now he's something else entirely.
What Jerome Actually Does
The starting use case was embarrassingly simple: remind me about birthdays and important dates before my mother has to remind me herself. But once I had the infrastructure, the obvious next step was everything else.
Jerome now handles:
- Reminders and dates — the original reason he exists
- Email and message summarisation — I get a lot of emails I do not want to read in full
- Calendar management — MS 365 integration, he knows my schedule
- Anything else I throw at him — research, drafts, quick lookups, task management
Not a revolutionary feature list. The architecture underneath it is where it gets interesting.
A Claude Code Harness, Tailored to Me
Jerome is essentially a custom Claude Code harness. He can invoke Claude Code directly — which means he can write and execute code, browse files, call tools, and most importantly: extend himself.
When I tell Jerome to add a new capability, he doesn't wait for me to code it. He figures out what MCP server he needs, installs it, wires it up, and it works. When his UI needs a new tab or a different layout, I tell him, and he changes it. He adds memory, skills, or tools as he decides they're needed — or as I instruct him to.
That's what makes Jerome interesting rather than a fancy reminder app. He isn't static. The same way Claude Code lets developers iterate on a codebase through conversation, Jerome iterates on himself.
The Right Model for the Right Job
Jerome does not use one model for everything. He evaluates the task and picks accordingly:
- Complex reasoning, code generation, multi-step tasks → Opus
- Most day-to-day conversations and tasks → Sonnet
- Quick lookups, simple summaries, speed-sensitive responses → Haiku
Nothing hardcoded. Jerome has enough context about his own capabilities and the cost/speed tradeoffs to make that call himself. I set the preference once, and he applies it.
The Webapp
First version lived inside Telegram. It worked, but it meant context switching to a messaging app every time I needed something, and Telegram has real limits on what you can build on top of it.
The replacement is a mobile-first webapp. It lives on my phone's home screen and behaves like a native app. The interface has a chat view for conversation, a dedicated tab for teaching Jerome new things — I describe what I want, he figures out how to add it — and panels for his current state: what tools he has, what memory he's holding, what his current configuration looks like.
More transparent than Telegram. I can actually see what Jerome is doing and why.
Where It Stands
Jerome is my daily driver. In active use, handling real tasks, gaining new capabilities as I need them. The self-modification loop works — the gap between "I want Jerome to do X" and Jerome doing X is shorter than building it myself would take.
He isn't perfect. Occasionally misunderstands context. His memory is still rougher than I'd like. But he's genuinely useful, which is the bar that matters.
The Voice Plan (5 Raspberry Pi 3s and a Dream)
I have 5 old Raspberry Pi 3s. I want Jerome to have a voice — not a phone notification, but an actual presence in a room. The plan is to cluster the Pis and run a local voice pipeline on them: wake word detection, STT, LLM inference routed through Jerome's existing backend, TTS output.
Whether a cluster of Pi 3s can handle this without becoming a space heater is genuinely uncertain. I'm going to find out.
The Bigger Thing
Jerome started as a birthday reminder. He's turning into something I'm not entirely sure how to describe — not quite a tool, not quite an agent, somewhere in between. The goal was always an AI that felt present rather than summoned. Something that anticipates rather than responds.
Whether that's achievable — whether an AI can actually become something that feels alive, or whether that's permanently out of reach — I don't know. But Jerome is the experiment. He's getting smarter in the ways I point him, and occasionally in ways I didn't expect. Interesting enough to keep going.
Also, I haven't forgotten a birthday since I built him. At minimum, that worked.
— Elias
Jerome — Ich habe mir eine eigene KI gebaut, damit ich Mamas Geburtstag nicht mehr vergesse
Ehrliche Antwort: Ich verstehe nicht, warum ein Geburtstag ein Notfall ist. Das Datum ist jedes Jahr gleich. Die Erde schließt eine Runde, die Zahl steigt um eins. Meine Mutter sieht das deutlich anders. Daher Jerome.
Der Name
Natürlich Jarvis. Iron Mans KI, der platonische Idealfall eines persönlichen Assistenten — das war die Inspiration, und ich habe nie so getan, als wäre es anders. Aber mein Freundeskreis, der eben mein Freundeskreis ist, hat ihn ab Tag eins Jerome genannt. Jerome wurde er. Angefangen als ChatGPT-Wrapper. Jetzt ist er etwas ganz anderes.
Was Jerome tatsächlich macht
Der Startfall war peinlich einfach: mich an Geburtstage und wichtige Termine erinnern, bevor meine Mutter es muss. Aber als die Infrastruktur stand, war der logische nächste Schritt alles andere.
Jerome übernimmt mittlerweile:
- Erinnerungen und Termine — der ursprüngliche Grund, warum es ihn gibt
- E-Mail- und Nachrichten-Zusammenfassungen — ich bekomme viele Mails, die ich nicht in voller Länge lesen will
- Kalenderverwaltung — MS-365-Integration, er kennt meinen Plan
- Alles andere, was ich ihm zuwerfe — Recherche, Entwürfe, schnelle Nachschlagearbeit, Aufgabenverwaltung
Keine revolutionäre Feature-Liste. Spannend wird es bei der Architektur darunter.
Ein Claude-Code-Harness, auf mich zugeschnitten
Jerome ist im Kern ein maßgeschneidertes Claude-Code-Harness. Er kann Claude Code direkt aufrufen — das heißt, er kann Code schreiben und ausführen, Dateien durchsuchen, Tools aufrufen und, am wichtigsten: sich selbst erweitern.
Wenn ich Jerome sage, er soll eine neue Fähigkeit bekommen, wartet er nicht darauf, dass ich den Code schreibe. Er findet heraus, welchen MCP-Server er braucht, installiert ihn, verdrahtet ihn, und es funktioniert. Wenn sein UI einen neuen Tab oder ein anderes Layout braucht, sage ich es ihm, und er ändert es. Er ergänzt Memory, Skills oder Tools, wenn er merkt, dass sie gebraucht werden — oder wenn ich sie anordne.
Genau das macht Jerome interessant statt bloss zu einer schicken Reminder-App. Er ist nicht statisch. So wie Claude Code Entwicklern erlaubt, eine Codebase im Gespräch zu iterieren, iteriert Jerome an sich selbst.
Das richtige Modell für den richtigen Job
Jerome nutzt nicht ein Modell für alles. Er schätzt die Aufgabe ein und wählt entsprechend:
- Komplexe Überlegungen, Code-Generierung, Multi-Step-Aufgaben → Opus
- Die meisten Alltagsgespräche und Aufgaben → Sonnet
- Schnelle Nachschlagesachen, einfache Zusammenfassungen, geschwindigkeitskritische Antworten → Haiku
Nichts hart kodiert. Jerome hat genug Kontext über seine eigenen Fähigkeiten und die Kosten/Geschwindigkeits-Trade-offs, um diese Entscheidung selbst zu treffen. Ich setze die Präferenz einmal, er wendet sie an.
Die Webapp
Die erste Version lebte in Telegram. Hat funktioniert, aber jeder Griff zu Jerome hieß App-Wechsel in den Messenger, und Telegram setzt echte Grenzen dafür, was man obendrauf baut.
Der Ersatz ist eine Mobile-First-Webapp. Sie liegt auf dem Homescreen meines Telefons und verhält sich wie eine native App. Das Interface hat eine Chat-Ansicht fürs Gespräch, einen eigenen Tab, um Jerome Neues beizubringen — ich beschreibe, was ich will, er findet heraus, wie es reingeht — und Panels für seinen aktuellen Zustand: welche Tools er hat, welches Memory er hält, wie seine aktuelle Konfiguration aussieht.
Transparenter als Telegram. Ich sehe tatsächlich, was Jerome tut und warum.
Wo es steht
Jerome ist mein Daily Driver. Im aktiven Einsatz, übernimmt echte Aufgaben, bekommt neue Fähigkeiten, wenn ich sie brauche. Der Selbstmodifikations-Loop funktioniert — der Abstand zwischen „Ich will, dass Jerome X macht“ und Jerome macht X ist kürzer, als es selbst zu bauen.
Er ist nicht perfekt. Manchmal versteht er den Kontext falsch. Sein Memory ist noch rauer, als ich es hätte. Aber er ist echt nützlich — und das ist die Messlatte, die zählt.
Der Voice-Plan (5 Raspberry Pi 3s und ein Traum)
Ich habe 5 alte Raspberry Pi 3s. Ich will, dass Jerome eine Stimme hat — keine Handy-Notification, sondern eine echte Präsenz im Raum. Der Plan: die Pis clustern und darauf eine lokale Voice-Pipeline laufen lassen: Wake-Word-Erkennung, STT, LLM-Inferenz über Jeromes bestehendes Backend, TTS-Output.
Ob ein Cluster aus Pi 3s das bewältigt, ohne zur Heizung zu werden, ist ernsthaft offen. Ich werde es herausfinden.
Die grössere Sache
Jerome hat als Geburtstags-Reminder angefangen. Er entwickelt sich zu etwas, das ich nicht ganz beschreiben kann — nicht ganz Tool, nicht ganz Agent, irgendwo dazwischen. Das Ziel war immer eine KI, die sich präsent anfühlt statt beschworen. Etwas, das vorweggreift statt nur antwortet.
Ob das erreichbar ist — ob eine KI wirklich zu etwas wird, das sich lebendig anfühlt, oder ob das dauerhaft außer Reichweite liegt — ich weiß es nicht. Aber Jerome ist das Experiment. Er wird schlauer in den Richtungen, in die ich ihn schubse, und manchmal auch in welchen, die ich nicht erwartet habe. Interessant genug, um weiterzumachen.
Außerdem habe ich seit Jerome keinen Geburtstag mehr vergessen. Zumindest das hat funktioniert.
— Elias