Added support for LinkedIn, GitHub, and LeetCode profile URLs in the resume optimization system. These URLs are:
- Collected from the frontend form
- Stored in the database
- Passed to the LLM for inclusion in optimized resumes
- Embedded as clickable links in the generated PDF
Added three new optional columns to the resumes table:
linkedin_urlgithub_urlleetcode_url
Updated Pydantic models to include the new URL fields as optional strings.
- Added three new optional form parameters to
/optimize_resumeendpoint - URLs are passed to the agent graph in the state
- Database save code updated (commented out section)
Added URL fields to AgentState TypedDict so they're available throughout the agent workflow.
- System prompt now includes profile URLs when provided
- Instructs the LLM to include these URLs in the contact section
- Emphasizes the importance of including the URLs
- Updated
process_text_formatting()to convert URLs to clickable links - URLs are automatically detected and wrapped in
<link>tags - Contact section now supports clickable hyperlinks
- Added three new input fields for profile URLs
- Fields are optional and styled in a dedicated section
- URLs are sent to the backend via FormData
Created a migration script to add the new columns to existing databases.
- Fill in the resume upload form as usual
- Optionally add your LinkedIn, GitHub, and/or LeetCode URLs in the "Profile URLs" section
- Submit the form
- The optimized resume will include these URLs as clickable links in the contact section
If you have an existing database, run the migration:
cd Backend
python migrations/add_profile_urls.py- Start the backend:
cd Backend && uvicorn main:app --reload - Start the frontend:
cd Frontend && npm run dev - Upload a resume with profile URLs
- Verify the URLs appear in the generated PDF
The PDF generator automatically detects and converts URLs to clickable links using regex:
- Full URLs:
https://linkedin.com/in/username - Domain-relative:
linkedin.com/in/username - Common platforms: linkedin.com, github.com, leetcode.com
The system prompt explicitly instructs the LLM to:
- Include provided URLs in the contact section
- Format them appropriately
- Ensure they're part of the
contact_lineparameter when callingoptimize_resume_sections
URLs are stored as nullable VARCHAR fields, allowing:
- Users to provide none, some, or all URLs
- Future expansion to additional profile platforms
- Easy querying and filtering by profile presence