Nicolas Bouliane

All About Berlin Built in

I run a website called All About Berlin. It’s a huge collection of detailed guides that help immigrants navigate German bureaucracy and understand all the little systems that make up German society. Put simply, it shows people how to adult in a new country.

All About Berlin All About Berlin guide

The website is quite famous among immigrants. It’s often praised for being very clear, straightforward, and practical.

Positive feedback for All About Berlin

My readers are unbelievably kind and grateful. It still blows my mind when I talk to a complete stranger, and their face lights up when they realise that I run that website. It’s one of the best parts of my job. It’s very rewarding work.

It is, however, relatively unknown to native Berliners. This was not a problem 7 years ago, as I mostly covered topics that Germans are already familiar with. But more and more, I also cover topics that also concern them, and I do so much more thoroughly than German language resources. They would also benefit from this website if it was available in their language.

Why I built it

Uncertainty causes anxiety

The guiding principle behind All About Berlin is that uncertainty causes anxiety.

A person looking at the uncertain road ahead

And if you reduce uncertainty, you make people feel better.

A person holding a map that makes the road ahead more predictable

What bothers us about waiting for a train, a taxi or a residence permit is not the wait itself, but the degree of uncertainty. Waiting for a train is not so bad if you know exactly when it’s coming. Even delays are no big deal if you are informed about them.

A BVG Daisy display showing the tram timetable

But when no information is available, it gets a lot trickier. If you don’t know when your train is coming - or if it’s coming at all - there’s a lot more uncertainty, and it’s a lot harder to plan around it. Should you wait longer? Call a cab? Cancel plans?

"Außer Betrieb" by UnbewegtImBilde, CC BY-SA 2.0

That also applies to bureaucracy. If you tell people how long a bureaucratic process takes, they feel a lot calmer about it. They wait the same amount of time, but the clarity improves the experience of waiting.

Increasing levels of clarity

Uncertainty has a cost

Uncertainty also adds a cost to everything. You leave home earlier because you don’t know how long it will take to find parking. You take an early bus because public transit is unreliable. You get to the airport early because you don’t know how long the security check will take. You waste time and energy to account for the unexpected.

Man looking for parking, waiting for the bus, waiting at the airport

Likewise, we tell people to bring every document they can to their immigration office appointment. A missing document can delay their residence permit application by weeks. They risk burning through more of their savings while they wait for the permission to work. It can cost them their job, and even their life in Germany.

The stakes are too high and the case workers too capricious to bring just what’s officially required. Therefore, people chase documents they don’t need and get them translated at great expense, just in case a capricious case worker might ask for them.

Man with a wheelbarrow full of documents going to the Ausländerbehörde

This sort of uncertainty wastes everyone’s time and energy. Not only immigrants who waste time chasing unnecessary documents and energy stressing about the outcome, but also case workers who waste their labour processing incomplete applications.

Man with a wheelbarrow full of documents at the Ausländerbehörde

Engineering school drilled into us that the earlier you catch a mistake, the cheaper it is to fix. Good instructions are the earliest, cheapest fix their is. Well informed people prepare better, and you waste less time dealing with them. It saves everyone a lot of unnecessary work and frees up resources for better uses.

Uncertainty leads to avoidance

In the worst case scenario, uncertainty leads to avoidance.

When I travel, I often struggle with local public transit systems. There’s just so much to figure out! Do I need a transit pass? Do I need to install an app? Can I just pay with my credit card? How much does it cost? How do transit zones work? Which bus am I supposed to take? In which direction? When is it coming? Do I need to tap my card when I board? Do I need to tell the driver to stop? Can I exit through the front door?

Sometimes it’s too much trouble, so I just walk.

Walking route and public transit route

Speaking of foreign systems, In Taiwan, I struggled to order food.

To order food, you need to:

  1. Find the paper slip you use to choose which items to order. Sometimes they bring it to you, and sometimes you just wait at your table, clueless, until you realise there’s a pile of them in a box somewhere.
  2. Understand the Chinese menu, filled with Chinese dishes with unknown portion sizes.
  3. Decide what you want and how much of it you can eat.
  4. Figure out how to transmit that paper slip to people with whom you have no common language.
  5. Hope to God that you did everything right, and that you will eat today.

This was at the end of a long trip, and I was completely worn out. I did not have the energy to do this, so I did what every weary traveller would do in my situation.

McDonalds self-service kiosks

I went to McDonalds.

Everything was exactly like at every McDonalds everywhere else. I used the multilingual self-service kiosks, paid with my card, and picked up my mediocre but predictable meal the same way I would anywhere else in the world.

This sort of avoidance also happens with bureaucracy. People develop what I call envelope anxiety. They get a scary letter from the Finanzamt. They don’t understand German taxes. They don’t even understand German. They have no one to turn to who can make sense of it.

Envelope anxiety

So they ignore it. The envelope stays unopened on the kitchen table, and naturally, whatever problem they are ignoring only gets worse.

This affects immigrants more than anyone else, because they face the whole system at once, instead of being gradually exposed to it as they grow up.

They need to find a job and an apartment, open a bank account, choose health insurance, get a SIM card, get an internet contract, find a kindergarten for their children, and a million other things.

Person being beaten by their problems

They also need to figure out all the small systems: recycling, tipping, taxes, Sunday shopping, public transit, taking sick days and so on. Even little things like finding the eggs at the supermarket (hint: not in the fridges) adds to their burden.

They must do of that while going to work, taking care of children, paying bills and running errands like the rest of us.

It can be a lot.

Beaten person

To make things worse, there are many catch 22 situations. Circular dependencies that only immigrants find themselves in.

For example, you need a residence permit to get a job,
and you need a job to get an apartment,
and you need an apartment to get a residence permit.

Or you need to pay the deposit to get an apartment,
and you need an apartment to open a bank account
and you need a bank account to pay the deposit

All About Berlin nightmare graph
I call it the “nightmare graph”.

These things happens because those systems were not designed with immigrants in mind. Their designers made a lot of assumptions about what every adult German resident should have, and these assumptions were wrong.

Person being left out

A big part of my job is to find and document workarounds for deadlocks that result from such assumptions.

What do you do if you can’t open a bank account because you can’t get a tax ID
…because you can’t register your address
…because you can’t find an apartment
…because the housing market is fucked
…and your AirBnB won’t let you register?

There’s a guide for that.

Person showing another person the way

Good information matters

My solution is good information. If you can’t change the outcome, at least you can change the experience. Good information makes the experience more predictable, and that makes people feel a lot better about it.

The best thing about information is that it’s really cheap. A single person can build a website and serves hundreds of thousands of visitors every month, and host it for free. After seven years, my hosting bill is still around 10€ per month.

Second, information scales really well. Whether you serve a hundred or a million people, the amount of work is roughly the same.

Graph showing that effort does not grow with the number of users

For example, I have built an Anmeldung form filler. It helps people feel a complex government form in plain English, with clear instructions and form validation. 45 people use it every day. Over 16,000 people every year. That’s thousands of hours saved, and once since it went live, it requires zero effort from me.

Anmeldung form filler

When you think about it, good information is disproportionately effective. It’s cheap, it scales well…

Information is cheap and effective

…and nobody cares about it. Why is that?

I suspect that people only look for solutions in proportion to their budget. If you have a big budget, you look for big solutions.

Big problems, big solutions

But while you are focused on big solutions, you tend to neglect the small stuff that could bring a lot of value

For example, you can spend billions building an airport, but still neglect the signage, and forget fountains and power outlets. These are details that people notice and remember.

Second, it’s not glamorous. My proposition is to do something boring and obvious, but to do it really well?

You can sell people a chatbot or some AI nonsense. It’s exciting, the press loves it, and it makes you seem like a champion of innovation. It doesn’t even need to work!

But nobody reports on boring solutions. They don’t get people promoted. Nobody gets a startup award for running a blog or putting up signs in an airport.

Decision makers favouring shiny things over proven solutions

But the boring details are important too. Sweating the small stuff shows that you care, and people notice.

Grateful tweet

How to create good information

So how do you create good information?

1. Get inspired

Most of my guides are based on personal experience. I wrote about moving to Germany because I am an immigrant myself. I’ve been there. I’ve done that. I know how it feels. I remember the exact moments when I got angry, confused, or discouraged, so I can navigate people through it.

Person ranting to their friend

I do it out of a duty to document. I figure that if information is cheap and disproportionately valuable, and that it takes a few minutes to publish text online, and that it can help thousands of people, it would be selfish to keep it to myself.

Person putting up a sign with directions

Otherwise, there is no grand plan. I mostly follow impulses and work on whatever feels useful or interesting at the moment.

Sometimes my work is all cut out for me. Sometimes I just go around the website rephrasing things and adding details. Sometimes I wake up, have a strong coffee, and see where it takes me.

Person doing chores and puttering

What I don’t do is cover news and current events. These things change too quickly and I don’t have the manpower to cover them. I’ve made that mistake twice.

Once during COVID. I started documenting changes to COVID restrictions - in plain English - because no one else would do it. I thought it would only last for a month or two. I ended up maintaining that stupid page for almost 3 years.

COVID restrictions information

The second time after the Russian invasion of Ukraine, to try to corral all the people willing to help refugees toward existing organisations, so that they wouldn’t all try to save the world on their own.

I try to focus on evergreen content that can be steadily improved over time, instead of ephemeral articles that quickly fade into irrelevance.

2. Think about it super hard

The next step is to fully understand the problem, and to come up with a basic guide structure.

Most of my guides follow the same basic structure:

When I say “why”, I mean why it’s important to the reader. Bureaucracies have a tendency to explain things from their perspective. They tell you what they want from you, and never bother justifying it. “Make an appointment, bring us these documents, and pay us 50€. Do it because we said so.”

Article table of contents
A typical table of contents

When I write, I try to justify things from the readers’ perspective. Why should they care? What do they get in return? How does it fit with their goals? What happens if they don’t do it? People are a lot more likely to do the right thing if they know why.

Why register your address

Then I try to explain how the process goes, again, from their perspective: What are their needs? What are they uncertain about? What scares them?

Usually, people want to know how long it will take, how hard it’s gonna be, how to prepare, and exactly how to get the required documents. The official website never explains those things. “Here’s a list of documents. Good luck.” The rest is left as an exercise to the reader.

Section of a guide that explains wait times

I also try to find out which of their cultural expectations don’t apply in Germany. Immigrants coming from all over the world can be surprised by the most banal aspects of German culture. I try to prepare them for the bitter reality.

At last, I offer people ways to get help. I would love to help everyone individually, and I do answer every email that comes my way, but it’s unsustainable. I used to get dozens of emails a week - far more than I could answer - so I have to redirect readers to a curated list of experts.

3. Research

Once I know what I want to write about and which questions I need to answer, I start researching the topic in depth. This is the hardest part of my job.

Person reading legal documents
Aufenthaltsgesetz and chill.

Usually, it involves a lot of reading. I start at a high level with newspaper articles, then I work my way down until I reach legal texts and court cases.
This is the ground truth.

Once I know how the system should work, I focus on how the system actually works.

I read hundreds of social media posts to learn about people’s experiences. I reach out to some of them with questions. More and more, I also survey my audience on social media. Recently, I started creating task-specific group chats with my readers to ask them rapid-fire questions.

I also ask the city directly, but it’s not nearly as effective as one would think. I write to all 12 districts, get 6 responses, 3 of which contradict each other. Steglitz does it one way, Pankow does it another. Wedding misses the point entirely. Mitte replies 2 months later. And that’s just within Berlin! Each state interprets the law completely differently, so advice that applies to Berlin does not necessarily apply to Munich.

Person running a survey

This is why it’s so important to ask around. It gives me an idea of how much variance there is in the process. I can’t always give people a precise answer, but even documenting the range of possible outcomes is valuable to my readers.

4. Writing and editing.

Next comes the writing part. I write clearly and concisely, in plain English. I put a lot of work into it. I can revise the same paragraph over and over again for an hour.

People are busy and stressed. Some of them learned English as a second or third language. I want to use their limited attention for what matters.

My content is meant to be skimmed. I know that people won’t read the whole thing from top to bottom, and that’s okay. I use clear formatting to guide them to what they want to know. Basically, I design my website to be the opposite of every recipe website ever.

I draw a lot of inspiration from NHS.uk. It’s a wonderfully straightforward and well-written website. Most UK government websites are.

Just go to their website, and look up a random symptom. See just how clear, helpful and reassuring the information is. Not a single word is wasted. It’s beautiful.

Screenshot of a page on NHS.uk

Another important aspect of writing clearly is to avoid assuming prior knowledge.

I assume that my readers arrived in Germany yesterday, speak no German, and don’t know what a Wohnungsgeberbestätigung is.

Person talking about the Wohnungsgeberbestätigung to a friend

That’s why I explain everything that needs explaining. Nothing is too obvious. If the explanation is too long, I move it to a glossary pop-up, or turn it into a separate guide. People who need it can read it, but it doesn’t get in the way.

All About Berlin glossary

I use images sparingly, but when it helps, I create my own graphics. I release most of them in the public domain.

All About Berlin graphics

I also create my own letter generators. Writing a letter in a foreign language is a daunting task for many. It adds friction and make people procrastinate or give up. These letter generators show the letter in English and German, and let people fill in the blanks. They get used thousands of times per month. That’s hundreds of hours saved.

All About Berlin letter generator

When explanations get too complicated, I sometimes build a calculator or a tool instead. This is a tax calculator I have made a few years ago:

All About Berlin tax calculator

I also made a tool that helps people find Bürgeramt appointments. It might not reduce uncertainty, but it reduces friction, and that’s just as important.

Anmeldung appointment finder

5. Release

All About Berlin’s content is under source control, so I can work on different things at the same time. For example, I can make all sorts of small changes on the main branch and work on a new series of guides in another branch.

Git branches

When my work is ready, I merge it onto the main branch and deploy it.
Some tasks affect dozens of pages, and bring hundreds of little changes.

After the release, I follow a post-release checklist. The first day mostly involves telling a lot of people what I just did, and bringing attention to my work.

I also release the by-products of my work. I open source as much code as possible. I really wish I could open source the website itself with all its content. It would open things up to contributors. However, the hostile nature of the web means that illicit copies of the website would spring up within a week.

6. Maintenance

The last step is by far the most important one: maintenance. Each guide I release is a commitment, a liability. It’s not something that I just publish and forget.

For every new guide that I write, I make hundreds of changes and refinements to existing ones. The website grows a bit like a tree, in the sense that it develops new branches but also in the sense that the old branches grow thicker and sturdier.

All About Berlin GitHub graph

I have set up a lot of infrastructure to keep my guides up to date. I monitor hundreds of pages and legal texts for changes with Wachete. When something changes, I get an email that shows the differences. I update my content within a few hours.

Behind the scenes, I also set expiration dates on parts of the content. This bit of code triggers an error after a certain date. The website won’t build until it’s fixed. It’s a reminder to check if a statement is still true after a while.

All About Berlin code

I also use constants. When I change one, the changes automatically propagate to the entire website. If I change the minimum wage, it triggers change to a bunch of guides, as well as a few other calculated values and calculator formulas. Combined with change monitoring on relevant laws, I can update the entire website the same day a law changes. This is useful in January when all sorts of laws change at once in Germany.

All About Berlin constants

To make my research easier, I have created a WhatsApp community of immigration experts. There are a few dozens of us in there. We share knowledge and updates and discuss the finer details of immigration law. It costs us nothing, but it saves us an awful amount of time.

Trawling social media for relevant information is getting a bit time consuming, so I try to get better at directly collecting feedback from my users.

I have just released this tool that measures the wait times at the immigration office. It collected around 50 data points in a week, more than I’d usually find in a whole year.

All About Berlin feedback tool

This is a game changer. My hope is that we can get something like this
But for a journey with much higher stakes: settling in Germany.

A BVG Daisy display showing the tram timetable

This emphasis on maintenance is a radical idea on an internet dominated by streams, where everything is ephemeral.

Someone asks a question on Facebook. Another answers.
A day passes, and the question flows past everyone. Two or three days later, it sank at the bottom of everyone’s feed, lost in the abyss. A week later, someone asks the same question again. Rinse, repeat.

By contrast, I see my website as a digital garden. I spend most of my days tending to it, walking around it, plucking dead links, pruning superfluous words, and re-potting overgrown paragraphs into their own guides.

Person standing in a stream

I neglect some sections and obsess over others, like any gardener, but my advice does not get lost in the depths of the internet. It persists and it grows. It bears fruit for others to enjoy.

Digital gardening

And above all, little by little, my little garden does something wonderful: it transforms the landscape.