Skip to content

Job description summarizer#100

Merged
aniruddhaadak80 merged 3 commits intoaniruddhaadak80:mainfrom
paratha14:job_description_summarizer
Mar 13, 2026
Merged

Job description summarizer#100
aniruddhaadak80 merged 3 commits intoaniruddhaadak80:mainfrom
paratha14:job_description_summarizer

Conversation

@paratha14
Copy link
Contributor

@paratha14 paratha14 commented Mar 12, 2026

Description/Context

Added a JD Summarizer feature that extracts the 5 most important requirements from any job description using AI, displaying them as clean bullet points in an animated panel — giving users instant clarity without replacing the full JD used for analysis.

Files changed:

  • gemini.ts — Added summarizeJD() function to extract key requirements via Gemini
  • summarize.ts (new) — Server action that calls summarizeJD() and returns results to the client
  • page.tsx — Added Summarize button, animated summary panel, dismiss functionality, and related state/handler

Type of Change

  • 🐛 Bug fix (non-breaking change which fixes an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 🛠️ Refactor (code improvement without functional change)
  • 📚 Documentation Update
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)

Visuals (if applicable)

image image image

Checklist before requesting a review

  • I have read the CONTRIBUTING.md guide.
  • I have tested these changes locally (no build errors).
  • My code successfully passes npm run lint.
  • My code follows the consistent styling/patterns of the codebase.
  • I have added/updated comments in complex logic.

@netlify
Copy link

netlify bot commented Mar 12, 2026

👷 Deploy request for career-zen pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit 8f97bdb

@vercel
Copy link

vercel bot commented Mar 12, 2026

@paratha14 is attempting to deploy a commit to the Aniruddha Adak's projects Team on Vercel.

A member of the Team first needs to authorize it.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a JD Summarizer feature that uses Gemini to extract 5 key requirements from a pasted job description and shows them in an animated, dismissible UI panel on the home page.

Changes:

  • Added summarizeJobDescription() in the Gemini helper to prompt for 5 core requirements and parse JSON output.
  • Added a new server action summarizeJD() to call the Gemini summarizer and return a success/error union.
  • Updated page.tsx with a “Summarize” button, loading state, and animated summary panel with dismiss control.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

File Description
src/lib/gemini.ts Adds Gemini-based JD summarization + JSON parsing for requirements output.
src/app/actions/summarize.ts New server action wrapper for JD summarization results/errors.
src/app/page.tsx UI wiring: summarize trigger, loading state, animated requirements panel + dismiss.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

<button
type="button"
onClick={() => setJdSummary(null)}
className="text-slate-500 hover:text-slate-300 transition-colors"
Comment on lines +5 to +14
export async function summarizeJD(jobDescription: string): Promise<
{ success: true; data: string[] } | { success: false; error: string }
> {
if (!jobDescription || jobDescription.trim().length < 50) {
return { success: false, error: "Job description is too short to summarize." };
}

try {
const requirements = await summarizeJobDescription(jobDescription);
return { success: true, data: requirements };
Comment on lines +190 to +197
const response = await generateContentWithRetry(ai, {
model: "gemini-3-flash-preview",
contents: prompt,
});

const text = (response.text ?? "").replace(/```json/g, "").replace(/```/g, "").trim();
const parsed = JSON.parse(text) as { requirements: string[] };
return parsed.requirements;
Comment on lines +63 to +68
const res = await summarizeJD(jobDescription);
setIsSummarizing(false);
if (res.success) {
setJdSummary(res.data);
} else {
showToast(res.error, 'error');
@aniruddhaadak80 aniruddhaadak80 merged commit 5e94b62 into aniruddhaadak80:main Mar 13, 2026
5 of 6 checks passed
@aniruddhaadak80
Copy link
Owner

aniruddhaadak80 commented Mar 13, 2026

Description/Context

Added a JD Summarizer feature that extracts the 5 most important requirements from any job description using AI, displaying them as clean bullet points in an animated panel — giving users instant clarity without replacing the full JD used for analysis.

Files changed:

  • gemini.ts — Added summarizeJD() function to extract key requirements via Gemini
  • summarize.ts (new) — Server action that calls summarizeJD() and returns results to the client
  • page.tsx — Added Summarize button, animated summary panel, dismiss functionality, and related state/handler

Type of Change

  • 🐛 Bug fix (non-breaking change which fixes an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 🛠️ Refactor (code improvement without functional change)
  • 📚 Documentation Update
  • 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)

Visuals (if applicable)

image image image

Checklist before requesting a review

  • I have read the CONTRIBUTING.md guide.
  • I have tested these changes locally (no build errors).
  • My code successfully passes npm run lint.
  • My code follows the consistent styling/patterns of the codebase.
  • I have added/updated comments in complex logic.

Hey @paratha14, this is a wonderful solution.

Thank you so much for your amazing contributions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants