Let Me Ask is a proof of concept (POC) for a full-stack app that lets users record live audio (like from live streams), upload it, and have it transcribed and processed with AI.
The platform leverages vector databases to provide accurate and context-aware answers to questions about the recorded content, by combining transcription, embeddings, and semantic search.
This was developed during the NLW Agents workshop, hosted by Rocketseat 💜.
- Record & Upload Audio: Capture audio in the browser and upload it.
- Transcription: Audio is transcribed using the Gemini API.
- Semantic Search: Embeddings are generated from transcripts and stored in PostgreSQL for vector search.
- Ask Questions: Get AI-generated answers based on your audio.
- Rooms: Organize sessions by room.
- Modern Frontend: Fast and interactive React UI.
- Node.js with Fastify for high-performance APIs
- PostgreSQL with vector extension for efficient embedding storage and similarity search
- Drizzle ORM for type-safe database access and migrations
- Google Gemini API for transcription, embeddings, and answer generation
- Zod for schema validation
- Docker for easy local development and database setup
- React (with Vite) for a fast, modern UI
- React Query for efficient data fetching and caching
- React Hook Form and Zod for robust form handling and validation
- Tailwind CSS for rapid UI development
- Integrating real-time audio recording and chunked uploads in the browser
- Handling large audio files and splitting them for efficient processing
- Generating and storing high-dimensional embeddings in PostgreSQL
- Performing fast, accurate semantic search using vector similarity
- Orchestrating multiple AI tasks (transcription, embedding, Q&A) with the Gemini API
- Ensuring a smooth developer experience with type safety and modern tooling
- Node.js (v22+)
- pnpm
- Docker (for running PostgreSQL with vector extension)
- Google Gemini API Key
git clone git@github.com:bonizario/let-me-ask.git
cd let-me-askcd server
docker compose up -dThis will start a PostgreSQL instance with vector support.
Create a .env file in the server directory
GEMINI_API_KEY="your_google_gemini_api_key"
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/agents"
PORT="3333"Install the pnpm package manager if you haven't already:
npm install -g pnpm@latestThen, install the project dependencies on both server and web directories:
pnpm installcd server
pnpm db:migrate
pnpm db:seedpnpm devpnpm devThe frontend will be available at http://localhost:5173 and the API at http://localhost:3333.
This project is licensed under the MIT License. See the LICENSE file for details.
Feel free to reach out if you have any questions, suggestions, or just want to chat about the project!
My LinkedIn: https://www.linkedin.com/in/gabriel-bonizario