AI-powered interview practice tool. Create scenarios you're preparing for, build rubrics, and practice against an AI interviewer with coaching feedback.
- AI Practice Interviews - Realistic conversational interviews powered by Gemini with real-time transcription
- Rubric-Based Evaluation - Configurable scoring criteria with automated assessment
- Multi-Language Support - English, Spanish, French, German, Portuguese, Japanese, Korean, Chinese
- Real-Time Voice/Video - LiveKit-powered audio/video with Deepgram STT and Deepgram TTS
- Coaching Feedback - AI-generated practice feedback and skill assessment
| Layer | Technology |
|---|---|
| Frontend | Next.js 16, React 19, TailwindCSS 4, Radix UI |
| API | tRPC, React Query |
| Database | PostgreSQL, Drizzle ORM |
| Auth | Better Auth |
| AI | Google Gemini |
| Voice | LiveKit, Deepgram (STT + TTS), Silero (VAD) |
rcruit/
├── javascript/ # Shared packages
│ ├── agent/ # LiveKit AI agent worker
│ ├── db/ # Database schema & migrations
│ ├── trpc/ # API routers
│ └── ui-react/ # Shared UI components
└── web/rcruit/ # Next.js web application
- Node.js 20+
- pnpm
- Docker (for local PostgreSQL)
pnpm installdocker-compose up -d
pnpm --filter @rcruit/db db:migrate# Start all services
pnpm dev
# Or individually:
pnpm --filter @rcruit/web dev
pnpm --filter @rcruit/agent devpnpm build| Command | Description |
|---|---|
pnpm dev |
Start development servers |
pnpm build |
Build all packages |
pnpm typecheck |
Run TypeScript checks |
pnpm lint |
Run linting |
pnpm check |
Check formatting |
pnpm fix |
Auto-fix lint/format issues |
pnpm --filter @rcruit/db db:generate |
Generate database migrations (Atlas) |
pnpm --filter @rcruit/db db:migrate |
Apply database migrations (Atlas) |
Create .env files with the required API keys:
DATABASE_URL- PostgreSQL connection stringBETTER_AUTH_SECRET- Authentication secretBETTER_AUTH_URL- Authentication base URLGOOGLE_API_KEY- Gemini API keyLIVEKIT_*- LiveKit credentialsDEEPGRAM_API_KEY- Deepgram API key (STT + TTS)STRIPE_SECRET_KEY- Stripe API secret keySTRIPE_WEBHOOK_SECRET- Stripe webhook signing secretSTRIPE_PRICE_STARTER/STRIPE_PRICE_STANDARD/STRIPE_PRICE_PRO- Stripe price IDsTEMPORAL_ADDRESS- Temporal server addressTEMPORAL_NAMESPACE- Temporal namespace (default:default)TEMPORAL_API_KEY- Temporal Cloud API key (auto-enables TLS)GOOGLE_CLIENT_ID/GOOGLE_CLIENT_SECRET- Google OAuth (optional)MICROSOFT_CLIENT_ID/MICROSOFT_CLIENT_SECRET/MICROSOFT_TENANT_ID- Microsoft OAuth (optional)
Private