Turn any job description into tailored, role-specific interview questions β upload a file or paste the text, and get a structured breakdown plus a Technical / Behavioral / Experience question set to practice with.
Live app: v61-tier3-team-34.vercel.app Upload a
.txt,.docxjob description (or paste it) and go straight from job posting to practice questions.
Empower job seekers with fast, personalized, and effective interview preparation by transforming any job description into tailored, role-specific practice questions.
Candidates waste time hunting for practice questions that don't even match the role they're applying for β when the job description itself already contains everything needed to prepare properly. DashFetch reads the responsibilities, required skills, and experience level from a JD and turns them into behavioral, technical, and experience-based questions that mirror what real interviewers ask.
Chingu Voyage V61 Β· Tier 3 Β· Team 34 π 1 June 2026 β 29 July 2026
- π Upload or paste a job description β
.txt,.pdf,.docxsupported (.docintentionally excluded) - π§ AI-powered extraction of structured job data (title, skills, responsibilities, seniority, etc.) via Groq
- β Generated interview questions across three categories β Technical, Behavioral, Experience-based
- π Job Summary screen to review the extracted data before practicing
- π€ Mock Interview mode β one question at a time, with a "Show Answer" reveal and STAR-method tips
- π¨ Consistent UI design β unified button styles and accessible cursor interactions across all pages
- π± Fully responsive, accessible UI
Home β upload or paste a job description

How it works, why choose DashFetch, and the team

Screenshots live in
docs/screenshots/at the repo root. To add more (e.g. Job Summary, Interview Questions, Mock Interview), drop the PNG/JPG in that folder and reference it the same way:.
V61-tier3-team-34/
βββ app/
β βββ page.js # Home β upload/paste a job description
β βββ job-summary/page.js # Extracted job data review
β βββ interview-questions/page.js # Questions by category (tabs)
β βββ mock-interview/page.js # One-question-at-a-time practice
β βββ faq/page.js # FAQ page
β βββ api/
β βββ ingest/route.js # File text extraction only β no Groq calls
β βββ parse/route.js # Groq: raw JD text -> 17-field structured JSON
β βββ generate-questions/route.js # Groq: structured JSON -> question set (3 separate calls per category)
βββ components/ # Sidebar, Footer, cards, upload zone
βββ lib/
β βββ jobExtraction.js # Groq prompt + schema for JD parsing
β βββ questionGeneration.js # Groq prompt for question generation
βββ supabase/schema.sql # Database schema (run once per project)
βββ test/ # Vitest unit tests
βββ e2e/ # Playwright E2E tests
βββ .github/workflows/ # CI β Vitest on every PR
/api/ingestis a pure parsing/extraction route β it never talks to Groq. Structured extraction and question generation are separate steps (/api/parseand/api/generate-questions), each with its own prompt and schema.
| Layer | Technology |
|---|---|
| Framework | Next.js 15/16 (App Router) β full-stack: React frontend + API routes backend |
| Styling | Tailwind CSS, Plus Jakarta Sans & Inter |
| Database | Supabase (PostgreSQL) |
| AI Layer | Groq β llama-3.1-8b-instant |
| File parsing | pdf-parse (PDF), mammoth (DOCX) |
| Testing | Vitest (unit), Playwright (E2E) |
| Hosting | Vercel |
| CI/CD | GitHub Actions β runs Vitest on every Pull Request |
Next.js is full-stack on its own, so frontend and backend deploy together as a single Vercel project.
- Node.js 18+
- A Supabase project
- A Groq API key
git clone https://github.com/ThanasisSoftwareDeveloper/V61-tier3-team-34.git
cd V61-tier3-team-34npm install
cp .env.example .env.local # fill in Supabase + Groq credentialsNEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
GROQ_API_KEY=
Never commit
.env.localβ it is already in.gitignore. Use.env.exampleas a reference.
Run supabase/schema.sql in the Supabase SQL editor for your project to set up the database.
npm run devApp runs at http://localhost:3000.
| Command | Description |
|---|---|
npm run dev |
Start the local dev server |
npm run build |
Production build |
npm run lint |
Run ESLint |
npm test |
Run the Vitest suite once |
npm run test:watch |
Run Vitest in watch mode |
- Open the live app (or
http://localhost:3000locally) - Upload a job description file, or paste the text directly
- Select the number of questions per category (up to 5)
- Review the extracted job data on the Job Summary screen
- Browse generated Technical / Behavioral / Experience questions
- Switch to Mock Interview mode to practice one question at a time
β³ On first use after a period of inactivity, file-upload parsing may have a short cold-start delay β this is expected Vercel free-tier behavior.
The Groq free tier's tokens-per-minute limit is a hard constraint the app is built around, not an edge case:
- Input text is truncated at 24,000 characters before being sent to Groq
- The model was switched from
llama-3.3-70b-versatiletollama-3.1-8b-instantspecifically to stay within TPM limits - Question generation uses 3 separate Groq calls (one per category) to ensure the correct number of questions is returned
To handle Groq's free-tier limits and potential network hiccups, the backend implements a customized Exponential Backoff with Jitter retry framework and isolated database persistence callbacks.
π Read the full AI Services Documentation for deep-dives into rate-limiting, retry formulas, and database resilience.
| Check | Tool | Status |
|---|---|---|
| Unit tests | Vitest | β 70+ tests passing |
| CI pipeline | GitHub Actions | β runs on every Pull Request |
| E2E tests | Playwright | β implemented |
- Rate limit handling & exponential backoff
- Environment variables documentation (.env.example)
- Consistent button styles & cursor-pointer across all pages (CT-76, CT-77)
- Question count fix β separate Groq call per category (CT-74)
- Playwright E2E test suite
- Mobile navigation accessibility fix
- FAQ section
- Loading skeletons for Job Summary & Interview Questions pages
- Error state UI
- Server-side word count enforcement for PDF/DOCX uploads
- Session retrieval API
- Vercel deployment guide
| Name | Role | GitHub | |
|---|---|---|---|
| Roger Banner | Scrum Master | RBanner | Roger Banner |
| Val Lysenko | Technical Guide | Valeriusdev | Valeriy Lysenko |
| Vanessa Santos | Web Developer | nessa-dev | Vanessa Santos |
| Simbongile Mkhotheli | Web Developer | simbongile-mkhotheli | Simbongile Mkhotheli |
| Thanasis Koufos | Web Developer | ThanasisSoftwareDeveloper | Thanasis Koufos |
| Jason Mui | Web Developer | jsnmui | Jason Mui |
Project tracked on Jira: bannerbright.atlassian.net (project CT).
Built as part of Chingu Voyage V61 Β· 1 June 2026 β 29 July 2026.
