The program's coaching frameworks were living in separate chat assistants, and a member had to know which one to open. The founder wanted one app instead.
- messages auto-sent from voice: the member confirms every one
- 0
- tables designed with row-level security
- 7
- database functions behind the chat
- 4
From the build summary and schema, November 2025. This was an MVP phase, not a shipped product.
Leadership-coaching startup, Oct to Nov 2025, MVP phase
Watch it run.
Read the narration
The program's coaching frameworks lived in separate chat assistants, and a member had to know which one to open. The founder wanted one app instead.
Members sign in with Google through Supabase Auth, with Microsoft configured alongside it. A database trigger creates each profile on first login, and a three-step onboarding runs once.
To talk hands-free, the member taps the mic. The browser records the audio, n8n sends it to OpenAI Whisper, and the transcript fills the input box.
Voice never sends on its own. The member always sees the transcript, and can edit it, before anything goes out.
On send, the add_message function saves it. A trigger bumps the thread and titles it from its first message, and four database functions are all the front end needs.
The schema is designed so that a member can only ever read their own conversations. Row-level security is on in all seven tables, so even a hand-crafted request for another member's thread comes back empty.
OAuth tokens for connected tools stay in n8n, and the database keeps only display metadata. Tables for documents with vector chunks, and for voice-session auditing, are ready for the next phase.
By the end of the MVP phase in November 2025, sign-in, voice input and private history were working. The agents' replies, the calendar and document retrieval came next.
Before the build.
A dispatcher agent routing to three specialists was the plan. The MVP had one job first: prove the foundation would hold, with secure accounts, private conversations and voice input that works hands-free.
The rule the schema was built around
A member can only ever read their own conversations.
Row-level security is on every one of the seven tables, so it holds even against a hand-crafted request.
What I built.
Row-level security on every table, four database functions behind the chat, and a voice path that waits for send.
Four parts, all foundation, and the last one is for the phase after this.
- Sign-in and a first-run onboarding
- Private chat history
- Hands-free voice input
- A schema ready for the next phase
What is true today.
- Working at the end of the MVP phase: Google sign-in, automatic profiles, onboarding, a high-contrast dark theme, voice transcription into the input, saved chat threads with automatic titles, and history under row-level security.
Still open
- Next in the plan at that point: wiring the specialist agents' replies into the chat, the calendar connection and document retrieval.
Updated
The details, when you need them.
Sign-in and a first-run onboarding
Supabase Auth with Google sign-in, Microsoft configured alongside it, and a database trigger that creates each member's profile on first login. A three-step swipe onboarding in Framer Motion runs once: welcome, connect tools, and microphone permission.
Private chat history
A trigger bumps and auto-titles each thread from its first message, and four database functions are all the front end needs.
Hands-free voice input
The browser records audio, n8n sends it to OpenAI Whisper, and the transcript fills the input box for the member to check.
A schema ready for the next phase
Tables for connected accounts, documents with vector chunks for retrieval, and voice-session auditing, all under row-level security.
- On demand, when a member taps the mic
- Runs in the member's own signed-in session
- Never sends what it heard
voice-to-draft
Member taps the mic
permission asked once, at onboarding
Record audio in the browser
audio/webm
POST to the n8n voice webhook
CORS handled in n8n
Transcribe with OpenAI Whisper
Return the transcript
Fill the input box
the member reviews, then sends
Save the message
add_message, row-level security
Voice input / never auto-sends
What will it never do?
- Row-level security on every table: a member cannot read anyone else's history, even with a hand-crafted request.
- Voice never auto-sends. The member always sees and can edit the transcript first.
- OAuth tokens for connected tools stay in n8n; the database only holds display metadata.
- Profiles are created by a database trigger, not by front-end code that could be skipped.
What I could not show you
- The program, its founder and its coaching frameworks are not described here, and no real screen of the app appears on this page: the walkthrough runs on a replica with sample data.
- This was an MVP phase. Nothing above is a claim about a shipped product or about member results.
Measurements and project details
- Client
- Leadership-coaching startup
- Industry
- Coaching and education
- Region
- Remote
- Timeline
- Oct to Nov 2025, MVP phase
- Role
- Full-stack build: front end, database, auth and voice
Stack
- Lovable
- React
- Tailwind CSS
- Framer Motion
- Supabase Auth
- PostgreSQL
- Row-level security
- n8n
- OpenAI Whisper