Owning a Fender
Owning a Fender is a content-driven resource for Fender guitar owners — a blog that grew into a product. What started as setup guides is now a site with interactive tools used by thousands of guitarists a month, an AI-generated guitar-history report sold through a fully automated checkout, and serverless infrastructure that costs almost nothing to operate. I designed, built, wrote and grew it end to end.
A blog that became a product
Content, interactive tools and digital products on one static site — live at owningafender.com.
What I built
Serial-number decoders for 20+ guitar brands (Fender, Squier, PRS, ESP, Martin and more) plus setup-spec lookups. These are the site’s growth engine: the PRS, Squier and ESP decoders each rank around position 5–6 on Google and pull in hundreds of clicks a month each.
Premium setup guides sold as PDF reports through Stripe Checkout, with automated fulfilment — a purchase triggers a Lambda that generates and delivers the report, no manual steps. Affiliate product recommendations add a second revenue stream.
Keyword-researched content pipeline (Search Console data drives the editorial calendar), Article/HowTo/FAQ structured data, sitemap and internal-linking system. Result: roughly 16,000 clicks a month across all search engines (~78,000 impressions a month on Google alone).
AWS Lambda + API Gateway + DynamoDB, defined as CDK infrastructure-as-code: purchase fulfilment, a server-side event analytics pipeline, and a traffic census that classifies AI-bot vs human visits from CloudFront logs.
The guitar-history report
A $5 report that tells the story of your guitar — built because I wanted the answers myself, and sold through the same automated checkout as everything else.
Not a valuation — the story of the instrument. When and where it was built, what the factory was up to that year, the original spec sheet, and how to look after it. I'm a guitar owner who got curious about my own instruments and wanted the answers in one clean place, so I built it.
The first customer came in chasing information on two Guilds made by Fender, dated 1971–2003, that he'd got nowhere finding despite calling around and searching online. He had his answers the same day.
When and where the guitar was built
What the factory was up to that year
The original spec sheet
How to look after the instrument
"What an absolutely INCREDIBLE resource… spot-on information on several of my guitars. Nick helped immediately."
— First customer, on two Guild-built Fenders
Confidently wrong
An LLM that writes guitar histories will, sooner or later, write the wrong one with total confidence. Two real edge cases forced the guardrails that now sit around the model.
A customer's Ibanez AS80 came back branded as a Gretsch. It's a hollowbody built in the Terada factory, which has made guitars for both Ibanez and Gretsch — and the pipeline happily crossed the wires and wrote a full Gretsch history for an Ibanez.
An acoustic dreadnought came back as an electric, complete with care advice for potentiometers and output jacks — on a guitar with no electronics. The model picked a plausible-sounding category and committed to it.
Make the code do the checking the model can't
The uncomfortable part wasn't that the report was wrong. It was that nothing in the setup caught it. So the pipeline was rewritten so the model is never trusted unsupervised.
Stop asking one prompt to do everything. Resolve what kind of guitar it is — acoustic or electric — before writing a single line of history or care advice, and gate the advice on that.
Let the token-limit constraint force a prompt rewrite, splitting generation into discrete, checkable steps.
Add a completion guard — a minimum length plus a marker string — so a malformed report is retried once and, if it still fails, never emailed. I get an alert instead of the customer getting an empty PDF.
Normalise the year separately and tell the model not to invent one when it is unknown, so a report never anchors a guitar to a guessed date.
"An LLM in a product isn't an expert you switch on. It's a very confident intern. The Ibanez only stopped being a Gretsch once I made the code around the model do the checking the model couldn't do itself."
Results, not just deliverables
Around 16,000 clicks per month across all search engines — ~78,000 impressions a month on Google alone, with no paid acquisition.
Serial-number decoders rank on page one (positions ~5–6) for competitive queries across 20+ guitar brands.
Digital products sell and fulfil automatically through Stripe + Lambda — zero manual delivery.
An AI-generated guitar-history report, shipped behind guardrails that catch confident mistakes — like an Ibanez misread as a Gretsch — before they reach a customer.
Near-zero marginal running cost: static hosting on S3 + CloudFront, serverless backend.
What it runs on
Gatsby v5 + React 18 (TypeScript) static site
AWS S3 + CloudFront hosting
AWS CDK v2 (Lambda, API Gateway, DynamoDB)
Claude (Sonnet 5) on AWS Bedrock for the AI guitar-history report
Stripe Checkout + Billing
Playwright e2e suite (60+ specs) and Vitest unit tests
Ephemeral full-stack preview environment per pull request
Sentry, Umami + GA4 analytics
Want a site that brings in business?
If you're an independent business outgrowing your current website, I can help. I handle strategy, design, build, hosting, SEO and analytics — so you get a site that looks the part and actually converts visitors into customers.
Start a projectOr email me directly at nickolastheodoulou@hotmail.com