Project Info
Inspiration
A conversation can move at 100 to 140 words per minute, while many AAC users communicate far more slowly. The problem is not only typing speed. It is timing, personality, repair after a misunderstanding, and the ability to start a topic instead of always reacting. Cadence is a real-time communication companion for people with ALS and other AAC users. It listens to a conversation, prepares a small set of possible replies in the user's own style, and keeps the user in control of every word that is spoken. We were inspired by a simple question: what if someone could join a fast dinner conversation, make a joke, say “I love you,” hold the floor, or start a topic of their own before the moment moves on?
What it does
Cadence turns a live conversation into ready-to-review communication choices. Live captions: Uses the browser's Speech Recognition API for no-cost, on-device live transcription. Prepared replies: Uses GPT-5.6 with structured JSON output to create diverse reply options grounded in the latest conversation, the user's saved voice style, personal details, and local memory. User control: A person can speak a suggestion, edit it, make it shorter, ask for something more like them, save it, reject it, or mark the context as wrong. Initiation, not only reaction: “Start something” prepares conversation openers so users can bring up a story, concern, question, affection, or news on their own terms. Fast communication boards: Quick reactions, feelings, care needs, saved phrases, and “Hold the floor” are always easy to reach. Offline resilience: Needs, feelings, saved replies, phrase boards, and instant device voice remain useful even when online AI is unavailable. Voice options: Users can choose OpenAI text-to-speech or instant device speech, with tone-aware delivery. Accessible input: Large tap targets, keyboard support, screen-reader labels, scanning mode, and experimental local eye-gaze focus support different access needs. Privacy-first local memory: Voice style, personal details, preferences, remembered people and topics, session data, phrases, and access settings are stored locally on the device. Memory is visible and clearable. Safety controls: Cadence never speaks automatically from a model suggestion or gaze focus. The person confirms with touch, keyboard, switch scanning, or Select. Why Cadence is different Many communication tools help compose text faster. Cadence focuses on participation in the whole conversational turn: Be ready before the moment passes. Choose language that sounds like the person. Repair a wrong suggestion or misunderstanding. Hold the floor when more time is needed. Initiate something meaningful, not only react. The goal is not simply faster typing. It is timing, choice, and connection.
How we built it
Cadence is built with: Next.js 14 App Router and TypeScript Tailwind CSS for a responsive, tablet-first interface OpenAI Responses API with gpt-5.6-luna, low reasoning effort, lean prompts, and structured JSON outputs OpenAI TTS for server-side speech synthesis with configurable voice and tone instructions Browser Web Speech API for live captions MediaPipe Face Landmarker for experimental, local eye-gaze focus localStorage for style cards, personal details, phrase boards, remembered people/topics, sessions, access preferences, and optional local debug recordings Upstash Redis for distributed per-IP rate limiting in real mode Vercel for deployment, analytics, and production hosting The language layer is intentionally separated behind interfaces and API routes: predict() creates grounded candidate replies expand() turns a short idea into full replies toneAdjust() rewrites a message in warm, firm, or funny tone initiate() prepares conversation starters speak() supports OpenAI speech or instant device voice transcribe() supports browser captions This makes the system replaceable and testable. MOCK_MODE=1 runs offline mock behavior without model or speech costs. MOCK_MODE=0 enables the protected real AI path. Privacy and safety by design Cadence is an early prototype, not a medical device or emergency service. We designed for meaningful control: No account is required. Personal voice data, details, memory, phrases, and sessions stay on the device. Camera video and gaze samples are processed locally for the experimental eye-gaze feature and are not uploaded or stored by Cadence. AI receives only the limited conversation context needed to prepare a reply. The server validates input size, requires explicit real-mode consent, rate-limits requests per IP, and keeps API keys server-side. Eye gaze is an experimental focus method, not a general mouse replacement. It never triggers speech automatically. Care phrases such as “I need suction” do not alert caregivers or emergency services. They only speak the selected phrase.
Challenges we ran into
The hardest challenge was balancing speed with control. A system that reacts too slowly misses the conversational moment. A system that reacts too early can misunderstand an unfinished sentence. We addressed this with speculative prediction from interim captions, a short final-caption debounce, cancellation of outdated requests, and clear “preparing replies” states. We also learned that reliability matters more than a flashy demo. When real AI, network access, or TTS is unavailable, Cadence does not leave the user without communication. It keeps quick needs, feelings, saved replies, phrase boards, hold-the-floor phrases, and device voice available. Eye gaze was another important lesson. Browser camera tracking is sensitive to lighting, camera position, head movement, calibration, and device performance. We keep it clearly labeled as experimental, local, confirmation-based, and optional. Research that shaped Cadence Cadence is informed by publicly available AAC, ALS, accessibility, and communication-participation research. AAC users can face high abandonment rates because of training burden, fatigue, partner burden, and effort. Cadence reduces friction with one-tap prepared replies, scanning, and no required partner app. Communication partner instruction can improve AAC communication. Cadence does not require a partner to install anything, while still offering a concise optional partner tip. AAC design must account for cultural and linguistic context. Cadence supports user-controlled language preferences and a “do not translate or normalize my wording” preference. Recent AAC UI co-design research emphasizes that researcher-only design misses real access barriers. Cadence includes a voluntary tester feedback process and treats participatory co-design as an ongoing requirement. Research on communicative participation in ALS supports measuring more than speed. Cadence tracks replies spoken, topics initiated, time-to-response, repairs, rejected suggestions, and whether a reply sounded like the user. Voice banking and voice identity research informed our emphasis on user choice, device voice fallback, tone, and configurable speaking voices. Selected sources: Inclusive AAC UI co-design study Communication partner instruction meta-analysis ASHA multilingual service-delivery guidance ALS communicative participation study Voice banking and identity in motor neurone disease These sources guide our product decisions. They do not prove clinical effectiveness of this prototype. Accomplishments that we are proud of Built a complete live conversation flow from caption to prepared reply to confirmed speech. Made initiation a first-class feature, so users can lead conversations rather than only respond. Kept user agency central: AI suggests, the person chooses. Built offline-safe communication tools instead of depending completely on cloud AI. Added meaningful access options: touch, keyboard, scanning, instant voice, and experimental local eye-gaze focus. Added local-first personalization, memory, needs, feelings, phrase boards, and session recovery. Added production safeguards including structured outputs, consent checks, input caps, CSP, rate limiting, and server-side secret handling. Built a responsive experience for desktop, tablet, and mobile use. Added unit, integration, and end-to-end coverage for core flows including onboarding, local sessions, offline fallback, rate limits, privacy, scanning, and input validation.
What we learned
We learned that a strong AAC experience cannot be reduced to a text box and a faster model. The most important design decision was making Cadence a system for conversation participation, not just message generation. The person needs to be ready, recognized, able to correct the system, able to express care or urgency, and able to decide when not to speak. We also learned that accessibility features must be designed with failure states in mind. A tool is more trustworthy when it explains uncertainty, keeps a clear off switch, and still offers communication when a network or model call fails. What is next for Cadence Our next priority is co-design with people who use AAC, people living with ALS, caregivers, speech-language pathologists, and assistive-technology professionals. We want to learn what feels useful, inaccurate, tiring, or missing in real conversations. We plan to improve reply relevance, voice match, personal profiles for family, care, work, and medical settings, editable captions, custom names and vocabulary, multilingual support, and clearer confidence when listening is uncertain. We will continue strengthening access through Bluetooth switches, configurable scanning, and experimental target-based eye-gaze focus with better calibration and validation. Eye gaze will remain clearly labeled as experimental until it is tested reliably with users. We also plan to expand offline communication boards, saved replies, care phrases, conversation repair, and user-controlled session history, so communication remains available even when AI or network access is unavailable. Most importantly, we will measure participation, not only taps saved: meaningful replies, topics initiated, repairs completed, fatigue, time-to-response, and whether the user feels the words sound like them. Cadence is an early prototype, not a medical or emergency tool. Our goal is to build responsibly with the community, so more people can be present in the conversations that matter, in words that remain their own. We will use feedback to improve: Reply relevance, voice match, and rejection/repair behavior Partner-tip content and communication setup Multilingual and code-switching support Per-person and per-setting communication profiles Target-based eye-gaze reliability, calibration, fatigue, and validation Accessibility for switches, eye-gaze hardware, and assistive browsers Outcome measures centered on participation, autonomy, fatigue, satisfaction, and “this sounded like me” Cadence is early, but the direction is clear: help more people be present in the conversations that matter, in words that remain their own.
Cadence
Cadence helps people with ALS and other AAC users stay part of a live conversation.
When someone speaks, Cadence listens, prepares a few short replies in the user's voice, and makes them ready to speak with one tap. The user can also correct the context, hold their turn, express a need, or start a topic themselves.
Impact Thesis
The potential impact is not just faster text entry. It is helping a person be heard in the live moment, stay the author of their words, and initiate what matters to them.
Cadence is designed around four moments that can otherwise be lost in a fast conversation: responding before the topic changes, repairing a misunderstanding, expressing an essential need, and starting a conversation instead of only reacting.
Cadence is an early assistive communication prototype. It is not a medical device, emergency tool, or replacement for an AAC assessment, speech-language pathologist, or care plan.
The Problem
Conversation moves faster than many AAC systems can be operated. Even a thoughtful message can arrive after the subject has changed. That can turn a group conversation into something a person only reacts to from the edge.
Cadence is built around a different goal: make the user's next turn ready before the moment passes.
- It prepares several grounded choices, not one forced answer.
- It keeps every spoken word under the user's control.
- It supports starting a conversation, not only replying.
- It keeps essential communication available when the network or model is unavailable.
What is different: many tools help compose a message faster. Cadence is a live conversation layer that helps a person respond, repair a misunderstanding, hold the floor, and initiate in their own voice.
What a Person Can Do
| In the moment | How Cadence helps |
|---|---|
| Someone says something | Shows captions and prepares 3 to 4 reply options. |
| A reply feels right | Tap it to preview or speak it, then make it shorter, more like the user, saved, or rejected. |
| A caption or reply is wrong | Use Wrong context, edit the caption, rename the speaker locally, or use editable repair phrases such as “Please repeat that.” |
| The user needs time | Tap Hold the floor for a natural floor-holding phrase. |
| The user has a need | Open My needs for editable care, comfort, and urgency phrases. A local help reminder can point to an existing plan, but Cadence never sends an alert. |
| The user wants to lead | Choose Start something for user-led conversation openers. |
| The user wants their wording respected | Use Conversation setup to choose a language and preserve wording without automatic translation or normalization. |
| Internet is down | Use saved replies, needs, feelings, repair phrases, the backup board, and device voice. |
Why It Matters
Many people with ALS eventually lose functional speech. AAC can be life-changing, but adoption can be affected by training time, fatigue, access method fit, and communication-partner support. Cadence is designed to reduce the pressure of live conversation without taking authorship away from the user.
| Common barrier | Cadence response |
|---|---|
| A long learning curve | Ready-to-tap replies, plain-language onboarding, and contextual help. |
| High effort or eye-gaze fatigue | Large targets, low-effort quick phrases, and adjustable single-switch scanning. |
| Partner-training burden | Conversation partners need no special app or account. A short optional guide helps them pause and leave authorship with the AAC user. |
| Loss of agency | User-led openers, personal voice, editing, rejection, and context repair. |
| A service or connection failure | Local fallback replies, device speech, a backup board, and saved essentials. |
Background reading: ALS speech loss, AAC fit and support, AAC abandonment research, and eye-gaze AAC in ALS.
Cadence does not claim clinical effectiveness. The next validation step is voluntary testing with AAC users, family members, caregivers, and speech-language pathologists.
Research-Informed Design
Cadence is informed by publicly available research and guidance. These sources shaped the design priorities below. They do not validate Cadence itself, and Cadence does not reproduce their text, figures, branding, datasets, or participant data.
See UX and performance research notes for the current lightweight runtime budget, eye-gaze safeguards, and the design review checklist. See competitive landscape and source boundaries or the public research and sources page for a plain-language comparison with established AAC, predictive text, personal voice, atypical-speech, and dedicated eye-gaze solutions.
| Public source | Design insight used | Cadence response |
|---|---|---|
| ASHA AAC Practice Portal | AAC use depends on the person, access method, environment, and communication partners. | Large targets, switch scanning, personal setup, conversation kits, and a partner-friendly live flow. |
| AAC abandonment study | Adoption can be limited by effort, training, support, and fit. | One-tap staged choices, short onboarding, local phrase editing, and no required partner app or account. |
| AAC fit and support study | Communication technology must fit real goals and daily contexts. | Personal voice, details, boundaries, saved kits, needs, feelings, and user-led openers. |
| Eye-gaze AAC in ALS study | Access effort and fatigue matter in ALS communication. | Minimal taps, configurable scanning, fast quick phrases, hold-the-floor, and offline backup access. |
| ALS speech analysis study | Speech changes and speech loss are significant parts of ALS progression. | Captions plus user-controlled text-to-speech, with no requirement that the user speak to use Cadence. |
| Google SpeakFaster paper | Language models can reduce interaction effort for AAC communication. | Diverse structured reply choices, style-guided wording, and an internal tap-savings metric with a non-comparability caveat. |
| W3C WCAG 2.2 | Target size, visible focus, keyboard operation, and clear status feedback are essential access requirements. | Large controls, focus rings, modal focus trapping, Escape support, keyboard navigation, live announcements, and responsive layouts. |
| Inclusive AAC UI co-design study | Iterative co-design can reveal access barriers that designer-only work misses. | Voluntary AAC-user, caregiver, and SLP feedback is a required validation step, not a claimed result. |
| AAC partner-instruction meta-analysis | Conversation partners can affect AAC communication outcomes. | A compact partner guide: no partner app or account, speak to the person, pause, and let the person decide. |
| ASHA multilingual service guidance | Communication assessment and support should consider linguistic and cultural context. | Device-local language choice and a preserve-wording setting. Cadence does not intentionally translate or normalize a person's dialect or code-switching. |
| Voice banking and identity in MND | Voice choices can be tied to identity and deserve personal control. | User-selectable speech voice and conversation kits that can retain a preferred voice. Cadence does not claim voice cloning. |
| ALS participation study | Communication impact is broader than raw speed. | Local participation signals for reply time, initiated topics, edits, rejections, and whether a reply sounded like the person. |
Responsible use of research
- We link to original public sources instead of copying substantial text or visual material.
- We describe design inspiration, not clinical outcomes or endorsements.
- We do not claim Cadence is superior to another product without comparable testing.
- The SpeakFaster result is cited as context only. Cadence's local tap estimate uses a different method and is not a benchmark comparison.
- Real usability feedback and accessibility testing remain necessary before broad public or clinical claims.
Future Prospects
These are research-informed directions, not current product claims. They require participatory design, accessibility review, and reliable implementation before release.
| Direction | Why it matters | What must happen first |
|---|---|---|
| Participatory co-design | AAC users, family members, caregivers, and speech-language professionals can expose barriers that a developer-only process misses. | Run voluntary, consent-based sessions; document findings; iterate with participants. |
| Stronger multilingual and cultural support | A person should be able to keep their language, dialect, and code-switching without unwanted normalization. | Expand language coverage with community review and language-specific testing. |
| Voice identity options | A familiar or preferred speaking voice can be identity-sensitive. | Add only consent-based voice options with clear ownership, privacy, and safety controls. |
| More reliable eye-gaze access | Camera gaze should reduce effort, not introduce fatigue or false selections. | Test target-based calibration, dwell settings, stability, and fatigue with real users; keep the feature beta until then. |
| Better participation outcomes | A useful system should improve agency, repair, connection, and comfort, not only reduce taps. | Gather voluntary longitudinal feedback on response time, initiation, repairs, fatigue, and whether replies sound like the person. |
| Care and urgent-need workflows | Users may need clear, tailored phrases during care or discomfort. | Co-design a configurable help board with care teams; Cadence will not claim alerting or emergency capability unless it is independently reliable. |
How It Works
flowchart LR
A[Conversation in the room] --> B[Browser live captions]
B --> C[Local context manager]
D[User voice, details, memory, settings] --> C
C --> E{MOCK_MODE?}
E -->|Yes| F[Local mock and offline replies]
E -->|No, with consent| G[Next.js API routes]
G --> H[OpenAI Responses API]
F --> I[Reply cards and quick phrases]
H --> I
I --> J[User chooses, edits, or rejects]
J --> K[Device voice or streamed OpenAI speech]
- Listen: the browser's Web Speech API creates live captions when the user turns on Listen.
- Prepare: Cadence combines recent confirmed captions with user-approved style, personal details, local memory, and conversation boundaries.
- Choose: the user taps, edits, shortens, saves, rejects, or repairs a reply before it is spoken.
- Speak: Cadence uses instant device speech or selected OpenAI speech. Nothing is spoken automatically.
Product Highlights
Conversation support
- 3 to 4 diverse replies with intents such as agree, ask, react, joke, redirect, and reply.
- Start something offers user-led openers grounded in the saved voice and context.
- Keyword or spoken idea steering, plus warm, firm, and funny tone choices.
- Speculative prediction starts from a stable interim caption and final captions replace it after a 150 ms debounce. Superseded requests are cancelled and only one prediction request is in flight.
- Reply preview shows the caption that grounded a reply. Wrong context removes it and offers one-tap Undo.
- Low-confidence captions stay out of prediction until the user confirms or fixes them.
- Who said this? and Words Cadence should recognize are local, user-confirmed corrections. Cadence never silently treats an inferred voice identity as fact.
Personalization and agency
- Your voice turns sample messages into a compact style card that the user can review and edit.
- Personal details stores a preferred name, full name, pronouns, and optional context locally.
- Local memory tracks a small, viewable, clearable set of people and topics.
- Conversation kits save local settings for situations such as family dinner, a doctor visit, or work.
- Users can favorite replies, request shorter wording, ask for something more like them, reject a reply, or block future suggestions like it.
Fast and reliable expression
- One-tap quick reactions, feelings, repair phrases, custom speech, My needs, and Hold the floor.
- Editable needs, feelings, and repair phrases persist locally. A personal help reminder can point to an existing care plan, but Cadence never contacts or alerts anyone.
- The offline backup board keeps needs, feelings, favorites, and saved reply cards accessible without listening or AI.
- Instant device voice gives fast browser speech. Selected OpenAI voices provide higher-quality streamed speech when online.
- A 24-hour local session keeps the active transcript, staged replies, and Spoken log through a refresh.
Accessibility
- Large touch targets, high contrast, responsive tablet and mobile layouts, and visible focus rings.
- Keyboard support, screen-reader labels and live announcements, hover/focus/tap information tips.
- Single-switch scanning works with Space or Enter and has a configurable scan speed.
- Experimental eye-gaze focus uses local MediaPipe face landmarks and a five-point calibration to move the reply highlight. Space, Enter, or Select highlighted is always required before speech.
- Every modal traps keyboard focus, supports Escape to close, and restores focus to the control that opened it.
- Light and dark themes respect the user's choice and persist locally.
Privacy, Consent, and Safety
Cadence has no account system and no Cadence application database.
- Personal details, style card, local memory, phrase lists, preferences, kits, and session recovery are stored in this browser's
localStorage. - The user can inspect memory, clear the active session, erase all local Cadence data, or enable Private session. Private session prevents new captions, replies, memory, and diagnostic events from being retained locally.
- Cadence does not persist microphone audio.
- Eye-gaze focus requests camera permission only after the user explicitly starts it. Camera frames, face landmarks, calibration samples, and gaze coordinates are processed locally and are not uploaded or retained. The calibration coefficients alone are stored in this browser and can be removed with local data.
- In real mode, only the context needed for a user-requested prediction, rewrite, style learning, or speech action is sent to OpenAI. Responses requests set
store: false. - Real mode requires explicit in-app consent before a request is sent.
- Browser speech recognition is provided by the browser or its vendor. Users should review the browser's own privacy controls before turning on Listen.
- Local storage is not encrypted by Cadence. Use a locked device and clear local data after sensitive testing.
See Using Cadence for a simple guide and Pilot Protocol for privacy-preserving voluntary testing.
Technology
| Area | Implementation |
|---|---|
| Web app | Next.js App Router, React, strict TypeScript, Tailwind CSS |
| Live captions | Browser Web Speech API, with graceful unsupported and permission states |
| Reply intelligence | OpenAI Responses API, gpt-5.6-luna, low reasoning effort, structured JSON |
| Spoken output | Streamed OpenAI Audio Speech or browser speechSynthesis |
| Eye-gaze beta | MediaPipe Face Landmarker in the browser, local five-point calibration, confirmation-only selection |
| Personalization | Local style card, profile, memory, vocabulary corrections, and conversation kits |
| Offline support | Local reply/opening fallback, cached static shell, local backup board, device voice |
| Security | Same-origin request checks, input caps, consent gate, security headers, Vercel WAF guidance, and distributed Upstash Redis rate limiting in real mode |
| Deployment | Vercel |
Model and audio interfaces
Server routes keep paid model work separate from the client:
app/api/predict,initiate,expand,tone,style, andspeaklib/predict.ts,expand.ts,initiate.ts,toneAdjust.ts,speak.ts, andbrowser-transcribe.tslib/conversation-service.tsprovides the mock and real-mode boundary.
MOCK_MODE=1 keeps every model-facing action local and free. MOCK_MODE=0 enables the consent-gated OpenAI path.
Built With Codex and GPT-5.6
Cadence uses GPT-5.6 Luna for structured reply prediction, conversation initiation, keyword expansion, tone rewriting, and style-card creation. Low reasoning effort keeps the interaction appropriate for latency-sensitive live conversation. OpenAI Audio Speech handles high-quality online speech, while browser speech synthesis provides an immediate local option.
| Product decision | Why it matters | Codex and GPT-5.6 contribution |
|---|---|---|
| Prepare choices before the user acts | A late reply can miss the conversational moment. | Codex implemented cancellation and speculative prediction; GPT-5.6 returns varied structured candidates. |
| Keep the user in charge | AAC must preserve authorship and consent. | Codex built preview, edit, shorter, reject, save, block, and context-repair controls around model output. |
| Work through failure | Conversation should not stop when a network or provider fails. | Codex built mock mode, local fallbacks, backup board, device speech, and 24-hour session recovery. |
| Support limited motor control | The main path must not rely on precise pointing. | Codex implemented scanning, keyboard operation, focus management, accessible labels, and responsive layouts. |
| Protect user data and paid routes | Sensitive context and paid APIs need strong boundaries. | Codex added consent gating, validation, rate limiting, security headers, and local-first controls. |
| Measure participation, not only speed | Being heard matters more than a single efficiency number. | Codex added local metrics, debug timing, and an evaluation harness with clear caveats. |
Run Locally
Requirements: Node.js 20+ and npm.
npm install
$env:MOCK_MODE="1"
npm run dev
Open http://localhost:3000 for the landing page or http://localhost:3000/app for Cadence.
Quick Demo
- Open
/app. - Select More, then Play demo conversation.
- Tap a reply card. It enters the Spoken panel and plays with the configured voice.
- Try Start something, My needs, or Hold the floor.
- Open More ways to respond for quick reactions, feelings, tone, and exact custom speech.
- Turn off the network to verify local replies, phrase lists, backup board, and device speech fallback.
Real Mode Configuration
Create an ignored .env.local file:
MOCK_MODE=0
OPENAI_API_KEY=your_openai_key
UPSTASH_REDIS_REST_URL=your_upstash_rest_url
UPSTASH_REDIS_REST_TOKEN=your_upstash_rest_token
TTS_MODEL=gpt-4o-mini-tts
TTS_VOICE=marin
| Variable | Required | Purpose |
|---|---|---|
MOCK_MODE | No | 1 uses free local mocks. 0 enables real OpenAI requests. |
OPENAI_API_KEY | Real mode | Server-only key for Responses and Audio Speech. |
UPSTASH_REDIS_REST_URL | Real mode | Server-only distributed rate-limit endpoint. |
UPSTASH_REDIS_REST_TOKEN | Real mode | Server-only distributed rate-limit token. |
TTS_MODEL | No | Defaults to gpt-4o-mini-tts. |
TTS_VOICE | No | Defaults to marin; users may choose a supported OpenAI voice locally. |
Never expose secrets in NEXT_PUBLIC_* variables, client code, screenshots, or commits.
Production checklist
- Keep
MOCK_MODE=1in Vercel Preview deployments. - Set
MOCK_MODE=0,OPENAI_API_KEY, and both Upstash variables only in Production. - Publish a Vercel WAF IP rate-limit rule for
/api/*, 20 requests per 60 seconds, returning429. - In real mode, Cadence fails closed with
503before a paid call if Upstash is not available. - Confirm
/api/healthafter deployment. It returns only{ status, mode }.
Evaluation and Testing
Cadence estimates typing-time savings from the actual length of each spoken message using a stated baseline of 15 words per minute. It also tracks replies spoken, conversation initiations, response time, edits, and rejections locally.
npm run typecheck
npm run lint
npm run build
npm run eval
npm run test:e2e
npm run evalruns three canned fixtures once and reports candidate count, intent diversity, and an internal tap/keystroke estimate.- The Google SpeakFaster 57% motor-action-savings result is shown only as context. Cadence's internal estimate is not a direct benchmark comparison.
npm run test:e2eruns the mock-mode Chromium flow for onboarding, personalization, vocabulary, kits, private session, context repair, repair phrases, local help reminders, needs, offline fallback, privacy controls, and API guards.
Current Limits and Next Validation
- Browser caption accuracy and confidence signals vary by platform and environment.
- Cadence does not do automatic speaker identification. Speaker labels are user-confirmed local labels.
- The service worker supports offline app-shell recovery, not offline AI, browser captions, or online TTS.
- Real mode requires Vercel WAF and Upstash configuration before broad public testing.
- Cadence needs structured voluntary usability feedback from people who use AAC, family members, caregivers, and SLPs before any clinical or broad public claim.
- Keep clinician-recommended low-tech communication backups available alongside the app.
Analysis
View
Metric
- 12
- 1
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
- JavaScriptIn code
- Next.jsIn code
- OpenAIIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- VercelClaimed
7 of 8 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
- CodexConfig
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
383 KB
Source files
64
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
usv240/cadence
75 files · 630 KB · @ d563874
Structure
Interface
9 files · 12%Screens, components and styles rendered to the user.
API & routing
7 files · 9%Request entry points: routes, handlers and controllers.
Application logic
34 files · 45%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
- TypeScript83%
- Markdown13%
- CSS3%
- JavaScript0%
- YAML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 19- @mediapipe/tasks-vision
- @upstash/ratelimit
- @upstash/redis
- @vercel/analytics
- next
- openai
- react
- react-dom
- +11 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.