Organize job application materials (resume/cover letter PDFs) and maintain Excel tracking system. Reads order files from cover-letter-generator, matches files by key-based naming, creates date-based folder structure, moves files, generates abbreviated filenames, and updates Excel tracker with hyperlinks. Use when user says "organize the files", "organize resumes", "organize application materials", or after cover-letter-generator has finished generating files. Also use when user wants to update the job applications Excel tracker.
Organize generated resume/cover letter files and maintain an Excel tracking system using order files from cover-letter-generator.
Locate latest batch_order_*.json in exp_lib/:
python scripts/batch_organize.py [exp_lib_dir] [cvs_dir]
Default paths:
exp_lib: exp_lib/ in project rootcvs: cvs/ in project rootKey-based (current): Order file contains key field mapping to {key}-R.pdf and {key}-CL.pdf:
0-R.pdf -> Job with key=0
0-CL.pdf -> Job with key=0
1-R.pdf -> Job with key=1
Timestamp-based (legacy fallback): For order files without key field, matches by filename timestamp order.
For each matched job:
cvs/resume and cover letters/YYYY-MM-DD/Company - Position/CompanyAbbr - PosAbbr - R.pdfFor each job, add a row to cvs/job-applications.xlsx:
| Column | Value | Source |
|---|---|---|
| Company | Company name | order file jobs[].company |
| Position | Job title | order file jobs[].position |
| Job Description | FULL original JD text | order file jobs[].jd |
| Application Date | Today (YYYY-MM-DD) | current date |
| Files | Folder path | created in step 3 |
CRITICAL: The "Job Description" column MUST contain the complete, unmodified JD text from the order file's jd field. NEVER summarize, truncate, or paraphrase. Copy the entire string as-is.
Move processed order file to exp_lib/archive/.
python scripts/batch_organize.py # defaults
python scripts/batch_organize.py /path/to/exp_lib /path/to/cvs # custom paths
Reads order file, shows matching preview, asks confirmation, organizes all jobs.
python scripts/process_job_application.py <base_dir> "<Company>" "<Position>" "<JD_Text>" [exp_lib_dir]
Process a single job: find latest files, organize, update Excel.
Abbreviated names: CompanyAbbr - PositionAbbr - R/CL.pdf
FGF - AISECO - R.pdf (FGF Brands - AI Solutions Engineer Co-Op)NOK - SDE - CL.pdf (Nokia - Software Development Engineer)File: cvs/job-applications.xlsx
Columns: Company | Position | Job Description | Application Date | Files (hyperlink)
Job Description column: Always the COMPLETE JD from order_file.jobs[].jd. Never summarize.
Backup: Auto-backup before every modification to cvs/Excel/backups/.
pip install openpyxl pandas
mcp__cowork__allow_cowork_file_delete