Skip to content

ThanasisSoftwareDeveloper/V61-tier3-team-34

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

71 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎯 DashFetch β€” AI-Powered Interview Prep

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.

Next.js Tailwind CSS Supabase Groq Vercel CI Release


Live app: v61-tier3-team-34.vercel.app Upload a .txt, .pdf, or .docx job description (or paste it) and go straight from job posting to practice questions.


πŸ“Œ Project Overview

The Challenge

Empower job seekers with fast, personalized, and effective interview preparation by transforming any job description into tailored, role-specific practice questions.

The Vision

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.


πŸ—“οΈ Voyage Timeline

Chingu Voyage V61 Β· Tier 3 Β· Team 34 πŸ“… 1 June 2026 – 29 July 2026


✨ Key Features

  • πŸ“‚ Upload or paste a job description β€” .txt, .pdf, .docx supported (.doc intentionally 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

πŸ“Έ Screenshots

Home β€” upload or paste a job description Home screen

How it works, why choose DashFetch, and the team How it works and team section

FAQ FAQ screen

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: ![Alt text](./docs/screenshots/filename.png).


πŸ—οΈ Architecture

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/ingest is a pure parsing/extraction route β€” it never talks to Groq. Structured extraction and question generation are separate steps (/api/parse and /api/generate-questions), each with its own prompt and schema.


πŸ› οΈ Tech Stack

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.


πŸš€ Getting Started

Prerequisites

  • Node.js 18+
  • A Supabase project
  • A Groq API key

1. Clone the repo

git clone https://github.com/ThanasisSoftwareDeveloper/V61-tier3-team-34.git
cd V61-tier3-team-34

2. Install & configure

npm install
cp .env.example .env.local   # fill in Supabase + Groq credentials
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
GROQ_API_KEY=

Never commit .env.local β€” it is already in .gitignore. Use .env.example as a reference.

Run supabase/schema.sql in the Supabase SQL editor for your project to set up the database.

3. Run locally

npm run dev

App runs at http://localhost:3000.

Scripts

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

πŸ“– Usage

  1. Open the live app (or http://localhost:3000 locally)
  2. Upload a job description file, or paste the text directly
  3. Select the number of questions per category (up to 5)
  4. Review the extracted job data on the Job Summary screen
  5. Browse generated Technical / Behavioral / Experience questions
  6. 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.


βš™οΈ Groq Free-Tier Constraints

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-versatile to llama-3.1-8b-instant specifically to stay within TPM limits
  • Question generation uses 3 separate Groq calls (one per category) to ensure the correct number of questions is returned

πŸ›‘οΈ Reliability & Resiliency

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.


πŸ§ͺ Testing & CI

Check Tool Status
Unit tests Vitest βœ… 70+ tests passing
CI pipeline GitHub Actions βœ… runs on every Pull Request
E2E tests Playwright βœ… implemented

πŸ—ΊοΈ Roadmap

  • 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

πŸ‘₯ Meet the Team β€” Chingu Voyage V61, Tier 3, Team 34

Name Role GitHub LinkedIn
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).


πŸ“„ License

Built as part of Chingu Voyage V61 Β· 1 June 2026 – 29 July 2026.


Built by the DashFetch team Β· Live App Β· Repo

Releases

Packages

Contributors

Languages