Business Problem
The portfolio worked like a typical developer CV - it showed everything, filtered no one. For several months, I had many qualification calls, but most of them concerned projects that didn't match my specialization. The average rate in offers was low, conversion to contract left much to be desired, and time spent on calls without guarantee of cooperation was frustrating.

The biggest problem: the portfolio didn't say what services I offer and how much they cost. I received inquiries about simple landing pages or WordPress builds with WooCommerce. Each such conversation was a lot of wasted time that could have been used better.
Analysis and Problem Identification
I analyzed data from Google Analytics and the contact form. Most leads came through direct search - SEO was working, but attracting the wrong clients. The most common search phrases were very general: "frontend developer", "website price", "online store". This showed the portfolio wasn't specialized enough.
I identified several key problems. Lack of specialization - the portfolio said "I build sites and stores" instead of clearly defining what I specialize in. No pricing - clients didn't know if they could afford cooperation, so inquiries came from everyone. Weak CTA - "Contact me" attracted everyone, regardless of budget or needs. Projects instead of case studies - GitHub and screenshots don't sell anything, they don't show how I generate value.
Changes Implemented
I decided on specialization instead of generality. Instead of sections "Websites", "Stores", "Design", I focused on Frontend Development / TypeScript / Performance and legacy code refactoring. I added a "Who I Don't Work For" section that clearly states I don't take projects below a certain amount and don't do WordPress. Clear specialization filters leads before the conversation - the client immediately sees if I fit their needs.
Price became a design element. I added pricing information: "Projects from 3000 PLN", "Contracts from 800 PLN/day", "Minimum engagement: 1 day". Lack of price means "cheap or unknown". Price is a filtering tool, not a risk - it deters low-budget clients, attracts those who understand value.
I changed CTA to focus on value, not contact. Instead of useless "Contact me", I added specific options: "Book a paid 60-min consultation", "Frontend audit (from 600 PLN)", "I help TS teams with legacy refactoring (from 800 PLN/day)". Even if few buy immediately, it changes value perception. Instead of "I want to contact", the client thinks "I want a specific service".
Case studies replaced projects. Instead of a project list with GitHub and screenshots, each case study contains a business problem, technical decisions, and a numerical result. GitHub and screenshots don't sell anything - case studies show how I generate value, not just what I did.
Service prioritization was data-driven. Most inquiries concerned frontend and TypeScript, many about legacy refactoring, few about new projects from scratch. I removed the Design section that generated few inquiries, increased focus on Frontend Development / TypeScript, legacy code refactoring, and performance optimization.
Implementation
In the implementation, I changed the site structure - instead of general service sections, I created specialized sections with pricing. I added new components: PricingBadge displaying price for each service, SpecializationFilter with "Who I Don't Work For" section, ValueBasedCTA instead of "Contact me", and CaseStudyCard showing business problem and numerical result.
I focused SEO only where it hurts business. Instead of a blog "about everything", I write about problems that cost companies money: legacy frontend refactoring, TypeScript migration, React performance optimization. One good article is better than ten general ones.
Results
The portfolio now filters instead of "showing off". Fewer calls, higher rates, better conversion. A developer's portfolio doesn't earn money by itself - it shortens the path to contract. If it doesn't filter leads, doesn't show how you generate value, and has no pricing, it's dead - regardless of design.
Key levers are specialization that filters before the conversation, pricing that deters low-budget clients, case studies that show value instead of just projects, and value-based CTA that changes value perception. The brutal truth: a portfolio that doesn't say who you're for doesn't earn money and won't.