Project Info
This project did not submit a demo video on Devpost.
Inspiration
We've learned about the BE FAST protocol—Balance, Eyes, Face, Arms, Speech, Time— critical for the early detection of strokes. Thus, with the help of advanced ai tools like google adk, we've programmed to streamline the procedures, making it more accessible to at-risk patients.
What it does
Designed to detect strokes within seconds for patients who are already at risk of strokes.
How we built it
Integrating multimodal AI agents and Kaggle datasets to
Challenges we ran into
We had trouble getting the accuracy because we weren’t able to use the actual ai agents, as well as being unfamiliar with data training with Kaggle
Accomplishments we're proud of
Trained the datasets with 91% accuracy using the AI agents algorithm.
What we learned
We get to familiarize ourselves with advanced AI tools such as Claude, model training from Kaggle, detect facial asymmetry in real time with yolo. superbase
What's next
Improve the agentic workflow, and implement Ictus on various hardware like apple watches, meta glasses to make it widely accessible.
UCBHackathon2025 — Stroke Detection Tool
A multimodal stroke detection tool that guides users through FAST assessment, performs real-time facial droop detection, and coordinates alerts and triage via an agent-based backend with a React frontend.
Features
- FAST Assessment: Structured flow for Face, Arm, Speech, Time checks.
- Real-time Vision: Face/landmark detection for facial droop analysis.
- Conversational Agents: Symptom intake, triage, care guidance, and alert coordination.
- Web Frontend: React-based UI with modular components.
- Extensible Backends: Pluggable stroke detection pipelines and agents.
Project Structure
frontend/: React app (TypeScript) with components likeFASTAssessment.tsx,VideoRecognition.tsx,StrokeDetectionChatbot.tsx.facial_droop_model/: Python scripts for dataset prep, training, and real-time droop detection (real_time_face_detection.py,train_stroke_model.py).multi_tool_agent/: Agent orchestration (Python).newfiles/multi_tool_agent/stroke_detection/: New agentized stroke detection demo with coordinator and agents.
Architecture
- Frontend (React): UI for FAST, video/voice capture, and chat.
- CV/ML (Python): Facial droop detection and model training scripts.
- Agent Layer (Python): Coordinator orchestrates specialized agents: symptom, triage, care, follow-up, alert.
Prerequisites
- Node.js 18+ and npm
- Python 3.10+ (recommend venv)
- macOS (tested), camera + microphone permissions enabled
- Optional: GPU/accelerators for training
Quick Start
1) Frontend
cd /Users/sewonmyung/programming/UCBHackathon2025/frontend
npm install
npm start
- App runs at
http://localhost:3000.
2) Facial Droop Model (Real-time Demo)
cd /Users/sewonmyung/programming/UCBHackathon2025/facial_droop_model
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python real_time_face_detection.py
3) Agent Demo (Coordinator + Agents)
cd /Users/sewonmyung/programming/UCBHackathon2025/newfiles/multi_tool_agent
python -m venv venv && source venv/bin/activate
pip install -e .
python stroke_detection_demo.py
Key Frontend Components
components/FASTAssessment.tsx: Core FAST workflow.components/EnhancedFASTAssessment.tsx: Extended evaluation.components/VideoRecognition.tsxandcomponents/EnhancedVideoRecognition.tsx: Camera capture + CV integration.components/StrokeDetectionChatbot.tsxandcomponents/FASTChatbot.tsx: Guided chat for assessment.hooks/useStrokeAnalysis.ts: Client logic for analysis/API calls.lib/strokeAgentAPI.ts: Client wrapper for backend interactions.
CV/ML Pipeline
setup_dataset.py,analyze_stroke_dataset.py: Dataset prep and EDA.train_stroke_model.py/train_model.py: Model training.real_time_face_detection.py: Webcam-based inference and droop estimation.deploy_model.py: Packaging/deployment utilities.- You can swap models by updating loaders/inference in
facial_droop_model/.
Agent Orchestration
newfiles/multi_tool_agent/stroke_detection/coordinator.py: Orchestrates multi-agent flow.- Agents in
stroke_detection/agents/:symptom_agent.py,triage_agent.py,care_agent.py,followup_agent.py,alert_agent.py.
utils/data_structures.py: Core types for messages, tasks, and results.
Environment Variables
Create .env files as needed:
- Frontend (
frontend/.env):REACT_APP_BACKEND_URL(if integrating with a running API)REACT_APP_SUPABASE_URL,REACT_APP_SUPABASE_ANON_KEY(if using Supabase)
- Python backends:
OPENAI_API_KEYor provider keys (if LLM-backed)- Any alerting integrations (e.g.,
TWILIO_*,SENDGRID_*) if used.
Development Scripts
- Frontend:
npm start: Dev servernpm test: Unit testsnpm run build: Production build
- CV/ML:
python setup_dataset.pypython train_stroke_model.pypython real_time_face_detection.py
- Agents:
python stroke_detection_demo.py
API Notes
- Client-side wrapper is in
frontend/src/lib/strokeAgentAPI.ts. - If you expose local APIs (e.g., Flask/FastAPI), set
REACT_APP_BACKEND_URLaccordingly and implement endpoints for:POST /analyze/face(image/stream analysis)POST /fast/assess(FAST questionnaire/session)POST /agent/route(coordinator entrypoint)
Data, Privacy, and Safety
- For demo use only; not a medical device.
- Do not use for diagnosis or emergency response.
- Handle all audio/video data locally where possible; obtain consent before capture.
- Review logging in
facial_droop_model/api.logand disable PII logging for production.
Troubleshooting
- Camera/mic blocked: Allow permissions in the browser and macOS System Settings.
- GPU issues: Force CPU inference or update drivers.
- CORS: Configure your backend to allow
http://localhost:3000. - Build errors: Clear cache
rm -rf node_modules && npm install.
Contributing
- Use feature branches and submit PRs.
- Keep edits focused and well-described.
- Add tests for new logic where possible.
License
-
Specify your license (e.g., MIT) in a
LICENSEfile. -
Implemented a complete, concise
README.mdcovering setup, architecture, components, scripts, and safety guidance.
Analysis
View
Metric
- 6
- 3
- 2
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
- CSSIn code
- HTMLIn code
- PythonIn code
- ReactIn code
- SupabaseIn code
- TypeScriptIn code
- Google GeminiClaimed
6 of 7 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
- Claude CodeConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
240 KB
Source files
42
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
parsafarajia/UCBHackathon2025
54 files · 935 KB · @ b561a5a
Structure
Interface
7 files · 13%Screens, components and styles rendered to the user.
Application logic
29 files · 54%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
- TypeScript46%
- Python43%
- Markdown10%
- HTML1%
- CSS0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 19- @emotion/react
- @emotion/styled
- @mui/icons-material
- @mui/material
- @mui/system
- @supabase/supabase-js
- @testing-library/dom
- @testing-library/jest-dom
- @testing-library/react
- @testing-library/user-event
- @types/jest
- @types/node
- @types/react
- @types/react-dom
- react
- react-dom
- react-scripts
- typescript
- +1 more
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.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.