Skip to content

feat: homepage v3, TPM / Implementation Lead - #121

Merged
romahawk merged 2 commits into
mainfrom
feature/homepage-v3
Oct 15, 2026
Merged

romahawk merged 2 commits into
mainfrom
feature/homepage-v3

Conversation

@romahawk

Copy link
Copy Markdown
Owner

What and why

The site now uses the same title as the CV and LinkedIn: Technical Project Manager / Implementation Lead. The homepage is cut to Hero → Work → About → Contact, so a recruiter reaches the proof cards and the CV faster. This PR also replaces the May CV PDF, which still said "Technical Product Manager", used the proton.me address and gave a P&L figure. The capstone is now Rolevoice (D10).

Closes #

Changes

Before / after copy

Where Before After
Meta title (+ OG, Twitter) Roman Mazuryk · Technical Project Manager, System Implementation Roman Mazuryk | Technical Project Manager / Implementation Lead
Meta description (+ OG, Twitter) Technical project manager with 20+ years in MedTech, pharma and logistics. 20+ system projects from discovery to adoption. Hamburg / Remote (EU). Technical Project Manager and Implementation Lead. 20+ years in regulated MedTech, pharma and logistics, taking systems live since 2012, now adding hands-on AI. Hamburg area, open to remote across the EU.
Hero eyebrow Technical Project Manager · Hamburg / Remote (EU) Hamburg area · Open to remote across the EU
Hero H1 System implementation in regulated environments Roman Mazuryk
Hero title line (none) Technical Project Manager / Implementation Lead
Hero subtitle 20+ years in MedTech, pharma and logistics. 20+ system projects … I get complex systems live in regulated environments. MedTech and pharma logistics, from vendor selection to go-live and support. Now with hands-on AI.
Hero buttons Download CV · Email me, plus LinkedIn and GitHub meta links, meta line and 4 fact pills Download CV (download) · LinkedIn (new tab)
About title Technical PM. 20+ years in regulated industries. About
About paragraphs 4 paragraphs (bio, Medintegro + "30%", APIs, "looking for a permanent TPM role") The 4 paragraphs from Part C (Medintegro delivery chain and P&L, PharmaLogis, upskilling full time since late 2025, "making implementations land")
Experience, 2026 entry DeutschOn-AI (capstone, preparing for pilot), AlphaRhythm (pre-beta). Rolevoice (M.Sc. capstone): AI-assisted foreign-language assessment for professionals. First pilot: German. AlphaRhythm (pre-beta).
AI Field Guide card outcome (the only cases edit, per D10) … my M.Sc. capstone (DeutschOn-AI) and this site. … my M.Sc. capstone (Rolevoice) and this site.
Contact section CTA strip + LinkedIn + "Looking for project support? See services" CTA strip (Download CV, Email me) + LinkedIn
Header nav Work · Delivery · About · AI · Services Work · About · AI · Contact (Services only on /services, next to Book a call)
Footer tagline Technical Project Manager for system implementation in regulated environments. Hamburg / Remote (EU). Technical Project Manager / Implementation Lead · Ahrensburg / Hamburg
Footer links LinkedIn, GitHub, Email, CV icons; nav incl. Delivery and Services LinkedIn, Email, CV icons; nav Work · About · AI · Contact; email; small "Consulting" link → /services
Footer copyright © 2026 Roman Mazuryk. Technical Project Manager. © 2026 Roman Mazuryk. Technical Project Manager / Implementation Lead.
/ai capstone entry …checked against a schema; the teacher accepts, edits or rejects before a student sees anything. …checked against a schema.
/ai "avoid" practice Sending personal or student data through third-party hosted tools. Sending personal data through third-party hosted tools.
OG image alt (home) Roman Mazuryk, Technical Project Manager. Roman Mazuryk, Technical Project Manager / Implementation Lead.

Sections hidden from the homepage (removed from HomePage.jsx only; the data stays in src/content/site.js):

  • Credibility strip (identity.metaLine, facts)
  • Other builds (otherBuilds)
  • How I run delivery (delivery), and delivery is removed from nav
  • AI teaser (aiTeaser)

Code

  • src/content/site.js: identity (role, roleShort, eyebrow, subtitle, footerTagline), nav (now includes the AI page link, in the order Work · About · AI · Contact), labels.linkedin, a new footer export (Consulting link), about, experience, seo.home
  • PageHero.jsx: optional titleLine prop; external CTAs use rel="noopener noreferrer"
  • Navbar.jsx / Footer.jsx: render AI from nav; Services link only on /services; footer Consulting link
  • CSS: .page-hero__title-line (market-pages.css), .footer__consulting-link (footer.css), using existing tokens only
  • Root index.html meta, useOgMeta.js image alt, src/data/aiKnowledgeBase.js (teacher wording)
  • scripts/check-consistency.mjs: new identity comment; bans "System implementation in regulated environments", "Technical Project Manager for system implementation", "upskilling on purpose", "20+ years taking software" and "DeutschOn". All existing entries are kept
  • public/roman-mazuryk-cv.pdf: Oct 2026 CV (separate commit)

CV check (pdftotext on docs/incoming/CV_Roman_Mazuryk_EN.pdf; the negative checks were re-run case-insensitively in Python):

Headline line: "Technical Project Manager / Implementation Lead"
PASS present: Technical Project Manager / Implementation Lead
PASS present: romazuryk@gmail.com
PASS present: PharmaLogis
PASS present: 08/2024 to 11/2025
PASS present: M.Sc. Computer Science
PASS present: Independent projects and Master's work
PASS present: Rolevoice
PASS absent: Technical Product Manager
PASS absent: proton.me
PASS absent: $50M
PASS absent: DeutschOn
PASS absent: teacher

Verification

  • npm run lint exits 0
  • npm run build exits 0 (guard: check-consistency: 61 files clean)
  • CI green on this PR (CI + Lighthouse CI): pending at the time of writing
  • Vercel preview opened and checked, not just localhost: not done; only npm run preview locally

Local checks run with npm run preview and headless Edge 155 over CDP, at 390×844 and 1366×768, in dark and light (localStorage.theme):

  • /: sections render in the order top, work, about, contact
  • H1 = "Roman Mazuryk"; the title line sits directly under it
  • Download CV has download and points to /roman-mazuryk-cv.pdf, which is served as application/pdf, 105,702 bytes, byte-identical to the new CV
  • LinkedIn has target="_blank" and rel="noopener noreferrer"
  • Nav anchors (1366): clicking Work, About and Contact brings each section to the top (0, 0 and 40 px from the viewport top)
  • No horizontal scroll on /, /ai or /services at either width
  • The header nav does not wrap at 1366 on any of the three pages
  • /ai and /services show the new footer title. Nav is Work · About · AI · Contact; /services adds Services and Book a call
  • No em dash in the rendered text of /, /ai or /services. src/content/site.js has no em dash
  • Rendered / contains none of: DeutschOn, teacher, "System implementation in regulated", "Technical Product Manager". /ai still shows Magic Kick, as D4 allows
  • Console: the only error is a 404 for /_vercel/insights/script.js. That script exists only on Vercel, so it fails on any local preview
  • cases untouched apart from D10: git diff main -- src/content/site.js changes exactly one line inside the cases array (the DeutschOn-AI → Rolevoice edit). ProofCaseCard.jsx diff is empty

How to test

  1. Open the Vercel preview from the checks below
  2. /: check the hero (name, title line, subtitle, Download CV + LinkedIn), then Work (3 cards), About (4 paragraphs, photo, experience timeline with Rolevoice, facts), then Contact
  3. Click Download CV and confirm the PDF headline reads "Technical Project Manager / Implementation Lead" and the email is romazuryk@gmail.com
  4. Click each header nav item; AI goes to /ai
  5. Open /ai and /services: no Services link in the header on /ai; /services keeps Services + Book a call; the footer shows the new tagline and the Consulting link
  6. Toggle dark/light and repeat at a 390px width

Core loop: home → Work → a proof link → Contact (CV download) still works.

Not tested: real iOS Safari and Android Chrome (only a 390px emulated viewport in Edge), Firefox, the Vercel preview itself, Lighthouse (left to Lighthouse CI), and the actual download-to-disk behaviour of the download attribute.

Quality gates

  • Mobile checked (390px emulated viewport)
  • No console errors in the preview: local preview only; the one error is the Vercel Analytics 404 explained above
  • Accessibility kept: same landmarks, H1 is still the only h1, focus-visible styles on the new link, prefers-reduced-motion untouched
  • No new npm dependency
  • Lucide icons use named imports (removed unused Github, Mail imports)
  • Redirects in vercel.json: no route added, moved or removed

Docs

  • CHANGELOG.md updated under [Unreleased]
  • docs/ / CLAUDE.md: no architecture or routing change

Screenshots

Captured locally at 390px and 1366px in dark and light: hero, About, Contact and footer. GitHub CLI can't upload images, so Roman needs to drag them in from the session scratchpad, or use the Vercel preview.

Notes for review

  • Brief vs. instructions: docs/homepage-v3.md on disk does not contain D10 or Step 3b. Those were applied from Roman's message: rename DeutschOn-AI to Rolevoice, drop teacher-in-the-loop wording, and the single allowed cases edit.
  • /ai keeps "AI learning product". feat: rework /ai for hiring teams with proof, mobile layout and nav link #119 deliberately stopped naming the language app on /ai for privacy. So /ai only loses the teacher/student wording; it does not gain the name Rolevoice. Internal ids (learning-product) are unchanged.
  • Removed the human-review clause on /ai. "The teacher accepts, edits or rejects before a student sees anything" was deleted rather than reworded, to avoid inventing a new review claim for Rolevoice. Roman may want to add a line on how Rolevoice assessments are reviewed.
  • "a German tutor" stays. The custom-skill line on /ai ("recruiter research, VC-style pitch review, a German tutor") is about the agent OS, not the capstone, so it is unchanged.
  • New guard entry "DeutschOn". This goes beyond Step 5's list. The retired files listed in PENDING_DELETION (src/locales/de.js, germanCopy.js) still contain the old name but are not rendered.
  • CV commit subject. It is chore: replace CV PDF with the Oct 2026 version, not the brief's "update". The repo's commit-msg hook rejects subjects that start with "update".
  • Footer drops GitHub. This matches Part C's footer link list. The proof cards still link to GitHub repos.
  • kbClosing on /ai unchanged. "Hiring a Technical PM or AI Implementation Lead?" is approved verbatim copy from feat: rework /ai for hiring teams with proof, mobile layout and nav link #119 and asks about the role being hired, so it was left as is. Roman should confirm.
  • Dark-mode Download CV button. It looks low-contrast in dark mode. This is the existing btn--primary style, unchanged by this PR.

🤖 Generated with Claude Code

romahawk and others added 2 commits October 14, 2026 20:32
The May CV still said "Technical Product Manager", used the proton.me
address and a P&L figure. The new export passed the text checks in
docs/homepage-v3.md Step 1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Align the site title with the CV and LinkedIn headline, lead the hero
with the name and title, and cut the homepage to Hero, Work, About and
Contact so recruiters reach the proof and the CV faster. Rename the
capstone to Rolevoice and drop teacher-in-the-loop wording (D10).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
portfolio-fullstack Ready Ready Preview Oct 14, 2026 6:42pm UTC
portfolio-react Ready Ready Preview Oct 14, 2026 6:42pm UTC

@romahawk
romahawk merged commit 247fd24 into main Oct 15, 2026
6 checks passed
@romahawk romahawk mentioned this pull request Oct 15, 2026
8 of 12 tasks

This branch was successfully deployed

2 active deployments
Preview – portfolio-react — 6c651c04 Deployed Oct 14, 2026 by vercel[bot]
Preview – portfolio-fullstack — 6c651c04 Deployed Oct 14, 2026 by vercel[bot]
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