The wedding package builder that quotes couples for me.

Couples assemble their own collection, watch the total move as they go, and send it to me finished. It replaced the PDF, and it replaced most of the emails that used to follow the PDF.

The pricing PDF is where inquiries go to stall. Someone asks what it costs, you send a beautifully typeset document, and then you wait. What comes back — if anything comes back — is a question the PDF already answered, or a request to combine two things in a way the PDF didn't anticipate, or nothing at all. You have no idea whether the number was wrong, whether they wanted the album, or whether they simply couldn't picture what they'd actually be buying.

The deeper problem is that a price list is a flat object and a collection is not. What a couple pays depends on choices that interact: add film and the bundle changes, add a second photographer and the day changes, skip the album now and add it later. A PDF can't show any of that. It can only show a wall of tiers and let the couple guess which column they belong in.

Couples don't want to be told the price. They want to see what changes it.

What I built

An unlisted page on my studio site: four numbered steps, a running total, and a send button, with no way to reach it except from me. Since I'm not publishing my own pricing, I rebuilt the whole thing for a made-up studio with invented numbers so you can actually click through it — try the demo here, then come back.

Step one is required. The rest aren't.

Photography first — three collections, each written out in what it actually includes: hours, how many photographers, when previews land. Nothing else on the page can be chosen until that's picked, so every collection has a real floor under it.

Then film, albums, extras — each with a way to say no.

Every optional step opens with "no video" or "no album yet," stated as a legitimate choice rather than a blank they have to leave empty. The extras are the small things people actually ask for: a photo booth, a day-of content creator, a livestream for family who can't travel, faster delivery.

The total moves while they choose.

A summary panel lists what they've assembled and what it comes to, updating on every click. Nobody has to hold four numbers in their head or scroll back to check what the album cost.

The discount is visible, not implied.

There's a savings line in that summary. Combine photography and film and it stops being $0 — right there, while they're deciding, not buried in a quote three days later.

It arrives in my inbox already assembled.

They add their name, email and wedding date, and I receive the finished collection — every choice, itemised, with the total. No transcribing, no guessing what they meant. The quote is already written; I just have to answer it.

About the numbersEvery figure in the prompt below is invented for the example. Don't copy my structure and my pricing — the tiers and the discount only work if the numbers are yours, built off your own costs and your own market. If you don't have those yet, start with the profit calculator and the market pricing piece, then come back.

What surprised me

A discount nobody sees persuades nobody. I had been discounting bundles for years — quietly, inside quotes, after the couple had already decided what they wanted. Putting that saving on screen while they're still choosing turned it into an argument that makes itself. There's no sales copy involved and no pressure; a number moves when you add something, and people respond to numbers moving in a way they never respond to a paragraph explaining that packages offer value.

Making one step required fixed almost everything else. The first version made every step optional, which seems generous and is actually chaos — you get collections with an album and no photography, and requests you can't fulfil, and totals that mean nothing. Forcing the core service first gave every submission a floor and quietly reframed everything after it: not a menu of separate products, but additions to a collection that already exists.

The combination nobody clicks is the one that breaks. Anything with conditional pricing has a bug hiding in a combination you'd never choose yourself — the discount that still applies after you switch film back to "no video," the extra that stays in the total after it's removed. Reading the code doesn't find these. Sitting there clicking through the odd paths like an indecisive couple does, and that's a job you can do yourself without knowing how any of it works.

The prompt

Paste this into an AI coding assistant with your site open. Replace everything in [brackets] — especially the pricing, which is fictional. Expect it to ask you questions; the ones about how your discounts actually work are the ones worth answering carefully.

The build prompt
Build me an interactive package builder for my [wedding photography]
business, at /build on my website. It replaces the PDF pricing guide I
currently email out.

My stack: [static site host / Squarespace / WordPress].

THE STEPS (numbered, in this order):

1. [Photography] — REQUIRED. Nothing else can be selected until this is
chosen. Options:
   - [Collection One]: [8 hours, one photographer, previews in one week] —
     [$4,000]
   - [Collection Two]: [10 hours, two photographers, previews in one week] —
     [$6,000]
   - [Collection Three]: [12 hours, three photographers, expedited editing] —
     [$8,000]

2. [Film] — optional. First option is "No video — photography only" and is
selected by default. Then:
   - [Film One]: [8 hours, one videographer, highlight film] — [$3,000]
   - [Film Two]: [10 hours, two videographers, drone, two reels] — [$4,500]

3. [Albums] — optional. First option is "No album yet — you can add one
after the wedding." Then:
   - [Album One]: [20 spreads, up to 100 images] — [$1,000]
   - [Album Two]: [30 spreads, up to 150 images, premium cover] — [$1,800]

4. [Extras] — optional, each with a quantity stepper (+ / −), starting at 0:
   - [Photo booth, three hours, attendant and unlimited prints] — [$1,100]
   - [Day-of content creator] — [$1,300]
   - [Livestream, three hours] — [$1,000]
   - [Next-day previews] — [$275]

HOW IT BEHAVES:
- A summary panel, visible while they choose, listing everything selected
  with a running subtotal, a SAVINGS line, and a total. It updates on every
  click — no "calculate" button.
- The savings line: when [photography AND film are both selected], apply a
  [bundle discount of $600] and show it as a visible deduction, not folded
  silently into the total. It must recalculate correctly when they change
  or remove things — including going back to "no video."
- Write each option in terms of what it includes (hours, people, delivery
  timing), not just a name and a number.
- Nothing is a shopping cart and nothing is paid here. The button says
  something like "Request This Collection."
- On submit, collect only name, email and [wedding date], then send me the
  fully assembled collection by [email / my form service] — every choice
  itemised, with the total — so the quote arrives already written.
- Confirm on screen that it's been sent, and tell them when I'll reply.

Make it work properly on a phone; most couples will open this on one.

When it's built, walk me through testing the awkward combinations myself —
adding film then removing it, changing collections after adding extras,
setting every extra to zero — and show me the total is right in each case
before we call it done.

What it changed

The email thread that used to follow the PDF mostly disappeared. Instead of "what would it cost to add a second photographer and an album," I get a collection that already includes both, with a total the couple has already looked at and decided they're comfortable with. That changes the character of the first call completely: we're not negotiating a price for the first time, we're talking about their wedding, because the number stopped being the unknown in the room.

The thing I didn't expect is that I now use it on the call itself. I share my screen during a discovery call and we assemble the collection together while we talk — add the film and watch the saving appear, take the album out and see what happens to the number. It changes the character of the money conversation completely: instead of me announcing a figure and a couple reacting to it, we're both looking at the same screen and they're the ones clicking. People visibly relax at the moment they realise they're driving.

It also moved where the filtering happens, which is worth being precise about. The builder isn't the filter — a starting number on my inquiry form is. That single line does the first cut before anyone sees a single option, and the builder then takes couples who are already past it and lets them find their own shape inside the range. Naming a starting price early doesn't lose you the couples you wanted; it loses the ones who were never going to book, before either of you spends an afternoon finding out. What it doesn't require is publishing your whole price list to the internet.

Common questions

Doesn't this let people price-shop you?

Only if you make it public, and you don't have to. Mine isn't linked from my navigation or my menu — nobody browsing the site stumbles into it. My inquiry form says collections start at [a number], and that number does the filtering on its own. The builder link goes out afterwards, to couples who are still interested having read it. By the time someone is assembling a collection they've opted in twice.

What if someone builds a collection you don't want to sell?

Then your options are wrong, and it's better to find that out from a form than from a signed contract. Requiring the core service first prevents most of it; anything else that comes through and doesn't work is a conversation, not a commitment — nothing here is a purchase.

Do you still send a real quote?

Yes. This is the start of the conversation, not the end of it — the collection they assemble becomes the quote I send, with the contract attached and everything spelled out properly. What's changed is that I'm confirming a number rather than introducing one.

Next

Click through the whole thing yourself.

Open the demo

— Alex Knight · About me · No. 1: the booking page · No. 2: the feedback form