Own builds
baithak
Most notetakers stop at a transcript. This one pulls out who owns which task and gives each person only theirs, keeps every account's history private, and is pluggable at the speech-to-text layer, so you bring your own engine, not just your own key.
What it is
- Voice-AI meeting notetaker: records the mic or a meeting tab, or takes an uploaded file, and returns a transcript, a topic-wise summary, and action items grouped by the person who owns them.
- Accounts with per-user data isolation: every session is scoped to its owner at the query layer, so no account can read or edit another's.
- Pluggable speech-to-text: a provider adapter lets a user point transcription at their own OpenAI-compatible engine, not just their own key.
- Open public demo on server keys, with optional sign-in that saves history.
Proof
What I learnt
Serverless keeps no memory between requests+
The first version worked locally and lost every session in production. An in-process store is per-instance and resets on cold starts, only an external database is shared across requests. History, add-task, and 'it feels like a product' turned out to be the same bug: no real persistence.
Auth is data scoping, not a login button+
The login screen is the easy half. The half that matters is a filter by user id on every read and write, miss it on one query and people see each other's meetings. I tested the isolation harder than the login.
A demo dies the moment it asks you to sign up+
I gated recording behind an account and it killed the demo. The fix was to make auth additive, not a gate: the public path runs and signing in only adds saved history.
Bring-your-own-provider is a seam, not a rewrite+
Putting every provider call behind one module meant adding a whole new speech-to-text engine is one adapter file plus a dropdown, not a change to the routes or the UI.
Built with
Next.js 16 · React 19 · TypeScript · Clerk · Neon Postgres · Groq Whisper · Gemini · Vercel