How I accidentally launched a startup while waiting for my visa


Author: Mathias J. Klenk

Ever since I was a child growing up in Germany, I dreamed of living in California’s Silicon Valley — a place driven by innovation and new ideas. Last year I fulfilled this dream, researching for a year at Stanford University and graduating afterwards with my Master’s degree. While at Stanford, I found a full-time position for an uprising tech startup. Since I wasn’t eligible for an OPT (Optional Practical Training), I first had to go back home to Germany and navigate the long and time consuming visa process before I could come back. This is where my story as a developer begins. A story of persistence, long working nights, but also finding out what I truly want and where I see myself in the next years.

Going back to Germany for a few months to obtain a new visa didn’t sound too bad at the beginning. I thought, “Well at least I can see my family and friends before coming back to California. And it’s Oktoberfest, which will mean a lot of fun.” But I knew I had to do something while I waited for the visa process to go through, or the blurry and unsure process would have driven me crazy. I wanted to solve a problem and build something, so I began brainstorming pain points I noticed while I was in the US. After going through many ideas, I realized a problem I always had when I went out in the evenings. I was always super annoyed by surge pricing and flipped back and forth between Uber and Lyft comparing their prices once I wanted to go home.

I started by asking friends how they felt about ride sharing apps, and found that many of them had the same complaints, and also described big price differences between both apps. Therefore, I imagined an app which could avoid surge prices and shows you the cheapest way to reach a destination. I knew if I wanted to achieve this, I would need full access to real-time pricing information, which fortunately is available via both Uber and Lyft’s API (Application Programming Interface). It is possible to get a ride estimate and use it, which then again makes it possible to compare different ridesharing services. Just like that, the idea was born — a one stop app that guarantees you the best price when you need to get home.

My previous experience in app development made it fairly easy to build a prototype based on certain hypothesis within a few weeks. Even though my early prototype did not really resemble the app today, it helped me to communicate my idea and challenge some of my previous assumptions. I also knew from my previous apps that I needed to have a strong UI (User Interface), since Uber‘s app looks very good itself. This is why I asked Felix Gerlach — an outstanding UI/UX designer — to help me iterate on my prototypes and make it as easy and convenient as possible for the user to book rides via my app.

First screens from the prototype

Once I handed the first version of my app to my friends, they suggested a feature to compare the prices on the first screen. Additionally, they wanted to have several ride services included, so I implemented not only Uber but also Lyft’s API right away. Stavros Filippidis — another developer I know from several Hackathons — took care of Lyft’s API, while I implemented Uber’s API.

In addition, I wanted to build the actual “RideAgent” feature — to avoid surge pricing by a digital booking agent who books once the price is low enough again. I did that by flipping around the booking process and keeping the departure time variable. Users can be flexible in their departure if they want to be guaranteed a lower fare than the surge price. My assumed user flow looked like this:

  1. A user is asked where to ride to in the main screen.
  2. Then choose the maximum amount he/she is willing to pay for that ride.
  3. He/she can select how long the app should track the price (60 min max).
  4. Lastly select a ride type (size of the car), such as rideshare, regular, black limousine or a van/XL.

Then, a price listener is created for the chosen time on the back-end. If in the chosen time window, the price drops below the maximum paying threshold, the back-end will send a push notification to the user, informing him that he/she can ride for the desired fare now. My friend Christoph Rudolf, a strong back-end and security engineer, helped me to implement this server side function since I did not have much experience with back-end functions in JavaScript yet.

Current App version of RideAgent

While I was developing RideAgent, my visa kept getting delayed again and again. I always thought that only Germans have unnecessary bureaucracy but definitely Americans are not too far behind. Everyone who has been to the DMV can probably agree. There were times when I thought it wouldn’t work out anymore, and times when I even started to make backup plans for staying in Europe. Talking to my friends about my plans was the worst part, since they kept asking when I would leave, but I always could only answer “soon” since I didn’t know when it would happen myself. Without the delay of my visa, I probably never would have developed the app, but since I had nothing to do other than wait, I was able to finish the first big release in Germany. After my return to California, I tested the app with several friends and got surprisingly good feedback. Encouraged by these comments, I tried it out with more people and finally made it public to everyone in the Appstore. People wrote me how much they loved it and that it is exactly what they were looking for.

User feedback from an unknown friend of a friend

I haven’t settled on a business model or further steps with this project so far, since I mainly coded it for myself. I also didn’t expect so many people to use the app, but I am happy to share it with anyone who thinks it could save some money. I clearly can’t answer the question of where this project will lead at the moment, since I’m working full time as a software engineer for a tech startup in SF, which I love. For now, I work on RideAgent on nights and weekends. No one really knows where such a project will lead you, but that is also the beauty of entrepreneurship — you never know what’s ahead of you.

My personal outcomes / leanings from this project:

  • Build fast, fail fast, and break things. Great products weren’t built from people who were afraid, but from people who just did it and thought afterwards about. Better ask for forgiveness than permission.
  • Asking your friends about your project is important, but asking strangers is even more.
  • Shut up when people test your app and watch exactly how they use it — that is when you see if they really understand it.
  • Persistence is key when it comes to securing a US working visa. Almost every non-American I know here in California was in the same situation at some point, waiting and almost giving up.
  • Work for an employer who supports you where you personally want to develop. There is nothing better than speaking with your boss or colleagues openly about your own projects instead of keeping it a secret.