Skip to main content
USA-Based Digital Agency

Events & Rentals · Lincoln, California

Linen & Oak Event Rentals

Linen & Oak rents linens, tabletop, furniture and decor for weddings and events across five Northern California counties. Its Squarespace site showed the pieces, but visitors could not picture them together or turn a list into a quote in the rental software the business runs on. We rebuilt it as a custom site that does both, connected to her Goodshuffle Pro account.

By George Shvaya ·

The build in numbers

rental pages, server-rendered
400+
pieces in the table builder
270
event-type pages
14
old URLs redirected
211

Counted from the live sitemap and the project repository on October 20, 2026. The site launched this month, so search results are not reported yet.

The homepage

The homepage opens on one of her own styled tables and goes straight to the four rooms of the collection: tabletop, linens, furniture and decor. The publications that featured her work sit under the hero.

linenoakrentals.com
Linen & Oak homepage on desktop: hero photograph of a styled outdoor wedding table, press logos and the four collection rooms
Linen & Oak homepage on a phone

What we built

  • A catalog built from her real inventory

    Every linen, plate, glass, flatware set, chair and candle holder has its own page, grouped into collections the way planners shop. Product pages are rendered on the server, so search engines and AI crawlers read the piece, its sizes and its price without running scripts.

  • Build a Table

    Visitors choose a table linen, plates, glassware, flatware and a centerpiece from 270 pieces that belong on a place setting. The chosen pieces appear side by side straight away. One button turns up to five of them into an AI photograph of the setting, labeled on the image as an illustration.

  • An event list and a quote request

    Pieces go into one event list with quantities, an event date, a guest count and the venue. The list can be shared by link. The total is shown as an estimate for the pieces only: the business confirms the date, delivery and setup when it replies.

  • Quotes that land in Goodshuffle Pro

    When a visitor sends the list, the server posts it to Goodshuffle Pro as a wishlist, which becomes a quote in her account, and emails the full request with the event details. Pieces that are not matched to a Goodshuffle item are listed in the email, so nothing is lost.

  • Pages for events and places

    Fourteen event pages, from weddings and rehearsal dinners to baby showers and wine gatherings, each lead with the collections that suit the occasion. Area pages cover the five counties she delivers to and eight towns within them.

  • Consultations and the brand

    A consultation request offers the showroom, a call or a video meeting, and the confirmation email carries a calendar file. Her Instagram, her brand film and the publications that featured her work sit next to the catalog, in the palette she chose.

Build a Table, from five real pieces

We chose an olive green table linen, a white salad plate, the Josephine flatware, a coupe glass and a pair of gold cordless lamps on the live site. The photograph below came back in under ten seconds. The label at the bottom is part of the image the site shows.

AI illustration of a place setting: olive green linen, white plate, ornate silver flatware, a ribbed coupe glass and two gold cordless lamps with fluted glass shades
Made on linenoakrentals.com/visualizer on October 20, 2026. More on how it works and where it falls short in Can AI show a client their table before they book?
linenoakrentals.com/visualizer
The Build a Table page with piece tabs, product thumbnails and the generated table photograph

Decisions that mattered

  • Stock levels never reach the page

    Her rental software tracks quantities for almost every item. She did not want customers to see them. Quantities are never rendered and never published in structured data, and an automated test fails the build if one ever reaches the product schema.

  • The server sets the price

    The browser sends only which pieces and how many. The server looks up every price from the catalog again before the request is emailed or posted, so a tampered request cannot change a quote.

  • The wishlist has no notes field

    We tested what Goodshuffle’s wishlist accepts before sending a single real request. It takes contact details, start and end dates and items with quantities, and rejects anything else. Venue, guest count and notes therefore travel in the email, and the two channels are sent together.

  • The visitor never writes the prompt

    The browser sends only the chosen pieces. The server resolves each chosen piece to its own catalog photograph and sends those to Google’s Gemini image model, which closes off prompt injection and arbitrary image fetches. The label on the photo calls it an illustration and names flatware as the piece most likely to differ, because flatware drifted in three of four of our tests.

  • Nothing breaks at the move

    All 211 product URLs from the Squarespace site redirect to their new pages, so links from planners, blogs and search results still work.

  • Tested like software

    Thirty-nine test files cover pricing, the Goodshuffle payload, the visualizer rules, service-area copy and contrast on every colored band, and they run on every change before it can deploy.

The Goodshuffle side is written up in full in connecting Goodshuffle Pro to a custom website.

Stack

  • Next.js 15
  • React 19
  • TypeScript
  • Tailwind CSS 4
  • Vercel
  • Goodshuffle Pro
  • Google Gemini image model
  • Resend email
  • Vitest

Everything runs on the client’s own accounts: domain, hosting, email and Goodshuffle.

Run a rental company?

We build rental sites around your inventory and the software you already use.