← Concepts directory ← Restaurants & Cafes

PaparottiS Pizza Pasta — Tuggerah

Family-owned Italian in Tuggerah NSW. Slipstream Cafe Template v2 adapted for split lunch/dinner hours, PDF menus, and Italian-burgundy palette.

○ Draft v1.0
90 FVS_target
90 PSI Mobile_target
Array based_on_template_metrics
Live preview Thought process Data fields (44) Metadata Open standalone ↗

PaparottiS Pizza Pasta — Tuggerah NSW

A first-pass concept page for PaparottiS Pizza Pasta in Tuggerah, NSW. Built from the Slipstream Cafe Template v2 (design-4-slipstream-v2.html), adapted for an Italian restaurant with split lunch/dinner hours, PDF menus, and a venue-specific palette.

The template is the calibration; this file is the application.

What carries over from the template

The structural decisions are unchanged because they're data-driven, not business-specific:

on a contact page

(the field most-overlooked across the AU corpus)

Central Coast"

windows), telephone, sameAs, amenityFeature

tap away

What was adapted for this venue

(#8b1a1a accent on cream #faf6ef) — reads warmer-formal vs. warm-casual

identifies as gold-standard for restaurants: one large front-entry image + two thumbnails (interior, signature plate)

assumed one continuous window per day. Rewrote it to handle an array of windows per day so "Closed · opens at 5pm today" works during the 3–5pm split

Menu) since the venue ships menus as Wix-hosted PDFs and the SEO cost of HTML-inline is moot when the PDFs are the source of truth. Day-part labels (Lunch/Dinner) read more usefully than dish-type labels (Pizza/Pasta) because the venue's split lunch/dinner hours map directly to which menu is in effect

added back if the venue runs a list

/ sponsorship block as the wedge. Pizza/pasta venues lean on hospitality story instead, so the story section is leaner: one paragraph + a testimonial slot. If PaparottiS has a community angle, add it back

Captured fields (from the design manifest Isaac supplied)

These came verbatim from the Concept Builder extract on 2026-05-08:

| Field | Captured | Source | |---|---|---| | business_name | PaparottiS Pizza Pasta | profile.business_name | | tagline | Italian Pizza & Pasta Restaurant in Tuggerah NSW | ai.h1_assessment.suggested_h1 | | street_address | Shop 1038A, 50 Wyong Road | profile.street_address | | suburb | Tuggerah | profile.town_or_suburb | | state | NSW | profile.au_state | | hours | Split lunch/dinner Tue–Sun, closed Mon | ai.opening_hours | | instagram_url | https://www.instagram.com/paparottis.tuggerah | ai.social_urls.instagram | | facebook_url | https://www.facebook.com/paparottistuggerah | ai.social_urls.facebook | | story_paragraph | "PaparottiS Pizza Pasta is a family owned Italian restaurant…" | ai.about_text | | logo_url | Wix-hosted transparent PNG | client supplied | | lunch_menu_pdf | filesusr.com/ugd/3cb875_930d758baf9443f4869344cca68333ed.pdf | client supplied | | dinner_menu_pdf | filesusr.com/ugd/3cb875_bf0f248c9061468c81e7d0d9b575434d.pdf | client supplied | | establishment_year | 2003 | client supplied (2026-05-11) |

Fields needing client input

These are placeholders — the live concept clearly marks them so client review knows where to look:

"Phone: client to provide"

block)

plus a yellow placeholder banner explaining live Google Business Profile embeds replace this in production

local custodian

Hours JS — per-day split windows

The template's original JS hard-codes single open/close per JS-day:


var H = [
  [270, 840],   // Sun 4:30am – 2:00pm
  ...
];

For PaparottiS the JS is rewritten to handle multiple windows per day:


var H = [
  [[690, 870], [1020, 1200]],   // Sun  11:30–14:30, 17:00–20:00
  [],                            // Mon  closed
  [[690, 870], [1020, 1200]],   // Tue
  ...
];

findCurrentOrNext() walks today's windows for an active match, then today's later windows, then up to 7 future days. The label outputs "Open · closes 8pm" / "Closed · opens at 5pm today" / "Closed · opens tomorrow 11:30am" / "Closed · opens Tue 11:30am" depending on context.

This logic should land back in the cafe template too — split hours are common (cafe → bistro evenings) and the single-window assumption is a limitation, not a feature.

What this concept doesn't try to solve

No section. Add a "Order online" CTA + integration if/when the venue signs up to Square / Lightspeed / similar

(Italian sit-down venues default to taking reservations) but the booking widget itself isn't wired. Phone fallback only until a platform is chosen

the only known location. If/when more open, this template forks rather than parameterises

Open questions for client review

1. Phone number for tel: links and schema? 2. Postcode confirmation (Tuggerah covers 2259/2261 area)? 3. Real Google Business Profile URL for the reviews embed? 4. Accept reservations? If yes, which platform (now-book-it / quandoo / open-table / phone-only)? 5. Does PaparottiS run a newsletter / community angle worth surfacing?

Round 2 — Mitchell's review (2026-05-11)

Mitchell raised four things, all addressed:

dark gradient + light blur + label on top" treatment. Reads as intentional design, makes the placeholder client to supply label legible, and looks finished even before real photos arrive. Codified as the design rule placeholder_treatment below.

hero AND the sticky bottom bar. Stripped to just the live open-status line. Codified as status_bar_no_duplicate_ctas below.

out of the right column and into a card directly under the map. The right column is now Address / Hours / Contact, more balanced. Codified as visit_amenities_under_map.

in a 2-column grid with a placeholder image alongside (same blur+darken treatment as the hero), receiving the same placeholder_treatment rule. Codified as story_needs_companion_image.

Plus Isaac's adds:

with a note that production wires Elfsight / IG Basic Display / curated static grid). Codified as restaurant_instagram_block.

visit-contact, footer address, sticky CTA, schema.org telephone).

Shop 1038A, Westfield Tuggerah (visit, footer, schema.org streetAddress). Map iframe query updated.

Chrome/Firefox/Safari/Edge.

Design rules emerging from this build (2026-05-11)

Two rules surfaced during client review that generalise across the cafe / restaurant cohort. They're added to design-4-slipstream-v2 (the cafe template) and should land in the centralised commoncrawl design-rules registry next time the feedback pipeline syncs.

Rule 1 — Establishment year in the footer copyright

If the year a business was established is known, the footer copyright must read © YYYY-founded – YYYY-current Business Name, not just © YYYY-current Business Name. The year-range reads as longevity, which correlates with trust signals across the gold-standard corpus.

if known)

Rule 2 — Status badge wording must say "Open now" / "Closed now"

The live open / closed indicator must read "Open now · closes 8pm" or "Closed now · opens at 5pm today" — not "Open · closes 8pm" or "Closed · opens 5pm". The word "now" anchors the badge to the moment of reading, removing the ambiguity of whether "Open" means "open today", "open generally", or "open right now".

The same convention applies in the dark status bar below the hero, so the header badge and the bar speak in one voice (the previous design-4 build had the badge saying "Open · closes 8pm" while the bar said "Open now · closes 8pm" — minor but inconsistent).

Codified in the .json sidecar as open_status_strings for any future template that wants to copy the convention verbatim. The cafe template's HTML has been patched in this same change set.

Rule 3 — Placeholder image treatment

When real photos aren't yet supplied, the placeholder must use **stock photo + dark gradient overlay + light blur + centred label**, NOT a flat colour block with text. Reasons:

focuses on layout and content rather than "the placeholders look unfinished"

unambiguously legible regardless of the underlying stock image

background-image URL changes — no structural HTML edit

Applies to: hero squares, story companion image, gallery slots, any above-the-fold placeholder. NOT for body content (use copy or a labelled empty state instead).

Rule 4 — Status bar must not duplicate hero or sticky CTAs

The dark status strip between hero and story carries the live open/closed indicator and nothing else. CTAs that already appear in the hero (Get Directions / View Menus) and in the mobile sticky bottom bar (Directions / Call us) should NOT also appear in the status bar. Three banks of the same CTA is noise, not redundancy.

Rule 5 — Story sections need a companion image

A single-column text-only story block reads as lopsided. Stories take a 2-column grid: text + an image on the right (or above on mobile). If the client doesn't yet have a story photo, use the placeholder treatment from Rule 3.

Rule 6 — Visit column rebalance when contact section is tall

When the right column of the visit-grid (Address / Hours / Contact / What-to-expect) becomes taller than the map+padding on the left, lift "What to expect" (amenities pills) out of the column and place it as a card directly under the map. Restores visual balance without changing the data shown.

Rule 7 — Restaurant pages include an Instagram block

For restaurants, hospitality, and food-led venues, a full-width Instagram grid (6 tiles, edge-to-edge) lands between Our Story and Menus. The production implementation is the venue's choice (live Elfsight embed, Instagram Basic Display API, or a curated 6-tile static grid refreshed monthly). Cafes and bars likely want the same block — TBC during next build of those niches.