How ishurana001/ai-interviewer-ongoing works
AI Mock Interviewer guides a candidate from signing in and preparing a resume or job description to generating and saving a practice interview, then opening the session. The sampled creation flow uploads resumes through ImageKit and delegates question generation to an n8n webhook; Convex stores interview sessions. The README also describes interactive follow-ups, scorecards, and actionable feedback, but their implementation was not sampled, so those capabilities are shown at the interview area without inferred internal wiring. Authentication and rate limiting are represented where evidenced.
Main entry points: CreateInterviewDialog.tsx Interview setup · route.tsx Question generation API · page.tsx Interview session · Interview.ts Interview functions
Components 20
Candidate experience
- Sign-in / sign-up
app/(auth) - Dashboard
app/(routes)/dashboard/page.tsx - Interview setup
app/(routes)/_components/CreateInterviewDialog.tsx - Resume upload form
app/(routes)/_components/ResumeUpload.tsx - Job description form
app/(routes)/_components/JobDescription.tsx - Interview session
app/(routes)/interview/[interviewId]/page.tsx - Start interview
app/(routes)/interview/[interviewId]/start/page.tsx - Follow-ups and feedback
app/(routes)/interview/[interviewId]
Interview generation
- Question generation API
app/api/generate-interview-questions/route.tsx - Rate-limit configuration
utils/arcjet.ts
Identity and persistence
- Interview functions
convex/Interview.ts - User functions
convex/users.ts - Data schema
convex/schema.ts - Convex database
External services
- Clerk authentication
- ImageKit storage
- n8n workflow
- OpenAI model
- Arcjet service
Other components
- Candidate
Connections 23
- Candidate → Sign-in / sign-up: signs in
- Sign-in / sign-up → Clerk authentication: authenticates with
- Candidate → Dashboard: opens
- Dashboard → Interview setup: starts setup
- Interview setup → Resume upload form: collects resume
- Interview setup → Job description form: collects role details
- Interview setup → Question generation API: submits inputs
- Question generation API → Clerk authentication: gets current user
- Question generation API → Rate-limit configuration: applies limits
- Rate-limit configuration → Arcjet service: checks quota
- Question generation API → ImageKit storage: uploads resume
- Question generation API → n8n workflow: requests questions
- n8n workflow → OpenAI model: generates questions
- Question generation API → Interview setup: returns questions
- Interview setup → Interview functions: saves session
- Interview functions → Convex database: reads and writes
- User functions → Convex database: reads and writes
- Data schema → Convex database: defines tables
- Interview setup → Interview session: navigates to session
- Interview session → Interview functions: loads session
- Interview session → Start interview: opens start flow
- Interview session → Follow-ups and feedback: provides practice and review
- Follow-ups and feedback → n8n workflow: automation workflows