← Essays

Meet Jeeves: the AI butler that helps me organize my life

Jeeves reads my inbox, calendar, and the London weather, then turns them into one useful message every morning.

A month ago, I wrote about Arnold, the AI health coach I built for myself on OpenClaw. While Arnold is the agent I talk to the most, Jeeves is the agent who saves me the most time. Jeeves is my organizational agent, helping me stay on top of everything so I can chill.

Image from the original published article

Jeeves reads my inbox, my calendar, and the London weather, and every morning he turns all of that into one Telegram message: what’s happening today, what needs my attention, and how I should get to each place.

If you want to build one of these yourself, I’ve written a complete guide on how to set up OpenClaw for non-technical people. This article is more about what to build once you have it running.

The daily digest

Every morning, Jeeves sends me a brief. It covers my inbox, my calendar for today and tomorrow, and the travel plan for anything with a location.

The email part is very helpful. For instance, Jeeves flagged the kind of thing I knew was there but would forget, like signing up for a new utility provider two weeks before moving into a new apartment.

But the travel part is what I like the most. For each appointment, Jeeves tells me when to leave, how to get there, and gives me a Google Maps link and a Citymapper link, already set up for the journey. When it’s time to go, I just tap and walk out the door. No typing postcodes into apps while standing in the hallway.

What makes this work is that Jeeves knows my transport preferences. I cycle around town a lot, so Santander bikes are my default (Limes are too expensive haha) for anything reasonable. That said, there’s a limit to how far I’m willing to pedal and under what circumstances (rain/too hot, formal event or not, etc.), and he knows it.

Jeeves uses the TfL API to work out routes, then adjusts them to me: bike if it’s within my range and the weather cooperates, tube/overground or bus if not.

Image from the original published article

Building for the problem I’m having right now

I think the biggest unlock with Jeeves was simply to build for the problem I’m having at that minute, rather than try to design everything upfront. Every useful feature Jeeves has came from a specific failure. Two examples.

The rain that never came

One day Jeeves told me it would rain later, so I shouldn’t cycle to my after-work drinks. I was annoyed as taking the tube would’ve been a much more inefficient route, and when I left the office, it wasn’t actually raining. I then sent an angry message to Jeeves with a screenshot from my Apple Weather app.

Image from the original published article

Some back-and-forth with him later, we worked out the problem: the weather API he was using gives forecasts in three-hour windows. “Rain between 6pm and 9pm” is useless when what I actually need to know is “will it be raining at 6:20 when I’m on the bike.”

So we swapped in Tomorrow.io, whose API gives precipitation probability even minute-by-minute, and now Jeeves checks the chance of rain for the specific window I’d be cycling in (overkill, I know, but their free tier is plenty for one person’s rain checks). The rain check went from being a reason to distrust the brief to one of its most reliable parts, and now I also know if I need to bring an umbrella when I’m leaving home.

The Barcelona restaurant problem

I was arriving in Barcelona and, while on the subway from the airport, I wanted to find good places to eat and continue the conversation I was having.

The solution? Just ask Jeeves for restaurants near a specific square, as long as they could handle my dietary restrictions. The problem is that I hadn’t set up a proper places lookup at the time, so he improvised with web search by looking for restaurants in that neighborhood, which is a reasonable solution but not ideal.

Image from the original published article

To his credit, he did find suitable places, but most of them were further from the square than I was willing to walk, which made the exercise almost pointless – almost because one of the places was “only” a 15-minute walk away.

That failure is why Jeeves now has the Google Places API, with clear rules attached: when I say “find places close to X,” close means a 10-minute walk.

Neither of these would have made it into an upfront spec. I didn’t know the three-hour weather window was a problem until I had an issue with it. Though sure, I could actually have predicted the Places API issue. In any case, the agent got good by failing in small, specific ways and getting patched the same week.

Taste is a file

Maybe because I’m a nerd, but I have a Notion list of all my favorite places in London, split by part of town and activity. I then gave Jeeves a london-list.md file with everything – restaurants, cafés, pubs, clubs, and so on. When I ask him to find somewhere for dinner or drinks, he checks the list first.

But he also knows I like trying new places, so he’ll surface new options alongside the old reliables rather than just recycling my own favorites back at me, which I find nice when choosing a place to go. By the way, can someone at The Infatuation create an API, please?

Image from the original published article

What have I actually built?

Jeeves follows the same architecture as Arnold: an agent running on OpenClaw on a small server, talking to me through Telegram. He has access to:

  • Gmail and Google Calendar for the inbox scan and the day’s schedule.
  • The TfL API (free) for London transport routing – tube, bus, and Santander bike times.
  • Tomorrow.io for weather, including fine-grained rain probability.
  • The Google Places API for finding places anywhere in the world, with my “10-minute walk” rules on top.
  • The Google Geocoding API to convert calendar addresses into coordinates. This one earns its place twice: TfL’s journey planner struggled with free-text addresses (it returns “did you mean one of these five stops?” instead of a route), so Jeeves feeds it coordinates instead. And the Citymapper links only open a routed journey, rather than a generic search screen, when they’re built with start/end coordinates and an arrive-by time.
  • The Google Distance Matrix API for travel times outside London, where TfL obviously can’t help. Jeeves has a standing rule to never estimate travel time from “mental geography”, he always checks against a real API.

His memory is markdown files – who I am, my transport preferences, the London list.

Crons run the routine: the morning digest, a weekly look-ahead, and reminders like my plants’ watering schedule.

Everything else happens in conversation, and when something breaks or annoys me, that conversation is usually where the next feature comes from.

If you want to build your own Jeeves – or Arnold, or whatever your next most helpful AI agent is – you can start with the OpenClaw setup guide. As you saw above, there is no need to plan too much, just let it fail at something you care about, and then fix that.

I hope the above is helpful, and if you want the next build write-ups when they’re out, subscribe!