Skip to content

Comments

feat: Add LinkedIn folder-based data archive import support#138

Merged
anchapin merged 5 commits intomainfrom
feature/issue-linkedin-folder-import
Feb 18, 2026
Merged

feat: Add LinkedIn folder-based data archive import support#138
anchapin merged 5 commits intomainfrom
feature/issue-linkedin-folder-import

Conversation

@anchapin
Copy link
Owner

Summary

Extends the LinkedIn import functionality to support LinkedIn's full data export folder format (the ZIP archive that LinkedIn provides when you request your full data).

Problem

Previously, only supported single JSON or CSV files. LinkedIn's full data export is a ZIP file containing multiple CSV files (Profile.csv, Positions.csv, Education.csv, Skills.csv, Certifications.csv, etc.). Users had to manually extract individual files and import them one at a time.

Changes

New: Folder-based import

  • Add _import_from_folder() method to handle folder-based exports
  • Add _read_csv_file() helper to parse LinkedIn CSV files
  • Auto-detect when path is a directory and route to folder import

CSV column name support

LinkedIn CSV files use different column names than the JSON export:

  • Profile.csv: First Name, Last Name, Headline, Geo Location, Websites
  • Positions.csv: Company Name, Title, Started On, Finished On, Description
  • Education.csv: School Name, Degree Name, Start Date, End Date, Notes
  • Skills.csv: Name
  • Certifications.csv: Name, Authority, Started On, URL, License Number

Other improvements

  • Handle list format from CSV (folder export) in _map_linkedin_to_resume()
  • Handle empty end dates as current position (Present)
  • Support Profile Summary.csv for professional summary

Usage

# Extract the LinkedIn ZIP archive, then:
resume-cli linkedin-import --data-file /path/to/extracted/linkedin-folder/

# Or use a single file as before:
resume-cli linkedin-import --data-file profile.json
resume-cli linkedin-import --data-file Profile.csv

Testing

Tested with actual LinkedIn data export folder containing Profile.csv, Positions.csv, Education.csv, Skills.csv, and Certifications.csv.

Extends the LinkedIn import functionality to support LinkedIn's full
data export folder format (ZIP archive extracted to folder).

Changes:
- Add _import_from_folder() method to handle folder-based exports
- Add _read_csv_file() helper to parse LinkedIn CSV files
- Support CSV column names used in LinkedIn data exports:
  - Profile.csv: First Name, Last Name, Headline, Geo Location, Websites
  - Positions.csv: Company Name, Title, Started On, Finished On, Description
  - Education.csv: School Name, Degree Name, Start Date, End Date, Notes
  - Skills.csv: Name
  - Certifications.csv: Name, Authority, Started On, URL, License Number
- Handle list format from CSV (folder export) in _map_linkedin_to_resume()
- Handle empty end dates as current position (Present)
- Support Profile Summary.csv for professional summary

Usage:
  resume-cli linkedin-import --data-file /path/to/extracted/linkedin-folder/
Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Sorry @anchapin, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

Alex C added 4 commits February 18, 2026 12:46
…, phone, and location parsing

- Run Black formatter on all files to fix lint failures
- Fix _extract_contact() to extract email and phone fields from profile data
- Fix location parsing to handle dict format (JSON export) with city/state keys
  and string format (CSV export) with full string
- This fixes the test_extract_contact KeyError: 'email' test failure
- Remove unused license_num variable in linkedin.py (ruff F841)
- Fix unused imports in preview.py and pdf/renderer.py (ruff F401)
- Fix import ordering in resume_pdf_lib/__init__.py (isort)
@anchapin anchapin merged commit 48c35f0 into main Feb 18, 2026
16 checks passed
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