Questions for Coleman Foundation

What is the problem you’re solving? The issue is that online coupons are becoming obsolete in today's society (as seen by Groupon's stock is a fifth of what it was in 2013) due the menial user experience that the topic presents. People are literally not inclined to redeem free money to spend with their favorite brands due to this problem.

Who are users and/or customers? Avid couponers and online shoppers are the main demographic. The information age of today continually expands the user base due to the meteoric rise of online shopping.

What’s currently missing that they need and which your solution provides? Placing your camera over the logo of a brand you wish to buy from will yield all the promotional codes right before your eyes (with results automated to refresh every 30 minutes). Compared to having to go to a website, search for the brand, and manually look for everything yourself, the process is infinitely streamlined.


Why not make saving money an even more convenient action? Scan the logo of a brand that you wish to have a coupons for, and in the blink of an eye you will have just that.

What it does

Scan the logo of a brand that you wish to have a coupons for, and in the blink of an eye you will have just that. Instead of a regular web app, you can SEE the data through the Oculus Rift if you so desire (it also works as a regular web app too, though).

How we built it

OpenCV had a template matching feature that we used to compare logos of famous companies and the image that was coming from the camera. A confidence factor was also instantiated to avoid obscure shapes from interfering with the logo detection. The most challenging part was allowing logo detection even if the phone is oriented at an angle. This required the SIFT function in OpenCV (which apparently required an extension to the library that regular OpenCV does not have). After, web scraping occurs with the said brands on Groupon, and the discount codes are retrieved. The data is put into a database using mySQL and the information can be viewed from an web application that supports Oculus Rift (in case your couponing needs necessitate virtual reality). The information updates are also automated through node-schedule (which keeps the coupons relevant).

Challenges we ran into

We were planning to demo using the Alienware laptop that was checked out from the MLH hardware station, but Windows made everything furiously difficult with installing necessary packages and dependencies to be able to make the project run on that computer.

The original plan was to also use Google Cloud Vision and the logo detector that was available through that method, but setting the GOOGLE_APPLICATIONS_CREDENTIALS environment variable was also made impossible through Windows. Setting the value equal to the path of the JSON file that held my credentials was futile. Whether it happened in Bash, Windows Terminal, Powershell, or even the environment variable GUI through the Windows Control Panel, my script did not think I was who I claimed to be.

Accomplishments that we're proud of

Shout out to Thomas as he powered through multiple hours of Windows configuration. What a beast.

Zain never had experience with mySQL and communicating a backend with frontend web scraping (as the data collected immediately goes into mySQL). The sudden venture into all of it was a defining moment in this hackathon for us.

What we learned

OpenCV was a great choice for this hackathon and after using it briefly, both of us intend to use it more in the future.

Other than that, we learned that configuring with Windows is probably the least fun thing to do.

What's next for Sifter

Add more brands that can be recognized (there is a very interesting scaling situation if this is to include all major brands, so categorizing by type of company may need to come first). Have more interactive experiences with the Oculus.

Share this project: