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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
The CV-ready email now shows the CV's profile photo next to the name — the mail is instantly recognizable as yours.
Magic-link, welcome, recovery, and email-change emails now use the same polished MyCVBuilder design as everything else — instead of Supabase's bare defaults.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
If the self-hosted PDF renderer is unreachable, the export now automatically falls back to serverless rendering instead of showing an error.
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.
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.
Subscription & Billing is now one click away: the avatar menu in the top-right corner links directly to your plan, usage and invoice history.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
Sign in with Google or passwordless email to save your CV to your account, access it from any device, and unlock paid features.
The processing view now matches the landing page design with glassmorphism cards, animated background orbs, and full light/dark mode support.
Shared profile URLs under /cv/ now send noindex; sitemap lists only the marketing homepage so crawlers are not directed to user CVs.
Revolutionary AI-powered feature: automatically finds and downloads LinkedIn profile photos after PDF upload — no cookies, no manual search needed.
Live timer shows exact AI processing duration with progressive status messages during CV refinement.
Full Stripe integration with paywalls on PDF export, photo enhancement, and AI edits. Subscription dashboard with usage tracking.
Upload scanned CVs with automatic OCR, receive bilingual email notifications, and watch pitch videos in German or English.
Fixed misleading hover states in version badge modal and significantly increased terminal window size for better visibility.
Terminal UI with live logs, progressive profiling during processing, and async email delivery.
New sticky edit bar, webcam photo capture with optional AI styles, and a smarter onboarding flow.
Full rebrand to MyCVBuilder.app with complete SEO overhaul and PWA manifest.
Upload or take a profile photo and enhance it with AI studio lighting styles.
Faster saves via parallelized Supabase queries and improved mobile CV layout.
MyCVBuilder launches — upload your CV and get a polished bilingual profile page.
Have feedback or feature requests? Open an issue on GitHub