On February 24, 2022, Russia invaded Ukraine, forcing many businesses to shut down and making it difficult for people to access essential services like medicine and safe shelters. In response, the "Opir Map" was launched to help people find the closest necessities. Over the 6 critical months, Opir Map served 740,000 people with information on 50,000 active locations across Ukraine, ranging from bomb shelters to pharmacies and shops.
This is the story of how a team of Ukrainian IT specialists in Estonia rapidly developed a product to help people during the war. It explores how development processes were adjusted to launch in just 4 days and whether the learnings can be applied in commercial product development.
Reading time: ± 10 mins.
Web version of the app showing all locations on map
We need a solution today.
How It All Began
First day of war. Evening. 4 ukrainians in Estonia thinking what we can do to help with what we can do best - create a product. We identified a critical issue: the lack of reliable information about location and open status for essential infrastructure such as pharmacies, grocery stores, bomb shelters, and gas stations. This shortage of information led to difficulties in finding necessities and increased risk during travel.
If we add a pharmacy on a map - will it be bombed?
Making data public was needed to make it accessible by everyone in Ukraine, but at the same time, it created a risk of being used as a target by the Russian military. This was the most common concern that we had. As far as we know none of our data points collected was used by the Russian military.
How It All Felt 🤒
While it was nothing in comparison to the feelings people in Ukraine had to go through, I constantly felt helpless and scared for everyone back in Ukraine. When I worked all the emotions disappeared.
While we were physically safe in Estonia, emotionally, the first months of the war were the hardest of my life. My parents lived, and still live, near Kharkiv, with bombs falling mere kilometers away from them. To this day, September 2024, I rarely talk to them without hearing the air-raid alarm. Part of my family escaped from Ukraine, and we hosted an extra four people at our place for half a year.
I strongly believe in choosing actions based on their potential impact. I believe the men fighting on the frontline have the highest impact; they are some of the bravest people ever. I never had the guts to join them. Working on Opir Map from safety helped me cope with some of the guilt I felt, allowing me to contribute in a meaningful way.
Today the most meaningful way to support Ukraine is to donate (subscriptions work best): https://savelife.in.ua, https://u24.gov.ua/, https://www.koloua.com/en/.
Rapid Development Approach
Guided by the requirement to "get a solution today," we worked to launch Opir Map within just 4 days. Our development approach was built on the several key principles:
Zero distractions, single goal. We focused solely on the utility functionality, avoiding secondary features or ego-driven decisions.
Build for people. We constantly kept in mind how the product would actually be used to help people in need, and collected feedback on the product daily;
Keep the team lean. Many people wanted to help, but onboarding and team management were too costly at first, just under 10 people were working on the first versions.
Everything can be sped up, everything can be simpler. We looked for ways to streamline and simplify every aspect of development.
Don't control - inspire. Instead of heavy-handed management, we aimed to inspire the team with the importance of the cause.
👆 These can be applied to MVP launches of commercial products as well.
Firm principles are good, but firm decisions are better 😎These technical stances built a foundation for Opir Map:
Data collection: We used a Telegram Bot for user input, as Telegram was widely used in Ukraine. The bot interface was built for easy querying and sharing in group chats. Later we added data from open sources as well.
Data storage: Google Sheets served as our database and backend, offering built-in APIs and support for up to 200,000 rows. This choice was crucial in our rapid development, providing everything we needed without the complexities of setting up a full-scale backend and admin panel in the form of separate spreadsheets to which everyone had access;
Data validation: Manual checking of user-submitted information, including photos and comparison with public sources; adding update dates and cautionary notices to each data point.
User interface: We developed a ReactNative web application with a map, prioritizing speed over native mobile apps. The web app showed different locations with simple filters to reduce noise.
Main user facing screens 👇
Overcoming initial challenges
Despite the fast launch, our initial solution did not gain traction. People came to the website but did not contribute new information, limiting the value we could provide.
We quickly pivoted, shifting from relying solely on user input to aggregating data from various sources: shop and pharmacy postings, city officials' announcements, and community-collected information. We expanded our team to manually input data and developed Python scripts to automate data collection, significantly increasing our database. We used Google Cloud cron jobs to automate updates, building a foundation for continuous information updates.
As the war progressed, we continually adapted to changing needs:
Added new categories: petrol stations, insulin availability, pet shops, humanitarian aid centers, postal services
Partnered with companies and other platforms to expand our data sources
Implemented automated update systems to keep information current
Introduced a feature for users to suggest location updates
Created a concept of verified locations for information from official sources
Internal Kitchen
Team Management
At our peak, we had around 50 volunteers working on various aspects of the project. Managing this distributed team is hard, what about the team that has a daily job and has no formal agreements with you? I call it “inspiration based management”. Sense of purpose was a payment coin and my job was to create a consistent trust that what we do matters.
Many people wore multiple hats, but we had a set of distinct roles, including writing scripts to parse and clean data, manually reviewing user inputs, handling social media, web development, and design. We minimized formal processes but maintained clear documentation for critical tasks.
People were coming and going, not everyone could exercise ownership required to figure out what is happening, and how to help. I kept on writing short docs so anyone with enough desire could understand all details of the system.
Be lean, not chaotic: chaos is slow. Minimally required processes fueled our fast movements.
The passion and dedication of the team were outstanding. Features that usually took weeks were completed in days. Imagine doing that while driving to the Polish border to help refugees.
View of the user inputs moderation sheet
Financing
While development was voluntary, we faced significant costs for services like Google Maps and Google Cloud, reaching up to 20,000 euros per month. Through negotiations with Google we managed to secure credits to cover these expenses while already started negotiations with a private company to get financing.
Our negotiations took around 1-2 months as I was already stressed but ready to spent all my savings on it, which wouldn’t be enough anyway.
Engineering
In the corporate world, it's common to have custom tooling and legacy systems that can slow down development. We didn’t have a choice but to deliver the product quickly, we heavily relied on 3rd party tooling:
Google Maps drove our web application
Google Cloud powered our parsing scripts and scheduled their execution
Google Docs served as our back office, hosting all the data points across multiple sheets and using built-in SQL functions to merge, deduplicate, and filter the information
GitHub hosted the project, acted as tasks management and published the website
Simplified scheme of work.
Impact and Personal Reflections
Opir Map served 740,000 people with information on 50,000 active locations across Ukraine. It played a crucial role in helping people navigate the challenges of daily life during the early stages of the war.
The project not only assisted those in Ukraine but also provided a sense of purpose for the team during a challenging time. It demonstrated the power of rapid, focused technological development in crisis situations.
As an Ukrainian born near Kharkiv, my parents are still there hearing bombs every other day, this project was deeply personal for me. It provided a way to help my country while being abroad, and helped alleviate some of the stress and helplessness many of us felt.
With time circumstances in Ukraine evolved and other solutions emerged, we decided to conclude the project in mid-2022. People had adapted to the new circumstances, and other companies like Lun.ua had developed similar, high-quality solutions.
Opir Map did its job, serving hundreds of thousands of people during a critical time. The experience showcased the power of focused, passionate teamwork and the impact technology can have in crisis situations.
Today, the Opir organization has shifted focus to equipping Ukrainian soldiers. War is still ongoing in Ukraine, help is needed - donate here (subscriptions work best): https://savelife.in.ua, https://u24.gov.ua/, https://www.koloua.com/en/.