← Back to portfolio

PERSONAL PROJECT / VOICE-FIRST AI

Focus.

Stay with the work.
Talk through the rest.

Talk to Spark to capture a task, move a meeting, or plan when to leave. I built this desktop assistant to keep my attention on the main task, with less reaching for the mouse and keyboard to manage everything around it.

Voice inputAI actionsSpoken replies
SPARK + THE DAY'S PLANACTUAL APP / SYNTHETIC DATA
Focus with Spark's conversation panel beside tasks and a calendar. Voice controls are visible; a scripted example captures an idea and plans a departure.
The real interface with a scripted conversation and synthetic tasks. The example's travel time is supplied; no live AI, microphone, calendar, or route service was used for this capture.
Platform
Electron desktop app
Core stack
TypeScript · React · SQLite
My role
Creator & developer, with AI-assisted coding

ENGINEERING

From a spoken request to an action.

A complete voice pipeline

Global push-to-talk → audio capture → Whisper transcription → Spark → optional speech. Release handling, silence detection, and duplicate-send protection make the interaction usable.

Tools behind the conversation

OpenAI tool calls map requests to task, calendar, and focus-session operations. A named Electron IPC bridge connects the React interface to services with context isolation.

Planning with context

Google Calendar OAuth supplies events and locations. A reminder scheduler combines upcoming commitments, task estimates, and starting-location context to suggest work that fits.

Local data, shared across views

SQLite stores tasks and sessions with write-ahead logging and foreign keys. Plan, Focus, and Review views use the same records, including timers, subtasks, and notes.

LANGUAGES & FRAMEWORKS

Built with.

Languages
TypeScript · SQL · HTML/CSS
App & interface
Electron · React · Tailwind CSS
Data & AI
SQLite · OpenAI SDK · Google APIs
Build & testing
electron-vite · Vite · Vitest

Connected workflow: TickTick tasks, Google Calendar events, and Google Maps travel-time estimates bring task, trip, and departure planning into the conversation.

Explore the Focus session & Review views
FOCUS SESSIONPORTRAIT LAYOUT
A synthetic task, subtasks, Pomodoro timer, and session notes in Focus's portrait layout.
One task, smaller steps, a timer, and notes. Synthetic demo data.
REVIEWSYNTHETIC HISTORY
Focus's Review view with synthetic habit streaks, focus-time history, and personal records.
Session history and progress inform the next check-in.
Explore my other projects →