Skip to content

feat: tailored CVs follow my own CV's design and structure - #21

Merged
coderback merged 1 commit into
mainfrom
feat/cv-design
Oct 15, 2026
Merged

coderback merged 1 commit into
mainfrom
feat/cv-design

Conversation

@coderback

Copy link
Copy Markdown
Owner

Summary

Tailored CVs now follow the design and structure of my own CV (Timothy_Ojebiyi_CV.pdf). That also fixes graduate CVs running onto a second page since the fuller persona.

Layout (classic_cv.html, base.css)

Measured from my CV and reproduced:

  • Type: Cambria. The image and CI install Caladea, its metric-compatible twin.
  • Header: a 25.8pt name, then a 9pt grey contact line with blue underlined links (email, LinkedIn, GitHub, Website). The phone is plain text.
  • Headings: 13.2pt bold, sentence case, over a light grey rule.
  • Body: 10.2pt. Dates are 9pt grey on a tab stop about 16mm inside the right margin.
  • Bullets: Word-style, with the bullet at 0.25in and the text at 0.5in.
  • Projects: titled "Name · context", with the context in grey and a grey "Technologies:" line underneath.
  • Sections: Professional Summary, Education (certifications listed there), Experience, Projects, Skills & Technical Proficiency. Roles show no location and projects no links, as in the design.
  • Page: a named @page cv with my CV's margins, so the cover letter keeps its own layout.

Structure (agent.py)

  • Prompt budgets, from my CV:
    • a summary of about 55 words;
    • 1–2 bullets per role, at most about 60 words per role;
    • 4 projects as 40–55-word paragraphs;
    • 20–30 skills chosen for the job, in up to 5 rows of no more than 8.
  • Skills (_chosen_skills): only the profile's own skills are kept. Anything the model invents, renames or repeats is dropped, and an unnamed row becomes "Other". With fewer than 10 real skills left, or more than 40, the profile's full list is used. This replaces fix: every skill reaches the CV, and a graduate CV fits on one page #19's "every skill on every CV": my CV selects skills.
  • Taken from the profile, never the model: contact details, education, certifications and role dates (_restore_role_dates). The header shows "City, Country" (_cv_location).
  • _FIT_STEPS unchanged: a CV that still runs over tightens, then trims, as before.

Testing

  • The full API suite passes (658). All 52 document tests pass in the API image, including a check of the rendered PDF against my CV's measurements: the Caladea font, 25.8 / 13.2 / 10.2 / 9pt sizes and colours.
  • New tests cover:
    • the section order and the contact line;
    • dates beside entries, and certifications under Education;
    • project titles with their context, and the technologies line;
    • the skill choice: invented, renamed or repeated skills dropped, too few or too many falling back;
    • role dates kept from the profile, and city plus country in the header.
  • Real tailored CVs for my profile, made with Azure for three Cambridge Consultants roles, each fit on one page with the technologies lines kept:
Role Skills Fit
Software Engineer, Healthcare 24 One page as written
Cloud Software Engineer 30 One page with tighter spacing
AI Engineer 30 One page with tighter spacing

Layout, measured from the candidate's CV (Timothy_Ojebiyi_CV.pdf): Cambria
(Caladea, its metric twin, in the image and CI), a 25.8pt name, a 9pt grey
contact line with blue links, 13.2pt sentence-case headings over a light
rule, 10.2pt body, grey dates on a tab stop, Word-style bullets, and
"Name · context" project titles with a grey technologies line. Sections:
Professional Summary, Education (certifications listed there), Experience,
Projects, Skills & Technical Proficiency. Roles show no location and
projects no links, as in the design.

Structure, from the same CV: 1-2 bullets per role, 4 projects as short
paragraphs, and 20-30 skills chosen for the job in at most 5 rows of 8.
The model's skill choice keeps only the profile's own skills (anything it
invents, renames or repeats is dropped); with fewer than 10 left, or more
than 40, the profile's full list is used. Contact details, education,
certifications and role dates always come from the profile, and the
header shows "City, Country".

Checked on the candidate's profile with the real model: CVs for three
roles each fit one page with the technologies lines kept.
@coderback
coderback merged commit 63387e6 into main Oct 15, 2026
4 checks passed
@coderback
coderback deleted the feat/cv-design branch October 15, 2026 22:29
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