Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/nayalsaurav/ai360/llms.txt

Use this file to discover all available pages before exploring further.

The Resume Analyzer accepts a PDF resume alongside a job context — company name, job title, and job description — then uses Google Gemini 2.5 Flash to produce a structured, multi-category evaluation. Rather than returning free-form text, the route passes a strict responseSchema to Gemini with responseMimeType: "application/json", guaranteeing type-safe structured output every time. This makes it the most sophisticated tool in AI360, combining native PDF ingestion, inline-data base64 encoding, and Gemini’s constrained JSON generation into a single POST endpoint.

How to use

1

Open the tool

Navigate to /utilities/resume-analyzer in your AI360 deployment.
2

Enter job context

Fill in the Company Name, Job Title, and paste the full job description into the textarea. All three fields are required — the more detail you provide in the job description, the more targeted the analysis will be.
3

Upload your resume

Click the Upload Resume (PDF) file input and select your resume. The file must be a valid PDF and no larger than 10 MB.
4

Run the analysis

Click Analyze Resume. The button changes to “Analyzing Resume…” and a skeleton loader appears while Gemini processes your document. Depending on resume length this typically takes 5–15 seconds.
5

Review your results

Once complete, an Overall Resume Score card appears at the top followed by five individual category cards, each showing a progress bar, a numeric score out of 100, and a list of color-coded tips. Green tips mark strengths; amber tips mark areas to improve.

Evaluation categories

The analyzer scores your resume across five independent dimensions. Each category returns a score (0–100) plus an array of tips, where every tip carries a type ("good" or "improve"), a short tip string, and an optional explanation string for extra context.
Measures how well the resume will survive automated parsing by Applicant Tracking Systems. The model checks for relevant keyword presence, absence of tables or graphics that confuse parsers, standard section headings, and machine-readable formatting. Tips for this category include the tip field only (no explanation).
Evaluates the professional register of the writing — consistent use of action verbs, avoidance of first-person pronouns, confident phrasing, and uniformity of tense across bullet points. Tips in this category always include an explanation field to clarify the reasoning behind each suggestion.
Assesses how closely the resume’s experience, achievements, and responsibilities align with the provided job description. High scores indicate strong contextual overlap; low scores signal a need to tailor bullet points to the target role. Tips include explanation.
Reviews logical section ordering (contact → summary → experience → education → skills), consistent date formatting, appropriate use of white space, and overall readability at a glance. Tips include explanation.
Examines whether key technical and soft skills are clearly surfaced, quantified where possible, and mapped to the requirements listed in the job description. Tips include explanation.

Response schema

The full TypeScript interface used by both the frontend (page.tsx) and the API route reflects exactly what Gemini returns:
interface FeedbackTip {
  type: 'good' | 'improve'
  tip: string
  explanation?: string   // Required for toneAndStyle, content, structure, skills
}

interface FeedbackSection {
  score: number          // 0–100
  tips: FeedbackTip[]
}

interface Feedback {
  overallScore: number
  ATS: FeedbackSection
  toneAndStyle: FeedbackSection
  content: FeedbackSection
  structure: FeedbackSection
  skills: FeedbackSection
}
The route wraps this in a top-level envelope:
{
  "success": true,
  "feedback": { ...Feedback }
}

API integration

The endpoint at POST /api/utilities/resume-analyzer accepts multipart/form-data. Do not set the Content-Type header manually — the browser (or fetch) must set it automatically so the MIME boundary is included correctly.
const formData = new FormData()
formData.append('companyName', 'Acme Corp')
formData.append('jobTitle', 'Senior TypeScript Engineer')
formData.append('jobDescription', 'We are looking for...')
formData.append('file', pdfFile) // File object — must be application/pdf

const response = await fetch('/api/utilities/resume-analyzer', {
  method: 'POST',
  body: formData  // Do not set Content-Type — browser sets it with boundary
})

const { success, feedback } = await response.json()

if (success && feedback.overallScore > 0) {
  console.log('Overall score:', feedback.overallScore)
  console.log('ATS score:', feedback.ATS.score)
  console.log('ATS tips:', feedback.ATS.tips)
}

Validation rules

The route runs validateInputs before calling Gemini. A 400 / 500 error response is returned if any of the following conditions are violated:
  • companyName must be present and non-whitespace
  • jobTitle must be present and non-whitespace
  • jobDescription must be present and non-whitespace
  • file must be attached to the request
  • file MIME type must be exactly application/pdf
  • file size must be under 10 MB (10 × 1024 × 1024 bytes)

Error handling

When the Gemini call itself fails (network error, quota exceeded, malformed response), the route does not return an HTTP error status. Instead it returns HTTP 200 with success: true and a zero-score error feedback object — every category score is 0 and every tip reads “Unable to analyze…”. Always check feedback.overallScore > 0 after a successful HTTP response to detect these silent Gemini-level failures and prompt the user to retry.
For the highest ATS relevance scores, paste the exact text of the job posting into the Job Description field rather than a summary you wrote yourself. The model performs keyword matching against that text, so specificity — including required technologies, years of experience, and preferred qualifications — directly raises the Content Relevance and ATS Compatibility scores.

Build docs developers (and LLMs) love