You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
sync mentored trainees lists from CV to people.xlsx #10
use the CV preferentially (it's more accurate and up-to-date than the website):
any trainees that appear with NO end date (i.e., no "(YYYY -- )" in their date of membership) are active lab members and should have entries in the "members" sheet. in the spreadsheet, sort first by category (postdoc > grad student > lab manager > research scientist > undergrad) and then reverse chronologically by starting year.
any trainees that DO appear with an end date (i.e., either "(YYYY)" or "(XXXX -- YYYY)") are inactive (alumni) lab members, and should have entries in the corresponding alumni sheets. parse any "current position" text listed in the CV document.
there might also be people who appear on the website but NOT in the CV. in that case, those people should be added to the CV at the appropriate positions. (but when in conflict, e.g., with respect to start/end dates or status, prefer the CV info over the people.xlsx info).
Implementation Plan for Issue #10: Sync Mentored Trainees from CV to people.xlsx
Overview
This issue requires bi-directional synchronization between the CV (documents/JRM_CV.tex) and the people spreadsheet (data/people.xlsx). The CV is the source of truth for trainee information.
Key Requirements
CV → people.xlsx: Add any trainees in CV but not in spreadsheet
people.xlsx → CV: Add any trainees in spreadsheet but not in CV
Active vs Alumni: Trainees with no end date (e.g., "2024 -- )") are active members; those with end dates are alumni
Sorting:
Members: by category (postdoc > grad > lab manager > research scientist > undergrad), then reverse chronologically by start year
Alumni: as appropriate for each section
Branch Strategy
Per comment: Stay on branch issue-9-news-feed - will be merged together with Issue #9.
Execution Plan
Phase 1: Build CV Parser Script (Sequential)
Agent 1: CV Parser Development
Create scripts/parse_cv_trainees.py:
Parse LaTeX file to extract trainee information from mentorship sections
Handle all trainee types: Postdoctoral Advisees, Graduate Advisees, Undergraduate Advisees
Extract: name, role/type, start year, end year (if any), current position (if any)
Detect active vs alumni status based on date format
Return structured data suitable for comparison with people.xlsx
Key parsing patterns:
\item Name (2024 -- ) → Active member
\item Name (2024 -- 2025; current position: Company) → Alumni
\item Name (Doctoral student; 2021 -- ) → Active grad student
\item Name* (2024 -- ) → Undergraduate with thesis (asterisk)
Created scripts/sync_cv_people.py - main synchronization script that reads trainees from JRM_CV.tex and updates people.xlsx
Created scripts/parse_cv_trainees.py - parser for extracting trainee information from the CV LaTeX format
Sorting Implementation
Members sheet is now sorted by:
Role priority: Postdocs → PhD students → Masters students → Lab managers → Undergrads
Join date: Chronologically within each role category (earliest first)
Alumni Handling
Trainees with end dates are placed in appropriate alumni sheets (alumni_postdocs, alumni_grads, alumni_managers, alumni_undergrads)
Current position information is parsed from CV and stored in spreadsheet
Additional Improvements
build_people.py now uses placeholder.png for members without profile photos
Added hand-drawn borders to new profile photos using add_poster_borders.py
Updated validate_data.py to check for sync discrepancies
How to Use
Run python scripts/sync_cv_people.py to synchronize trainees from the CV to the spreadsheet. The script will report any additions, updates, or discrepancies found.
Activity
jeremymanning commentedon Dec 18, 2025
there might also be people who appear on the website but NOT in the CV. in that case, those people should be added to the CV at the appropriate positions. (but when in conflict, e.g., with respect to start/end dates or status, prefer the CV info over the people.xlsx info).
jeremymanning commentedon Dec 18, 2025
note: we are working on this issue in parallel with issue #9, so we should stick with the same feature branch. we'll pull all the changes in together.
jeremymanning commentedon Dec 18, 2025
Implementation Plan for Issue #10: Sync Mentored Trainees from CV to people.xlsx
Overview
This issue requires bi-directional synchronization between the CV (
documents/JRM_CV.tex) and the people spreadsheet (data/people.xlsx). The CV is the source of truth for trainee information.Key Requirements
Branch Strategy
Per comment: Stay on branch
issue-9-news-feed- will be merged together with Issue #9.Execution Plan
Phase 1: Build CV Parser Script (Sequential)
Agent 1: CV Parser Development
Create
scripts/parse_cv_trainees.py:Key parsing patterns:
\item Name (2024 -- )→ Active member\item Name (2024 -- 2025; current position: Company)→ Alumni\item Name (Doctoral student; 2021 -- )→ Active grad student\item Name* (2024 -- )→ Undergraduate with thesis (asterisk)Phase 2: Comparison & Sync Logic (Sequential - depends on Phase 1)
Agent 2: Sync Script Development
Create
scripts/sync_cv_people.py:Phase 3: Data Updates (Sequential - depends on Phase 2)
Agent 3: Apply Updates
data/people.xlsxwith missing trainees from CVbuild_people.pyto regeneratepeople.htmlPhase 4: Testing (Parallel after Phase 3)
Agent 4a: Unit Tests
Create
tests/test_parse_cv_trainees.py:Agent 4b: Integration Tests
Create
tests/test_sync_cv_people.py:Phase 5: Validation & Cleanup (Sequential)
Single Agent
python -m pytest tests/ -vpython scripts/validate_data.pypython scripts/build.pypeople.htmlrenders correctlynotes/folderFiles to Create/Modify
New Files
scripts/parse_cv_trainees.py- LaTeX CV parser for mentorship sectionsscripts/sync_cv_people.py- Bi-directional sync scripttests/test_parse_cv_trainees.py- CV parser tests (NO MOCKS - uses real CV file)tests/test_sync_cv_people.py- Sync logic tests (NO MOCKS - uses real files)Modified Files
data/people.xlsx- Updated with synced trainee datadocuments/JRM_CV.tex- Updated with any trainees only in spreadsheetpeople.html- Regenerated from updated spreadsheetTesting Requirements
CRITICAL: NO MOCK TESTS OR SIMULATIONS
All tests must use:
documents/JRM_CV.texfile for parsing testsdata/people.xlsxfor spreadsheet testsTest categories:
Verification Checklist
Before marking complete:
python -m pytest tests/ -vpython scripts/validate_data.pypython scripts/build.pypeople.htmlrenders correctly in browsernotes/folderNotes on CV Structure
From
JRM_CV.tex(lines 653-859):Postdoctoral Advisees (lines 654-658):
\item Name (YYYY -- YYYY; current position: Company)Graduate Advisees (lines 661-676):
\item Name (Type; YYYY -- YYYY; current position: ...)Undergraduate Advisees (lines 734-858):
\item Name* (YYYY -- YYYY)(asterisk = thesis student)Lab Managers: Not explicitly listed in CV - need to cross-reference spreadsheet's
alumni_managerssheet.Estimated Complexity
Total: ~3-4 hours of agent work with parallelization
jeremymanning commentedon Dec 18, 2025
Updated Plan
Per feedback:
\item Name (2023 -- 2024)→ Alumni (date range without current position)Simplified Execution
Phase 1: Create
scripts/parse_cv_trainees.py- CV parserPhase 2: Create
scripts/sync_cv_people.py- comparison and sync logicPhase 3: Run sync, update files, validate output
Phase 4: Cleanup and commit
Proceeding with implementation now.
Sync CV mentored trainees with people spreadsheet (Issue #10)
jeremymanning commentedon Dec 19, 2025
Completed in PR #11
CV Trainee Sync Scripts
scripts/sync_cv_people.py- main synchronization script that reads trainees from JRM_CV.tex and updates people.xlsxscripts/parse_cv_trainees.py- parser for extracting trainee information from the CV LaTeX formatSorting Implementation
Members sheet is now sorted by:
Alumni Handling
Additional Improvements
build_people.pynow usesplaceholder.pngfor members without profile photosadd_poster_borders.pyvalidate_data.pyto check for sync discrepanciesHow to Use
Run
python scripts/sync_cv_people.pyto synchronize trainees from the CV to the spreadsheet. The script will report any additions, updates, or discrepancies found.