The Problem
Developers and knowledge workers need a quick way to capture spoken ideas, turn them into searchable text, and extract actionable items without manual transcription or note‑taking.
What This Does
noteGPT is a full‑stack web app that records voice notes in the browser, stores the audio in Convex file storage, and pipelines the file through Replicate‑hosted Whisper for transcription. The transcript is then summarized and turned into task items using a Together.ai LLM (Mixtral) and embeddings for vector search.
Key UI components live in app/ and components/: app/record/page.tsx renders the recording UI (desktop & mobile variants in components/pages/recording). app/dashboard/page.tsx shows saved notes, summaries, and generated action items (cards defined in components/pages/dashboard/RecordedfileItemCard.tsx).
Backend logic resides in convex/: convex/notes.ts defines CRUD operations for notes and references convex/whisper.ts (calls Replicate) and convex/together.ts (LLM summarization). convex/generated/server.js is the compiled entry point for Convex cloud functions.
Authentication is handled by Clerk (app/auth.ts and ConvexClientProvider.tsx). Styling is Tailwind‑based (tailwind.config.ts, app/globals.css).
How To Use It
Install dependencies npm ci Create a Convex project (first run will prompt login) npm run dev # starts Next.js dev server and Convex watcher Configure required secrets Add the following keys to Convex environment variables (via Convex dashboard): CLERKISSUERURL (from your Clerk account) REPLICATEAPIKEY (Replicate Whisper) TOGETHERAPIKEY (Together LLM & embeddings) Store local dev keys in .env.local as documented in README.example. Open the app Next.js runs on http://localhost:3000 by default. Sign in with Clerk, then use the “Record” page to capture audio.
The repo does not contain a Dockerfile or explicit CI scripts; the only documented start command is npm run dev.
Real‑World Use
A product manager could embed this UI in an internal portal. After a sprint planning meeting, they click “Record”, speak the meeting recap, and within seconds receive a list of action items that can be copied into Jira or Notion (future integration is outlined in the README). The notes are searchable via vector search powered by Together embeddings.
Code Health & Issues
Medium – No test suite – No tests or .test. files; code paths (e.g., Whisper/LLM calls) are unverified. Medium – Missing CI/CD – No .github/workflows, circle.yml, etc.; no automated lint, type‑check, or test gate. Medium – No LICENSE – Repository lacks a license file, leaving usage rights ambiguous. Low – Hard‑coded env var names – convex/auth.config.js expects CLERKISSUER_URL; missing validation could cause runtime failures if mis‑typed. Low – Minimal error handling – Functions in convex/whisper.ts and convex/together.ts forward external API errors directly to the client; no retry or user‑friendly messages. Low – UI layout shifts – README notes a layout‑shift issue on dashboard refresh; current code does not show a loading state (app/dashboard/dashboard.tsx).
No obvious security leaks (e.g., secrets are not committed). TypeScript provides basic type safety, and the project compiles without errors.
The Bottom Line
noteGPT delivers a functional prototype for voice‑to‑task conversion using modern serverless services, with clear separation between front‑end UI and Convex back‑end. It is suitable for teams that can manage their own CI, testing, and licensing, and who are comfortable adding the missing production polish (error handling, loading states, CI). If you need a quick internal tool and are prepared to extend it, this repo provides a solid starting point.