CrowdFlow is an app that lets you know exactly how long any line-up is. For example: if you want to head out and get some food, CrowdFlow could tell you the best time to go. The idea is that if everyone knows the best time to go and get something, then everyone could save themselves a lot of time. Additionally, the business that provides that service is also better off, because they could gain more customers by being less busy, but having longer peak-hours.

Check out a live demo over at crowdflow.live

Software

ANN

CrowdFlow works by analyzing WiFi probe requests using an ANN (artificial neural networks). First, a probe must be placed at the location where the to-be-monitored lineup exists. Then, the probe requests are fed into a web API, which stores the data for future use, as well as feeds them to an ANN service. The service chooses the correct neural network (particular to a location), and evaluates it. The ANN returns the current line-up, people in line, as well as the number of seats taken, which are fed to a web-based user interface.

I learned to use several programming languages and frameworks for this project:

  • Slim Framework (PHP framework for the web API)
  • Bootstrap (HTML and CSS framework for user interface)
  • jQuery (for advanced user interface features)
  • Neuroph (Java framework for creation and evaluation of ANNs)
  • Java (for a service that provides ANN functionality)
  • MySQL as a database
  • and lastly, PHP, Javascript, HTML, CSS and others to implement the frameworks above

Hardware

node

The “node” which is responsible for collecting the probe requests takes the form of an inexpensive ESP8266, a WiFi enabled development board. I wrote some embedded C++ code which communicates with a central server (my web API), which allows the service to function.

I did not make any electrical modifications to the node, but I did design and 3D print a protective case for it.

Marketing and Communication

As part of my project, I wanted to implement it in real-world locations and see what would come of it. Maybe this is a really big idea that would come the next big thing? (hint: it is not the next big thing). As such, I prepared and presented material to potential businesses in the form of email and presentations. Here is a generic presentation for pitching to UBC (my university): CrowdFlow Detailed Presentation

Source Code

Just in case you wanted to look through my code, here it is: crowdflow

(taken from a private repo; thus the zip format).