Project Info
Inspiration
Between 40%-70% of medical devices and equipment in low and middle-income countries are broken, unused, or unfit for purpose. The problem is compounded by severe workforce shortages: many low-income countries have fewer than one biomedical engineer per 100,000 people. Thus 10–30% of donated equipment is ever put into operation. This means 70–90% ends up being unused or broken, not because it's useless, but because no one has the training, spare parts knowledge, or repair guidance to fix it. In many hospitals, technicians lack: Step-by-step repair documentation in their language Access to spare parts guidance Real-time troubleshooting support We built Puzzled to close this gap. Instead of donating more devices, what if we helped hospitals to fix the ones they already have?
What it does
Puzzled is an computer vision powered visual repair assistant that turns any phone camera into a step-by-step repair guide. Users can: Select their familiar language Follow guided repair steps Capture a frame to verify each step Escalate to live expert help if needed Automatically sends a support request email with a Zoom meeting link to an expert. Automatically sends a support request email with a Zoom meeting link to an expert. Instead of leaving people puzzled in front of broken medical devices, lab equipment, household appliances, or even LEGO builds, we can help them find the missing piece 🧩— step by step.
How we built it
Our app begins with a puzzle. When the final piece (our logo, featuring the adorable Treehacks llamas 🦙!) clicks into place, the screen transitions to language selection, our first page. Once a user selects a tutorial, our system uses computer vision to analyze their image at each step to check for validity and provides real-time feedback. The following details our tech stack: Frontend React + TypeScript + Tailwind for a mobile-first interface and camera integration Backend Python (FastAPI) for REST API serving verification endpoints and image processing Runpod (GPU inference): Deploying of Siamese neural network endpoint through runpod, reducing inference latency to <100ms for high-volume production use Deploying of Claude Vision API Deploying of Siamese neural network endpoint through runpod, reducing inference latency to <100ms for high-volume production use Deploying of Claude Vision API Supabase for BaaS, database and storage for images of tutorials and repair steps AI & Intelligence MyMemory Translation API for multilingual translation i18next for frontend internationalization and language detection LightWeight On Device Verification: Siamese architecture: REsNet18 backbone pretrained on ImageNet Heavy data augmentation: +-50% brightness/contrast, 180° rotation, random flips CLAHE (Contrast Limited Adaptive Histogram Equalization): Normalizes lighting variations across different environments Comparison: Cosine similarity between embeddings (threshold: 0.81) Center crop (15%): Removes edge noise and focuses on center of assembly 99.8% similarity on matching steps in test Clear rejection (51-67%) on non-matching steps Advanced Model with Feedback: Claude Sonnet 4 Vision API for frame analysis and step verification Gives useful insights about what is wrong with the image (helpful if you're unsure what's wrong) Similar performance to Siamese network Both models have an advantage of not needed large amounts of data, making it easy for people to crowdsource help for repair of medical equipment without investing significant time in curating ML datasets. Integration Zoom API for live expert escalation and support Vercel for frontend deployment and hosting
Challenges we ran into
Database implementation (expected it to take 5 minutes. Ended up taking waayyyy longer) Zoom API with Render backend. Yeah this one was difficult. It turns out the WiFi was our bottleneck and our request would time out often. Occasionally, some steps would do perform worse than others during the AI analyzation due to varying alignment or lighting Providing support for more languages for translation as each was computationally expensive while maintaining good performance on latency Developing a complex but intuitive user flow (back button, help button, verifications, etc)
Accomplishments we're proud of
Training a neural network with only 2-3 images per step. Although it seemed impossible, we solved this by choosing a Siamese architecture (learns similarity, not classification) and aggressive data augmentation (25x expansion with rotation, brightness, blur variations). Overcoming Lighting Inconsistency: Early tests failed when images had different lighting than our reference images. We implemented CLAHE preprocessing and trained with ±50% brightness augmentation to help the model be more lighting-invariant.
What's next
Auto-checks for step completion Rather than manual photo capture, we hope for an accurate CV detection via real-time camera Rather than manual photo capture, we hope for an accurate CV detection via real-time camera AI-created visual instructions Users can view their difficult text-only manuals as step-by-step visual guides. Users can view their difficult text-only manuals as step-by-step visual guides. Medical admin portal A platform for hospitals and manufacturers to upload manuals and convert them into interactive workflows. A platform for hospitals and manufacturers to upload manuals and convert them into interactive workflows. Providing support for more languages Right now, Puzzled supports a wide range of assembly workflows. In the long run, we hope to specialize it in medical equipment repair, advancing our computer vision to detect fine parts and guide important fixes! References: (1): https://www.who.int/data/gho/indicator-metadata-registry/imr-details/4584 (2): https://cdn.who.int/media/docs/default-source/medical-devices/health-technology-management/country-data-on-health-technology-management.pdf?sfvrsn=4c8eefbb_3&utm_source=chatgpt.com (3): https://pubmed.ncbi.nlm.nih.gov/28821280/
Puzzled
40-70% of medical devices in low and middle-income countries are broken. Not because they're useless, but because technicians lack training and repair guidance in their language.
Puzzled turns any phone camera into an AI-powered repair assistant — making manuals make sense, one step at a time.
How It Works
- Select your language — Supports languages via AI translation
- Choose a repair tutorial — Browse visual guides for medical equipment
- Follow step-by-step instructions — Your camera verifies each step in real-time using AI
- Get unstuck instantly — One tap connects you to a remote expert via Zoom
The magic: Our AI learns from just 2-3 images per step (few-shot learning), making it practical to create guides for any device.
What Makes It Different
Dual AI Verification
- Siamese Neural Network (ResNet18): inference, embeddings, cosine similarity verification
- Claude Vision API: Natural language feedback on why a step is incorrect
- CLAHE normalization: Works in poor lighting conditions (critical for field use)
Built For The Real World
- Few-shot learning: Create new guides with just 2-3 photos per step
- Multilingual: Instant translation to 100+ languages via MyMemory API + i18next
- Expert escalation: One-tap Zoom integration with Server-to-Server OAuth
- Mobile-first: Native camera integration, works on any smartphone
Stack: React 19 • TypeScript • Tailwind • FastAPI • PyTorch (ResNet18) • Claude Vision • Supabase • Zoom API
Quick Start
Frontend:
npm install
npm run dev
# Runs on http://localhost:5173
Backend:
cd backend
python3 -m venv venv
source venv/bin/activate # macOS/Linux (venv\Scripts\activate on Windows)
pip install -r requirements.txt
# Configure environment
cp .env.example .env
# Edit .env with your Zoom API credentials from https://marketplace.zoom.us/develop/create
# Start server
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
# Runs on http://localhost:8000
Test it: Visit http://localhost:5173, select a tutorial, and try the camera verification!
📚 Detailed setup, troubleshooting, and development guides: backend/README.md
API Reference
| Endpoint | Method | Description |
|---|---|---|
/verify/verify-step | POST | Verify camera image against reference step |
/api/help | POST | Create instant Zoom meeting with expert |
/verify/dashboard | GET | Real-time verification monitoring dashboard |
/docs | GET | Interactive API documentation |
Interactive docs: http://localhost:8000/docs
Deployment
Backend (Render)
Build Command: cd backend && pip install -r requirements.txt
Start Command: cd backend && uvicorn app.main:app --host 0.0.0.0 --port $PORT
Required Environment Variables:
ZOOM_ACCOUNT_IDZOOM_CLIENT_IDZOOM_CLIENT_SECRETCORS_ORIGINSANTHROPIC_API_KEY
For detailed deployment instructions, see backend/README.md
Frontend (Vercel/Render Static Site)
Build Command: npm run build
Publish Directory: dist
Environment Variables:
VITE_API_BASE_URL=https://your-backend.onrender.comVITE_SUPABASE_URLVITE_SUPABASE_ANON_KEY
Built At TreeHacks 2026
Problem: Medical devices sit broken in clinics across low and middle-income countries while technicians lack training resources in their language.
Solution: AI-powered visual repair guides that work on any phone, in any language, with instant expert backup.
Impact: Instead of donating more devices, we help countries fix the ones they already have.
Tech Stack: React 19 • TypeScript • Tailwind CSS • Vite • FastAPI • PyTorch • ResNet18 • Claude Sonnet 4 • Supabase • Zoom API • i18next • MyMemory Translation API
Analysis
View
Metric
- 24
- 23
- 15
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
- AnthropicIn code
- CSSIn code
- FastAPIIn code
- HTMLIn code
- JavaScriptIn code
- PythonIn code
- PyTorchIn code
- ReactIn code
- SupabaseIn code
- Tailwind CSSIn code
- TypeScriptIn code
11 of 11 appear in the indexed code.
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
307 KB
Source files
69
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Adas4044/puzzled
321 files · 647.0 MB · @ 7ed834a
Structure
Interface
27 files · 8%Screens, components and styles rendered to the user.
API & routing
3 files · 1%Request entry points: routes, handlers and controllers.
Application logic
41 files · 13%Domain rules, services and shared utilities.
+1 moreData & schema
2 files · 1%Schema definitions, migrations and data access.
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
- Python66%
- TypeScript30%
- Markdown4%
- JavaScript0%
- HTML0%
- CSS0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 26- @heroicons/react
- @supabase/supabase-js
- @types/react-webcam
- flag-icons
- i18next
- i18next-browser-languagedetector
- i18next-http-backend
- react
- react-dom
- react-i18next
- react-router-dom
- react-webcam
- +14 more
backend/requirements.txt
pypi · 12- aiosmtplib
- anthropic
- fastapi
- httpx
- numpy
- opencv-python-headless
- pillow
- pydantic
- pydantic-settings
- python-dotenv
- python-multipart
- uvicorn[standard]
cv_detector/new_detector/requirements.txt
pypi · 7- anthropic
- numpy
- opencv-python
- pillow
- pillow-heif
- torch
- torchvision
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.