The concept
Quarrylight is a fictional venue in Henley Brook: a restored packing shed called the Barrel Hall, a vine terrace, eleven acres, one wedding a day. The audience is a couple eight to eighteen months out with a guest list they keep re-counting and a budget they have not said out loud, who has nine directory tabs open and not one venue price in any of them. The page has exactly one job — answer will we fit and what will it come to on the date they care about, and say plainly when this venue is the wrong answer.
Why this converts
The entire wedding-venue category withholds price until it has your phone number, so the fastest way to win the enquiry is to give the number away in the hero — the estimate sits in the hero’s second column at desktop, and a visitor has a total and a per-guest figure inside ten seconds without filling in anything. The capacity question is the one every couple is anxious about and nobody answers honestly, so the page separates the legal number (180, on a certificate of approval issued under Western Australian law) from the venue’s own operational number (140 seated) and quotes the Act and the Regulations rather than asserting anything in the first person — that quotation is the trust event, and it costs nothing to reproduce for a real client. The estimate argues against its own sale twice, and both times with a figure attached: a 45-guest Saturday is shown the $11,385 it saves by moving to a Friday, and a 165-seated party is told flatly that we are not their venue and handed three questions to take to a bigger room. Every enquiry that survives those two refusals is a qualified one, which is worth far more to a venue with about 104 sellable Fridays and Saturdays in a year than a full inbox of couples who will not fit. And the form asks six fields, pre-fills three of them from the estimate the visitor just ran, and confirms locally with the numbers echoed back — so the person on the other end opens an enquiry that already contains a date, a head count and a format rather than the words “hi, can you send me your pricing?”
Palette
Swan Valley shiraz and vine leaf, at dusk. Warm ground, not cream: #F7F3EF is the only warm-ground site in its wave and the discipline is to keep it restrained — no script faces, no gold foil, no confetti. The six pinned tokens were measured before the build; the eight I minted during it are listed underneath with their measured ratios.
#F7F3EFWarm limestone. The page reads as a room in the late afternoon rather than a brochure.
#FFFFFFCards and the estimate. White against the warm ground is what makes a price card feel like a document.
#1D1417Near-black with the red in it. 16.33:1 on ground, 18.03:1 on surface.
#544148Secondary copy and drawing annotations. 8.54:1 on ground, 9.43:1 on surface.
#7B2D3CThe CTA, the tables in the plan, the minimum-spend rule. 8.33:1 on ground; white on it 9.20:1.
#46601FAvailability, the FITS flag, the terrace. 6.44:1 on ground; white on it 7.11:1. It only ever means yes.
#2A1720Footer, confirmation, and every honest-alternative card. Carries #F6EDEA at 14.67:1.
#F6EDEAThe only ink that lands on the band. Never on ground or surface — it measures 1.04:1 there.
Minted during the build, measured, reported
| Token | Hex | Where it lands | Measured |
|---|---|---|---|
| Shiraz hover | #632330 | CTA hover fill, white label | 11.58:1 |
| On-dark muted | #D9C6C6 | Secondary copy on the band | 10.34:1 |
| Hairline | #E7DDD4 | Borders, stage and bar fills | ink 13.47:1 |
| Soft | #F0E7DF | Hall floor, the Loft | ink 14.77:1 |
| Shiraz tint | #F3E3E6 | Dance floor, minimum-spend row | ink 14.55:1 |
| Vine tint | #E8EFDD | Terrace, olive grove, pull quote | ink 15.30:1 |
| Gravel | #EDE6DE | Car park, verandah, road | ink 14.57:1 |
| Field | #8A757B | Input borders only, never text | 4.28:1 on surface |
Every scene fill in both drawings is in that table, because a fill is a ground the moment a label lands on it. Nothing on either page puts a token on a ground it was not measured against; the light ink never touches the light ground and the dark ink never touches the band.
Type
Cormorant Garamond 600 for every heading and every figure, Karla 400 and 500 for body, 700 for the small upright labels. Cormorant is the one indulgence the category is entitled to: it is a wedding, and a high-contrast old-style face carries that without a single script flourish. Karla’s wide, flat-sided forms stop the page drifting into stationery.
One moment of typographic bravery: the guest count itself, set at 56 px in the result card with the word “guests” tucked beside it at 14. It is the number the visitor came to think about, so it is the biggest thing on the card — bigger than the price.
The one thing that nearly shipped wrong: Cormorant Garamond serves old-style figures by default, so 110 rendered as three lowercase-height shapes and $23,770 read as $23,77o. Caught by looking at the 1200×750 capture, not by any assert. Every element set in the display face now asks for font-variant-numeric: lining-nums explicitly, and the money lines add tabular-nums so the ledger columns line up.
The proof element
Three inputs — a guest count from 40 to 200 in fives, seated or cocktail, and a date picked from eighteen months of Fridays and Saturdays — and an output in the order the customer thinks in: do we fit, then what does it come to, then what is that a guest.
The drawing
An inline SVG plan of the Barrel Hall, built synchronously in JavaScript and rebuilt in full on every state change. Fourteen round-table slots in a 5 / 5 / 4 grid, a dance floor that grows when you switch to cocktail, and the four areas regulation 7B(d) excludes from the counted floor drawn dashed outside the hall outline — kitchen, stage, toilets, behind the bar. At 165 seated the tables the room cannot lay out appear beneath the plan in dashed outline with a count; past 180 the whole plan takes an OVER 180 plate and the page stops quoting.
The second read is the little dark plate at the bottom-left corner: PB0000 · 180, drawn at the main entrance, labelled “displayed in the main entrance”. That is regulation 8(1) reproduced as furniture. Nobody will notice it on the first visit; the couple who has read the explainer will notice it on the second.
The plan viewBox is 340×208 rather than something larger, because a wide viewBox scaled into a 339 px phone column renders its annotations at six or seven pixels. Sizing the drawing close to its phone width keeps every label at ten pixels or better at 375 and simply scales up on desktop.
The date strip
Eighteen months of Fridays and Saturdays, availability from a fixed integer hash so the page is deterministic — the same dates are open on every load, in every browser, at every screenshot instant. Taken dates are disabled with a reason rather than removed (“we only run one wedding a day, so this one is gone”), and held dates stay selectable, because a couple who can see a held date is a couple who rings. No new Date() anywhere in the default state: the rest state is 110 seated on Saturday 13 March 2027, fixed, so the thumbnail is the same picture every time it is captured.
All date arithmetic is UTC and every printed date is assembled from fixed DOW and MON tables. toLocaleDateString renders July as “July” and September as “September” under en-AU, so a date string built that way changes shape by month and by engine.
The money
Six anchors, all inc GST, and the whole model is three lines of arithmetic that the page shows its working for. Rates are whole dollars, so every line item is exact and nothing is rounded except the per-guest figure, which is rounded once, to the cent, at the end.
| Scenario | Food | Beverage | Hire | Top-up | Total | A guest |
|---|---|---|---|---|---|---|
| 110 seated, Saturday (rest state) | $12,980 | $7,590 | $3,200 | $0 | $23,770 | $216.09 |
| 70 cocktail, Friday | $6,860 | $4,830 | $2,200 | $0 | $13,890 | $198.43 |
| 165 seated, Saturday | does not fit — the seated layout is 140 | — | ||||
| 165 cocktail, Saturday (the alternative) | $16,170 | $11,385 | $3,200 | $0 | $30,755 | $186.39 |
| 185 standing | past the 180 on the certificate — not quoted at all | — | ||||
| 45 seated, Saturday | $5,310 | $3,105 | $3,200 | $10,385 | $22,000 | $488.89 |
| 45 seated, Friday (what the card leads with) | $5,310 | $3,105 | $2,200 | $0 | $10,615 | $235.89 |
Moving those 45 guests from the Saturday to the Friday saves $11,385, and the card leads with that number rather than with the Saturday total. Every figure above was re-derived in an independent oracle in the verification harness and asserted against the running page; the harness also sweeps all 132 reachable cells of the guest × style × day grid, checks that no line item is a non-integer, checks the ledger adds to the total in every cell, and checks the total never falls as the guest count rises.
Two numbers worth knowing about the model
- On the five-guest steps the estimator offers, a seated Saturday clears the $22,000 minimum spend at 105 guests. At 100 it is $100 short, which is exactly the sort of cliff a venue normally lets you discover on the phone; the page prints it in the FAQ and the estimate names the clearing count in its own disclosure line.
- Swept across every cell that fits, the cheapest all-in per-guest figure the room can produce is $179.22 — 180 standing on a Friday. That is an argmin over the grid, not a cell chosen by hand. It stays off the page because nobody books 180 to save money, but it is what licenses the claim that a Friday cocktail reception at $167 a guest for food and drink is the floor.
Conversion decisions
- The estimate is in the hero, not below the services grid. The mobile reading order is the conventional one — masthead, hero, services, proof, why-us, reviews, site plan, FAQ, form, footer — and at 1024 px and up the proof card takes the hero’s second grid column so its answer lands inside the first 750 px. A prospect scanning a gallery of thumbnails sees an answer, not a menu of tiles.
- Six form fields, three of them pre-filled. Names, phone, email, guest count, date, seated or cocktail, plus an optional message. The button on the estimate writes the guest count, the date and the format into the form and adds a summary line to the message, so the enquiry arrives qualified. The pre-fill only fires on that click, never on load, so a cold empty submit still fails validation honestly.
- The form validates in JavaScript and still carries the browser’s own attributes.
required,inputmodeand apatternon the phone field, so assistive technology and any automated check can see what the page will refuse. The pattern escapes(,)and-inside its character class, because Chrome compilespatternunder thevflag and silently discards a class it cannot parse — which leaves the one field that has to be right accepting anything at all. - The refusals sit beside the number, never in the FAQ. The minimum-spend disclosure is printed above the total it inflates, in the same card, with the guest count that removes it; the over-capacity decline is a full-size card with the three questions to ask a larger venue. A refusal in the FAQ is a disclaimer. A refusal beside the number is a demonstration of how the business quotes.
- Every honest steer ends in something the reader can do today. The Friday card has a button that moves the date; the over-capacity card has a button that prices the same party standing; the decline past 180 has no button and no dollar sign at all, because there is nothing honest to sell there.
- The sticky bar is semantic. A real
tel:link and an in-page anchor to the form, 46 px targets, and the hero’s trust line finishes more than 100 px above it at 375×667 — the mobile fold is the viewport minus the bar, not the viewport.
The iteration log
Pass 1 — Craft
Driven: the estimate at 110/70/165/185/45, the form empty and filled, the 1200×750 capture and the 375×667 capture opened and looked at.
- Every
clamp()on the page was a parse error. All five were written without whitespace around the+(clamp(2.9rem,2.1rem+1.9vw,3.5rem)), which is invalid inside a maths function, so the browser threw the declaration away and fell back to the user-agent size. The h1, both heading scales, the guest number and the total were all rendering small and nothing in a 150-assert harness could see it, because the state was right. Found by opening the PNG. Fixed, and the harness now asserts both the source form and the computed font size of the four display elements. - Old-style figures. With the clamps fixed,
110and$23,770rendered in Cormorant’s default old-style numerals, which sit at x-height and read as letters. Confirmed against a three-way font test that Google’s Cormorant Garamond does carry lining figures, then forced them everywhere the display face meets a digit. - The drawing started at y 742 at 1200 wide — eight pixels inside the thumbnail frame. The controls were spending 620 px before the answer. Cut roughly 180 px out of them: the range end-labels went, the availability legend moved inline with the date label, the day chips became a single-row horizontal scroller instead of a two-row wrap, and the guest-number and heading scales came down a step. Measured after the fix: the plan enters the frame at y 608 with 142 px of drawing above the 750 line, and the verdict and the total sit above it.
- The hero trust line finished 106 px below the top of the sticky bar at 375×667 — the one piece of the conversion checklist a scrolling reader never sees, because the mobile fold is the viewport minus the bar. Rewrote the h1 (still naming the venue and the suburb), cut the subline from four sentences to two, and tightened the hero button padding below 430 px so the two buttons share one row instead of stacking. Measured after the fix: h1 ends at 231, the CTA at 399, the trust line at 499, the bar starts at 604 — 105 px of clearance.
- Two copy repairs the model caught. A demonstration review said the Friday saved “eleven thousand” for 48 guests; run through the page’s own arithmetic that is $10,824, so the review moved to 45 guests where the saving really is $11,385 — and it now matches the worked example the estimator shows. And a footer line reading “Enquiries by the form above” was hyperlinked to a mailto rather than to the form.
- The price badge came off the artwork. It was written as an absolutely-positioned card over the plan’s top-right, which is where the toilets annotation and the bar strip are. Docked it underneath the drawing instead, as a full-width dark bar carrying the date and the total — it reads like a docket, which is the right idea for this page, and its box can never intersect the subject. Asserted at 375, 1000 and 1200.
- Two honesty scans fired on my own prose and both were right to. The page originally warned readers against a combined restaurant-and-dining-room row written with a slash, and the scan could not tell the warning from the invention — reworded to “no single row that combines restaurant with dining room”. And the hero stat strip put
140immediately after the word “certificate”; relabelled to “our seated layout, never a legal figure”, which is both safer and better copy.
Pass 2 — Depth
Driven: all sixteen day × style × guest-count combinations of the alternative card, the month and day strips across all eighteen months, and a rapid-fire drive with four control changes dispatched in one evaluate and no settle between them.
- The biggest find of the build, and it was an honesty defect rather than a bug. Driving the sixteen branches printed
Sat 165 seated → $34,055. The card beside it said “we can seat 140”, and the page was quoting the thing it had just refused. A refusal that still carries a price is not a refusal. Now a configuration that does not fit prints No quote, the ledger prints one line saying the card below prices the same party standing, and the probe reportstotal: 0— asserted across every non-fitting cell in the grid, and the alternative card carries the only number on screen. - The plan’s smallest annotations rendered at 8.3 px at 375. Measured, not eyeballed: the drawing is about 296 px wide inside the card on a phone, so a 9.5-unit label in a 340-unit viewBox lands at 8.3 px. Recomposed the bottom band — the entrance caption moved out of the drawing and into the real body copy underneath it, the certificate plate grew, the spilled tables moved right — and every label in the plan is now at least 10 px at 375, 14 px at 1200. Asserted at all three widths.
- The alternative card now renders in every state, not only when it wins. A seated Friday that clears the floor gets the cocktail price anyway, carrying
isSubstitute:falseand the sentence that standing food is not a cheaper version of a seated dinner but a different night. A Friday cocktail booking — the cheapest thing the venue sells — gets a card that says so and declines to invent anything underneath it. Hiding the cheaper option until it applies makes a page look like it was concealing it. - The minimum-spend disclosure learned to name its own exit. It now computes the smallest guest count on the estimator’s own five-guest grid that clears the floor for the selected style and day, and prints it (“the top-up disappears at 105 guests”) — or says plainly that no count on that day clears it and points at the card below. That number is swept, not hard-coded.
- The site plan earned its scale bar and its excluded rooms. The kitchen and the Loft are drawn attached to the hall, the terrace carries its own vine rows, and the 50 m bar plus the north arrow make it read as a plan rather than an illustration. Every label is body ink or muted on a fill that was measured for it.
- Second-read details. The certificate plate at the main entrance in the estimator’s plan; the “not counted” annotation tying the dashed rooms to regulation 7B(d); the ledger’s last line, which prints food and drink alone per guest so a reader can see exactly which part of the per-guest figure is the venue and which is the catering.
- Rapid-fire drive found no stale-closure race, which is expected here: nothing on this page animates on a frame loop, so a state change and its redraw are the same synchronous operation. The entrance choreography is a single class added once on cold load and is never re-entered by a resize.
Pass 3 — Hardening
Driven: 375, 768 and 1200 with real captures at each; the form with junk in the phone field; the estimator swept across all 132 reachable cells; the probe re-read eight seconds after the thumbnail instant.
- 375×667 fold: h1, primary CTA and trust line all finish above the sticky bar with 105 px of clearance. No horizontal overflow at 375, 768 or 1200, and no element extends past the viewport box except inside a container that legitimately scrolls (the month strip and the day strip). The guide page needed its own fix here — a footer link holding a long unbreakable email address pushed it to 387 px, which is the recurring lesson that builders police the site harder than the guide.
- Reduced motion kills the single entrance transition in CSS and the
matchMediacheck applies the settled class immediately rather than on a timer, so the page is never mid-fade for a reader who asked it not to move. - Keyboard: visible focus ring on every control including the SVG-free chip buttons and the disabled day chips’ siblings; the style chips are a real
radiogroupwitharia-checked; the verdict block is anaria-liveregion so a screen-reader hears the answer change. thumbnail-is-rest: the probe serialised at the seven-second capture instant is byte-identical to the probe eight seconds later. Nothing on this page moves once it has drawn.- The site plan was illegible on a phone and nothing had noticed. The estimator’s plan had been sized for its phone column in Pass 2, but the site plan is a separate drawing with eighteen labels in a 760-unit frame, and squeezed into a 307 px card it rendered them at five pixels. Caught by opening the 375 capture of that section, which is the third time on this build that the PNG found something 190 green asserts did not. It now scrolls sideways below 760 px against a 660 px floor, with a line saying so, which keeps its smallest label at ten pixels and keeps it drawn to one scale instead of shrunk to fit. Both drawings now have a measured label floor asserted at 375, 1000 and 1200.
- The docked total bar’s rectangle was tested against the drawn subject’s rectangle at 375, 1000 and 1200 rather than judged by eye. No intersection at any of the three.
- One ornament removed. Each demonstration review carried a row of five filled stars. They were decoration, they were the least honest marks on a page whose whole argument is honesty — a five-star row is rating data drawn as jewellery — and on a page that deliberately ships no review markup they invited exactly the wrong reading. Replaced with a single 34 px vine-leaf rule above each quote.
- Final copy read: every dollar figure in body copy re-derived from the shipped model rather than trusted, including the FAQ’s “clears the floor at 105 guests” and the why-us card’s “$10,385 for nothing”. Then the whole harness was proved rather than believed: twelve defects were planted into the page one at a time — a second h1, a banned
LocalBusinessblock, a curly-quoted attribute, a real street address, a wrong food rate, a whitespace-freeclamp(), a confirmation panel that never appears, every submit swallowed at the window, the plan pushed below the fold, the seated decline quoting a price again, a published certificate expiry, and the venue’s own seated figure passed off as a statutory one — and each one had to fail a check before the green was reported. The file was restored and compared byte-for-byte after every plant. The exercise paid for itself three times over: the first version of the swallow plant went silent, which sent us looking and turned up a monotonicity sweep that had been widened to two days and was quietly comparing a Friday total against a Saturday one; and a sentence in this guide tripped the page’s own honesty scan, because describing the defect you fixed republishes it.
What this page declined to publish
- Any expiry or renewal interval for a certificate of approval. The current Regulations do not set one, so there is nothing honest to print — and the page says so, because a couple who has been told by another venue that its certificate “expires” should know to ask what is meant.
- Any average guest count for Western Australian weddings. Widely quoted, not verifiable at source.
- Any council’s public-building application fee as ours. Those are councils’ own fees, they differ between local governments, and a venue passing one through should not be printing a figure for it.
- Any other venue’s prices. The only comparison figures on the page are Easy Weddings’ own published ones, attributed to Easy Weddings where they appear.
The figures that are quoted: the Health (Miscellaneous Provisions) Act 1911 s.178 and the Health (Public Buildings) Regulations 1992 regs 7(1), 7B(d) and 8(1), verbatim, from legislation.wa.gov.au. Easy Weddings, How Much Does a Wedding Venue Cost [2026 Guide], updated 28 February 2026: an average WA venue hire price of $16,074 in 2026, and “around $170 to $220 per head” for the venue. For context and not used on the index page: the Australian Bureau of Statistics’ Marriages and Divorces, Australia, reference period 2025, released 28 July 2026, records 118,804 marriages registered nationally and 13,208 in Western Australia — the ABS notes that the data is compiled by state of registration rather than usual residence, so the WA figure is not a count of WA couples.
Local SEO we would implement for the real business
Nothing below is live on the demonstration page, and it must not be: structured data describing a fictional venue, with fictional reviews and a fictional rating, is dishonest markup in a real index. The demonstration page emits a single WebPage block that says what it is and credits Sapience with creditText. What a real Quarrylight would ship is this — EventVenue rather than the generic LocalBusiness, because it is the schema.org type for a place that hosts events and it carries maximumAttendeeCapacity, which is the single most useful fact this venue has:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "EventVenue",
"@id": "https://quarrylight.example/#venue",
"name": "Quarrylight",
"description": "A single-booking wedding venue in Henley Brook, Swan Valley: the Barrel Hall and the vine terrace, one wedding a day.",
"url": "https://quarrylight.example/",
"telephone": "+61 8 9000 0704",
"email": "hello@quarrylight.example",
"priceRange": "$$$",
"currenciesAccepted": "AUD",
"image": [
"https://quarrylight.example/img/barrel-hall-1200x900.jpg",
"https://quarrylight.example/img/vine-terrace-1200x900.jpg"
],
"address": {
"@type": "PostalAddress",
"streetAddress": "Lot 000 (placeholder)",
"addressLocality": "Henley Brook",
"addressRegion": "WA",
"postalCode": "6055",
"addressCountry": "AU"
},
"geo": { "@type": "GeoCoordinates", "latitude": -00.0000, "longitude": 000.0000 },
"maximumAttendeeCapacity": 180,
"smokingAllowed": false,
"isAccessibleForFree": false,
"publicAccess": false,
"openingHoursSpecification": [
{ "@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "09:00", "closes": "17:00" },
{ "@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday", "opens": "09:00", "closes": "12:00" }
],
"amenityFeature": [
{ "@type": "LocationFeatureSpecification", "name": "On-site parking", "value": true },
{ "@type": "LocationFeatureSpecification", "name": "Wet-weather ceremony space", "value": true },
{ "@type": "LocationFeatureSpecification", "name": "In-house catering", "value": true }
],
"areaServed": { "@type": "AdministrativeArea", "name": "Perth, Western Australia" },
"sameAs": [
"https://www.google.com/maps/place/?q=place_id:PLACE_ID",
"https://www.instagram.com/quarrylight/",
"https://www.easyweddings.com.au/venue/quarrylight/"
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "87",
"bestRating": "5"
},
"review": [
{
"@type": "Review",
"author": { "@type": "Person", "name": "Georgia B." },
"datePublished": "2026-03-21",
"reviewRating": { "@type": "Rating", "ratingValue": "5", "bestRating": "5" },
"reviewBody": "They emailed both numbers side by side and told us the Friday was cheaper for our 45 people."
}
]
}
</script>
Two things we would do around it rather than inside it. The aggregateRating and review nodes would be generated from the venue’s real review feed on a schedule — hand-maintained rating markup goes stale and Google treats stale self-serving ratings badly. And the FAQ block on the page would carry FAQPage markup built from the same source as the visible accordion, so the two can never drift apart.
Beyond schema: a Google Business Profile with the venue category set to Wedding venue and the two secondary categories that actually get searched, the capacity question answered in the Q&A section rather than left to strangers, and a page-level target of Swan Valley wedding venue plus the long tail this page is genuinely built for — Swan Valley wedding venue prices, wedding venue capacity 150 guests Perth, Friday wedding Swan Valley. The capacity explainer is the piece most likely to earn links, because no competitor has written it.
What would change for the real client
- Photography replaces the drawings in the hero band, and the drawings stay. The floor plan is more useful than a photograph for the fit question and every couple screenshots it. A real build would put a photo band behind the hero and keep the plan exactly where it is.
- The availability strip stops being a hash and starts being the diary. A read-only feed from whatever the venue already runs — iVvy and Event Temple are the two that most Australian venues of this size are on, Tripleseat and Perfect Venue if they are on a US stack, Now Book It if the same operator also runs a cellar door. One nightly pull into a static JSON file is enough; this page does not need a live API call and should not have one.
- The enquiry goes into the CRM, not an inbox. The same iVvy or Event Temple enquiry endpoint, with the estimator’s figures passed through as custom fields so the coordinator opens a lead that already has a date, a head count, a format and a modelled total. Deposits and the 25% booking payment through Xero with a payment link on the invoice.
- Reviews come from the Google Business Profile API on a schedule, not from copy. The three on this page are demonstration copy and are deliberately not marked up.
- The capacity numbers come from the actual certificate. We would photograph it, read the maximum off it, and ask the venue’s building surveyor which areas were excluded under regulation 7B(d) before publishing a counted floor area. The operational seated figure comes from the venue’s own floor plan, and the page keeps the two apart exactly as this one does.
- Directory listings stay, and point back. Easy Weddings and Wedshed are where this audience starts; the job of the site is to be the page they land on afterwards with a price on it, which is the one thing the directories cannot give them.