InstaHelp is a voice-activated emergency contact mobile application that detects natural human responses to emergency situations.

Upon activation, InstaHelp can send a text message to the user's designated emergency contacts and attract the attention of people nearby by blaring a loud siren from the user's phone and blinking the user's phone's flashlight.

InstaHelp provides a faster and more discreet emergency contact solution by removing the dependence on proprietary activation phrases that users may not recall in their time of need and attackers may recognize as the user's attempt to call for help.

1. Clone our GitHub repo

The fully functional InstaHelp prototype is available on our GitHub. Visit the link to download our ZIP file or use git to clone our repository with the following command.

git clone https://github.com/RobinSardja/InstaHelp.git

2. Download the Flutter SDK

Running InstaHelp requires the Flutter SDK. All instructions for getting started on all major platforms are available through the provided link.

3. Sign Up with Picovoice

Our voice activation feature requires an access key from Picovoice. Your account will provide you with your own access key to enable the Picovoice API.

4. Flutter run

Open a terminal in the same directory as the InstaHelp repository. You'll first need to get all of our dependencies with the following command.

flutter pub get

Now run the Flutter SDK with your Picovoice access key. For example, if "iloveusfgdsc" is your access key, enter the following command into your terminal.

flutter run --dart-define=picovoice=iloveusfgdsc

Goal 3: Good Health & Wellbeing

Target: 3.6

As an emergency contact solution, InstaHelp recognizes the importance of every second in your time of need. The sooner we call for help, the sooner help arrives. With our distress detection, we ensures healthy lives and promote well-being for all at all ages.

Goal 5: Gender Equality and Women's Empowerment

Target: 5.2

Women are disproportionately vulnerable to instances of theft and/or violence. InstaHelp strives to empower all women and girls to feel safer knowing that we will always have their back wherever they are at all times.

Goal 10: Reduced Inequalities

Target: 10.3

911 in the United States, 112 in the European Union, and many more existing emergency telephone numbers already serve their respective locations. But for those without a reliable service, InstaHelp reduces the emergency contact inequality among countries.

Goal 11: Sustainable Cities

Target 11.5

InstaHelp shines brightest in urban areas with plenty of people to come to your aid. Harnessing the nearby population to provide a personal emergency service for all of our users makes cities and human settlements safe.

Google Cloud

Google Cloud Platform is the foundation for all of our backend operations. From securing our API keys to handling our billing account, GCP has been great for quickly getting started with all the business and security aspects of InstaHelp.

Firebase

Firebase is the home of authentication and database management for InstaHelp. The provided Firebase UI packages for user authentication proved especially handy for integrating user accounts in a timely manner.

Flutter

All front-end mobile development took place in the Flutter SDK. To reach as wide of an audience as possible, InstaHelp needs to be available on all major mobile platforms. For that, nothing beats the Flutter SDK.

Google Maps Platform

Google Maps Platform will be the main focus of our future. We are ambitiously building the ability to see and send alerts to trusted nearby InstaHelp users with Google Maps Platform at our core.

Project Overview

Please provide a 2-3 sentence overview of your project.

InstaHelp is a voice-activated emergency contact mobile application that detects natural human responses to emergency situations. Upon activation, InstaHelp can send a text message to the user's designated emergency contacts and attract the attention of people nearby by blaring a loud siren from the user's phone and blinking the user's phone's flashlight. InstaHelp provides a faster and more discreet emergency contact solution by removing the dependence on proprietary activation phrases that users may not recall in their time of need and attackers may recognize as the user's attempt to call for help.

Project Setup

Please clearly describe the challenge you are solving for using a problem statement.

Imagine an older adult who fell and can't get up, unable to call for help because they left their phone on the table, just out of reach. Imagine a vehicle rollover accident that launched the driver's phone all the way to the back seat, again, physically out of reach. These are situations where someone in need can't physically reach their phone to call for help. InstaHelp removes the need for users to physically reach their phone by listening for phrases of distress to automatically alert their designated emergency contacts and attract the attention of people nearby.

What United Nations' Sustainable Development goal(s) AND target(s) did you choose for your solution? What inspired you to select these specific goal(s) AND target(s)?

I choose UN Goals 3, 5, 10, and 11 for my solution. From these goals, I chose targets 3.6, 5.2, 10.3, and 11.5 for my solution. I was inspired to select these specific goals and targets when my own grandmother experienced a fall and couldn't get up. Luckily, she was at home and my family was able to help her, but I can't imagine what could've happened if she was alone with no one to hear her. I figured she could use something that could listen to her calls for help and automatically alert my family. That's how I came up with InstaHelp.

Implementation

Describe the architecture that your team chose for your solution. What are the high-level components of your architecture? What is the responsibility of each component? Technical components - Backend, Frontend, Technologies, Programming languages and Tools used

In the frontend, InstaHelp is a mobile application compatible with Android and iOS devices that follows Material 3. It provides a standard mobile app layout with common user input elements to ensure the most clarity when users interact with our features. The frontend is responsible for listening for the implemented common phrases of distress and, when activated, sending a text message to the designated contacts, with medical information if enabled, blaring the loud siren, and blinking the flashlight.

In the backend, InstaHelp authenticates users with their custom emails and passwords, with an existing Google account, or both. Each account has a corresponding "user options" document in a cloud-hosted, NoSQL database to store the settings and features they have enabled. In the future, we also plan to use the backend to add an "alert nearby users" feature where fellow InstaHelp users within a certain distance radius of a user in need will also receive a notification as a call for help.

The number one programming language that dominated development was Dart.

Which specific products and platforms did you choose to implement these components and why?

In the frontend, I chose the Flutter SDK for its ability to develop one project compatible with Android and iOS devices at the same time. Its readable widget tree format in the codebase is also a plus for others to quickly understand the inner workings of every feature. For the main defining listening feature, I used Porcupine Wake Word by Picovoice to train common phrases of distress for InstaHelp to detect.

In the backend, I chose Firebase for its easy to set up User Authentication and Firestore Database services. In tandem, I chose Google Cloud to secure the API keys used for all our backend features as well as to keep track of our billing account. Finally, I chose Google Maps Platform to allow users to see their current location and to play a much bigger role in the future as the foundation of our "show nearby users" feature.

Feedback / Testing / Iteration

Walk us through the steps you took to test your solution with real users (outside of your team). Provide three specific feedback points you received from real users. What did you learn and how did it help improve your solution? What are three specific things you implemented and improved for your solution based on the feedback from users?

We set up 3 tests where we thought InstaHelp would best existing emergency contact services: a kidnapping, a purse snatching, and a fall. We then received feedback on our activation phrases, our offline effectiveness, and our loud siren.

Our initial activation phrases used branded keywords similar to "Hey Google, call for help!" In the kidnapping, users didn't remember the keyword. The kidnapper also recognized the keyword and realized the user's attempt to call for help. We then switched to natural language phrases. For example, "Somebody help!" or "Leave me alone!" These activation phrases don't rely on the user's memory and discreetly activate InstaHelp without alerting the perpetrator.

The purse snatching exposed us to scenarios with only seconds to make a difference. A thief would be long gone before the user's emergency contacts arrived. This is where we came up with the loud siren and blinking flashlight as immediate action features. These features also reliably served users without an account, Wi-Fi, or phone signal.

The fall exposed our initial implementation of the loud siren where users had to remember to turn up the phone volume before they plan to activate the loud siren, something they can't predict. The loud siren feature wouldn't play when enabled because users would forget to turn up the volume. We switched to maxing out the volume, then playing the loud siren, then returning to the previous volume state once the user marked themselves safe.

Highlight one challenge you faced while building your code, including detail on how you addressed the issue and the technical decisions and implementations you had to make.

Our biggest challenge when building our code was implementing the "alert nearby users" feature. Even before implementation, we weren't sure how to even come up with how it would work.

We first thought we could store the location of every user in Firestore and whenever a user calls for help, we alert users whose location stored in Firestore is close enough to the user in need. This, however, would require constant database writing every single time a user moves, completely unsustainable at a massive scale. We then thought to only write the user's location to Firestore when they open the app, but this increases the potential inaccuracy of the user's stored and actual location. I could be at school but the last time I opened the app was at home. Then, if I get alerted for someone in need near home, I would actually be at school, too far away to be of any effective help.

We distracted ourselves for a time by completely implementing all the frontend aspects of this feature. The map page successfully shows hardcoded markers for nearby users that can move as their locations update. They can even be color coded for a safe user, a user in need, and a user who is coming to help you. We decided that, if we are chosen to move forward into the top 100, we will focus most of our time with our mentor to help us build this feature. For now, the map page is just for users to see their current location and the area coverage of where potential nearby users will come from to help them.

Success and Completion of Solution

Please describe your project's impact using cause and effect. How does your solution address the problem you are looking to solve? How were some of the goals of your solution evidenced? What was the quantifiable data collected? What tools did you use to help understand your solution's impact?

Because InstaHelp listens for naturals responses to emergency situations, we removed the need for users to physically reach their phones to call for help. This now enables users who find themselves just out of reach of their phones to call for help with the sound of their voice. They can also just use their natural responses to avoid forgetting any specific activation phrases and, if in the presence of an attacker, prevent alerting the attacker of their attempt to call for help.

The goals of our solution are evidenced by the observations made during our tests of scenarios where InstaHelp was more effective than existing emergency contact services: a kidnapping, a purse snatching, and a fall. After the feedback received and corresponding improvements made after each test, we retested InstaHelp in the same scenarios and found our goals met. In a kidnapping, users alerted their designated emergency contacts faster and more discreetly than if they had to use a branded keyword. In a purse snatching, users can attract the attention of nearby witnesses and potentially scare off the thief with our loud siren and blinking flashlight. In a fall, users would never be able to call for help if their phones were out of reach. With InstaHelp, now they can.

The data was collected through video logs of the tests as we were conducting them. We used Google Docs to record observations made during the tests and points of feedback to address towards improving InstaHelp throughout development.

Scalability / Next Steps

What do you see as the future / next steps for your project? How would you expand your solution to reach a larger audience?

In an emergency, the first people to come to your aid are the ones physically closest to you. This is what we want to accomplish in our very next step for InstaHelp: to complete our "alert nearby users" feature. This would also be a great addition for users without an unlimited talk and text plan who may experience messaging and data rates. We also plan to expand our solution to reach a larger audience by training InstaHelp to detect common phrases of distress in multiple languages. If time allows, InstaHelp could take advantage of other common devices, such as wireless earbuds and smartwatches, to listen for calls for help.

Explain how the technical architecture of your solution could support (in its current state or with minor changes) scaling to a larger audience.

In the current state of the technical architecture of InstaHelp, we plan to continue to utilize the scalability of Google Cloud Platform to help us grow as InstaHelp grows. Our most extensive backend usage is with authenticating users and storing their app settings in Cloud Firestore. We're confident that the foundation we have built on GCP can easily scale as InstaHelp expands to a larger audience.

Much love to the Google Developer Student Clubs at the University of South Florida

USF GDSC LinkedIn Page

Made with 💚 💛 by Robin Sardja

My LinkedIn Profile

My Google Developers Profile