Zum Inhalt springen
Back to home

Changelog

All updates and improvements to MyCVBuilder

Pro subscribers get the Pro photo engine again

Bug Fix
v5.55.1

A subscription check compared against a tier value the database never stores, so every paying Pro subscriber was treated as a free user and locked out of the Pro image engine they had paid for. Fixed.

  • Monthly and yearly Pro subscriptions both resolve to Pro again
  • Covered by a regression test

Paste the posting — the rest fills itself in

Improvement
v5.55.0

Writing a cover letter now starts where it should: with the job posting. Company, position and contact person are read straight out of it instead of being typed in first, and everything stays editable afterwards.

  • The posting is the first and only required field
  • Company, position, contact person and address are extracted from it
  • Anything you type yourself still overrides the posting
  • Nothing is guessed — a detail the posting omits stays empty

Cover letters are saved and editable

New Feature
v5.54.0

Cover letters used to live in a popover and disappeared on reload — and you could only copy the text out. Every CV now has its own letter library: generate one per application, edit every line, keep them side by side, and export each as a PDF.

  • New view per CV with letter list, editor and preview
  • Letters are stored — reload, tab switch and 'New' no longer lose them
  • The job posting is kept, so regenerating needs no re-paste
  • Recipient name and company address for a proper letter head
  • Fixed: the letter ignored your market, so German users got Swiss wording in a DIN 5008 layout

CVs for apprenticeships and career starters

New Feature
v5.53.0

Tell the advisor you are looking for an apprenticeship or just starting out, and the whole CV adapts: plain language instead of executive prose, no invented metrics, and a strength score that stops treating an empty work history as a defect. Two new photo styles dress you in your own clothes or in workwear instead of a blazer.

  • New career stage 'Looking for an apprenticeship' now reaches the AI instead of being dropped
  • Schnupperlehre, school level and grades are understood as real CV content
  • Strength score no longer demands metrics, five skills or two prior roles
  • Photo styles 'Natural' and 'Trade' — everyday clothes or workwear, never a suit

Editor complete: brightness, contrast, retouch

New Feature
v5.52.0

The headshot editor is now complete: fine-tune brightness, contrast, saturation and a light soften (retouch), with a live preview — chained on top of crop and background, then saved to your collection.

  • Live-preview adjustments baked into the image on apply
  • Full editor: crop + background + adjust, all client-side

Editor: remove or replace the background

New Feature
v5.51.0

The headshot editor gains a background tool: remove the background (transparent) or replace it with white, grey, or a professional blue — all in your browser. Crop and background now chain into one edit.

  • Background removal runs client-side (photo stays on your device)
  • Chain crop + background, then save to your collection

Edit your headshots: crop

New Feature
v5.50.0

A photo editor for your headshots starts here — crop any headshot to the right frame and aspect, and the edited version is saved to your collection. Background and adjustments follow.

  • Crop with 1:1 / 4:5 / 3:4 aspect and zoom
  • Edited result saved as a new headshot you can apply to any CV

Generate and compare headshot variants

New Feature
v5.49.0

You can now generate several headshot takes and compare them side by side, then pick the best one — no more losing a good result when you try again.

  • 'Generate another variant' keeps every take in a strip
  • Click a thumbnail to switch; each has its own download/claim

Manage your headshots + apply to any CV

New Feature
v5.48.0

The Photo Studio page now shows all your headshots and lets you apply any one to any of your CVs with a click, or delete it — no need to open the CV editor.

  • Overview grid of your whole headshot collection
  • Apply to any CV (copied into the CV, safe to delete after)
  • Delete headshots you no longer want

Pick from all your headshots

New Feature
v5.47.0

Every AI headshot you generate is now kept in your collection. In the Photo Studio you see all of them and can apply any one to a CV with a click.

  • Headshots accumulate in a per-account collection
  • Photo Studio shows a 'Your headshots' picker

Headshot 'use in HD' now actually works

Bug Fix
v5.46.5

If you were signed in and generated an AI headshot, the 'use in HD' button sent you to the homepage and lost the photo. It now saves the HD as your CV photo.

  • Signed-in generate now claims + parks the HD instead of a dead link

Deleting a CV keeps your subscription

Bug Fix
v5.46.0

Deleting one CV no longer cancels your paid subscription, and old auto-save snapshots and logs are now cleaned up automatically so the database stays lean.

  • Subscription/usage survive a single-CV deletion (FK set null)
  • Daily retention cron prunes old revisions, logs, webhook events

Your headshot stays yours

Bug Fix
v5.45.0

The free AI headshot is no longer added to the public gallery unless you tick an optional box — previously using the tool was treated as blanket marketing consent.

  • Marketing gallery use is now explicit opt-in, default off

Webhook hardening

Bug Fix
v5.44.0

Closed two abuse vectors found in the security audit: the Telegram webhook now requires its secret, and repeated Stripe webhook deliveries can no longer refill a quota.

  • Telegram webhook fails closed without its secret
  • Stripe webhook is now idempotent (no replay quota refill)

No more zoom-on-tap on iPhone

Bug Fix
v5.43.1

Tapping a text field on iPhone no longer zooms the page — form fields use a 16px size on mobile, the size iOS needs to leave the viewport alone.

  • Half the traffic is mobile — this removes a jarring zoom on every field

No more silently lost edits

Bug Fix
v5.43.0

The editor now tells you honestly when a save fails instead of showing 'Saved', keeps your changes marked unsaved, and warns before you leave the page with unsaved edits.

  • Failed saves show 'Not saved' instead of a false 'Saved'
  • Warns before navigating away with unsaved changes

Your font, in the PDF too

Bug Fix
v5.42.0

The CV now renders in your chosen font from the very first paint — including the exported PDF, which previously fell back to a default typeface.

  • Font loaded server-side; no flash, correct PDF typeface

Delete your account yourself

New Feature
v5.41.0

You can now delete your account and all your data directly from the account page — a type-to-confirm danger zone wired to the existing erasure endpoint.

  • Self-service erasure (GDPR Art. 17 / nDSG)
  • Type-to-confirm guards against accidental deletion

Private CVs are actually private

Bug Fix
v5.40.0

A CV set to 'private' is now viewable only by its owner — previously the private setting was cosmetic and anyone with the link could open it.

  • Private CVs 404 for non-owners on both the page and the public API

Findable on Google

Improvement
v5.39.0

Fixed an SEO bug that hid the pricing and changelog pages from Google, added the marketing pages to the sitemap, and gave public CVs rich-result data so recruiter name searches can surface them.

  • Removed the global canonical that de-indexed every sub-page
  • Sitemap now lists pricing, headshot, info, changelog
  • Public CVs carry Person/ProfilePage structured data

Faster photos, lighter PDFs

Improvement
v5.38.0

AI-enhanced photos are now compressed (~10x smaller) and CV photos load at the right size — the CV page opens faster and the exported PDF is much smaller.

  • Enhanced photos stored as capped WebP instead of 1.3MB PNG
  • CV page requests a sized photo; legacy photos downscaled on the fly
  • Images cached hard (content-addressed paths)

Working upgrade path

Bug Fix
v5.37.0

The pricing page buttons now actually start checkout, signing in mid-checkout redirects cleanly instead of a dead alert, and free accounts get their allowance immediately instead of being blocked.

  • Pricing CTAs open checkout for your CV
  • 401 during checkout redirects to sign-in and back
  • Free accounts get their monthly allowance on first use

Edit your CV without an account

Bug Fix
v5.36.0

After an anonymous upload you can now actually edit your CV right away — the editor opens and saves work. A banner offers to create a free account to keep it permanently.

  • Anonymous CVs are freely editable; account CVs stay owner-only
  • Clear path to claim your CV into a free account

Your CV photo in the email

Improvement
v5.35.0

The CV-ready email now shows the CV's profile photo next to the name — the mail is instantly recognizable as yours.

  • Served via the existing image proxy, no attachments
  • Falls back gracefully when the CV has no photo

Branded sign-in emails

Improvement
v5.34.0

Magic-link, welcome, recovery, and email-change emails now use the same polished MyCVBuilder design as everything else — instead of Supabase's bare defaults.

  • German-first with an English subline
  • Works in every mail client, light and dark
  • Config now versioned in the repo

Entry Pack lifecycle emails

New Feature
v5.33.0

You now get a confirmation email after buying the Entry Pack, a heads-up 7 days and 1 day before it expires, and a notice if a payment fails — previously all of this happened silently.

  • Purchase confirmation with what exactly was unlocked and until when
  • Expiry warnings with a one-click renewal link
  • Payment-failure notice instead of a silent downgrade

Redesigned CV-ready email

Improvement
v5.32.0

The email with your CV link got a full redesign: works in every mail client including Outlook, light and dark mode, and tailored copy depending on whether you are new or signed in.

  • One clear action per email — no clutter
  • Robust rendering in Outlook, Gmail, and Apple Mail
  • Honest copy: no fake urgency or unverifiable claims

Word download in the viewer

New Feature
v5.31.0

The download button on every CV is now a small menu: PDF or a native Word file (.docx) with embedded photo — on desktop and mobile.

  • Same tier rules as the PDF export
  • Warm exports are noticeably faster since the renderer stays hot

Sign-in, consolidated — and two bugs gone

Improvement
v5.30.0

Google and email sign-in now share one compact block (46px less card height). Along the way two real defects were fixed: choosing Google mid-flow no longer loses your selected file, and the promised edit-link email now actually arrives for anonymous uploads.

  • Google button with compliant white G-tile and inline Recommended badge
  • Divider and email label merged into one line; inline email validation
  • Selected file survives the Google OAuth redirect (restored automatically)
  • One Tap deliberately rejected: its script sets cookies before consent

The landing page fits your laptop screen

Improvement
v5.29.1

On desktops with limited height (MacBook Air, small windows) the whole landing page compresses gracefully — hero, upload card, the three steps and the footer all fit on one screen with zero scrolling. Large screens keep the spacious layout.

  • Three cascading height tiers (1300px / 850px / 740px), width-gated to desktop
  • Verified across seven viewports from 1280x720 to 1440x1350 — zero overflow everywhere

The business plan opens with a face and explains itself with diagrams

New Feature
v5.29.0

The internal strategy deck caught up with the product pitch: the founder video sits right on the opening slide, the living card field and particle canvas back every slide, and two new architecture diagrams show how everything hangs together — fully serverless, one canonical profile.

  • Hero layout can now carry a video side-by-side with headline and proof pills
  • Two mermaid diagrams: system architecture and the upload-to-profile pipeline, bilingual
  • Same ambient layer as /info: floating cards, polaroids, falling particles, scroll recompose

The corner badge stops living in the past

Bug Fix
v5.28.4

The little badge in the bottom-right corner of the home page proudly said v1 — hardcoded since v1 actually was current. It now shows the real build version.

  • Reads the build-time app version instead of a string literal

Cards give way like water under your cursor

Improvement
v5.28.3

Steer your mouse into a pile of cards and they gently yield — eased aside with a soft, watery lag, settling back once you move on. Very subtle, and it composes with the stir: the field now feels like a surface, not a picture.

  • Soft radial falloff around the cursor; sharp (near) cards yield more than hazy ones
  • Watery easing in both directions — nothing snaps, everything settles
  • Touch devices and reduced motion stay perfectly still, as before

Your cursor stirs the field now, it doesn't slide it

Improvement
v5.28.2

Mouse parallax used to shove the whole backdrop in one direction — flat and predictable. Every card now answers the cursor in its own direction: move right and one card eases right, its neighbour drifts up-left, a third slips away diagonally. Smooth, but never anticipatable — and how the field stirs keeps changing as cards renew.

  • Each card is dealt a private response direction and strength when it appears
  • Sharp cards still answer more than hazy ones — the depth stays honest
  • Just as light as before: the mouse still only moves two numbers

More faces up front, and the particle sky reaches /info

Improvement
v5.28.1

The home page leads with people now: more polaroids, a third larger — the human touch. And the fine particle-and-hairline drawing from the home page backs the /info pitch too, its dots drifting in from the top.

  • Roughly two thirds of the home field are faces now, at 135% size
  • /info gets the blueprint canvas: drifting dots, hairlines, corner ticks — falling from above

One clear way in — the LinkedIn cookie importer is gone

Improvement
v5.28.0

The technical LinkedIn import (browser cookies, developer tools) confused more people than it helped, so it's gone. The simple path stays front and centre: export your LinkedIn profile as a PDF — the guide is right on the upload card — and drop it in like any CV.

  • The upload form is one focused path now, no tabs
  • The 4-step LinkedIn-PDF export guide stays on the card
  • LinkedIn PDF exports are still understood perfectly by the importer

The home page field flows instead of pulsing

Improvement
v5.27.5

The landing page backdrop no longer re-sorts in one synchronized burst every few seconds. Each card runs its own slow, perpetual journey — arrive, breathe, set off for the field's emptiest spot — so there is always gentle motion and never a jolt.

  • Per-card journeys of 6–11 seconds with individual timing — phases never synchronise
  • Travellers head for the sparsest area, so the coverage self-organises
  • /info keeps its scroll-driven choreography unchanged

Share cards render large again — and stop leaking street addresses

Bug Fix
v5.27.4

WhatsApp silently downgrades links whose preview image is too heavy to a tiny square thumbnail — our photo cards had crossed that line. The card is now a tenth of the size, so the large preview is back. And the location pill shows your city, never your street.

  • Preview image re-encoded as JPEG: ~600 KB → ~58 KB, visually identical
  • Location pill shows the city — the street address never leaves your CV page

The pile continues past every edge

Improvement
v5.27.3

A few very soft card slivers now peek in from the top and bottom edges too — dimmer, hazier, mostly off-screen — so the field wraps the whole page instead of just flanking it. And a third colour orb reaches into /info from the top centre.

  • Rim slivers live on their edge for good: they re-sort sideways along it, never into the text
  • Half the brightness and extra haze — texture, not subjects
  • The soft top-centre colour wash from the home page now also warms the /info pitch

Evenly dressed edges — and a home page that shuffles itself

Improvement
v5.27.2

The floating cards no longer clump: each screen edge is dressed evenly from top to bottom, new cards appear where the biggest hole is, and the sides stay balanced. And the home page now runs the same living field as /info — it gently re-sorts itself every few seconds instead of sitting still.

  • Each side's height is divided into one zone per card — no more five-card piles next to empty stretches
  • Replacements enter on the emptier side, into its biggest gap
  • The home page field re-deals itself on a gentle timer, with the same arcing choreography

The card field breathes with your cursor

Improvement
v5.27.1

On the home page and the /info pitch, the floating cards now follow your mouse — barely. Sharp cards travel a little, hazy ones barely at all, which quietly deepens the space without ever competing with the content.

  • Depth comes from each card's focus: near cards move up to ±17px, far ones ±4px
  • The field glides back to centre when your cursor leaves the window
  • Touch devices and reduced-motion preferences get a perfectly still field

Every slide deals the backdrop a new formation

Improvement
v5.27.0

On /info, changing slides now re-sorts the whole card field like a hand rummaging through a pile of photos: every card sweeps to a fresh spot on a curved, banked path, each slide has its own formation mood, and far more faces cycle through the polaroids.

  • Cards travel on diagonal arcs, bank into the motion and settle upright — never a straight mechanical line
  • Half the field is polaroids now, and the whole gallery cycles before any face returns
  • Formation mood (height band, left/right balance) wanders with the slide; cards never cross the text
  • Rapid slide-skipping no longer stutters the field — only the slide you settle on deals a formation

The pitch reacts to your scroll — and grew into the screen

Improvement
v5.26.3

Every slide change on /info now recomposes part of the backdrop and nudges the whole field, so scrolling feels connected to the world behind it. And on large screens the presentation finally uses the space: bigger headlines, wider layouts, roomier cards.

  • Slide change retires a third of the cards early; replacements appear somewhere new
  • A subtle parallax nudge per slide adds depth without scrolling the backdrop away
  • Headlines up to 72px on large screens, every layout gets a wider tier

The floating cards actually float now

Bug Fix
v5.26.2

The background cards twitched instead of drifting, kept showing the same face, and the home page had a scrollbar that led nowhere. All three are gone.

  • Each card drifts on its own timing per axis, so it never comes to a full stop
  • Headshots are drawn from the whole gallery instead of the last few uploads
  • The home page ends exactly at the bottom of the screen again

The backdrop stays — and keeps reinventing itself

Improvement
v5.26.1

On /info the floating CV cards and headshot polaroids used to sit on two slides and scroll away with them. They now live behind the whole pitch, and every card has a lifetime: it drifts, fades out and comes back somewhere else as something else.

  • Position, size, tilt and content are drawn fresh on every respawn
  • Cards keep clear of the middle of the screen, so text stays the loudest thing on it
  • The slide indicator sits on a pill now — an idle dot used to vanish over a passing white card

The pitch opens the way the product looks

Improvement
v5.26.0

The /info presentation now carries the home page's atmosphere: CV cards and real AI headshots drifting past as polaroids on the opening and closing slides, and every slide settling into place as you reach it.

  • Floating CV cards and headshot polaroids behind the opening and closing slides
  • Slide content fades and lifts into place as it becomes active
  • Motion respects the reduce-motion preference and never hides content it cannot reveal

PDF downloads stop failing halfway

Bug Fix
v5.25.6

Some CV and cover-letter downloads died with a generic "PDF generation failed" — the renderer ran out of room and took itself down while drawing the page. It now gets the memory it needs, a browser configuration built for printing, and a page-ready check that cannot hang.

  • Renderer memory tripled; the print budget matches the work again
  • Page-ready detection no longer waits on open network connections
  • Cover-letter PDFs skip the cold-start browser download

AI edits no longer time out on long CVs

Bug Fix
v5.25.5

Guided improvements and job tailoring rewrite your whole CV, which took longer than the old 60-second budget allowed on detailed profiles. The budget now matches the work, and if something does go wrong you get a readable message instead of a parser error.

  • AI chat editor and job tailoring get a 5-minute budget instead of 60 seconds
  • Non-JSON error responses are reported in plain language

Share cards that tease the profile

New Feature
v5.25.0

Sharing your CV link now shows a proper preview card: your photo in an accent frame, name and headline, stat pills (positions, skills, location) and your top skills as chips — in your CV's language.

  • Rendered live per profile for WhatsApp, LinkedIn, iMessage & Co.
  • Photo-less profiles get a clean monogram card

The /info pitch deck

New Feature
v5.24.0

A fullscreen presentation at /info tells the whole story in 8 slides: why CVs eat your Sunday evenings, what one upload does instead, real proof, pricing and privacy — navigable by scroll, keyboard or the dot rail, fully bilingual.

  • Scroll-snap slides with keyboard navigation and progress dots
  • Every claim backed by a shipped feature — no invented stats
  • Direct paths to upload (/) and the free AI headshot (/headshot)

Global rate limiting is live

Improvement
v5.23.0

Abuse protection for the AI endpoints now counts globally in Redis across all server instances instead of per instance — request floods can no longer slip through by hitting parallel instances. The limiter reports its health to the admin console.

  • Serverless connection bug fixed: the first request per instance silently fell back to in-memory counting
  • Self-diagnosis: ratelimit.redis.active / memory_fallback breadcrumbs in the console

One language switcher everywhere

Improvement
v5.22.2

The DE/EN switcher is now the exact same control on every surface — homepage, CV pages, editor, onboarding: both languages always visible, the active one highlighted. No more guessing whether a flag shows the current or the target language.

  • Shared component replaces six per-page implementations
  • Both options always visible with clear active state (aria-pressed)

Cleaner shared CV links

Improvement
v5.22.0

Recipients of your CV link now see the document, not app chrome: the bottom bar is gone in view mode — PDF download, language and dark mode moved into the slim top bar. The bottom toolbar remains in edit mode, where thumb-reach matters.

  • One slim 48px top bar instead of top + bottom chrome on mobile
  • PDF download stays the most prominent action (accent button)
  • Full viewport height for the CV content

Reference-grade CV content structure

Improvement
v5.21.1

The AI now writes achievement bullets with bold lead labels ('Platform integrations: …'), marks ongoing roles as 'Present' instead of showing a lone start date, and names skill clusters after what they actually contain. Sidebar links no longer break mid-word in the PDF.

  • Bold bullet lead-ins now on screen too, not only in print
  • Ongoing roles render as 'Jan 2020 – Present' everywhere (web, PDF, DOCX)
  • Sidebar links truncate cleanly with an ellipsis in the PDF

One-click Reoptimize

New Feature
v5.21.0

New button in the AI tools panel: rebuild your entire CV from the original source text with the current AI (Claude Opus 5). Your photo is kept, and every previous version stays restorable from history.

  • Ideal after AI upgrades — newer models write noticeably better CVs
  • Explicit confirmation step; manual edits are overwritten but versioned
  • Counts as one AI edit towards your plan limit

Word export rebuilt — native DOCX with photo

Improvement
v5.20.0

DOCX downloads are now generated natively instead of being converted from HTML: real Word styles, your photo embedded at its natural aspect ratio, proper bullets, page numbers and market-aware paper size (A4/Letter).

  • Profile photo embedded in the document header
  • Reference-style footer: name left, page x/y right
  • Bold lead-ins on achievement bullets, grouped skills, clickable links
  • Faster and more reliable — no external conversion service involved

Changelog linked publicly, model labels updated

Improvement
v5.18.5

The full changelog is now one click away from every page (footer link). All product texts reflect the current AI models: Claude Opus 5 powers CV extraction, Claude Sonnet 5 the chat.

  • Footer on every page links to /changelog
  • Outdated 'Claude Sonnet 4.6' references updated across landing, onboarding, chat and admin

Editing is owner-only, and text fields stay clean

Bug Fix
v5.18.4

The CV editor now opens only for the profile owner (saves were always rejected for others, but the editor UI pretended to work). Single-line fields like your name use a plain text editor — no more stray HTML tags after editing — and a rejected save honestly reverts instead of showing a false checkmark.

  • ?mode=edit is enforced server-side: non-owners always get the view
  • Name, headline, roles etc. edit as plain text; only summaries keep rich formatting
  • Server strips HTML tags from single-line fields as defense in depth
  • Failed saves revert visibly instead of pretending to have saved

PDF photo in its full portrait format

Improvement
v5.18.3

The photo in the exported PDF is no longer cropped to a square — it prints at the generated image's natural aspect ratio. Paper has room.

  • Print photo block sizes itself to the image's own aspect ratio instead of a forced square

Fixed the empty strip next to the CV photo

Bug Fix
v5.18.2

In wider desktop windows the hero photo silently shrank in width (a CSS aspect-ratio/max-height interaction), leaving an empty strip on the right. The photo now always spans the full width and crops vertically instead.

  • Explicit full width on the hero block — the max-height cap no longer transfers into a narrower width
  • Verified in a real browser: 480px -> full width at the affected window size

Fixed the blurry halo behind the mobile header

Bug Fix
v5.18.1

When scrolling a CV on the phone, the hero photo shone through the semi-transparent top bar as an ugly blurred halo. The mobile header is now solid.

  • Mobile top bar uses a solid background instead of frosted glass over the photo
  • Desktop keeps its translucent header (it sits over text, where the effect works)

CV extraction upgraded to Claude Opus 5

Improvement
v5.18.0

The AI step that turns your uploaded CV into a polished profile now runs on Claude Opus 5, Anthropic's brand-new top-tier model (released July 24) — noticeably better extraction, structure and wording quality.

  • Profile extraction and refinement now use Claude Opus 5 via the AI gateway
  • Translation and chat remain on Claude Sonnet 5 for speed

CVs open in your browser's language

Improvement
v5.17.0

Public CV pages now follow the viewer's browser language automatically, like the rest of the app. A manual language choice still wins: once you pick a language, it sticks across reloads and even on your other devices when signed in.

  • Language precedence on CV pages: explicit ?lang link → your saved choice → browser language
  • Previously CVs always opened in English unless the link contained ?lang=de

More photo on mobile: true portrait hero

Improvement
v5.16.2

The mobile hero photo now uses a taller 2:3 portrait ratio and a slimmer gradient, so noticeably more of the photo is visible above the name and intro.

  • Hero photo ratio 3:4 → 2:3 on phones (desktop and print unchanged)
  • Backdrop gradient halved — the intro text keeps its own guaranteed-legible scrim

PDF export completely rebuilt — professional print quality

Improvement
v5.16.0

The downloaded CV PDF now looks like a professionally typeset document: experience starts on page one next to the sidebar, nothing is cut off at the right edge, dates sit cleanly under each role, bullets carry bold lead-ins, links print their real URLs, and a footer shows your name and page numbers. The cookie banner no longer prints on every page.

  • Fixed the layout collapse that left page 1 half-empty and clipped every line mid-word
  • Dates now print under the role title in mono type (no more wrapped date column)
  • Bold lead-in phrases on bullets, education dates restored, real URLs in the links section
  • Page footer with name and page x/y; cookie banner and modals excluded from print
  • Tighter print typography: scaled headings, coherent line heights, denser sidebar

Mobile CV polished: no side gutter, elegant no-photo hero

Improvement
v5.15.2

A deep mobile audit fixed the stray right-edge gutter, collapsed the huge empty block shown when a CV has no photo, made the intro always legible over the photo, and fixed a dozen smaller layout and tap-target issues across all templates.

  • Right-edge gutter eliminated (horizontal overflow contained at three levels)
  • No-photo CVs get a compact identity band instead of a huge empty gradient
  • Intro overlaid on the photo now sits on a guaranteed-legible gradient, clamped to 6 lines
  • Photo Studio gets a visible tap badge on phones; add-photo button no longer blocked
  • Single-column template shows the intro in the correct order on mobile

PDF export works everywhere — no external render server needed

New Feature
v5.15.0

CV and cover-letter PDFs now render directly in the cloud, independent of the self-hosted render service. If that service is unavailable, exports switch to the built-in renderer automatically.

  • Built-in serverless Chromium renderer as automatic fallback for CV PDF export
  • Cover letters also render as real PDFs serverlessly (was HTML-print fallback)
  • Failed render service is skipped for a few minutes instead of delaying every download

Fixed the empty gap above the mobile photo + no more employer contacts

Bug Fix
v5.14.3

Removed the stray empty band that appeared above the photo on phones. And if your CV listed an employer's email or phone (common in LinkedIn exports), it's no longer shown as yours — it's dropped instead.

  • Mobile bottom-nav spacer no longer pushed a blank band under the header
  • Contact whose email domain matches an employer on the CV is dropped (email + phone)

Redesigned mobile CV: a photo-led profile hero

Improvement
v5.14.1

On phones, your CV now opens like a personal profile page: a full-bleed portrait photo with your name, title and intro elegantly set over it, followed by your contact details — instead of a cramped wide photo with the intro buried further down.

  • Full-bleed 3:4 portrait photo leads the mobile layout
  • Name, title and intro text overlaid on the photo with a legible gradient
  • Order fixed to name → title → intro → contact; duplicate location removed

No stranger's contact details, richer summaries from your website

Improvement
v5.13.3

The importer no longer picks up an employer's email or phone that was buried inside a job entry — it uses only your own contact details or leaves them empty. It also draws more on your linked website's positioning and voice when writing your summary.

  • Contact extraction scoped to the header/contact block, never an employer contact inside an experience entry
  • Summary now reflects the positioning and voice from your own linked website (facts stay CV-sourced)

Photo leads on mobile

Improvement
v5.13.2

On phones, sidebar-layout CVs now open with the hero photo and name at the very top, like a personal profile page, instead of starting with the experience list.

  • Hero photo and identity lead the mobile layout across all sidebar templates
  • Desktop side-column and print layouts are unchanged

PDF export no longer fails when the render service is down

Bug Fix
v5.13.1

If the self-hosted PDF renderer is unreachable, the export now automatically falls back to serverless rendering instead of showing an error.

  • Automatic failover from Gotenberg to the Playwright renderer on any failure, not just when unconfigured
  • Fast 20s timeout so a hung render tunnel no longer stalls the download

More reliable CV import — no more garbled profiles

Improvement
v5.13.0

Uploading a multi-column PDF (like a LinkedIn export) could produce a broken profile with a wrong name and invented experience. The importer now reads the full source, retries on hiccups, pulls extra context from your own linked website, and refuses to publish anything it couldn't parse cleanly.

  • Fixed multi-column PDF/LinkedIn exports collapsing into a wrong name and placeholder experience
  • Never fabricates a degree, employer, or project when parsing is incomplete
  • Pulls positioning context from a linked personal/company website to enrich thin exports
  • Retries the AI extraction on transient errors and refuses to publish unparseable uploads

Guided photo capture: spoken guidance on mobile, calmer zoom

Bug Fix
v5.12.1

The guided headshot capture now speaks its instructions on iOS and Android (previously only the beeps played), zooms toward your face noticeably more gently, and the favicon finally matches the logo.

  • Voice instructions unlocked for mobile browsers and no longer swallowed mid-flow
  • Auto-zoom capped lower and smoothed — less jumpy while you position yourself
  • Browser-tab favicon and iOS home-screen icon redrawn to match the MY logo mark

Billing shortcut in the user menu

Improvement
v5.12.0

Subscription & Billing is now one click away: the avatar menu in the top-right corner links directly to your plan, usage and invoice history.

  • New Billing entry in the avatar dropdown, next to Dashboard and Account
  • Opens the Subscription & Billing page with live invoices from Stripe

AI upgrade — Claude Sonnet 5 across every feature

Improvement
v5.11.0

All AI features — CV extraction, translation, ATS score, job tailoring, cover letters, chat editing and photo lookup — now run on Claude Sonnet 5, the successor to Sonnet 4.6 with markedly better writing and extraction quality at the same price.

  • CV extraction, refinement and bilingual translation upgraded to Claude Sonnet 5
  • ATS score, job tailoring, cover letters and the AI chat editor upgraded as well
  • Vision OCR for scanned PDFs and the Telegram bot moved up from Sonnet 4
  • Same response speed and behavior as before — the model is simply smarter

New 'Strength' tab — a live CV quality score

New Feature
v5.10.0

A new Strength tab scores your CV's content 0–100 and lists concrete fixes — duty-phrase openers, missing metrics, clichés, thin roles, a missing photo for your market — updating live as you edit.

  • Deterministic content score (no AI) that updates as you type
  • Flags duty-phrase openers, missing metrics, clichés and thin roles with concrete fixes
  • Market-aware: photo + language nudges only where the market expects them

One-click ATS optimization + distinct template density

New Feature
v5.9.0

Your ATS score is no longer a dead end: 'Optimise with AI' weaves the missing keywords and top improvements into your CV and instantly re-scores it. Plus, templates now render at their intended density, so they actually look different.

  • ATS popover: 'Optimise with AI' applies missing keywords + top improvements truthfully (no stuffing) and re-scores instantly
  • Templates render their compact / balanced / airy content density (was defined but never used)

Market-correct output: page size, Swiss spelling, photo prompt

Improvement
v5.8.2

A batch of polish toward a market-correct CV: PDFs now use the right page size for the target market, Swiss German CVs use 'ss' instead of 'ß', and the editor prompts you to add a photo where it's expected.

  • PDF export uses Letter for US/UK and A4 elsewhere (matching the Market tab)
  • Swiss German CVs render ß as ss in the content (summary, experience, skills)
  • An empty photo in the editor now shows an 'Add a photo' prompt for DACH CVs

AI Chat editor now makes real AI edits

Bug Fix
v5.8.1

The 'Refine with AI' chat now applies your request with real AI for any instruction — not just a handful of keywords — and shows a proposal you accept or reject. A credit is only used once a proposal is generated, and rejecting never changes your saved CV.

  • Any free-form instruction now works (previously only a few keywords did anything)
  • The proposal is no longer saved until you accept it; rejecting leaves your CV untouched
  • A credit is charged only after a real proposal is generated

Industry guidance no longer overwrites your design

Improvement
v5.8.0

Picking an industry now only updates the contextual tips — it never touches your chosen template, colours or fonts. Want the industry's full look anyway? Apply it explicitly with one click, and undo it just as fast.

  • Selecting an industry sets the guidance only — it never restyles your CV
  • New 'Apply look' button on the active industry to opt into its template/colour/font
  • One-click Undo after applying, plus a note on the guidance banner explaining where the tips come from

Version history with one-click revert

Improvement
v5.7.1

Every change to your CV is checkpointed — open Version History (in the editor's AI panel) to browse past versions and revert to any of them with one click. The history is now cleaner and the revert button is always visible.

  • Revert button is always visible (no longer hover-only)
  • Auto-save snapshots are throttled, so the history shows meaningful checkpoints instead of one entry every few seconds
  • Reverting saves your current state first, so you can always undo a revert

Review AI tailoring before it applies + new Header Band layout

New Feature
v5.7.0

Tailoring your CV to a job now shows you exactly what the AI changes — headline, summary and which roles — so you approve or discard before anything is applied. Plus a bold new full-width Header Band layout.

  • Tailor to job: preview a clear before/after diff of headline + summary and the adjusted roles, then Apply or Discard — no more silent full-CV changes
  • Larger job-description input for easier pasting
  • New 'Header Band' template: full-width banner with photo, name and contact; the banner follows your accent colour

Free AI headshot tool — no login needed

New Feature
v5.6.1

A standalone /headshot page lets anyone turn a selfie into a professional AI headshot for free, without an account — sign up to download it in HD without the watermark and use it in your CV.

  • Public /headshot page: guided 3-angle capture (same as in-app) or single-photo upload — AI headshot in seconds, no login
  • Watermarked free preview; sign up for the clean HD version + use it directly in your CV
  • Reachable from the homepage too

Photo Studio: delete photos, sharper search, clearer capture

New Feature
v5.5.0

You can now remove any photo from the studio with one click, the web photo search no longer surfaces same-name strangers, and the guided capture explains each step for first-time users.

  • Delete button on every photo candidate (list + grid) — removes wrong or leftover photos instantly
  • Web photo search requires a real context match (company/title/location), not just a shared name — no more namesakes
  • Guided capture: a 'Photo X of 3' counter, a plain-language intro, and friendlier step hints
  • Larger capture window on desktop

Guided headshot: 3-2-1 countdown, voice + review step

Improvement
v5.4.0

The guided headshot capture now gives a spoken instruction and a visible 3-2-1 countdown with beeps before each shot — no more accidental early captures — plus a review step to retake any angle before generating.

  • Hold a valid pose; a 3-2-1 countdown (beeps + spoken cue) runs before capture — breaking the pose cancels it
  • Review screen after all 3 angles: retake any single angle (or all) before generating
  • Audio mute toggle

AI Headshot v2: identity fidelity + industry styling

Improvement
v5.3.0

Major quality upgrade to the guided AI headshot. gpt-image-1 now runs with high input fidelity for far better likeness, and the background, attire and expression adapt to your target industry and market (DACH-aware). Plus an in-capture style picker.

  • input_fidelity=high preserves real facial features, skin tone and identity far better (OpenAI's default is low)
  • Industry-aware styling: finance/legal → executive, creative → editorial, otherwise professional
  • Market-aware convention: Swiss/DACH = natural and conservative with minimal retouching
  • quality=high + opaque studio background; the front angle is sent first for maximum face fidelity
  • In-capture style picker (Professional / Executive / Editorial), pre-selected from your industry

Guided AI Headshot: front + side capture

New Feature
v5.2.0

New guided selfie capture walks you through three angles (front and both sides) with live head-pose detection and an auto-shutter, then feeds every angle to gpt-image-1 for a far more accurate, identity-preserving business headshot.

  • On-device head-pose detection via MediaPipe Face Landmarker — runs in the browser, photos stay on your device until you generate
  • Hold-steady auto-capture per angle, with a manual shutter fallback if detection is unavailable
  • Multi-angle reference (front + two sides) sharply reduces identity drift vs. a single frame
  • New endpoint POST /api/profile/[id]/photo/headshot — same paywall and rate limit as Enhance

Photo Studio v2: Headshot Decision Engine

New Feature
v5.1.0

Complete Photo Studio redesign. Three workflow sections (Source → Enhance → Confirm), before/after comparison slider, prompt chips for one-click styles, quality scoring with A/B/C grades, recommended photos split, dynamic CTA, mobile bottom sheet with 44px touch targets, and sticky confirm button.

  • Schema: candidates now store metadata (source, dimensions, quality scores, isRecommended)
  • Quality engine: Sharp-based sharpness, resolution, aspect-fit, face-likelihood scoring
  • Before/After: draggable comparison slider with pointer-capture
  • Prompt chips: Dark bg, Studio light, Swiss executive, Warmer tone, Outdoor, Minimalist
  • Mobile: bottom sheet (collapsed: CTA + Tools, expanded: full controls), 44px targets
  • Gallery: Recommended/All tabs, list/grid toggle, quality badges (A/B/C)

Photo gallery: list view with metadata + grid toggle

Improvement
v5.0.27

Found photos now default to a clean list view showing thumbnail, source, dimensions, format, and date in columns. Toggle between list and grid view. Both views are scrollable with a max height.

  • List view: table-like rows with 40px thumbnail, source icon+label, dimensions, format, date
  • Grid view: 4-5 column square thumbnails with selected checkmark
  • View toggle: List/Grid buttons in gallery header

Google Images via Serper.dev for photo discovery

Improvement
v5.0.26

Photo discovery now uses Serper.dev (Google Images API) as primary source for the top 4 queries, with SearXNG as fallback for remaining queries. Quota exhaustion triggers an email alert via Resend. Much better image quality and diversity from real Google results.

  • Serper.dev: POST google.serper.dev/images, 20 results per query, Google Images quality
  • Hybrid strategy: Serper for top 4 queries, SearXNG for remaining 5 (free)
  • Quota alert: Resend email to admin when API returns 429/403

Photo Studio: compact filmstrip, content-hash dedup

Improvement
v5.0.25

Found photos display as a compact horizontal scrollable filmstrip instead of large cards. Photo discovery now uses MD5 content hashing to prevent storing visually identical images across multiple searches.

  • Candidate gallery: 64px horizontal scrollable strip with hover metadata tooltip
  • Content-hash dedup: MD5 of image bytes prevents re-storing identical photos
  • existingCandidates passed to discovery for cross-search dedup

Photo Studio: rich metadata, URL import, paste, drag & drop

Improvement
v5.0.24

Found photos now show source (LinkedIn, Xing, Web, Upload), dimensions, format, and date in a rich card layout. New ways to add photos: paste from clipboard (Ctrl+V), import from URL, and drag & drop onto the preview area.

  • Candidate gallery: 2-3 col grid with source badge, format, dimensions, date
  • URL import: paste any image URL and upload directly
  • Clipboard paste: Ctrl+V anywhere in the studio
  • Drag & drop: drop image files on the preview area

Dashboard cards with large hero photos

Improvement
v5.0.23

Dashboard CV cards now feature a large 4:3 photo area with gradient overlay and the name overlaid. The photo is the visual centerpiece instead of a tiny avatar. Cards have a subtle zoom effect on hover.

  • Cards: aspect-[4/3] hero photo with object-cover, gradient-to-t overlay
  • Hover: scale-105 zoom transition on photo, border-accent glow
  • Fallback: large initials on gradient background when no photo

Broader photo discovery with more search engines and queries

Improvement
v5.0.22

Photo discovery now runs 9 parallel queries instead of 6, including a broad name-only search that finds conference photos, press images, and social media profiles. Added Google, Bing, DuckDuckGo, and Qwant image engines. Higher-resolution images get bonus scoring, and up to 8 candidates are stored instead of 5.

  • New queries: broad name-only, speaker/profile, name+photo+portrait
  • SearXNG: explicit multi-engine (Google/Bing/DDG/Qwant), 20 results per query, 12s timeout
  • Scoring: high-resolution bonus (+5 for 400px+), max 8 candidates stored

Upgrade modal scrollable on mobile

Bug Fix
v5.0.21

The pricing popup was not scrollable on small screens — all three tier cards stacked vertically and overflowed the viewport. The modal container now scrolls when content exceeds the screen height.

  • Fix: upgrade-modal.tsx outer container gets overflow-y-auto, inner card gets my-auto

Subscription dashboard with billing portal and webhook fix

Bug Fix
v5.0.20

The subscription page now shows your current plan, billing period, usage stats with progress bars, and a direct link to the Stripe Customer Portal for invoices and payment management. A critical webhook bug was fixed where Pro subscriptions were not recorded in the database because checkout.session.completed only handled one-time payments.

  • New: /api/billing-portal endpoint for Stripe Customer Portal sessions
  • Fix: checkout.session.completed now upserts subscription records for Pro plans
  • Subscription page: billing period, usage bars, portal link, upgrade options

Edit mode: narrow header; styling and AI tools in the right panel

Improvement
v5.0.19

The CV editor header no longer duplicates template, market, accent, font, and industry controls (use the Style and Market tabs). Share, versions, photo studio, usage, ATS, tailor, and cover letter moved into the sidebar AI tab. Language and theme for edit mode sit in a compact panel footer. The top bar keeps logo, name, view/edit, save status, save, and account; view mode keeps PDF plus language and theme in the header.

  • New: cv-ai-actions.tsx (ATS, tailor, cover; panelMode popovers)
  • CvEditPanel: actions + AI tools + footer (lang/theme); CvHeader slim in edit mode

Target market tiles use photo backgrounds instead of emoji flags

Improvement
v5.0.18

Emoji flags were unreliable across platforms. Each market (CH, DE, US, UK) now uses a dedicated background image in /public/images/market-tiles with a gradient overlay and text shadow for readability. Applied in the edit panel Market tab, onboarding step 1, and the header market dropdown thumbnails.

  • New: market-tile-backdrop.tsx (MarketTileBackdrop, MarketTileThumb)
  • Onboarding: grid-cols-2 on xs, sm:grid-cols-4 for wider tiles

Edit mode: right style panel fixed height and internal scroll

Improvement
v5.0.17

The flex row used default stretch, so the edit panel grew with the CV height and the page scroll felt wrong. The outer flex now uses items-start on large screens; the panel wrapper is sticky with viewport height (100dvh). CvEditPanel uses min-h-0 and overscroll-contain on the tab body so only the panel content scrolls while the bar stays fixed in view when scrolling the CV.

  • cv-public-page: lg:items-start; panel wrapper sticky top-0 z-20 max-h-[100dvh]
  • cv-edit-panel: 100dvh shell; tab area min-h-0 overflow-y-auto overscroll-contain

CV sidebar: better narrow-screen layout and reading order

Improvement
v5.0.16

On viewports below md, the main column now renders before the sidebar so experience and summary lead the scroll. Sidebar duplicate summary was removed from the mobile header block; hero photo uses a shorter 16:9 crop with max height. Tighter padding, min-w-0, break-words on contact and skills, and overflow-x-hidden on main reduce clipping and horizontal scroll.

  • Grid: aside order-2, main order-1; md+ restores column order
  • Photo: aspect 16/9 + max-h on mobile; md+ portrait sidebar
  • Contact/skills: break-words, max-md break-all where needed

Scope CV font to document; template-driven section headings

Improvement
v5.0.15

Profile font was applied on the outer editor flex container, so CvHeader, BetaRibbon, and the edit panel inherited the CV typeface. Accent CSS vars stay on the outer shell; fontFamily is set only on the CV document subtree. Section headings, dividers, summary accent bar, and sidebar labels now follow each template’s typography (e.g. uppercase vs statement titles). Executive Leadership: warmer hero gradient, clearer label, distinct from Modern Executive. Tailwind scans packages/templates for dynamic template classes.

  • cv-public-page: templateAccentVars + cv-document-scope with fontFamily
  • Section / SidebarLabel / industry block: sectionHeaderClasses + sectionGap
  • executive-leadership: name Executive Leadership, hero #2a1810 / #120a06
  • tailwind.config: content ../../packages/templates/src

Smooth handoff from onboarding pipeline to CV editor

Improvement
v5.0.14

After ingest completed, isSubmitting was cleared in finally while router.replace was still navigating, which unmounted the fullscreen terminal and briefly showed the landing page. We skip resetting submit state when redirecting to /cv/…?mode=edit (upload + LinkedIn import). Added app/cv/[slug]/loading.tsx with a branded shell while the CV RSC loads, plus a short “Opening your editor…” chip when the pipeline completes.

  • onboarding-upload-form: skipSubmittingReset on router.replace to CV edit
  • app/cv/[slug]/loading.tsx: full-viewport loading shell
  • onboarding-processing-view: completed-state handoff chip

Fix Vercel build: optional Supabase browser client when env missing (prerender)

Bug Fix
v5.0.13

AuthProvider called createBrowserClient during static generation; without NEXT_PUBLIC_SUPABASE_URL/ANON_KEY the SSR step for /dashboard/subscription failed. createSupabaseBrowserClient now returns null if env is unset; AuthProvider skips session wiring and finishes loading.

  • supabase-browser.ts: return null when URL or anon key missing
  • auth-context.tsx: guard useEffect and auth methods when client is null

Fix TS: usage-check incrementUsage row cast (Vercel build)

Bug Fix
v5.0.12

Vercel failed TypeScript on incrementUsage: Supabase .single() result types include GenericStringError, so casting directly to Record<string, unknown> was rejected. Use unknown as intermediate when reading the dynamic counter field.

  • usage-check.ts: current as unknown as Record<string, unknown> before field read

Fix Vercel build: lazy Supabase in usage-check (no top-level createClient)

Bug Fix
v5.0.11

usage-check.ts instantiated @supabase/supabase-js at module load with process.env values. During next build (collect page data), env can be unset, causing “supabaseUrl is required” when loading /api/chat. Usage checks now use createSupabaseAdminClient() inside each function, matching other server code.

  • Remove module-scope createClient from usage-check.ts
  • canUseFeature / incrementUsage: early return or null when admin client unavailable

Onboarding pipeline: email completion hint above terminal, terminal fills column

Bug Fix
v5.0.10

The edit-link email note was clipped below a fixed-height terminal. It now appears as a bordered banner above the terminal with a mail icon. TerminalWindow supports fillParent so the log scroll uses flex space instead of viewport-fixed height inside the processing overlay.

  • OnboardingProcessingView: Mail icon + accent border; hint before TerminalWindow
  • terminal-window.tsx: fillParent prop; flex-1 min-h-0 log scroll when set

Ingest terminal: concrete refining steps plus source excerpt in the log line

Improvement
v5.0.9

Replacing generic filler lines with locale-aware steps that describe mapping sections, role fit, and wording tuning (using target role and industry when provided). Each tick appends a rotating raw-CV excerpt under the headline. Terminal preserves newlines in messages and gives ai_think preview blocks a bit more height when used elsewhere.

  • ingest/route.ts: buildRefiningFillerTick(locale, targetRole, targetIndustry, combinedText, round)
  • terminal-window.tsx: whitespace-pre-wrap on log message; max-h-48 for ai_think metadata preview

Onboarding pipeline: subtle note that the edit link will be emailed when ready

Improvement
v5.0.8

While the CV is processing, users who provided an email see a short line under the terminal that the edit link will also be sent to that address when processing finishes — honest copy that does not imply it is safe to close the tab mid-run.

  • onboarding-upload-form: processingEmailNote EN/DE with {email} placeholder
  • OnboardingProcessingView: optional emailCompletionHint under TerminalWindow

CV-ready email: clearer subject, Gmail preheader, neutral copy for third-party CVs

Improvement
v5.0.7

Transactional mail now uses a [MyCVBuilder] subject with the resume profile name as context (not “your name — your CV”), a dedicated preheader line for inbox snippets, plain-text multipart, and body copy that fits recruiters or parents building a CV for someone else. Profile name appears under the hero when known.

  • buildCvReadySubject / buildCvReadyPreheader; Resend send includes text body
  • HTML: hidden preheader uses short string; optional profile block with escaped name
  • Removed unused Supabase import from email.ts

Refining steps and structure phase show real text in the pipeline terminal

Improvement
v5.0.6

After the segmented CV excerpts, the rotating “refining” status lines now include a sliding window of your raw upload text so the wait feels concrete. Once Claude returns, the structure and translation steps show short previews from the refined profile (summary, primary role, bilingual summaries, skills).

  • Ingest SSE: filler ticks merge AI_THINK_FILLER messages with refiningSourceWindowPreview(combinedText, round)
  • sendStructureAndTranslatePreviews: structure + three translate events carry metadata.preview from CanonicalProfile
  • Same behavior for multipart upload and JSON text ingestion

Live CV excerpts in the processing terminal

Improvement
v5.0.5

While Claude refines your profile, the pipeline terminal shows real text snippets from your upload — section titles from the same segmentation as ingestion plus a truncated excerpt — instead of repeating a generic “extracting summary” line. Fixes the progress timer bug that replayed the first status on every tick.

  • Export segmentSourceMaterial from @cvbuilder/ai; ingest route builds preview ticks + optional filler until the pipeline returns
  • SSE ai_think events may include preview (string); TerminalWindow renders an indented excerpt with scroll for long text
  • Progress bar uses server-reported progress from ai_think when present

Full changelog i18n, VersionBadge locale, and CI version guard

Improvement
v5.0.4

Every release entry now includes German copy (title, summary, bullet list). The version popover and /changelog page use your language. A GitHub Action fails the build if package.json version does not match the newest changelog entry or if any entry is missing DE fields.

  • scripts/verify-changelog.mjs: assert newest CHANGELOG version === apps/web/package.json; assert every entry has titleDe, summaryDe, detailsDe
  • npm run verify:changelog locally; workflow .github/workflows/changelog.yml on PR and push to main
  • ChangelogEntry: titleDe, summaryDe, detailsDe are required; getLocalizedChangelogEntry(entry, locale) for UI
  • Version badge: German labels for category chips, Latest / Recently shipped / footer when locale is de

Fix empty CV after photo pick; checkout & LinkedIn lookup hardening

Bug Fix
v5.0.3

Saving only the photo (e.g. from search in Photo Studio) no longer replaces the whole profile with schema defaults — partial PUTs merge onto the current revision. Stripe checkout uses the authenticated session for customer metadata; LinkedIn photo search returns clearer validation errors when the name is missing or too short.

  • New mergeCanonicalProfilePatch: PUT /api/profile/[id] loads the stored profile and merges the request body before normalize
  • UpgradeButton no longer sends a client userId (Stripe metadata from session + workspace ownership check)
  • linkedin-lookup: trimmed name validation; Photo Studio surfaces API error messages

Workspace resolution without CVBUILDER_WORKSPACE_ID

Improvement
v5.0.2

Profile saves no longer read CVBUILDER_WORKSPACE_ID. Signed-in users use their own workspace; anonymous uploads use the oldest workspace row in the database. Removes the need to configure a default workspace UUID in Vercel.

  • resolveWorkspaceId: user workspace first, then oldest workspace by created_at
  • Removed env-based default workspace to avoid stale UUID foreign-key errors

Profile persistence reliability & clearer diagnostics

Bug Fix
v5.0.1

Ingestion now fails fast when no workspace is available instead of silently using in-memory storage (which caused missing CV pages). Slug lookups and profile-claim migrations log Supabase errors to server logs for easier debugging.

  • saveRuntimeProfile: production throws if Supabase is configured but no workspace can be resolved (user workspace or any existing workspace for anonymous uploads)
  • getRuntimeProfileBySlug: Supabase errors are logged instead of being swallowed
  • claim-profiles: workspace update failures are logged (previously silent)

Photo Studio, Auth Hardening, HEIC Support & Route Consolidation

New Feature
v5.0.0

Major release: dedicated Photo Studio with AI background removal, HEIC/iPhone support, EXIF stripping, multi-variant generation, auth hardening on all endpoints, route consolidation, and self-hosted SearXNG for photo discovery.

  • Photo Studio: fullscreen dedicated view with live 3:4 preview, candidate gallery, upload/webcam/web search, AI styles, BG removal, before/after toggle, industry tips
  • Client-side Background Removal: @imgly/background-removal runs ONNX model entirely in-browser — photo never leaves your device (strongest GDPR posture)
  • HEIC/iPhone Support: automatic HEIC→JPEG conversion for 50%+ Swiss iPhone users. heic-to WASM + Sharp fallback
  • EXIF Stripping: all uploads re-encoded through Sharp, stripping GPS coordinates, device serial numbers, timestamps (GDPR Article 5(1)(c))
  • 3:4 Multi-Variant Generation: 80×80 thumbnail, 800px web display, 530×710 print-quality (DACH standard at 300dpi)
  • SearXNG Photo Discovery: self-hosted metasearch on Proxmox aggregating Google+Bing+Qwant+Startpage — no API keys needed
  • Entity Resolution Scoring: 0-100 composite score with LinkedIn slug match (+40), company match (+15), title match (+10)
  • Bing Thumbnail Cache Fallback: bypasses LinkedIn CDN 403 blocks via cached thumbnails
  • Auth Hardening: 12 destructive endpoints now require profile ownership verification (401/403 on failure)
  • Route Consolidation: all profile operations unified under /api/profile/ (eliminated /api/profiles/ duplication)
  • Mobile Edit Sheet: slide-up bottom sheet for template/font/color customization on mobile
  • 5 Templates: added Executive Leadership and Academic Research architectures
  • Cover Letter PDF: DIN 5008 format for Germany, Swiss format for CH, via Gotenberg
  • DOCX Export: HTML→Word via Gotenberg LibreOffice mode
  • Translated Job Titles: AI pipeline now translates role names per locale
  • Persist Customizations: font, accent color, section order saved per profile in DB

Complete Platform — Smart Advisor, Cover Letters, Pricing, Industry Fields

New Feature
v4.1.0

The platform is now feature-complete: Smart Advisor onboarding, AI cover letter builder, 19 industry-specific fields, transparent pricing page, and the full 20-industry template engine.

  • Smart Advisor Pre-Gen Flow: 3-step onboarding replaces 5-step questionnaire. Market → Industry → Role/Level. Industry auto-sets template, colors, fonts
  • AI Cover Letter Builder: generates market-specific cover letters (DIN 5008 for DE, Swiss format for CH, British/American conventions). Inline preview + copy to clipboard
  • 19 Industry-Specific Fields in profile schema: AuM (Banking), Bar Admissions (Legal), Therapeutic Areas (Pharma), FMH Titles (Healthcare), Board Memberships (Executive), Patents (Engineering), h-Index (Academia), Portfolio URL (Creative), and more
  • Transparent Pricing Page at /pricing: Free / Pro Monthly CHF 12 / Pro Annual CHF 9 / Lifetime CHF 129. No paywall-on-download principle. 14-day guarantee

Industry Intelligence — 20 Industries, Layout Branching, Smart Guidance

New Feature
v4.0.0

The platform now knows your industry. Select from 20 industry presets and the entire CV adapts: template, colors, fonts, section order, and contextual guidance — all in one click.

  • 20 Industry Configurations: Banking, Consulting, Tech, Pharma, Creative, Legal, Engineering, Healthcare, Education, Academia, Public Sector, Insurance, Hospitality, NGO, Startups, Executive, Freelance, Retail, Media, Logistics
  • One-click industry selection: auto-sets template architecture, accent color, font pairing, and section order simultaneously
  • Industry-specific section ordering: Banking leads with Experience, Consulting leads with Education, Tech leads with Skills, Academia leads with Publications
  • Industry-specific fields defined: AuM (Banking), Bar Admissions (Legal), Therapeutic Areas (Pharma), FMH Titles (Healthcare), Board Memberships (Executive)
  • Three distinct layout variants now render differently — not just CSS variable swaps:
  • • sidebar-left (Modern Executive): classic two-column with photo sidebar
  • • single-column (Conservative): no sidebar, inline contact, centered max-w-4xl — ideal for ATS/finance/legal
  • • sidebar-right (Creative): reversed grid, left border on sidebar — distinctive for design/marketing
  • Single-column renders Skills and Languages inline in main content (not hidden in sidebar)
  • Hero gradient colors driven by template visual config
  • Name size adapts per template (text-3xl conservative vs text-5xl creative)
  • Smart contextual tip banner: 3 industry-specific tips appear below header in edit mode
  • 60 tips total (3 per industry × 20 industries, bilingual EN/DE)
  • Examples: 'Swiss banks expect a photo (87% of recruiters)', 'Strictly 1 page for consulting', 'CEFR language levels mandatory for Basel region'
  • No competitor offers contextual industry guidance — significant differentiator

Platform Evolution — Templates, ATS, Job Tailoring & More

New Feature
v3.0.0

Major platform upgrade: multi-template system, industry color palettes, 15 professional fonts, market conventions (CH/DE/US/UK), ATS compatibility scoring, AI-powered job tailoring, section visibility controls, and smart photo extraction.

  • Multi-Template System: 3 templates (Modern Executive, Conservative, Creative) with live switching in edit mode
  • 15 Professional Fonts across 3 tiers (Safe: Calibri/Arial/Georgia, Modern: Inter/Lato/Montserrat, Specialized: Playfair/Rubik) with live preview
  • 10 Industry Color Palettes: Tech (blue), Finance (navy), Creative (magenta), Healthcare (green), Consulting (charcoal), Legal (black), plus 4 accent variants
  • Live CSS variable injection — template, font, and color changes apply instantly without page reload
  • Market Conventions (CH/DE/US/UK): One-click market switch auto-toggles photo, nationality, DOB, work permit, page format, and references based on target country
  • ATS Compatibility Scoring: AI-powered analysis across 5 categories (formatting, keywords, structure, content, completeness) with score 0-100 and actionable improvements
  • Job Description Matching: Paste a job posting and get keyword hit/miss analysis with ~75% target match score
  • AI Job Tailoring: Paste job description → AI rewrites summary, highlights, and skills to match the role. Saves as new revision. The #1 emerging premium feature per market analysis
  • Section Visibility Toggles: Hide/show individual sections (Experience, Education, Certifications) via eye icon in edit mode — hidden sections excluded from public view and print
  • Smart Photo Selection: LinkedIn lookup now runs alongside PDF extraction (not just as fallback). High-confidence LinkedIn photos auto-promoted to primary, PDF crop saved as alternative
  • FlateDecode PDF Photo Extraction: Handles full-page raster PDFs from design tools (Canva, InDesign) by decompressing zlib streams and cropping the portrait region
  • Tighter PDF Crop: 25%×28% (was 35%×35%) — isolates portrait without capturing surrounding contact info
  • Dashboard Overhaul: Profile photos, delete with two-click confirmation, public/unlisted visibility toggle, deep link copy, tier badge (Free/Pro)
  • Public Toggle: Make CVs indexable by search engines or keep unlisted (link-only). Affects robots meta and sitemap dynamically
  • Subscription Page Fix: Now loads real profile data instead of hardcoded demo-profile
  • PostgreSQL Null-Byte Sanitization: Strips \u0000 from all JSONB data before insert — fixes 400 errors with PDF-extracted text
  • Garbled Font Encoding Detection: Falls back to Claude Vision OCR when PDF text extraction produces <50% printable characters
  • Workspace Association Fix: New profiles now correctly assigned to authenticated user's workspace (was using system workspace)
  • Auto-redirect on Sign-In: Already authenticated users skip the login form
  • PDF Export Memory: Configured 1024MB for Chromium-based PDF generation on Vercel

User accounts with Google & Magic Link

New Feature
v2.0.0

Sign in with Google or passwordless email to save your CV to your account, access it from any device, and unlock paid features.

  • Google OAuth and Magic Link (passwordless email) sign-in
  • Authenticated sessions with automatic JWT refresh
  • Protected dashboard and subscription routes
  • Bilingual sign-in page (EN/DE) with glassmorphism design
  • Anonymous CV creation still works — sign in later to claim your profile

CV generation view redesigned

Improvement
v1.5.0

The processing view now matches the landing page design with glassmorphism cards, animated background orbs, and full light/dark mode support.

  • Terminal and context panels use theme-aware colors instead of hard-coded dark mode
  • Accent color unified to blue across the entire app (was amber in processing view)
  • Animated background orbs matching the landing page aesthetic
  • Theme and language toggles added to the processing view header

Public CV pages excluded from search indexing

Improvement
v1.4.1

Shared profile URLs under /cv/ now send noindex; sitemap lists only the marketing homepage so crawlers are not directed to user CVs.

  • robots meta and googleBot noimageindex on /cv/[slug]
  • Sitemap no longer enumerates live publication slugs from Supabase
  • robots.txt allow list no longer singles out /cv/ (site still crawlable under /)

LinkedIn Auto-Photo-Lookup

New Feature
v1.4.0

Revolutionary AI-powered feature: automatically finds and downloads LinkedIn profile photos after PDF upload — no cookies, no manual search needed.

  • Automatic LinkedIn Search: Claude constructs likely LinkedIn profile URL from CV name, location, and company
  • HTML Parsing with AI: Fetches public profile page and Claude extracts all photo URLs (no authentication needed)
  • Multi-Size Photo Extraction: Finds all available sizes (100x, 200x, 400x, 800x) and prioritizes largest
  • Smart Photo Candidates: PDF photos + LinkedIn photos combined in gallery, all switchable
  • Proxy Support: Optional LINKEDIN_PROXY_URL for reliability (avoids rate limits)
  • Manual Trigger: 'Search LinkedIn' button in photo editor for existing CVs created before feature launch
  • Confidence Scoring: High/medium/low confidence based on name match quality
  • Comprehensive Logging: All LinkedIn lookup attempts logged with metadata (attempted, found, confidence, photo count)
  • Metadata Tracking: Upload file info, photo candidates, LinkedIn results stored in extraction metadata
  • Graceful Degradation: Photo lookup fails silently, never breaks core ingestion flow
  • SSE Progress Updates: Live status messages during LinkedIn search ("Looking up...", "Found X photos")
  • Storage Organization: LinkedIn photos stored in linkedin-photos/ bucket with date prefixes

AI Thinking Phase Transparency

Improvement
v1.3.1

Live timer shows exact AI processing duration with progressive status messages during CV refinement.

  • Live Timer: 0.1s precision timer showing exact AI processing time
  • Progressive Messages: Status changes every 2 seconds (Analyzing → Reviewing → Crafting → Optimizing → Finalizing)
  • Bilingual Support: German and English thinking messages
  • Model Attribution: Shows 'Claude Sonnet 4.6' to build trust and transparency
  • Visual Feedback: Animated dots + tabular-nums timer for professional feel
  • User Confidence: Users know exactly how long AI is thinking, reduces perceived wait time

Stripe Monetization & Subscription Management

New Feature
v1.3.0

Full Stripe integration with paywalls on PDF export, photo enhancement, and AI edits. Subscription dashboard with usage tracking.

  • PDF Export: Server-side PDF generation via Playwright — watermarks for free tier, clean exports for Entry/Pro
  • Paywall Enforcement: 3 conversion touchpoints (PDF, photo enhancement, AI chat) with usage limits per tier
  • UpgradeModal: Beautiful dark-gradient modal with 3 pricing tiers (Entry CHF 9, Pro Monthly CHF 19, Pro Yearly CHF 149)
  • Usage Indicators: Real-time usage badge in edit header showing AI edits and photo enhancements remaining
  • Subscription Dashboard: Complete management page at /dashboard/subscription with tier display, usage stats, billing info
  • Entry Pack Expiry Warnings: Alerts when Entry Pack expires in < 7 days with upgrade prompt
  • Progress Bars: Visual usage stats with color-coded progress (green → blue → amber)
  • Fail-Open Design: All paywalls default to allow on error to prevent user lockout
  • Bilingual Upgrade Prompts: All modals and messages available in German and English
  • /api/tier-check: Client-side pre-check endpoint for feature access
  • /api/usage-status: Real-time usage and billing info endpoint

Scanned PDF Support & Bilingual Emails

New Feature
v1.2.0

Upload scanned CVs with automatic OCR, receive bilingual email notifications, and watch pitch videos in German or English.

  • Scanned PDF OCR: Upload image-based PDFs — Claude Vision extracts all text automatically
  • Multi-page support: Handles scanned documents with multiple pages (e.g., old CVs without text layer)
  • Bilingual emails: CV-ready notifications now sent in German or English based on your browser language
  • Marketing-optimized emails: Urgency messaging, social proof, Entry Pack upsell (CHF 9)
  • Pitch videos: Business plan now includes separate German and English founder pitch videos
  • Build stability: Removed native dependencies that broke Vercel deployments
  • Claude Vision API: Updated to latest Sonnet 4 model (claude-sonnet-4-20250514)

UX Fixes & Terminal Size

Improvement
v1.1.1

Fixed misleading hover states in version badge modal and significantly increased terminal window size for better visibility.

  • Version badge modal: Latest release no longer appears clickable (was confusing)
  • Recently shipped items: No hover effect when already expanded
  • Terminal window: Increased from 384px to dynamic height (400-800px, adapts to viewport)
  • Processing overlay: Better space utilization with improved grid layout
  • Changelog page: Now accessible via 'See all releases' button

Guided Onboarding Funnel

New Feature
v1.1.0

Terminal UI with live logs, progressive profiling during processing, and async email delivery.

  • Terminal UI: macOS-style window with real-time logs during CV generation
  • Progressive profiling: 5 context questions (template style, target role, industry, level, focus)
  • Questions answered during AI processing — reduces perceived wait
  • Email capture at 40% progress: receive CV link by email, close tab, return later
  • Magic links with 7-day validity for secure email-based CV access
  • SSE streaming for live updates without polling
  • Zustand store with localStorage — answers survive refresh

Edit Bar & Webcam Capture

New Feature
v1.0.0

New sticky edit bar, webcam photo capture with optional AI styles, and a smarter onboarding flow.

  • Sticky edit bar with back link, EDITING indicator, save status, share and save actions
  • Webcam capture directly in the CV photo editor — square crop, front-camera mirror
  • Two-step webcam flow: capture → optionally apply AI style (Professional, Executive, Editorial)
  • Upload vs. Webcam choice now available directly in the initial onboarding dialog
  • Richer BetaRibbon with layered amber gradient and gloss overlay
  • Version badge with changelog (what you're reading right now)

MyCVBuilder Rebrand & SEO

Improvement
v0.4.0

Full rebrand to MyCVBuilder.app with complete SEO overhaul and PWA manifest.

  • Domain and brand: mycvbuilder.app — logo, favicon, OG images updated
  • Full metadata setup: title template, description, OpenGraph, Twitter cards
  • JSON-LD structured data: WebSite, Organization, SoftwareApplication schemas
  • robots.ts and sitemap.ts with dynamic public CV URLs from Supabase
  • PWA manifest with correct icon routes
  • Vercel MCP server integration for deployment management

AI Photo Enhancement

New Feature
v0.3.0

Upload or take a profile photo and enhance it with AI studio lighting styles.

  • Three AI photo styles: Professional (neutral studio), Executive (dark navy), Editorial (warm white)
  • Photo upload directly from the CV hero section in edit mode
  • Hover-to-reveal photo editor overlay on the CV hero
  • Revert to original photo at any time
  • Fixed gpt-image-1 integration (URL response handling)

Performance & Mobile Layout

Improvement
v0.2.0

Faster saves via parallelized Supabase queries and improved mobile CV layout.

  • Save latency reduced from ~800ms to ~300ms by parallelizing Supabase round-trips
  • Mobile: intro text (name, headline, summary) now appears directly below profile photo
  • Auto-redirect to edit view after initial CV upload
  • Edit mode header offset fix for sticky sidebar

Platform Launch

New Feature
v0.1.0

MyCVBuilder launches — upload your CV and get a polished bilingual profile page.

  • Upload PDF, DOCX or plain text — Claude Sonnet 4.6 structures everything
  • Bilingual profile pages (DE / EN) with live language switching
  • Inline field editing directly on the CV page
  • AI chat editor for rewriting specific sections
  • Dark mode with time-adaptive defaults
  • Print-ready PDF export
  • Public shareable URLs at mycvbuilder.app/cv/{slug}

Have feedback or feature requests? Open an issue on GitHub