## Inspiration

We were inspired by the Interac API, because of how simple it made money requests. We all realized that one thing we struggle with sometimes is splitting the bill, as sometimes restaurants don't accommodate for larger parties.

## What it does

Our simple web app allows for you to upload your receipt, and digitally invoice your friends for their meals.

## How we built it

For processing the receipts, we used Google Cloud's Vision API, which is a machine learning application for recognizing and converting images of characters into digital text. We used HTML, CSS, JavaScript, and JQuery to create an easy-to-use and intuitive interface that makes splitting the bill as easy as ever. Behind the scenes, we used Flask and developed Python scripts to process the data entered by the users and to facilitate their movement through our interface. We used the Interac e-Transfer API to send payment requests to the user's contacts. These requests can be fulfilled and the payments will be automatically deposited into the user's bank account.

## Challenges we ran into

The Optical Character Recognition (OCR) API does not handle receipts format very well. The item names and cost are read in different orders, do not always come out in pairs, and have no characters that separate the items. Therefore we needed to develop an algorithm that can pick up the separate the words and recognize which characters were actually useful.
The INTERAC e-Transfer API example was given to us as an React app. Most of us have had no experience with React before. We needed to find a way to still be able to call the API and integrate the caller with the rest of the web app, which was build with HTML, CSS, and Javascript.
There has also been a few difficulties with passing data from the front end interface and the back end service routines.

## Accomplishments that we're proud of

It's the first hackathon for two of our team members, and it was a fresh experience for us to work on a project in 24 hours. We had little to no experience with full stack development and Google Cloud Platform tools. However, we figured out our way step by step, with help from the mentors and online resources. We managed to integrate a few APIs into this project and tied together the front end and back end designs into a functional web app.

## What we learned

How to call Google Cloud APIs
How to host a website on Google Cloud Platform
How to set up an HTTP request in various languages
How to make dynamically interactive web page
How to handle front end and back end requests

## What's next for shareceipt

We hope to take shareceipt to the next level by filling in all the places in which we did not have enough time to fully explore due to the nature of a hackathon. In the future, we could add mobile support, Facebook & other social media integration to expand our user-base and allow many more users to enjoy a simple way to dine out with friends.
## Inspiration

Suppose we go out for a run early in the morning without our wallet and cellphone, our service enables banking systems to use facial recognition as a means of payment enabling us to go cashless and cardless.

## What it does

It uses deep neural networks in the back end to detect faces at point of sale terminals and match them with those stored in the banking systems database and lets the customer purchase a product from a verified seller almost instantaneously. In addition, it allows a bill to be divided between customers using recognition of multiple faces. It works in a very non-invasive manner and hence makes life easier for everyone.

## How we built it

Used dlib as the deep learning framework for face detection and recognition, along with Flask for the web API and plain JS on the front end. The front end uses AJAX to communicate with the back end server. All requests are encrypted using SSL (self-signed for the hackathon).

## Challenges we ran into

We attempted to incorporate gesture recognition into the service, but it would cause delays in the transaction due to extensive training/inference based on hand features. This is a feature to be developed in the future, and has the potential to distinguish and popularize our unique service

## Accomplishments that we're proud of

Within 24 hours, we are able to pull up a demo for payment using facial recognition simply by having the customer stand in front of the camera using real-time image streaming. We were also able to enable payment splitting by detection of multiple faces.

## What we learned

We learned to set realistic goals and pivot in the right times. There were points where we thought we wouldn't be able to build anything but we persevered through it to build a minimum viable product. Our lesson of the day would therefore be to never give up and always keep trying -- that is the only reason we could get our demo working by the end of the 24 hour period.

## What's next for GazePay

We plan on associating this service with bank accounts from institutions such as Scotiabank. This will allow users to also see their bank balance after payment, and help us expand our project to include facial recognition ATMs, gesture detection, and voice-enabled payment/ATMs for them to be more accessible and secure for Scotiabank's clients.
## Inspiration

Tax returns are heavily beneficial to those in the mid to low-income range. Oftentimes, they don't understand how much they should expect, or how it even works. This same audience also budgets tightly, and may need help tracking. They are more likely to be reliant on cash purchases, something difficult to track long term.

## What it does

Our platform aims to solve this knowledge gap by giving them an approximation of how much their tax return should be, and allows an overview of how much of their monthly budget they've spent.

## How we built it

We created a user landing page, with log in and sign up. When the user signs up with their details, it is stored in a SQL database. When they log in, user info is loaded into a table via a Flask API fetching data from past sessions, if any. If the user wants to upload a receipt, they upload a picture to the upload page. By submitting, this picture is sent to the same Flask API as before, but as POST. Optical character recognition is used to parse every item, its cost, the subtotal, and total. This is stored in the same database and connected to their credentials. The next time the home page is loaded, this data will be shown on the table.

## Challenges we ran into

Since Google OCR was trained on normal printer sized text, parsing a receipt correctly is difficult unless you have perfect lighting and positioning when taking the photo. Receipts are often crumpled and have ink errors, further breaking the parsing. Hosting the entire application with Flask is difficult to get fully running with HTML/CSS, so we opted to make an API instead. Optimising the front end of the table was difficult, since the response would be in JSON and we would have to dynamically input the data (document.getElementById('id').innerHTML = data). It took a while to get the database fully working due to the numerous components such as user accounts and then fetching with the API.

## Accomplishments that we're proud of

Learning how to create dynamic websites with the use of front end JavaScript. Learning how to make optimised reusable algorithms when trying to parse and evaluate data. Creating a link between the database, API, and front end to all work seamlessly together to serve data to the user.

## What we learned

Often times the hardest part of a project is setting up an MVP and getting it to merge and run seamlessly. Many people working on different parts of a project at once can lead to overlapping tasks and solutions which do not work when put together. Solutions can suddenly stop working when tested at scale or when they are deployed.

## What's next for Snap N Track

We would need to create our own OCR model. The current library we are using, based off Google Lens, is not optimised for small text in the conditions that a receipt is in. We would need to create a mobile app. Since it is a web app, someone would need to take a picture on their phone, upload it to their PC, and then to the site. By making an app they can simply take a picture and upload at the same time. We should add more features such as income tax calculation given salary, or others. This is because we currently only have 1 main feature (receipt scanning).