245 photographs in, 217 on the site: a Maui photographer’s work rebuilt around his own archive.
Cyrus Perry shoots portraits on Maui, and he was already our client when this started — the Squarespace site that came before was ours too. It was a stock template, and it showed. The template’s own documentation page was still sitting in the live sitemap. Eight of the photographs on the site were dead links. His pricing was fused into a contact page, where nobody goes looking for a price. Before I wrote a word of the new site, I recorded three interviews with him, about 85 minutes in total, and made those transcripts the only source of truth for what the site says about him.

Built around his archive, written in his voice.
Two things drive this build. The first is his own photographs. He sent 245 originals in August, and we laid the site out around what was actually in them rather than around a template that needed filling. The second is the writing. All 21 routes were rewritten out of third person and into Cyrus’s first person — page copy, SEO titles, meta descriptions, FAQ answers, every line. His clients’ Google reviews stayed verbatim, because those are their words, not his and not mine. Every fact the site states lives in one data file rather than in a component, so a price changes in one place.
The four moves behind the result
- 01
245 originals in, 217 photographs on the site
Cyrus supplied 245 original JPEGs — 3.6 GB. We built 246 contact thumbnails and 19 contact sheets so he could review the set at once, selected 176, and carried 24 forward from the earlier pass. Twenty-seven stale images from the old site were retired outright. The studio page went live on 7 September without a single photograph, because its 17 frames had gone out with the retired set; we wired them back in on 17 September, once the page needed them. That comes to 217 photographs on the site, each encoded at three widths: 651 WebP files, 98 MB, every one of them carrying written alt text.
- 02
Pricing out from behind the contact page
Pricing got its own page. Every package is on it, with the terms that used to only come up in conversation: $35 for an extra image, $200 to unlock a whole gallery, a 50% deposit to hold the date. The argument the page makes is his, not ours — he is the one who objects to a hotel handing a visitor a free session and then a four-figure bill for the photos afterward. The old combined URL redirects to the new page.
- 03
The guides came out of his answers
Four guides — beach permits, session locations, sunrise versus sunset, what to wear — came out of what he told me in those interviews, not a keyword tool. The permits guide is the one that earns its place: it explains which Maui beaches a photographer can legally work on and what happens to the ones who skip the paperwork. It is the kind of page his competitors leave off their sites, and it makes his pricing legible.
- 04
A build that refuses to ship broken
The site is 21 prerendered routes plus a real 404, each one static HTML with a schema graph attached — FAQPage on 11 of them. Nine Squarespace URLs were redirected rather than dropped, including that template documentation page. And the deploy script will not upload anything unless 261 preflight checks pass, a glyph proof paints every character the site uses, an image audit forces every image to decode, and browser QA clears all 21 routes at both 390 and 1440 pixels wide. Any failure aborts the upload. The build serving today was deployed 2026-09-07, at cyrusperryphotography.com.


An existing client.
Because the site before this one was ours, this was never a pitch — it was the next version. That changes the work. Cyrus has been on Maui 25-plus years, shooting since 2014 and full-time since 2022, and none of that reached a stranger on the old site. My job was not to invent a story for him; it was to get his out of a template. Even the art direction is his call: he picked the reference site himself, and rather than eyeball it we measured its real styles in a browser. Its two typefaces are commercial licenses, so we substituted freely licensable faces by role.
What we didn’t promise — and why.
- This was a website build, not a reporting engagement. We did not run ads. We do not manage his Google Business Profile. We did not take on ongoing SEO, and there is no monthly report attached to it.
- There was also no Search Console baseline on the Squarespace site, which means there is nothing honest to measure the new one against. So this case study makes no ranking claim, no traffic claim, no lead claim and no revenue claim — not because the build did not earn them, but because nobody recorded the before. What is verifiable today is the foundation underneath: indexable routes, schema on every page, redirects off every old URL, a sitemap, and a real 404. Once Search Console has 30 days on the new site, a dated results section gets added here, and you can judge it then.
If your work is better than the website showing it, that is a fixable problem.

