Case study · Serendipity Life

I went on holiday and came back with my first client.

A resort photographer was losing customers to one avoidable problem: nobody could see her pricing until after the shoot. I spotted it, led with value rather than a pitch — and ended up rebuilding her site into a fast, multilingual product she calls “perfect”.

100%
Lighthouse (several categories)
3
languages · EN · IT · ES
£0
hosting cost
WordPress → Netlify
rebuilt & migrated

01 — The spark

How I found the problem

I was on holiday at a resort and booked a photo shoot with the on-site photographer. Great experience — but the pricing was never visible anywhere. I didn't really know what the packages were or what they cost until after the shoot, while we were previewing the photos.

Out of curiosity I checked her reviews, and I wasn't the only one — several people loved the photos but couldn't tell what was on offer or what it cost. When I asked her about it, it made sense: her pricing is dynamic, changing with the number of people, number of photos and so on — so there was no simple “prices from £X” she could put on a page, and her old site gave her no way to show something that flexible.

I didn't go in with a pitch. I just asked a question I'm not sure she'd considered: how many people each week ended up unhappy about pricing after the shoot? The answer was three or four a week— almost certainly where some of those reviews were coming from. So I showed her a couple of examples of how that flexible pricing could be presented clearly, up front. No hard sell. A bit later, she asked if I could actually help. Just like that, I'd picked up a client.

02 — The problem

Flexible pricing with nowhere to show it

It was never about hiding anything — she simply had no means to display pricing that varied per booking. The result was a recurring, avoidable bad experience: customers delighted by the photos but caught off guard by the cost, and reviews that reflected it. A business problem, not a design preference.

03 — The solution

A site that sells the work — and the pricing

I rebuilt her website around clarity: her packages and how pricing works presented clearly up front, so there are no surprises at the end of a shoot. Around that sits a gallery that shows off the work, testimonials for trust, and a zero-friction contact flow (prefilled WhatsApp / email rather than a clunky form).

Because her guests come from all over, the whole site is trilingual — English, Italian and Spanish — with a language switcher and automatic detection.

The work went beyond the website into her wider brand. I refreshed the marketing material around her pop-up tent, produced an infographic and QR code she can display to point guests straight to her work, and created a marketing video in an updated brand style — so the in-person experience and the online one finally tell the same story.

04 — How it's built

Fast, editable, and free to run

A static site built with Vite, React 19, TypeScript and Tailwind. Content lives in Sanity CMS and is pulled in at build time, so she can update copy, packages and photos herself — something she couldn't do before, when WordPress felt too overwhelming to touch. Images are optimised to WebP with sharp, and everything ships as static assets to Netlify — fast, global, and £0 to host.

Sanity CMS
owner edits content
Build
Vite · sharp → WebP · i18n
Netlify
static · free · global CDN

05 — Migration

Off WordPress, working with her agency

The original site was on WordPress, managed by an existing agency that also controlled the domain's DNS — and that constraint actually shaped the hosting decision. The agency wouldn't make the kind of nameserver change a full Cloudflare setup needs, but Netlify works with a simpler DNS record they would allow. So I coordinated with them and migrated it cleanly onto Netlify.

The cutover off WordPress to the new custom build was smooth, and she ended up with something far faster and cheaper to run — working within a stakeholder's limits rather than against them.

06 — Outcome

A happy client

“I think it's perfect.”

— Serene, Serendipity Life

Live & loved

Shipped to serendipitylife.eu — the owner described the finished site as “perfect”.

100 on Lighthouse

Perfect scores across several Lighthouse categories: fast, accessible and SEO-ready.

£0 to run

Static hosting on Netlify and a no-cost contact flow keep ongoing costs at zero.

Problem solved

Pricing is now clear up front — removing the post-shoot surprise that was driving unhappy reviews.

07 — The bit I'm proud of

Leading with value

What I'm most pleased about is the approach. I'd been reading and listening a lot about spotting problems, leading with value and not jumping straight to a sell — and this was the first time I'd put it into practice with someone who didn't know me. I went in curious, not selling, and it worked.

Went on holiday, came back with my first client.

Like how I think about problems?

Happy to talk through the product, the tech, or how I turned a holiday observation into a shipped, paying engagement.

Get in touchBack to projects