Skip to content

Add LinkedIn OAuth and PDF/DOCX support for datasets and document input.#10

Open
Abhinav-ranish wants to merge 5 commits into
sbeeredd04:mainfrom
Abhinav-ranish:main
Open

Add LinkedIn OAuth and PDF/DOCX support for datasets and document input.#10
Abhinav-ranish wants to merge 5 commits into
sbeeredd04:mainfrom
Abhinav-ranish:main

Conversation

@Abhinav-ranish

Copy link
Copy Markdown
Contributor

Summary

This PR implements the three planned features from the v5.2 design doc:

Server-side Resume Parsing

  • POST /parse/pdf — Extracts text from PDF resumes using pdf-parse
  • POST /parse/docx — Extracts text from DOCX resumes using mammoth.js
  • POST /parse/linkedin — Parses LinkedIn data export ZIPs (CSV mapping for Profile, Positions, Education, Skills, Certifications, Projects)
  • AI-assisted structuring — Optionally sends raw text to the user's configured AI provider (Gemini/Claude/Groq/OpenRouter) to return structured resume JSON
  • New deps: pdf-parse, mammoth, adm-zip, csv-parse, multer

Unified Structured Resume Editor

  • Sidepanel restructured into Import / Editor / Settings tabs
  • Accordion-based editor with sections: Contact, Summary, Experience, Education, Skills, Certifications, Projects
  • Repeatable cards for experience/education/projects with add/remove
  • Tag inputs for skills (technical, soft, languages)
  • Auto-save to chrome.storage.local on every edit
  • Generate LaTeX button converts structured JSON → ATS-friendly LaTeX via new template system

LinkedIn OAuth Integration

  • Chrome Identity API (chrome.identity.launchWebAuthFlow) for LinkedIn OpenID Connect
  • Guided flow: sign in → upload LinkedIn data export ZIP → auto-populate editor
  • Added identity permission and LinkedIn host permissions to manifest

Other Changes

  • Extended FileHandler to support .pdf and .docx binary uploads
  • Updated background.js with structured resume message handlers and GET_STATUS awareness
  • Updated Dockerfile to include parsers/ directory
  • 7 unit tests for LinkedIn parser and schema validation (all passing)
  • API docs updated with new parse endpoints

Test Plan

  • Upload a .tex file — verify existing LaTeX flow still works
  • Upload a .pdf resume — verify text extraction and AI structuring
  • Upload a .docx resume — verify parsing and editor population
  • Click "Create Empty Resume" — verify blank editor loads
  • Edit fields in the editor, reload sidepanel — verify auto-save persistence
  • Click "Generate LaTeX" — verify valid LaTeX output is stored
  • Test LinkedIn OAuth flow (requires LinkedIn Developer App credentials)
  • Upload a LinkedIn data export ZIP — verify CSV parsing populates editor
  • Run npm test in server directory — verify all 7 tests pass
  • Verify dark mode works across all three tabs

…itor

Covers architecture (sidepanel-centric approach), server-side parsing
with pdf-parse and mammoth.js, LinkedIn OAuth + data export flow,
unified structured resume editor, error handling, and testing strategy.
…nd unified editor

20 tasks covering server-side parsing (pdf-parse, mammoth.js, LinkedIn CSV),
Chrome extension updates (tabs, structured editor, OAuth, LaTeX templates),
testing, and documentation.
…sume editor

- Server: add POST /parse/pdf, /parse/docx, /parse/linkedin endpoints
  with pdf-parse, mammoth.js, adm-zip, csv-parse, and multer
- Server: add AI-assisted resume structuring across all providers
- Extension: restructure sidepanel with Import/Editor/Settings tabs
- Extension: add structured resume JSON schema and validation
- Extension: add accordion-based resume editor with tag inputs and auto-save
- Extension: add LaTeX template generator from structured JSON
- Extension: add LinkedIn OAuth via Chrome Identity API
- Extension: extend file handler to support PDF/DOCX binary uploads
- Extension: update manifest with identity permission and LinkedIn hosts
- Add unit tests for LinkedIn parser and schema validation (7 tests)
- Update Dockerfile to include parsers directory
- Document new parse endpoints in API.md
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.

1 participant