[UX] Resume parse results should autofill identity fields — name, email, phone entered twice #17

Closed
opened 2026-03-16 11:53:44 -07:00 by pyr0ball · 0 comments
Owner

Problem

In the setup wizard the resume upload step comes before the identity step. The user uploads their resume (which contains their name, email, and phone), then the very next step asks them to type that information in manually.

scripts/resume_parser.py already extracts name, email, and phone from the resume header block (_parse_header()). That data is parsed and available in st.session_state but is never used to prefill the identity form.

Expected behaviour

When a resume is uploaded and successfully parsed:

  1. If identity fields (name, email, phone) in user.yaml are empty, autofill them from the parsed result — user just confirms/edits.
  2. If they are already set, offer an "Update from resume?" prompt or silently skip (do not overwrite user edits).

Implementation notes

  • structure_resume() in scripts/resume_parser.py returns a dict with name, email, phone at the top level (via _parse_header(), around line 364)
  • In app/pages/0_Setup.py, the resume parse result is stored around line 298-310 — write those three keys back to saved_yaml / user.yaml immediately after a successful parse
  • The identity step reads from saved_yaml.get("name", "") etc. (line ~406) — once they are in saved_yaml, the form will pre-populate automatically
  • Apply the same logic in Settings → Resume Profile tab when a resume is re-uploaded

Acceptance criteria

  • Uploading a resume pre-populates name/email/phone on the following identity step
  • Re-uploading a resume in Settings offers to update identity fields if the parsed values differ
  • No regression: manually entered identity values are not silently overwritten
## Problem In the setup wizard the **resume upload step comes before the identity step**. The user uploads their resume (which contains their name, email, and phone), then the very next step asks them to type that information in manually. `scripts/resume_parser.py` already extracts `name`, `email`, and `phone` from the resume header block (`_parse_header()`). That data is parsed and available in `st.session_state` but is never used to prefill the identity form. ## Expected behaviour When a resume is uploaded and successfully parsed: 1. If identity fields (`name`, `email`, `phone`) in `user.yaml` are **empty**, autofill them from the parsed result — user just confirms/edits. 2. If they are already set, offer an "Update from resume?" prompt or silently skip (do not overwrite user edits). ## Implementation notes - `structure_resume()` in `scripts/resume_parser.py` returns a dict with `name`, `email`, `phone` at the top level (via `_parse_header()`, around line 364) - In `app/pages/0_Setup.py`, the resume parse result is stored around line 298-310 — write those three keys back to `saved_yaml` / `user.yaml` immediately after a successful parse - The identity step reads from `saved_yaml.get("name", "")` etc. (line ~406) — once they are in `saved_yaml`, the form will pre-populate automatically - Apply the same logic in Settings → Resume Profile tab when a resume is re-uploaded ## Acceptance criteria - Uploading a resume pre-populates name/email/phone on the following identity step - Re-uploading a resume in Settings offers to update identity fields if the parsed values differ - No regression: manually entered identity values are not silently overwritten
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Circuit-Forge/peregrine#17
No description provided.