← 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 ↗
{
    "title": "PaparottiS Pizza Pasta \u2014 Tuggerah",
    "niche": "restaurants",
    "version": "1.0",
    "status": "draft",
    "date": "2026-05-08",
    "based_on": "design-4-slipstream-v2",
    "summary": "Family-owned Italian in Tuggerah NSW. Slipstream Cafe Template v2 adapted for split lunch/dinner hours, PDF menus, and Italian-burgundy palette.",
    "tags": [
        "restaurant",
        "italian",
        "pizza",
        "pasta",
        "split-hours",
        "pdf-menus",
        "central-coast",
        "tuggerah"
    ],
    "metrics": {
        "FVS_target": 90,
        "PSI Mobile_target": 90,
        "based_on_template_metrics": {
            "FVS": 92,
            "PSI Mobile": 90,
            "Accessibility": 91,
            "SEO": 100,
            "Best Practices": 96
        }
    },
    "captured": {
        "source": "Concept Builder extract \u2014 cafe_extract.php against https://www.paparottis.com.au/ on 2026-05-08",
        "field_count": 9,
        "needs_client_input_count": 12
    },
    "data_fields": [
        {
            "key": "business_name",
            "type": "string",
            "required": true,
            "ownership": "content",
            "example": "PaparottiS Pizza Pasta",
            "note": "Captured from profile.business_name. Used in title, schema, OG, footer."
        },
        {
            "key": "tagline",
            "type": "string",
            "required": true,
            "ownership": "content",
            "example": "Italian Pizza & Pasta on the Central Coast",
            "note": "AI-suggested H1 from ai.h1_assessment.suggested_h1. Includes business type + location for local SEO."
        },
        {
            "key": "subtitle",
            "type": "string",
            "required": true,
            "ownership": "content",
            "example": "A family-owned Italian restaurant in the heart of Tuggerah. Wood-fired pizza, hand-rolled pasta, and the kind of warm hospitality that feels like family.",
            "note": "Hero lede \u2014 1-2 sentences, communicate the wedge."
        },
        {
            "key": "logo_url",
            "type": "url",
            "required": true,
            "ownership": "content",
            "example": "https://static.wixstatic.com/media/3cb875_0d270e377852457c8415a92970b9a15d~mv2.png/v1/fill/w_794,h_606,al_c,q_90,usm_0.66_1.00_0.01,enc_avif,quality_auto/Paparottis_Logo_Trans.png",
            "note": "Transparent PNG. Currently hot-linked from Wix CDN \u2014 copy to MW hosting before going live."
        },
        {
            "key": "establishment_year",
            "type": "int",
            "required": false,
            "ownership": "content",
            "example": 2003,
            "note": "REQUIRED when known. Used in footer copyright as 'YYYY \u2013 CURRENT_YEAR'. Year-range reads as longevity (trust signal). See design rule 'establishment_year_footer'."
        },
        {
            "key": "street_address",
            "type": "string",
            "required": true,
            "ownership": "content",
            "example": "Shop 1038A, Westfield Tuggerah, 50 Wyong Road",
            "note": "Captured from profile.street_address; mall/centre name 'Westfield Tuggerah' added 2026-05-11 per client (shopping-centre venues should always include the centre name)."
        },
        {
            "key": "suburb",
            "type": "string",
            "required": true,
            "ownership": "content",
            "example": "Tuggerah"
        },
        {
            "key": "state",
            "type": "enum",
            "required": true,
            "ownership": "content",
            "enum": [
                "NSW",
                "VIC",
                "QLD",
                "WA",
                "SA",
                "TAS",
                "NT",
                "ACT"
            ],
            "example": "NSW"
        },
        {
            "key": "postcode",
            "type": "string",
            "required": true,
            "ownership": "content",
            "example": "2259",
            "note": "Verify \u2014 Tuggerah area covers 2259/2261."
        },
        {
            "key": "lat",
            "type": "decimal",
            "required": false,
            "ownership": "build",
            "note": "Geocode from address for schema.org. Currently using map iframe embed; add lat/lng for full schema."
        },
        {
            "key": "lng",
            "type": "decimal",
            "required": false,
            "ownership": "build"
        },
        {
            "key": "phone_au",
            "type": "string",
            "required": true,
            "ownership": "content",
            "example": "(02) 4352 2500",
            "note": "Display format. Captured from client 2026-05-11."
        },
        {
            "key": "phone_intl",
            "type": "string",
            "required": true,
            "ownership": "content",
            "example": "+61243522500",
            "note": "International format for tel: links + schema. Captured 2026-05-11."
        },
        {
            "key": "email",
            "type": "string",
            "required": false,
            "ownership": "content",
            "note": "Not captured. Optional."
        },
        {
            "key": "hours",
            "type": "object",
            "required": true,
            "ownership": "content",
            "note": "Per-weekday hours. Each day is an array of [open, close] tuples for split lunch/dinner. Empty array = closed.",
            "example": "{ mon: [], tue: [['11:30','14:30'],['17:00','20:00']], wed: [['11:30','14:30'],['17:00','20:00']], thu: [['11:30','14:30'],['17:00','20:45']], fri: [['11:30','14:30'],['17:00','20:45']], sat: [['11:30','14:30'],['17:00','20:45']], sun: [['11:30','14:30'],['17:00','20:00']] }"
        },
        {
            "key": "hero_image_1_front_entry",
            "type": "image",
            "required": true,
            "ownership": "signal",
            "note": "REQUIRED. Street-level shot of the actual building/signage so a stranger walking past recognises it. Min 1200x1500. The single most-overlooked photo in the AU corpus."
        },
        {
            "key": "hero_image_2_interior",
            "type": "image",
            "required": true,
            "ownership": "signal",
            "note": "REQUIRED. Landed-inside shot \u2014 counter, bar, or dining room. Sells 'I want to be in there'."
        },
        {
            "key": "hero_image_3_signature",
            "type": "image",
            "required": true,
            "ownership": "signal",
            "note": "REQUIRED. Close-up of the food that defines the venue (signature pizza/pasta). Sells 'this is what I would order'."
        },
        {
            "key": "hero_layout",
            "type": "enum",
            "required": true,
            "ownership": "style",
            "enum": [
                "triptych_right",
                "single_hero",
                "carousel",
                "video_bg"
            ],
            "example": "triptych_right",
            "note": "Default per restaurant gold-standard."
        },
        {
            "key": "og_image",
            "type": "image",
            "required": true,
            "ownership": "build",
            "note": "1200x630 social-share preview. Currently using the logo as a fallback \u2014 replace with hero_image_1 cropped."
        },
        {
            "key": "cuisine_types",
            "type": "array<string>",
            "required": true,
            "ownership": "content",
            "example": "['Italian', 'Pizza', 'Pasta']",
            "note": "Schema.org servesCuisine + meta description."
        },
        {
            "key": "price_range",
            "type": "enum",
            "required": true,
            "ownership": "content",
            "enum": [
                "$",
                "$$",
                "$$$",
                "$$$$"
            ],
            "example": "$$"
        },
        {
            "key": "google_review_count",
            "type": "int",
            "required": false,
            "ownership": "build",
            "note": "Pulled from Google Business Profile via the embed. Not yet wired."
        },
        {
            "key": "google_rating",
            "type": "decimal",
            "required": false,
            "ownership": "build"
        },
        {
            "key": "google_business_url",
            "type": "url",
            "required": false,
            "ownership": "build",
            "note": "Not captured. Client to provide GBP link."
        },
        {
            "key": "review_source",
            "type": "enum",
            "required": true,
            "ownership": "build",
            "enum": [
                "google_reviews_embed",
                "testimonial_carousel",
                "disabled"
            ],
            "example": "google_reviews_embed",
            "note": "Build-time choice. Embed pulls live data."
        },
        {
            "key": "instagram_url",
            "type": "url",
            "required": false,
            "ownership": "content",
            "example": "https://www.instagram.com/paparottis.tuggerah"
        },
        {
            "key": "facebook_url",
            "type": "url",
            "required": false,
            "ownership": "content",
            "example": "https://www.facebook.com/paparottistuggerah"
        },
        {
            "key": "tiktok_url",
            "type": "url",
            "required": false,
            "ownership": "content",
            "note": "Not captured."
        },
        {
            "key": "story_paragraphs",
            "type": "array<string>",
            "required": true,
            "ownership": "content",
            "example": "['PaparottiS Pizza Pasta is a family-owned Italian restaurant serving the Central Coast.', 'We hand-roll our pasta in the morning, fire our pizzas in a stone oven\u2026']",
            "note": "First paragraph captured verbatim from ai.about_text. Second paragraph drafted by Slipstream \u2014 client to revise/approve."
        },
        {
            "key": "testimonial",
            "type": "object",
            "required": false,
            "ownership": "content",
            "note": "Currently using a sample testimonial. Replace with a real one from a regular or staff member.",
            "example": "{ quote: 'The pizza dough is hand-stretched\u2026', cite: '\u2014 Sample testimonial \u00b7 client to provide a real one' }"
        },
        {
            "key": "menu_format",
            "type": "enum",
            "required": true,
            "ownership": "build",
            "enum": [
                "html_inline",
                "pdf_buttons",
                "html_then_pdf"
            ],
            "example": "pdf_buttons",
            "note": "Client supplies Wix-hosted PDFs. Skipping HTML-inline for v1. Could move to html_then_pdf if SEO wants the menu indexable."
        },
        {
            "key": "menu_pdfs",
            "type": "array<object>",
            "required": true,
            "ownership": "content",
            "example": "[{ label: 'Lunch Menu', subtitle: 'Tuesday to Sunday, 11:30am \u2013 2:30pm', url: 'https://8b3ba2a1-...filesusr.com/ugd/3cb875_930d758baf9443f4869344cca68333ed.pdf' }, { label: 'Dinner Menu', subtitle: 'Tuesday to Sunday, from 5:00pm', url: 'https://8b3ba2a1-...filesusr.com/ugd/3cb875_bf0f248c9061468c81e7d0d9b575434d.pdf' }]",
            "note": "Day-part labels (Lunch / Dinner) chosen because the venue's split lunch/dinner hours map directly to which menu is in effect."
        },
        {
            "key": "menu_pdfs_hosted_locally",
            "type": "bool",
            "required": true,
            "ownership": "build",
            "example": false,
            "note": "Currently linking to Wix CDN. Copy to MW hosting before going live so Wix doesn't break the page if they cycle URLs."
        },
        {
            "key": "amenities",
            "type": "array<enum>",
            "required": true,
            "ownership": "signal",
            "enum": [
                "dine_in",
                "takeaway",
                "wood_fired_pizza",
                "hand_rolled_pasta",
                "wheelchair_accessible",
                "outdoor_seating",
                "kids_friendly",
                "high_chairs",
                "byo",
                "fully_licensed",
                "group_bookings",
                "gluten_free",
                "vegetarian",
                "vegan"
            ],
            "example": "['dine_in','takeaway','wheelchair_accessible','wood_fired_pizza','hand_rolled_pasta']"
        },
        {
            "key": "payment_methods",
            "type": "array<enum>",
            "required": true,
            "ownership": "build",
            "enum": [
                "Cash",
                "Credit Card",
                "EFTPOS",
                "Apple Pay",
                "Google Pay",
                "Square",
                "Stripe"
            ],
            "example": "['Cash','Credit Card','EFTPOS']"
        },
        {
            "key": "accepts_reservations",
            "type": "bool",
            "required": true,
            "ownership": "content",
            "example": true,
            "note": "Italian sit-down venues default to True. Confirm with client."
        },
        {
            "key": "reservation_platform",
            "type": "enum",
            "required": false,
            "ownership": "build",
            "enum": [
                "resdiary",
                "opentable",
                "sevenrooms",
                "now_book_it",
                "quandoo",
                "inhouse",
                "phone_only",
                "none"
            ],
            "example": "phone_only",
            "note": "Defaulting to phone-only until client picks a platform."
        },
        {
            "key": "primary_above_fold_cta",
            "type": "object",
            "required": true,
            "ownership": "signal",
            "example": "{ label: 'Get Directions', action: 'maps', target: 'https://maps.google.com/?q=...' }",
            "note": "Restaurant override = 'Book a table' per the design manifest, but defaulted here to Get Directions until reservations are wired."
        },
        {
            "key": "secondary_above_fold_cta",
            "type": "object",
            "required": false,
            "ownership": "content",
            "example": "{ label: 'View Menus', action: 'anchor', target: '#menu' }"
        },
        {
            "key": "sticky_cta_1",
            "type": "object",
            "required": true,
            "ownership": "signal",
            "example": "{ label: 'Directions', action: 'maps' }",
            "note": "Locked. Highest-intent action across all premises niches."
        },
        {
            "key": "sticky_cta_2",
            "type": "object",
            "required": true,
            "ownership": "content",
            "example": "{ label: 'Call us', action: 'tel' }",
            "note": "Restaurants override to 'Book a table' once reservations are wired. Until then: 'Call us'."
        },
        {
            "key": "acknowledgement_of_country",
            "type": "string",
            "required": false,
            "ownership": "content",
            "note": "Not yet drafted. AU compliance / community signal. Client provides per local custodian."
        },
        {
            "key": "privacy_policy_url",
            "type": "url",
            "required": true,
            "ownership": "build",
            "note": "Required AU compliance. Build-time setup, never edited."
        }
    ],
    "open_status_strings": {
        "_design_rule": "Status badge and bar must speak in one voice and always anchor to 'now'. The word 'now' resolves the ambiguity of whether 'Open' means 'open today', 'open generally', or 'open right now'.",
        "open_today": "Open now \u00b7 closes {closesAt}",
        "closed_opens_today": "Closed now \u00b7 opens at {opensAt} today",
        "closed_opens_tomorrow": "Closed now \u00b7 opens tomorrow {opensAt}",
        "closed_opens_later": "Closed now \u00b7 opens {dayName} {opensAt}"
    },
    "block_decisions": [
        {
            "block": "hero",
            "tier": "signal",
            "implemented": "partial",
            "note": "Triptych layout in place. Placeholders use the design-rule treatment: stock photo (Picsum seeded) + dark gradient + light blur + centred label. Replace background-image URL when real photos arrive."
        },
        {
            "block": "status_bar",
            "tier": "signal",
            "implemented": "yes",
            "note": "Single-line live open/closed indicator only. CTAs intentionally NOT duplicated here (see design rule status_bar_no_duplicate_ctas)."
        },
        {
            "block": "address_hours_band",
            "tier": "signal",
            "implemented": "yes",
            "note": "Visible address in footer + visit section. Hours table with split windows. Map iframe. Address includes 'Westfield Tuggerah' since the venue is in a shopping centre."
        },
        {
            "block": "online_ordering",
            "tier": "differentiator",
            "implemented": "no",
            "note": "Captured value: none. Section omitted."
        },
        {
            "block": "menu",
            "tier": "musthave",
            "implemented": "yes",
            "note": "Two PDF buttons labelled Lunch Menu / Dinner Menu. Day-part labels chosen because they map to the venue's split lunch/dinner hours."
        },
        {
            "block": "gallery",
            "tier": "musthave",
            "implemented": "no",
            "note": "Skipped for v1 \u2014 hero triptych covers the photo signal until a full gallery is sourced."
        },
        {
            "block": "about_story",
            "tier": "differentiator",
            "implemented": "yes",
            "note": "Captured paragraph + sample second paragraph + sample testimonial. NOW IN 2-COLUMN GRID with companion image placeholder (Mitchell #4)."
        },
        {
            "block": "instagram_feed",
            "tier": "musthave",
            "implemented": "placeholder",
            "note": "Full-width 6-tile dummy grid between Our Story and Menus. Production: Elfsight / IG Basic Display / curated static. See design rule restaurant_instagram_block."
        },
        {
            "block": "reviews_social_proof",
            "tier": "differentiator",
            "implemented": "placeholder",
            "note": "Sample cards + yellow banner explaining the live Google embed will replace this."
        },
        {
            "block": "visit",
            "tier": "signal",
            "implemented": "yes",
            "note": "Map + Address/Hours/Contact column. What-to-expect amenities now sit UNDER the map (not in the right column) so the visit-grid stays balanced. See design rule visit_amenities_under_map."
        },
        {
            "block": "social_footer",
            "tier": "musthave",
            "implemented": "yes",
            "note": "Instagram + Facebook captured. TikTok / privacy / acknowledgement still need client input."
        },
        {
            "block": "sticky_footer_ctas",
            "tier": "signal",
            "implemented": "yes",
            "note": "Mobile-only sticky bar with Directions + Call us. Locked CTA 1 'Directions' is in place."
        }
    ],
    "design_rules_emerging_from_this_build": [
        {
            "rule": "establishment_year_footer",
            "added": "2026-05-11",
            "description": "When establishment_year is known, footer copyright reads '\u00a9 YYYY-founded \u2013 YYYY-current Business Name'."
        },
        {
            "rule": "status_strings_say_now",
            "added": "2026-05-11",
            "description": "Live open/closed indicator must use 'Open now' / 'Closed now' phrasing. Badge and bar speak in one voice."
        },
        {
            "rule": "placeholder_treatment",
            "added": "2026-05-11",
            "description": "Placeholder images use stock photo + dark gradient overlay + light blur + centred label. Not flat colour blocks. Page reads as finished design pre-photos.",
            "source": "Mitchell \u2014 round-2 review"
        },
        {
            "rule": "status_bar_no_duplicate_ctas",
            "added": "2026-05-11",
            "description": "Status strip between hero and story carries live open/closed indicator only. CTAs that appear in the hero or sticky bottom bar should NOT be duplicated here.",
            "source": "Mitchell \u2014 round-2 review"
        },
        {
            "rule": "story_needs_companion_image",
            "added": "2026-05-11",
            "description": "Story sections use a 2-column grid: text + companion image (or above on mobile). Single-column text-only story reads as lopsided.",
            "source": "Mitchell \u2014 round-2 review"
        },
        {
            "rule": "visit_amenities_under_map",
            "added": "2026-05-11",
            "description": "When the visit right-column (Address / Hours / Contact / Amenities) is taller than the map+padding, lift the amenities pills out and place them as a card under the map.",
            "source": "Mitchell \u2014 round-2 review"
        },
        {
            "rule": "restaurant_instagram_block",
            "added": "2026-05-11",
            "description": "Restaurant / hospitality / food-led venues include a full-width Instagram grid (6 tiles, edge-to-edge) between Our Story and Menus. Production: Elfsight embed / IG Basic Display API / curated static grid.",
            "source": "Isaac \u2014 round-2 review"
        },
        {
            "rule": "shopping_centre_venues_name_the_centre",
            "added": "2026-05-11",
            "description": "When a venue is in a shopping centre / mall, the address must include the centre name on the first line (e.g. 'Shop 1038A, Westfield Tuggerah'). Customer finds it faster; the centre name is the local landmark.",
            "source": "Isaac \u2014 round-2 review"
        }
    ]
}

Sidecar files: /restaurants/paparottis-tuggerah.html, /restaurants/paparottis-tuggerah.md, /restaurants/paparottis-tuggerah.json