Case study

An electrician that grew town by town, and a website that grew with it

Ampy began with one local site in Solna and a plan for a handful more. What those sites taught, about how people look for an electrician and about the tools the sites were built on, became the national platform. The same person has built and run all of it since April 2025.

ClientAmpy
SectorElectrical services, battery storage and EV charging · Sweden
Business sizeA national brand and a network of local town sites
EngagementBuild and run
Running sinceApril 2025
StatusLive, still operated
DisciplinesInfrastructureWeb presenceDataAutomation
ampy.se
ampy.se, the national site
What they brought

It is nine in the evening in Täby, and the consumer unit has tripped.

Nobody in that house searches for a national electrical group. They search for an electrician in Täby, and they give each result a few seconds to prove it is actually local: a number, an address they recognise, reviews from streets nearby.

That was the whole brief in April 2025. Ampy wanted to be the local electrician in the towns around Stockholm, and the plan was a site per town, each one convincingly local: Solna first, then Täby, then Sollentuna and the towns after it.

The problem

Behind every enquiry sat a second problem. Batteries and EV chargers have model numbers and prices. Fitting them does not, because no two consumer units, cable runs or properties are the same.

The brief

The town sites worked, and the plan changed. By October 2025 the business wanted one national site that could sell a product range and still reach every town, and what the town sites had taught decided how it would be built.

This is for you if your customers choose by location and your work can only be priced after a visit.

What we built, and why

One engine, repainted per town, then one platform that reaches them all.

One engine, repainted for every town

Each town got its own site, on a domain with the town in the name: one design, one speed recipe and one set of content, a town hub, neighbourhood pages, service pages, a local blog and local trust blocks. Each site keeps its own reviews and its own enquiries. A new town is content and configuration, not engineering.

A place publishes its own pages

On ampy.se, publishing a place creates its four town pages, one for each core service. Drafting, trashing or restoring the place does the same to its pages and its towns. That is how one platform carries 224 location pages across 56 places, and how pages like that stay useful rather than thin is written up in the location pages guide.

Products carry prices, and the installation goes to a quote

Twenty-six products carry codes on one naming pattern, colour swatches and typed specifications, published with their availability, seller and price validity. We chose not to put a price on installation work: it carries no invented “from” figure, and a product priced on request carries no offer at all.

Seven free tools, edited like pages

A battery calculator that sizes a system and models the payback, a wallbox calculator, an energy calculator, an LED calculator, a consumer unit check, Eljour, and Elkollen, which tells a homeowner which electrical jobs Swedish law reserves for an authorised electrician. Each is built the same way, with all of its copy in fields, edited like a page rather than redeployed like an application.

Every enquiry reaches the office ready to act on

The quote form on about 165 pages sends each visitor to the right form for the page they are on. It asks for the address with autocomplete and takes a phone number in one format, country code first, so the office can act without a second call.

One account of the business, and nothing the page does not show

One generator writes one structured-data graph: the business as an electrician with its service area and five core services, a profile for each person, a named reviewer on every article, and each tool described as an application. The SEO plugin’s own markup is switched off, so nothing contradicts it. Reviews and the electricians’ certifications are rendered on the server, never left to a widget that might load late.

Editors work in fields, not in the builder

Every page except the calculators takes its copy from typed fields. A guide inside the admin explains each content type, with help under every field. Every upload becomes a WebP at most 2,000 pixels wide with its metadata removed, location included: a 3.9 MB phone photo comes out at 115 KB.

Where it runs, and the standard it is held to

Since June 2026, ampy.se and its core internal applications run on a dedicated server, hardened before anything moved onto it to the base standard BespokeForge uses on the servers it runs:

  • Sign-in by key only. No passwords, and none for the administrator account.
  • Repeated failed sign-ins are banned automatically.
  • A firewall that accepts web traffic only from the CDN’s address ranges, refreshed every week, so nobody reaches the server around the edge.
  • The database and the mail service listen on the server itself, never on the internet, and the internal applications are not exposed at all.
  • Security updates install themselves, and every key is scoped to one job.
  • Nightly encrypted copies leave the server, and restores are tested.
  • A public status page on Ampy’s own domain watches the national site and every town site.

Why this, and not that

More town sites, or one national site One national site

More sites kept every town local and multiplied every dependency. One platform with generated location pages kept the reach and lost the weight.

A checkout, or a quote A quote

A cart would have forced a price onto work nobody had seen.

Cut the 224 location pages to about 55, or keep them Keep them

A crawl in September 2026 found a unique title, description and heading on all 224. What they needed was better content, not fewer pages.

Deliberately not done

  • No invented “from” prices on installation work.
  • No local address claimed for towns where the national brand has no premises.
  • No markup that promises what the page does not say.
  • The town sites were not switched off. They still run.
How it went

From one town site in April 2025 to a national platform, month by month.

Dated, in the order it happened. Every entry comes from the record of the work.

  1. Apr 2025 Town sites Work starts, with the first town site, for Solna: the test bed, where trial and error worked out the engine and the way of working. The plan is town sites only.
  2. May to Jun 2025 Town sites Täby, the first town built on what Solna proved, and documented from its first day: page categories, an interactive area map, a hero that loads first.
  3. Jul to Oct 2025 Town sites Town after town on the same engine, each with its own address, reviews and enquiries. Lesson
  4. Oct 2025 National site The plan changes. Work begins on ampy.se: the in-house designer's work, implemented on Bricks and custom PHP. Lesson
  5. Feb 2026 National site The location model: a place publishes its own four pages.
  6. Mar 2026 National site One structured-data graph from one generator, and a cache that clears itself on every edit.
  7. Spring 2026 Launch ampy.se launches with the product range, the tools and the location pages.
  8. Apr 2026 Running The structured data is cleaned up to state only what the page shows. Lesson
  9. May 2026 Running A speed pass halves the HTML. The battery calculator ships. Lesson
  10. Jun 2026 Running ampy.se and its core internal applications move to a hardened, dedicated server. Five more tools follow. Lesson
  11. Jul 2026 Running A staging copy that cannot touch production. The header and hero rebuilt to the designer's prototypes; the energy calculator. Lesson
  12. Aug 2026 Running Desktop Lighthouse 98 to 99 from three regions. A public status page. Elkollen's answers become readable to search. Lesson
  13. Sep 2026 Running An editor guide and one upload standard. Nightly offsite copies, with tested restores. A crawl confirms all 224 location pages are unique, and they stay. Lesson
  14. Oct 2026 Running SSL Labs A+ on every Ampy domain. The runbooks go into Ampy's own knowledge base. Lesson
  15. Today Running The town network and the national site are both still run here.
What we learned

Twelve things the work taught, and what Ampy has because of each.

Lessons from the work itself: what happened, what it taught, and what Ampy has because of it.

2025

One engine made every town cheap, and every fault shared.

What happened

One engine, repainted per town, made a new town a matter of content and configuration rather than engineering. The same property means a fault in the engine is a fault in every town at once, and an update lands everywhere together.

What it taught

Reuse and blast radius are one property. Whatever makes a fleet cheap to grow makes it expensive to update carelessly.

What they have now

Updates to the town network are made by hand and checked against the live sites, never left to run on their own.

Oct 2025

The weight was never in the content.

What happened

Running near-identical town sites showed where the weight sat: in the page builder, its add-on and the plugins around them. They moved on their own schedule, so an update landed on every town at once, and every improvement had to be made once per site.

What it taught

Lean is not the same as light. A builder can be run lean and still carry its own weight onto every page.

What they have now

ampy.se is one national site on Bricks, with its logic in code and its copy in fields, and every change is made once.

Apr 2026

The markup said ten days. The page said three weeks.

What happened

The structured data promised delivery in ten days while the FAQ on the same page said three weeks. Search engines read the first; customers read the second.

What it taught

Structured data states only what the page shows. Anything more is a promise nobody on the page made.

What they have now

Battery delivery in the markup reads 14 to 28 days, the same as the "2 to 4 weeks" on the page, and a product priced on request carries no offer.

Spring to Aug 2026

A launch is the first measurement, not the last.

What happened

ampy.se launched in spring 2026 with the product range, the tools and the location pages. The speed work carried on: in May a pass halved the HTML.

What it taught

Speed is kept, not delivered. Every new page type and every new tool is a new chance to get slower.

What they have now

Desktop Lighthouse measures 96 to 99 from three European regions, with no layout shift in any of nine runs (October 2026).

Jun 2026

A new server is open until somebody closes it.

What happened

The move to a dedicated server meant a fresh machine, open by default, about to receive a live site and its applications.

What it taught

Hardening after the fact leaves a window where live data sits on an open machine, and every change made after the move risks breaking something live.

What they have now

The server was held to the base standard before the first site moved: key-only sign-in, a firewall that admits only the CDN, nothing internal exposed.

Jun to Aug 2026

A deploy can report success and ship nothing.

What happened

Three times a deploy reported success while the live site kept the old code: once from a folder that had not been updated, once from cached code files, once because version strings were stripped under long browser caching.

What it taught

The exit code says the deploy ran, not that it arrived. Check the file the server actually sends.

What they have now

Every deploy is checked against what the live site serves, file by file.

Jul 2026

A staging copy has to be unable to touch production.

What happened

A staging copy starts as a copy of the live site, and with it come the live site's addresses and its ways of reaching the live cache.

What it taught

A copy that can reach production will, one day, by accident.

What they have now

Staging is an isolated clone: its own addresses, hidden from search, its own cache, and no way to clear the live one.

Aug 2026

Search engines run the script, but they never click.

What happened

Elkollen kept its answers behind clicks. On the screen it read as a full guide; in the page a crawler reads, it was a few lines.

What it taught

A crawler renders JavaScript and never presses a button. Anything behind a click is, to search, not there.

What they have now

Every job in Elkollen has its own readable page, and the tool looks exactly as it did.

Aug 2026

The slow trace measured our own connection.

What happened

Browser traces showed long stalls on ampy.se. The stalls were packet loss on the measuring machine's own connection; the CDN's own timing showed the server answering quickly.

What it taught

Before blaming a server, measure from the CDN's side and against a control host.

What they have now

Speed figures come from the CDN's timing and public runs from three regions, never from one machine's trace.

Sep 2026

A change said done, and missed three forms on every site.

What happened

A change to the phone field reported success on every town site. Copies of the forms kept in shared widgets meant three forms on each site still had the old field.

What it taught

Verify against the rendered page, not against your own write.

What they have now

Every change to the town sites is checked on the live pages it touches.

Sep 2026

A backup counts once it has been restored.

What happened

Nightly copies are only a hope until one has been put back and compared with the original.

What it taught

A backup nobody has restored is a guess about a backup.

What they have now

Nightly encrypted copies of every server are kept away from it, and restore drills come back identical, byte for byte.

Oct 2026

The CDN's default held the grade at B.

What happened

The minimum TLS version sat at the CDN's default, 1.0, on every zone. That holds an SSL Labs grade at B however well the rest is set up.

What it taught

A default is a decision somebody else made. Read them, and change the ones that cap you.

What they have now

TLS 1.2 is the minimum on ampy.se and the town zones, and SSL Labs grades every Ampy domain A+ (4 October 2026).

We would build the town sites the same way again. We would not build the flagship on them.

Where it stands now

Both halves are still running, and run here.

The town sites answer for their towns; the national site carries the product range, the tools and the location pages. Measured, with the method beside each figure.

224 Location pages, four services across 56 places, from one data model ampy.se sitemap, September 2026
96 to 99 Desktop Lighthouse performance, three European regions Cloudflare Observatory, October 2026
100% Uptime on the public status page since 6 August 2026 status.ampy.se, checked 4 October 2026
A+ SSL Labs on ampy.se and every town site Qualys SSL Labs, 4 October 2026
In the client's words

“In February 2025 I posted on Reddit about a problem. We wanted a website for every location we serve, but we didn't want to build each one from scratch. We needed one template we could reuse, keep consistent and keep secure, without it costing a fortune.

Chris read the post and emailed me. On our first Google Meet he walked me through a complete technical plan, and he didn't ask for anything in return. We started working together in April 2025.

He built that template. He started with a local site for one of our service areas in Stockholm, Sweden, then rolled it out to our other locations. What we learned there went into ampy.se, our flagship site, and he has run it ever since. Our designers work in Figma, and Chris builds their designs one to one. Today he runs our entire web infrastructure, including our servers and our data system.

Chris doesn't work like a contractor waiting for tickets. He works like a technical partner. He raises problems before we ask, he has hit deadlines I thought were impossible, and he treats our business as if it were his own.

Nothing is locked up with him. Everything he builds is ours. It runs on our own servers, it's documented in our own knowledge base, and we hold every key and login. That's a big part of why we trust him with the parts of the business that can't go down.

I've run several businesses, including a web agency, and people like Chris are rare. He combines high integrity with deep technical knowledge, clear communication and a strong work ethic. We value him enormously.

If you need someone to build your web infrastructure and then stay and run it, Chris is your guy. He built ours, and a year and a half later he's still here running it. The way things look today, he'll be with us for many years to come.”

Julius Callahan, co-founder, Ampy, October 2026
Visual proof

See it in production.

The first step

Start with a conversation.

A short conversation first, to work out which of the two routes you are on and whether this is a problem BespokeForge can solve. The audit is the paid step that follows, and what it produces is yours whether or not anything comes after it.

Book the free 25-minute call

First, twenty-five minutes to confirm this is a problem BespokeForge can solve. If it is, the audit follows: €450, fixed, and the written record is yours whatever you decide. What the audit covers

October 2026

25 minutes, Google Meet Times in Africa/Lagos.