Separate chat assistants, one co-pilot MVP, and a voice that never auto-sends

Lovable front end, Supabase sign-in with row-level security, private chat history and hands-free voice input through n8n and Whisper, for program members. 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.

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.

Recreated with sample data. Waiting time is sped up.
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.

  1. Sign-in and a first-run onboarding
  2. Private chat history
  3. Hands-free voice input
  4. 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

  1. Member taps the mic

    permission asked once, at onboarding

  2. Record audio in the browser

    audio/webm

  3. POST to the n8n voice webhook

    CORS handled in n8n

  4. Transcribe with OpenAI Whisper

  5. Return the transcript

  6. Fill the input box

    the member reviews, then sends

  7. 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