Project Info
This project did not submit a demo video on Devpost.
Inspiration
Guardian Angel was born from the need for reliable emergency assistance in an unpredictable world. Our experiences with the elderly, such as our grandparents, who may fall when we’re not around, and the challenges we may face in vulnerable situations motivated us to create a tool that automatically reaches out for help when it’s needed most. We aimed to empower individuals to feel safe and secure, knowing that assistance is just a call away, even in their most vulnerable moments.
What it does
Core to Guardian Angel, our life-saving Emergency Reporter AI speech app, is an LLM and text-to-speech pipeline that provides real-time, situation-critical responses to 911 dispatchers. The app automatically detects distress signals—such as falls or other emergencies—and contacts dispatch services on behalf of the user, relaying essential information like patient biometric data, medical history, current state, and location. By integrating these features, Guardian Angel enhances efficiency and improves success in time-sensitive situations where rapid, accurate responses are crucial.
How we built it
We developed Guardian Angel using React Native with Expo, leveraging Python and TypeScript for enhanced code quality. The backend is powered by FastAPI, allowing for efficient data handling. We integrated AI technologies, including Google Gemini for voice transcription and Deepgram for audio processing, which enhances our app’s ability to communicate effectively with dispatch services.
Challenges we ran into
Our team faced several challenges during development, including difficulties with database integration and frontend design. Many team members were new to React Native, leading to styling and compatibility issues. Additionally, figuring out how to implement functions in the API for text-to-speech and speech-to-text during phone calls required significant troubleshooting.
Accomplishments we're proud of
We are proud of several milestones achieved during this project. First, we successfully integrated a unique aesthetic into our UI by incorporating hand-drawn elements, which sets our app apart and creates a friendly, approachable user experience. Additionally, we reached a significant milestone in audio processing by effectively transcribing audio input using the Gemini model, allowing us to capture user commands accurately, and converting the transcribed text back to voice with Deepgram for seamless communication with dispatch. We’re also excited to share that our members have only built websites, making the experience of crafting an app and witnessing the fruits of our labor even more rewarding. It’s been exciting to acquire and apply new tools throughout this project, diving into various aspects of transforming our idea into a scalable application—from designing and learning UI/UX to implementing the React Native framework, emulating iOS and Android devices for testing compatibility, and establishing communication between the frontend and backend/database.
What we learned
Through this hackathon, our team learned the importance of effective collaboration, utilizing a “divide and conquer” approach while keeping each other updated on our progress. We gained hands-on experience in mobile app development, transitioning from our previous focus on web development, and explored new tools and technologies essential for creating a scalable application.
What's next
Looking ahead, we plan to enhance Guardian Angel by integrating features such as smartwatch compatibility for monitoring vital signs like heart rate and improving fall detection accuracy. We aim to refine our GPS location services for better tracking and continue optimizing our AI speech models for enhanced performance. Additionally, we’re exploring the potential for spatial awareness and microphone access to record surroundings during emergencies, further improving our response capabilities.
Guardian Angel 🚨 (2024 Cal-Hacks)
AI-Powered Emergency Reporter & Real-Time Speech Assistant
Guardian Angel is a life-saving emergency reporting application designed to assist 911 dispatchers during time-critical situations. When a user is unable to communicate, Guardian Angel automatically detects distress signals—such as falls or medical emergencies—and speaks on the user’s behalf using an AI-driven speech and language pipeline.
The system delivers accurate, structured, and context-aware emergency information in real time, improving response efficiency and outcomes when seconds matter.
What Guardian Angel Does
Guardian Angel acts as an intelligent intermediary between the user and emergency dispatch services.
It:
- Detects emergency situations automatically or via manual trigger
- Captures and processes live audio
- Uses an LLM to understand the situation
- Generates clear, dispatcher-ready speech
- Relays critical data such as:
- Biometric readings
- Medical history
- Current physical state
- Real-time location
System Overview
guardian-angel/ │ ├── mobile/ # React Native + Expo app │ ├── app/ │ ├── components/ │ └── ... │ ├── backend/ # FastAPI backend │ ├── main.py │ ├── requirements.txt │ └── ...
Tech Stack
Frontend
- React Native
- Expo
- TypeScript
Backend
- FastAPI (Python)
- REST-based architecture
AI & Audio
- Google Gemini for transcription and LLM reasoning
- Deepgram for audio processing and speech synthesis
How to Run Guardian Angel Locally
Prerequisites
You will need:
- Node.js (v18 or higher)
- Python (v3.10 or higher)
- Expo CLI
- Git
Step 1 — Clone the Repository
git clone https://github.com/your-org/guardian-angel.git
cd guardian-angel
cd mobile
npm install
Create a .env file in the mobile/ directory:
EXPO_PUBLIC_API_URL=http://localhost:8000
Start the Expo development server:
npx expo start
Run the app using:
iOS Simulator
Android Emulator
Physical device via Expo Go
Step 3 — Backend Setup (FastAPI)
cd backend
python -m venv venv
source venv/bin/activate # macOS/Linux
venv\Scripts\activate # Windows
pip install -r requirements.txt
Create a .env file in the backend/ directory:
GEMINI_API_KEY=your_gemini_api_key
DEEPGRAM_API_KEY=your_deepgram_api_key
Start the backend server:
uvicorn main:app --reload
The API will be available at:
http://localhost:8000
Analysis
View
Metric
- 41
- 17
- 6
- 4
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- FastAPIIn code
- JavaScriptIn code
- PythonIn code
- ReactIn code
- TypeScriptIn code
- Google GeminiClaimed
- Node.jsClaimed
5 of 7 appear in the indexed code. 2 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
50 KB
Source files
30
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
ArianaJohnson/GuardianAngel_calhacks_2024
64 files · 3.0 MB · @ 876da66
Structure
Interface
26 files · 41%Screens, components and styles rendered to the user.
Application logic
10 files · 16%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- TypeScript49%
- Python43%
- Markdown5%
- XML2%
- JavaScript1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
react-native-frontend/app/package.json
npm · 29- @expo/ngrok
- @expo/vector-icons
- @react-navigation/native
- axios
- expo
- expo-av
- expo-font
- expo-linking
- expo-permissions
- expo-router
- expo-sensors
- expo-splash-screen
- expo-status-bar
- expo-system-ui
- expo-web-browser
- react
- react-dom
- react-native
- +11 more
package.json
npm · 3- @expo-google-fonts/newsreader
- expo-font
- react-native-gesture-handler
requirements.txt
pypi · 2- fastapi
- google-generativeai
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
Feature verification
FastAPI backendVerified
Backend is powered by FastAPI
Claimed on Devposthigh confidencefastapi-backend/app.py:12— FastAPI() app instantiated with routers included
Manual emergency trigger buttonVerified
Detects emergency situations automatically or via manual trigger
Claimed on readmehigh confidencereact-native-frontend/app/app/(tabs)/index.tsx:137— Pressable 'Emergency Call' button with slide-to-cancel PanResponder triggers handleEmergencyPress
React Native + Expo mobile appVerified
Built using React Native with Expo
Claimed on readmehigh confidencereact-native-frontend/app/app.json— Expo app config presentreact-native-frontend/app/app/(tabs)/index.tsx:1— React Native components (View, Pressable, Animated) and Expo modules (expo-av, expo-permissions) used
TypeScript for enhanced code qualityVerified
Leveraging Python and TypeScript for enhanced code quality
Claimed on Devposthigh confidencereact-native-frontend/app/tsconfig.json— TypeScript config present; app files use .tsx with type annotations
Hand-drawn aesthetic UICode-supported
Successfully integrated a unique aesthetic into our UI by incorporating hand-drawn elements
Claimed on Devpostlow confidencereact-native-frontend/app/app/(tabs)/index.tsx:121— Custom illustrated image assets (guardian_angels_bear.png, backgroundImage.png) are used as UI elements/backgrounds
LLM (Gemini) conversation pipeline with dispatcherCode-supported
LLM and text-to-speech pipeline that provides real-time, situation-critical responses to 911 dispatchers, using Google Gemini for transcription/reasoning
Claimed on Devpostmedium confidencefastapi-backend/gemini_fastapi.py:21— begin_conversation endpoint uploads audio to genai and starts a chat with a hardcoded dispatcher-roleplay promptfastapi-backend/gemini_fastapi.py:68— continue_conversation has a Python syntax error (missing ':' and type annotation on 'audiofile str') and references an undefined 'chat' variable, so this route cannot execute
Patient/medical database integrationCode-supported
Backend allowing for efficient data handling / patient medical records
Claimed on Devpostlow confidencefastapi-backend/app.py:26— CRUD endpoints for patients exist using psycopg2, but DB_CONFIG contains placeholder values ('your_postgres_host', 'your_username', 'your_password'), and the README explicitly states the team faced 'difficulties with database integration'
Real-time GPS location servicesCode-supported
Refine our GPS location services for better tracking; relays real-time location
Claimed on readmelow confidencefastapi-backend/maps_fastapi.py:9— get-location endpoint calls Google Maps geolocation and reverse-geocoding APIs, but no frontend code calls this endpoint (grep found no 'get-location' references outside this file)
Relays biometric data, medical history, current state, location to dispatchCode-supported
Relaying essential information like patient biometric data, medical history, current state, and location
Claimed on Devpostlow confidencefastapi-backend/models.py:12— MedicalInfo/Patient/DispatchRequest models capture medical conditions, allergies, medications, and location fieldsfastapi-backend/gemini_fastapi.py:42— Prompt hardcodes a fabricated heart rate (120 bpm) and blood pressure (130/80) rather than reading real biometric input, and there is no code that captures live biometrics
Text-to-speech via DeepgramCode-supported
Deepgram for audio processing and speech synthesis, converting transcribed text back to voice
Claimed on Devpostlow confidencefastapi-backend/deepgram_prompter.py:27— convert_text_to_speech posts SSML text to a text-to-speech URL using a 'DEEPGRAM_API_KEY', but the endpoint URL, payload shape ('voice': 'en-US-Wavenet-D') and SSML wrapping do not match Deepgram's real TTS API, and this function is only called from the broken continue_conversation route
Automatic distress/fall detectionClaimed only
The app automatically detects distress signals—such as falls or other emergencies
Claimed on readmehigh confidenceContacts 911 dispatch services on behalf of user (telephony)Claimed only
Automatically...contacts dispatch services on behalf of the user
Claimed on Devposthigh confidenceSmartwatch compatibility / heart-rate monitoring (future work)Claimed only
Integrating features such as smartwatch compatibility for monitoring vital signs like heart rate
Claimed on readmehigh confidence
An AI agent derived these features from the project’s Devpost page and readme, then searched the code for each one. Verified features are backed by cited code; claimed-only features had no supporting code, which is not by itself proof a feature is missing.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.