Skip to content

Growth JD Analyser – Implementation Doc

Goal: Build a lead-gen tool that lets visitors upload a growth/marketing/sales JD screenshot, captures email, and delivers a Hiring Scorecard in ≤5 minutes.


1. Product spec

ItemDetails
Name"Unbore Your Growth JD" / Growth Job Description Analyser
URL/tools/jd-analyser
Value propPaste or upload a JD → get a skill-mapped scorecard, interview plan, and risk flags in 5 minutes.
Lead captureWork email (required) before results are revealed.
StorageNetlify Forms → Google Sheet (via Zapier or direct integration).
AI backendGemini (existing proxy) or Claude for OCR + scorecard generation.

2. User flow

┌──────────────────────────────────────────────────────────────────┐
│  1. User lands on /tools/jd-analyser                             │
│  2. Enters work email                                            │
│  3. Uploads JD screenshot (or pastes text)                       │
│  4. Clicks "Analyse My JD"                                       │
│  5. Netlify function receives form data                          │
│     • Stores email + image URL in sheet                          │
│     • Calls Gemini vision to OCR the image                       │
│     • Passes extracted text to Hiring Guidance prompt            │
│     • Returns JSON scorecard                                     │
│  6. Frontend renders scorecard + interview plan + risk flags     │
│  7. CTA: "Talk to a Growth Flow Engineer" (cal.com link)         │
└──────────────────────────────────────────────────────────────────┘

3. Architecture

3.1 Frontend (VitePress page)

  • File: docs/en/tools/jd-analyser.md
  • Components:
    • Hero with headline + subhead
    • Email input (required, validated)
    • File upload (accept: .png, .jpg, .jpeg, .webp, .pdf, .doc, .docx) + textarea fallback for plain text
    • Submit button
    • Results area (hidden until response)
    • CTA block

3.2 Netlify function

  • File: netlify/functions/jd-analyser.js
  • Responsibilities:
    1. Parse multipart form data (email, file, or plain text).
      • Supported file types: PNG, JPG, WebP (images), PDF, DOC, DOCX.
    2. Append lead to Netlify Forms submission (or POST to Google Sheets API).
    3. Extract JD text based on file type:
      • Image: Gemini Vision OCR.
      • PDF: pdf-parse (Node) or Gemini Vision (render pages as images).
      • DOC/DOCX: mammoth (DOCX → HTML/text) or LibreOffice CLI for DOC.
      • Plain text: Use as-is.
    4. Call Hiring Guidance prompt (system + user template from Skill System doc).
    5. Return JSON: { success, scorecard, error }.

3.2.1 File parsing libraries (suggested)

FormatLibraryNotes
PDFpdf-parsePure JS, works in Netlify Functions
DOCXmammothDOCX → HTML/text, lightweight
DOC (legacy)Convert client-side or reject with messageLegacy .doc is rare; suggest re-save as DOCX
ImagesGemini Vision APIOCR via gemini-1.5-flash or gemini-1.5-pro

3.3 Data storage (MVP)

  • Option A (simplest): Netlify Forms with form name jd-analyser. Leads appear in Netlify dashboard; export to sheet manually or via Zapier.
  • Option B: Direct POST to Google Sheets via service account (reuse GROWTHQUIZ_SERVICE_ACCOUNT pattern from gemini-proxy.js).

3.4 AI prompts

Reuse the Hiring Guidance prompt skeleton from GFE-SkillSystem/docs/Hiring-Guidance-Skill.md:

  • System: Ground in GFE Skill System + ValuationOps. Output JSON with role_summary, skill_requirements, valuation_ops_alignment, scorecard, interview_plan, risk_flags.
  • User: job_title, job_description (OCR'd text or pasted), optional metadata.

4. File inventory

FilePurpose
docs/en/tools/jd-analyser.mdLanding page
docs/en/tools/jd-analyser-implementation.mdThis doc
netlify/functions/jd-analyser.jsBackend function
docs/.vitepress/theme/jd-analyser.js(optional) JS for form handling
docs/public/images/tools/jd-hero.webpHero image (placeholder OK)

5. Implementation checklist

  • [ ] Create landing page with form (email + upload)
  • [ ] Wire form to Netlify Forms for lead capture
  • [ ] Create Netlify function with:
    • [ ] Multipart parsing (busboy or similar)
    • [ ] Gemini Vision call for OCR
    • [ ] Hiring Guidance prompt call
    • [ ] JSON response
  • [ ] Render scorecard on frontend (Vue component or vanilla JS)
  • [ ] Add CTA block linking to cal.com
  • [ ] Test end-to-end locally with netlify dev
  • [ ] Deploy and smoke-test on staging
  • [ ] Add to nav/services grid

6. Environment variables needed

VarUse
GEMINI_API_KEYGemini Vision + text generation
GROWTHQUIZ_SERVICE_ACCOUNT(optional) Google Sheets write
JD_SHEET_ID(optional) Sheet ID for leads

7. Risks & mitigations

RiskMitigation
OCR quality on screenshotsAllow plain-text fallback; prompt user to paste if image fails
PDF with scanned images (no text layer)Detect via pdf-parse; fall back to Gemini Vision OCR
Legacy .doc filesPrompt user to re-save as DOCX; reject gracefully
Rate limits on GeminiCache recent results; show "processing" state
Spam submissionsRequire valid work email domain; add honeypot field
Large filesClient-side resize images; reject files >10 MB

8. Success metrics

  • Leads captured per week
  • Conversion to cal.com booking
  • Time to scorecard (target <60s)
  • User feedback on scorecard quality

9. Future enhancements

  • Auto-email the scorecard PDF
  • Compare JD to benchmark roles (Head of Growth, etc.)
  • Integrate with ATS (Greenhouse, Lever) for import
  • Multi-language support (DE, FR, ES, HI)

Last updated: 2026-01-15