I built Milo to help us decide where to meet
The first version of Milo started with a list of names and Bengaluru localities.
Our team lives across the city: Whitefield, Electronic City, HSR, Hebbal, Bellandur and a few other areas. I wanted to put everyone on a map. Once we could see where we all were, maybe we could work out a sensible place for a meetup, or eventually an office or coworking space.
That was the whole idea at first. A map with people on it.
One suggestion from the team was to save the data across sessions. That changed what I wanted to build. If everyone could open the same link and add their own location, the map could become something we used together.
That’s now Milo.
One link for the whole group
You create a meetup, give it a name and a city, and share the link. People can add their current location, search for a starting point, or drop a pin. The data is saved, so the next person opening the link sees the same meetup.
I wanted to keep joining simple. Asking someone to register for another app before they can help choose a café felt like too much. Milo has no sign-in screen. The link is all you need.
That decision comes with a tradeoff: anyone with the link can edit the meetup. Voting works on trust, too. You select your participant name and vote for places, but the app doesn’t verify that you are that person. It’s useful for a group making a decision together; it isn’t a tamper-proof poll.
The same applies to locations. People with the link can see the locations added to the group, so choose a starting point you’re comfortable sharing. It doesn’t have to be your home.
The average wasn’t telling the whole story
One question bothered me while building it: what should “best place to meet” mean?
Imagine three people along a straight line, at 0 km, 1 km and 30 km. Averaging their positions gives a point around 10.3 km. The furthest person still travels almost 20 km.
Choosing the point with the least total travel gives a different answer. At 1 km, the three journeys are 1 km, 0 km and 29 km. That’s only 30 km combined, but one person does almost all the travelling.
Neither result felt like a complete answer to the question our group was asking.
Milo now defaults to Fair to everyone, which tries to minimize the longest individual journey. In that simple example, it puts the meeting point around 15 km. The journeys become 15 km, 14 km and 15 km.
The group travels further in total, but nobody takes on a 29 km trip while someone else barely moves.
There’s also a Least total travel option, because sometimes that is the right choice. I wanted the group to be able to compare those priorities, with the average and longest distances visible.
For now, these are straight-line distances. Bengaluru roads and traffic can change the answer considerably. Milo doesn’t yet calculate driving routes or travel times, and a fair point on a map isn’t necessarily a fair commute.
A meeting point still needs somewhere to sit
Once you’ve picked an area, you can search nearby places and filter by type: cafés, restaurants, coworking spaces, parks or other places. People can suggest venues, attach a Google Maps link, vote and confirm a choice.
I left out budget preferences and a longer questionnaire. For this version, choosing the kind of place is enough to start the conversation.
Search uses OpenStreetMap-based data through Photon, so coverage varies. It won’t find every venue you can find on Google Maps. Being able to suggest a place yourself matters for that reason, and because someone in the group may already know a good spot.
Giving it a home
The app began as a hosted prototype called Bengaluru Team Map. As it became useful beyond our own team, I renamed it Milo and moved it to milo.adarsh.app.
It lives in the same repository as this website, as a separate app. The portfolio stays on Vercel, while Milo runs on a Hostinger VPS I already had available. It uses React, a Node backend and SQLite for shared data, with Nginx in front. Leaflet displays the map.
There’s no notification service yet. People need to reopen the link to check in; an open meetup refreshes periodically. Route-based travel estimates are another improvement I’d like to explore, especially before relying on this for a recurring office location.
For now, I’d like to see how it works for the decision that started it all: getting a group of people in the same city to agree on where to meet.
Create a meetup on Milo, share the link with your group, and give it a try. I’d be interested to hear where the suggested area makes sense—and where your knowledge of the city gives a better answer.