We live in an urban development area of Vienna (Austria) called Seestadt ("Lakeside City"). It was built from ground up and we were among the first residents around 2015. At the beginning nobody knew when the local doctors are available, what different services other residents offer, and when take the bus in which direction to be on the quickest way to the center of Vienna. So I thought: This has to change and a chatbot is the best option for doing an interactive and friendly information service. Together with others I collected all opening hours and business information. In the end a lot of people living in Seestadt contributed to the project and helped to make Seestadt.bot a useful and up to date digital assistant.
What it does
Seestadt.bot implements a public transport query service with intelligent tips for shorter traveling times. Public transport is then combined with the local E-Bike-Sharing, so that you don't wait for a bus if you can rent a bike. It also knows when a local restaurant, shop, or other service is opened or closed and all contact information. And if you are hungry, Seestadt.bot looks through the Facebook pages of our local restaurants and provides you the current weekly menu.
How I built it
The public transport times are based on the official real-time API by Wiener Linen. Since their bus departure times are always broken, I added a static GTFS fallback on my own to enhance the service for my users.
The "yellow pages" part has been built with a self-developed data CMS and everything is Open Data licensed. The CMS makes it easy for other residents to contribute and update outdated data. After some time I noticed the potential for other parts of the city, so I forked this into a separate project called "StadtKatalog" (city catalog).
For retrieving the current menus from restaurants I used the Facebook Graph API to get access to public postings by the restaurants. Then I looked for photos posted in the last two weeks. Every photo gets analyzed by Google Vision API to extract text parts from it. If it contains weekdays and typical text from the weekly menu, I send the posting back to the user. (This features is currently disabled since I wait for the "page public content" permission review.)
Challenges I ran into
Public transport times are a complex thing and I had to implement my own workaround to fix invalid departure times. But now Seestadt.bot is the most accurate service in Seestadt for departure times and general travel information.
A general problem is the inexperience of users with chatbots. I posted tutorials and helped people if they had any questions.
Accomplishments that I'm proud of
Providing the most accurate departure times for the bus lines, even better than the official apps do.
Helping the restaurants to get their weekly menus out to the local people without huge effort.
Collecting crowd-sourced business information under an Open Data license which is more accurate and more up to date than big commercial players (e.g. Google Business).
Having a bot which is used by 5 to 10 percent of the residents of Seestadt. I think this is a nice number for a chatbot. And people are recommending the service to friends and new arrivals.
What I learned
Public transport is essential for a modern urban area, but also very complex and individual from city to city. Many people rely on an accurate and fast query of this data to get the fastest route to their work and back. Chatbots are new in this areas and some users needed more help than others, but in general they love how quick chatbots reply to their queries.
Building a chatbot for 6.000 people is connecting us also in the real world. People like to give me direct feedback when I wait with them in a queue at the bakery. They text me if the find a bug or have an idea to improve it. So being also a residents of Seestadt, and not just some software developer / stranger, was essential to improve the chatbot over time.
What's next for Seestadt.bot
Together with Facebook's review team: Getting again access to the Graph API to serve the weekly menu photos to my users ;-)
For the near future I want to provide predictions for the bike rental system, so that you never rent a bike without a free return box at your destination.
There have been some discussions to bring Seestadt.bot to other parts of Vienna and to smaller cities in Austria. I hope that I can improve it further and that even more people get access to relevant information from their neighborhood in the future via a friendly chatbot.