What it does

HemoTrack is an easy-to-use app that allows people that menstruate to keep track of the amount of blood they lost during their menstrual cycle. Once the users are registered, they can take a photo of their pad and a score is automatically assigned. Then, the score and the photo are uploaded

How we built it

We built the app using Flutter. It connects to Firebase to store the user's historical data. Furthermore, a Cloud function written in Python is called by Flutter to process the images.

Challenges we ran into

Our first idea was to use a CNN for classification. However, due to the lack of data, we had to find another way to determine the PBAC score. On the other hand, we had no prior experience with Flutter nor Firebase, so we had to deal with a lot of bugs that hindered the development of the app. In particular, we had some issues deploying the camera.

Besides, we had to find a way to connect our Python script with the Flutter app.

Accomplishments that we're proud of

We managed to connect the Flutter app with Firebase and use Gmail authentication for the sign-up/sign-in.

We came up with an algorithm to calculate the PBAC score from a given image. We noticed that the detection task wasn't really complex, as we only had to detect redish and brownish colors from a clear background. For that reason, we decided to build a Python script that cropped the image based on the camera overlay and then detects the proportion of blood pixels. Then, we tested our solution with internet images and got excellent results.

What we learned

We learned a lot of both Frontend and Backend. Worth to mention that it was our very first mobile app.

What's next for HemoTrack

Due to the lack of time, we didn't implement all the features we had in mind. Here are a bunch of them:

  • After the user has consented, HemoTrack can become a powerful tool to create a database of menstruation-related images that can potentially lead to the implementation of build robust ML models.
  • If a ML model is build, it can also be trained to detect blood clots.
  • The overlay we set is for pads. Another one for tampons could be implemented. Then, the user only has to choose the one needed.
  • Our solution does not consider differences among pad sizes nor brands.
  • A calendar can be added to keep track of the user's menstrual cycle and predict when it is going to happen the next menstruation.

Built With

Share this project:

Updates