Project Info
Inspiration
ALS is a devastating neurodegenerative disease in which one gradually looses motor function over time, for which there is no known cure. However, those experiencing ALS retain control of their eyes, which can be used to speak and interact with. the world. There exist solutions for this (e.g. https://us.tobiidynavox.com/products/td-i-series), however these are often $7000-$1500+. And these solutions do not allows those with ALS to interface with the internet. We wanted to use LLMs, software, and cheap hardware to build an interface to allow those with ALS to communicate in-person, online, and on the internet in a way that is radically cheaper (<$200).
What it does
Blinkit is a web app which can be entirely controlled either in (1) Blink mode using CV, or (2) EOG Mode using electrodes. Our web app allows users to communicate easily with others and interface with the internet. We took an OS approach and built an app store. We currently support: Amazon, ChatGPT, Google Maps, Web Search, Flappy Bird, Books, Talk and Zoom. To increase communication speed, beyond using the combination of blinking and EOG, our apps use long running context to provide personalized suggestions with LLMs. For the purposes of this demo, we processed the entire script of the Harry Potter movies, and used all instances of Hagrid talking as context. So our model would speak and make suggestions in the same way Hagrid does, preserving an ALS patient's true voice
How we built it
There is a frontend, backend, and hardware component. We used Elasticsearch as our vector DB for long running context, and we used BrightData to collect data for some of our apps, such as Amazon. We also allow those with ALS to communicate Hardware: We place 3 electrodes on a person's face. Left, right, and center. We can pick up with 1–3 millivolt differences, which are identified through a denoising and amplification circuit. Frontend: We built an intuitive frontend built around left/right eye movement (or blinks), double blinks, and triple blinks, allowing one to navigate through Amazon pages, participate in conversation, Play Flappy bird, read classic novels, read pages on the web, and more. Backend: We used Cerebras with GPT-oss for responsive inference. We also used serverless Elastic Cloud to host large amounts of context to inform application suggestions through kNN cosine similarity search.
Challenges we ran into
Tuning the blinking was very difficult Each person has unique electrical signals. Tuning that in onboarding was very challenging so was coming up with the circuit diagram
What's next
for Blinkit
Blinket
Hands-free internet access for people with ALS and motor impairments.
Blinket is an assistive technology platform that lets users navigate the internet, shop, search, read, chat, join video calls, and have conversations — all controlled entirely through eye blinks and winks detected via a standard webcam.
Live demo: seattle-sepia.vercel.app Backend: revive-1-ef6k.onrender.com
Why We Built This
One of our teammates spent a summer in South Africa working directly with patients living with ALS. He saw firsthand how these patients — sharp, intelligent people with full cognitive ability — were effectively locked out of the internet. The tools that did exist, like the Tobii Dynavox, cost between $6,000 and $15,000, putting them out of reach for most families, especially in developing countries.
We built Blinket to change that. Our system runs on any laptop with a webcam using open-source MediaPipe face tracking. No special hardware. No expensive eye-tracking devices. Total cost: under $200 in API credits for the full stack.
How It Works
Blinket detects six distinct eye gestures using MediaPipe facial landmarks from a standard webcam:
| Gesture | Action |
|---|---|
| Wink left | Navigate left / previous |
| Wink right | Navigate right / next |
| Double blink | Select / confirm |
| Triple blink | Go back / cancel |
| Quadruple blink | Send (Morse keyboard) |
| Long close (2+ sec) | Exit to home |
An alternative EOG (electrooculogram) input mode is also supported for users who prefer signal-based eye tracking.
Every interaction is personalized through a RAG pipeline: user context is embedded and stored in Elasticsearch, then retrieved via kNN search and fed to Cerebras LLM to generate suggestions tailored to the individual — their interests, needs, and history.
Apps
Talk
Real-time voice conversation assistant. Deepgram transcribes speech live, and on a double-blink, Blinket generates contextual response options using RAG. Select a response with a wink and it's spoken aloud via Fish Audio TTS. Includes a Morse keyboard for typing custom messages through blink patterns.
Amazon Shopping
Personalized product discovery. Blinket generates search queries based on user context, scrapes Amazon via BrightData, and presents results in a 3D carousel. Double-blink to email yourself a product link.
Google Maps
Location-aware place discovery. Uses geolocation + personalized queries to find relevant businesses and places. Browse results with winks, double-blink to open in Google Maps.
ChatGPT
Streaming chat interface with personalized conversation starters. Blinket suggests what you might want to ask based on your context. Wink to browse suggestions, double-blink to send. Full conversation history with scroll navigation.
Web Search
Personalized web search. Generates queries from user context, scrapes search results via BrightData, and displays them in a browsable carousel with preview modals.
Books
Curated classic literature reader with page-flip animations. Wink to turn pages, browse chapters, read full books — all hands-free.
Flappy Bird
Blink-controlled game. Blink to jump. A fun way to practice blink detection calibration.
Zoom Meetings
Join Zoom meetings directly in the browser via the Zoom Embedded SDK. Live meeting transcripts appear in a side panel via Zoom RTMS. Double-blink to generate contextual responses during the call and speak them via TTS.
Tech Stack
| Layer | Technology |
|---|---|
| Frontend | React 19, TypeScript, Vite, React Router |
| Blink Detection | MediaPipe Face Landmarker (webcam) |
| Speech-to-Text | Deepgram Nova-2 (real-time WebSocket) |
| Text-to-Speech | Fish Audio |
| LLM | Cerebras (fast inference for response generation) |
| Embeddings | Cohere |
| Vector Search | Elasticsearch (kNN) |
| Web Scraping | BrightData (Amazon, SERP, Maps) |
| Video Calls | Zoom Meeting SDK + RTMS |
| Resend | |
| Backend | Hono + Bun |
| Frontend Hosting | Vercel |
| Backend Hosting | Render |
Cost Comparison
| Solution | Cost |
|---|---|
| Tobii Dynavox | $6,000 – $15,000 |
| Other AAC devices | $3,000 – $10,000 |
| Blinket | < $200 in API credits |
Blinket requires only a laptop with a webcam — hardware most people already own. All the intelligence runs through affordable cloud APIs (Cerebras for LLM, Deepgram for transcription, Cohere for embeddings). No proprietary hardware. No licensing fees.
Running Locally
Backend
cd backend
bun install
bun run dev
Requires a .env file with API keys for Deepgram, Cerebras, Elasticsearch, BrightData, Fish Audio, Cohere, Resend, and optionally Zoom.
Frontend
cd frontend
npm install
npm run dev
The frontend proxies API requests to localhost:3003 in development. Set VITE_API_BASE to override.
RTMS (Zoom transcript logging)
cd backend
bun run rtms
Runs the Zoom RTMS webhook listener on port 8080 for real-time meeting transcript capture.
Architecture
┌─────────────────────────────────────────────┐
│ Frontend │
│ (React + MediaPipe + Webcam) │
│ │
│ Blink Detection ──► App Navigation │
│ Deepgram Audio ──► Live Transcription │
│ Zoom SDK ──► Embedded Meetings │
└──────────────┬──────────────────────────────┘
│ HTTP + WebSocket
┌──────────────▼──────────────────────────────┐
│ Backend │
│ (Hono + Bun) │
│ │
│ /getContext ──► Elasticsearch kNN + LLM │
│ /ws ──► Deepgram + EOG + RTMS │
│ /apps/* ──► BrightData, TTS, Email │
│ /zoom/* ──► Meeting SDK auth │
└─────────────────────────────────────────────┘
Team
Built at a hackathon by a team that believes internet access is a right, not a privilege — especially for people whose bodies have stopped cooperating but whose minds never did.
Analysis
View
Metric
- 61
- 32
- 23
- 5
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
- ExpressIn code
- HTMLIn code
- OpenAIIn code
- PythonIn code
- ReactIn code
- SQLIn code
- SupabaseIn code
- TypeScriptIn code
- CSSClaimed
- VercelClaimed
8 of 10 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
- Claude CodeCommits
- CursorConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
447 KB
Source files
52
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
idalmas/Blinkit-med
69 files · 2.8 MB · @ 14714e9
Structure
Interface
6 files · 9%Screens, components and styles rendered to the user.
API & routing
7 files · 10%Request entry points: routes, handlers and controllers.
Application logic
36 files · 52%Domain rules, services and shared utilities.
+1 moreData & schema
1 file · 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
- TypeScript93%
- Markdown4%
- Python2%
- SQL1%
- HTML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 19- @deepgram/sdk
- @mediapipe/tasks-vision
- @zoom/meetingsdk
- dotenv
- express
- react
- react-dom
- react-icons
- react-router-dom
- react-webcam
- ws
- +8 more
backend/package.json
npm · 12- @cerebras/cerebras_cloud_sdk
- @deepgram/sdk
- @elastic/elasticsearch
- @supabase/supabase-js
- @zoom/rtms
- hono
- jsrsasign
- jszip
- openai
- serialport
- +2 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.