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.
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
Running InstaHelp requires the Flutter SDK. All instructions for getting started on all major platforms are available through the provided link.
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.
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
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.
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.
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.
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 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 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.
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 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
Made with 💚 💛 by Robin Sardja