Is your feature request related to a problem? Please describe.
Resume Matcher can parse, tailor, edit, preview, and export a resume, but users cannot currently include a profile photo as part of the structured resume. This is limiting for regions and roles where a photo is a normal part of the resume format. The current workaround is to add the photo after export in another editor, which breaks the in-app editing workflow and makes the preview differ from the downloaded PDF.
A profile photo also needs different behavior from ordinary resume fields: it should be visually placed over the document without reflowing the name, contact line, section widths, or body content.
Describe the solution you'd like
Add an optional profile-photo field to the resume builder with the following behavior:
- Accept JPEG, PNG, and WebP images with server-side validation and safe normalization.
- Let users upload, replace, edit, or remove the photo from the Personal Information section.
- Provide a familiar freeform crop editor with draggable edges and corners, adaptive portrait/landscape/square shapes, and adjustable display size.
- Render the photo as a top-corner overlay so enabling it does not change existing resume layout or section widths.
- Keep preview and downloaded PDF output consistent across all registered resume templates.
- Preserve the photo when creating tailored/derived resumes while keeping each copy independently editable.
- Keep binary image data server-managed rather than embedding it in the LLM payload or editable resume JSON.
- Localize the editing experience for the locales already supported by the frontend.
Describe alternatives you've considered
- Add the image after PDF export: simple, but the in-app preview is no longer trustworthy and every new export must be edited again.
- Place the photo in normal document flow: easier to implement, but it shifts the header and body layout and can change pagination.
- Store a data URL directly in resume JSON: portable, but bloats API/LLM payloads and makes validation, replacement, and lifecycle management harder.
- Automatically extract a headshot from an uploaded resume: useful as a future enhancement, but embedded logos and other images make confirmation necessary. This request focuses on explicit user-controlled upload and editing.
Additional context
Expected interaction
- Open a resume in the builder.
- In Personal Information, choose Add photo.
- Select a JPEG, PNG, or WebP image.
- Drag the crop edges/corners and adjust the rendered size.
- Apply the edit and see the same result in the resume preview and generated PDF.
- Reopen the editor later to crop, resize, replace, or remove the photo.
Acceptance criteria
- Resumes without photos remain visually and structurally unchanged.
- Adding a photo does not shrink or reflow the resume body.
- Invalid, oversized, malformed, or decompression-bomb images are rejected safely.
- Photo metadata cannot be overwritten accidentally by ordinary resume saves or LLM-generated content.
- Deleting a resume also deletes its stored photo.
- Tailored resume copies receive an independent copy of the source photo.
- Preview and PDF rendering wait for the image to be ready before capture.
Screenshots
To be added with the implementation PR.
Is your feature request related to a problem? Please describe.
Resume Matcher can parse, tailor, edit, preview, and export a resume, but users cannot currently include a profile photo as part of the structured resume. This is limiting for regions and roles where a photo is a normal part of the resume format. The current workaround is to add the photo after export in another editor, which breaks the in-app editing workflow and makes the preview differ from the downloaded PDF.
A profile photo also needs different behavior from ordinary resume fields: it should be visually placed over the document without reflowing the name, contact line, section widths, or body content.
Describe the solution you'd like
Add an optional profile-photo field to the resume builder with the following behavior:
Describe alternatives you've considered
Additional context
Expected interaction
Acceptance criteria
Screenshots
To be added with the implementation PR.