I Built an App for People Who Walk UN Corridors. Here’s What I Learned.

This date is an editorial call: a bulk re-save wiped the original timestamp on this post and the four published alongside it. Every other date in the archive traces back to a source.

There is a specific kind of frustration that only makes sense if you’ve spent time working inside a large international institution. You show up to a meeting room — let’s say one of the smaller conference rooms in the Palais des Nations in Geneva — and it’s empty. Not cancelled. Moved. An hour ago. The updated information was in the Journal, a PDF that gets published before seven in the morning, forty-something pages long, formatted for printing, not for someone standing in a corridor at eleven-fifteen trying to figure out where everyone went.

I worked as an advisor at the UN for a stretch. I did this more times than I’d like to admit.

The frustrating part was never that the information was wrong. The Journal of the United Nations is meticulous. Every meeting, every room, every informal consultation, published daily, in six languages. The information was all there. It just wasn’t built for the people who actually needed it in the moment. It was built for filing, not for navigating.

At some point I decided to build something about it. Curiosity, mostly — there was no plan to turn it into a product. I had been tinkering with small web projects and wanted to see whether I could get something onto a phone. My original ambition was roughly: show the day’s meetings in a list, without requiring the person to open a PDF.

The first useful thing I learned was that I didn’t need the PDF at all. journal.un.org looks like a document operation, but it’s a web app, and sitting behind it is a public JSON endpoint that hands you the whole day’s programme as structured data — a stable ID for every meeting, the organ, the room, the start time, whether it has been cancelled, whether it’s closed, even a photograph of the room. Nobody documents it. It’s simply there. Finding it is the difference between an evening project and a scraping problem I would have given up on.

I should be upfront about how I built the rest. I am not a mobile developer. What I had was a clear mental model of what the thing needed to do, and access to Claude, which I used heavily throughout to write and debug the code. Envo is React Native under Expo, written in TypeScript, with a Supabase backend — a stack I picked partly because it was the one I stood the best chance of understanding when something broke at eleven at night. There were long stretches where I described what I wanted in plain language and then worked through the output until it actually functioned. It was slower than I expected and more satisfying than I expected. I learned things I wouldn’t have learned any other way.

The app is called Envo. It reads the Journal and surfaces the useful parts — meetings, rooms, times — in a clean interface that works on your phone and, importantly, works offline. That last part mattered to me because basement conference rooms and the inside of large UN buildings are not always well served by mobile signal, and having the schedule disappear at the wrong moment defeats the point. It covers New York and Geneva, which are the two duty stations the Journal actually publishes a daily programme for. I built for Vienna and Nairobi as well, before discovering that the endpoint accepts both and then returns nothing at all, on every date I tried. Six UN languages, including the meeting titles themselves rather than only the buttons around them, with Arabic laid out right to left. And there’s a Pro tier that adds push alerts when a room or a time changes, and a private calendar feed you can subscribe to from whatever calendar app you already use, which then keeps itself current without you.

The scope crept, in the way these things do when you’re building something you actually care about. “Show today’s meetings” became “put them in my calendar” became “tell me when one moves” became “work with no signal” became “and do all of this in Arabic and Chinese.” Each addition made sense when I added it. Together they took over about two weeks I had loosely intended to spend on other things.

The alerts are the part I’m most pleased with and the part nobody will ever see. Every ten minutes the backend re-reads the day and compares it against what it stored last time. When a room changes, or a time moves, or a meeting is cancelled, that difference gets written down as a record of its own, and the people who saved that meeting hear about it. It is a small piece of machinery. It is also the whole reason the thing is worth having on your phone instead of in a browser tab.

What I enjoy about building something this specific is the clarity it gives you. The audience is small and real. The problem is small and real. There’s no ambiguity about whether this solves a need — I experienced the need directly, repeatedly, with consequences that were usually mild but occasionally embarrassing. The Journal exists. The information exists. Someone just needed to connect them in a way that fits in a pocket.

I’m not building this with ambitions to scale it to millions of users. That’s part of what makes it interesting to work on. Fifty people who genuinely need something is a more satisfying target than a vague aspiration toward mass adoption. The feedback you get is more specific. The use cases are more real. The problems you’re solving are legible.

Envo is now available on the App Store. If you work at the UN, have colleagues who do, or spend time in those buildings in any capacity, I’d love to have you try it — especially if you’re someone who’s ever stood outside an empty conference room wondering where everyone went. You can learn more at envo.tschuebi.com.

It started as an experiment. I think it became something useful. Those two things aren’t as different as they sound.

Stay safe, Raffael

Back to all writing