Independent Design Print Menu Design

Elsom Cellars: Design Once, Edit Forever

Elsom Cellars reached out to improve their food and wine menus. I redesigned both around their existing logos and built an editable menu that reduces their costs over the long term.

Role
Designer of Record & Builder
Client
Elsom Cellars, Winery
Type
Print Design & Content Workflow

A fresh design, and a menu that keeps changing

Elsom Cellars is a winery that had been making its menus in-house with tools like Canva. They asked me to redesign their food and wine menus using the logos they already had. I designed them in Figma: an 11×17 tabloid food menu printed front and back, and a one-sided wine list. Both use the Elsom wordmark, a watermark, and a five-weight type system pairing Barlow Condensed with Cormorant Garamond.

The design was the easy part. The hard part was what happened every time a price or menu item changed. The winery wanted to update its own menus without calling me, and without breaking the design. I researched the tools they already knew, found that their "locks" don't actually lock, and shipped a spreadsheet-to-print pipeline that keeps design and content in separate hands.

The Challenge

Every menu change went through me. I edited the file in Figma, exported a print-ready PDF, and sent it back to the winery to print. They asked to make changes without Figma and without me, but they still wanted to keep the design and branding.

So far the requests were small, like renaming an item or bumping a price. But I expected the whole menu to change next season, and anyone editing it would be someone with no design training and no designer checking their work.

The obvious build, and why I stepped back

My first brief was simple: a site where someone signs in, edits the text on the menu but never the formatting or typography, and exports a PDF. I kept the feature set deliberately small. I rebuilt the Figma artboards as a code template that matched them column for column, with the real typefaces embedded in the exported PDF.

One correction came early, and it was on me for not being clearer. The first version treated the page as a PDF editor. What I actually wanted was a plain form for editing text, with the PDF generated only at export time. Once that was fixed, I restyled the interface with Material Design patterns in Elsom's palette.

It worked. But it also came with a sign-in, a save endpoint, and a server-side content store. That's three things someone would have to host and keep running indefinitely, for a menu that changes a few times a year. Before committing to that, I wanted to know whether I should be building anything at all.

The questions that changed the scope

I paused the build and treated it as a product question rather than an engineering one. Leveraging the Compound Engineering skills with Claude, I worked through the problem before writing any more code. Four questions reshaped the requirements:

What happens today?
Not what the tool does, but what people do. The answer was that the winery's current "undo button" is calling me. The tool wasn't fixing a broken workflow. It was replacing a person, so the real risk was the first time they changed something and had nobody to ask.
How much changes?
Small edits now, a possible full rewrite next season. Small edits call for confidence and a way back. Rewrites call for a starting point. A good solution has to handle both.
What's my role?
I decided to stay the designer of record. The winery would come to me for design changes only, never for content changes.
Which file is the master?
I hadn't considered this, and it turned out to be the most important question. If they edit prices all summer and I redesign in Figma in September, someone has to reconcile two copies of the menu by hand. The answer became the project's core principle: Figma owns the design, and a separate source owns the content. Neither one ever holds the other's values.

Auditing the tools they already knew

I evaluated design tools and menu-specific products against one core requirement: staff can edit text but cannot break the layout.

01
Full edit access
Canva lets anyone with edit access change any design element. Locking content couldn't enforce the layout or prevent mistakes.
02
Fixed canvases break on text
In Marq, fixed canvases meant longer text could overlap or get cut off, so I'd have to step in and fix the menu whenever a mistake happened.
ProductLayout lockPrint controlsAnnual cost
Marq TeamEnforced, admin-only unlockCMYK, adjustable bleed$120 / 2 seats
Adobe Express TeamsClaimed, with open bypass reportsCMYK, bleed, crop marks~$120 first year
Flipsnack BusinessRole-enforcedCMYK, bleed$1,020
Canva BusinessAdvisory, any editor can unlockFixed 0.125" bleed$250 / person
MustHaveMenus ProUndocumentedTheir print service$492 / location
iMenuProNoneCMYK, bleed$135 +

Vendor pricing and documentation, August 2026.

Then I learned the winery already paid for Canva. That removed the cost argument, but cost had never been the deciding factor. No Canva plan, at any tier, stops an editor from changing the layout. So Canva became the documented fallback: a no-cost way out if the new approach didn't work for them.

I also set a baseline. At a few small edits a year, me making the changes in Figma costs maybe an hour or two annually. Any solution had to beat that, both in money and in maintenance.

Content in a spreadsheet, design in Figma

I recommended moving the menu content into a Google Sheet, a tool the winery already knew how to use. My template, layout logic, fonts, and PDF export stay exactly as built, and they read from that sheet. Everything with an ongoing cost gets deleted: the sign-in, the save endpoint, the content store, and the server itself. The result is a static page on free hosting.

Answering the four questions

Each question from the reframing became a goal. The spreadsheet approach met all four.

What happens today?
Goal: replace the call to me with a safety net.
The page previews every printed side before export, and a fit check stops a menu that runs too long. The check I used to provide is now built in.
How much changes?
Goal: handle small edits and full rewrites.
A price fix is one cell. A new season is new rows. Column placement is calculated from the content, so even a full rewrite lands in the design.
What's my role?
Goal: stay designer of record, out of content.
No cell in the sheet controls typeface, color, size, or column. The winery owns the content, and only design changes come back to me.
Which file is the master?
Goal: never reconcile two copies.
Figma owns the design and the sheet owns the content. When I redesign next season, whatever is in the sheet flows straight into the new template. Nothing needs reconciling, because nothing was ever duplicated.

Guardrails for editing without a designer

With no designer reviewing the output, the tool itself has to catch mistakes.

Content lives where they already work
Each row is a Section or an Item, picked from a dropdown, and the order in the sheet is the order on the menu. No cell controls font, color, size, or column, so the design can't be changed from the sheet.
The Elsom Cellars master menu spreadsheet: Type, Name, Price, Description, Allergy Tag, Add on and Pairing columns, with Food Menu, Wine Menu and Settings tabs
A preview they can trust
My one must-have was a preview before export. The preview and the PDF read from the same design values, so what the winery sees is exactly what prints.
Food menu page showing the front side preview, an Open the spreadsheet button, and Export PDF
Back side of the food menu preview with drinks, coffee and desserts and the Elsom E watermark

Food menu, front and back, rendered from the spreadsheet.

A gate instead of a guess
When content runs past the page, the preview names the column that's too long and disables export. A deliberate override is there if they need it, so they're never stuck.
Wine menu page with a warning that the right column runs past the bottom of the page, export disabled, and an Export anyway checkbox

Live, October 2026: the fall wine list ran long, and the gate caught it before it reached the printer.

Layout rules learned from real content
Column placement is calculated from the content, so nobody has to choose it. I tuned the rules against the real artboards, with a separate set for the one-sided wine list.
Failures that explain themselves
Every problem gets a plain-language message instead of a blank page. If the sheet can't be reached, a row can't be read, or a column is missing, the page says what's wrong and holds the export.

Smaller to maintain, safer to use

Both menus are live as a static site on Vercel. The winery edits one spreadsheet with a tab per menu, opens the page, reads the preview, and exports the print-ready file. I stay the designer of record in Figma, and content changes no longer come through me.

Server → Static
Removed the sign-in, save endpoint, content store and running server. What's left is a static page on free hosting, with nothing to keep alive.
2 menus · 1 sheet
Food (front and back) and wine (one side) both read from one spreadsheet. Adding the wine menu left the food menu's printed output unchanged.

What I'd carry forward

Assign owners by type
Asking "which file is the master?" was the wrong question. Design and content each needed their own owner, and that one decision settled build vs. buy, the hosting choice, and the September redesign problem.
Verify vendor claims
The obvious answer, "use a locked Canva template," fell apart on one line of Canva's own documentation. A lock is a feature, not a permission, and the difference only shows up when nobody is watching.
Design for unsupervised use
Once I'm out of the loop, the preview is the only quality check. That made preview accuracy a correctness requirement, not polish, and it turned the overflow warning into a gate.
Set the bar honestly
The alternative to building was an hour or two a year of my time. Measuring every option against that baseline kept me from building more than the problem needed.

Next Case Study

Service Tree — Moving a Service

View Project 04