{{ $image['alt'] ?? '' }}
@if(!empty($image['context'])){{ $image['context'] }}
@endif@extends('layouts.app')
@php
use App\Helpers\SeoHelper;
use Illuminate\Support\Str;
$locale = app()->getLocale();
$pageSeo = $pageSeo ?? SeoHelper::getPageSeo('vertical_restaurants');
$localizedRoute = function ($routeName, $params = []) use ($locale) {
return SeoHelper::localizedRoute($routeName, $params, $locale);
};
$t = $translationNamespace ?? 'messages.vertical_restaurants';
$generatedCopy = is_array($generatedCopy ?? null) ? $generatedCopy : [];
$useGeneratedVerticalCopy = !empty($generatedCopy);
$verticalSlugLc = strtolower((string) ($verticalSlug ?? ''));
$isFoodIndustryPage = preg_match('/restaurant|coffee|cafe|food-beverage|bar|bakery|gelato|wine|tapas|burger|sushi|pizza|seafood|steakhouse|breakfast|brunch/', $verticalSlugLc) === 1;
$forceSeniorGeneratedCopy = in_array($locale, ['pt', 'br'], true) || (in_array($locale, ['es'], true) && $isFoodIndustryPage);
$forceGeneratedKeys = [
'meta_title', 'meta_description', 'schema_description', 'sticky_cta_title', 'hero_eyebrow',
'hero_talk_cta', 'hero_discover_cta', 'hero_slider_mobile_eyebrow', 'hero_image_alt',
'review_prefill_message', 'proof_title', 'proof_lead', 'final_title', 'final_lead',
'ecosystem_title', 'ecosystem_lead', 'location_focus', 'location_meta_description',
'location_meta_title', 'modal_service_detail', 'modal_close_aria', 'modal_business_value',
'modal_what_we_deliver', 'modal_expected_benefits', 'modal_default_cta',
'modal_request_proposal', 'modal_start_message',
];
$looksWeakOrEnglish = static function (?string $value): bool {
if (!is_string($value)) {
return true;
}
$v = trim($value);
if ($v === '') {
return true;
}
return (bool) preg_match('/\b(integrated|designed|built|start this|request proposal|service detail|close details|business value|what we deliver|expected benefits|implementation aligned|clear deliverables|performance reviews|better visibility|higher conversion|repeat purchase|customer value|view selected work|discovery|conversion|retention)\b/i', $v);
};
$arrayLooksWeakOrEnglish = static function ($value) use (&$arrayLooksWeakOrEnglish, $looksWeakOrEnglish): bool {
if (!is_array($value)) {
return true;
}
foreach ($value as $item) {
if (is_array($item)) {
if ($arrayLooksWeakOrEnglish($item) === false) {
return false;
}
continue;
}
if (is_string($item) && !$looksWeakOrEnglish($item)) {
return false;
}
}
return true;
};
$tt = static function (string $key, array $replace = []) use ($t, $generatedCopy, $locale, $looksWeakOrEnglish, $forceSeniorGeneratedCopy, $forceGeneratedKeys, $useGeneratedVerticalCopy) {
if ($useGeneratedVerticalCopy && isset($generatedCopy[$key]) && is_string($generatedCopy[$key])) {
return __($generatedCopy[$key], $replace);
}
if ($useGeneratedVerticalCopy && in_array($key, $forceGeneratedKeys, true) && isset($generatedCopy[$key]) && is_string($generatedCopy[$key])) {
return __($generatedCopy[$key], $replace);
}
if ($forceSeniorGeneratedCopy && in_array($key, $forceGeneratedKeys, true) && isset($generatedCopy[$key]) && is_string($generatedCopy[$key])) {
return __($generatedCopy[$key], $replace);
}
$primaryKey = $t . '.' . $key;
$primary = __($primaryKey, $replace);
if ($primary !== $primaryKey) {
if ($locale !== 'en' && $looksWeakOrEnglish($primary) && isset($generatedCopy[$key]) && is_string($generatedCopy[$key])) {
return __($generatedCopy[$key], $replace);
}
return $primary;
}
$fallbackKey = 'messages.vertical_restaurants.' . $key;
$fallback = __($fallbackKey, $replace);
if ($fallback !== $fallbackKey) {
if ($locale !== 'en' && $looksWeakOrEnglish($fallback) && isset($generatedCopy[$key]) && is_string($generatedCopy[$key])) {
return __($generatedCopy[$key], $replace);
}
return $fallback;
}
if (array_key_exists($key, $generatedCopy) && is_string($generatedCopy[$key])) {
return __($generatedCopy[$key], $replace);
}
return $primary;
};
$storyBlocks = $useGeneratedVerticalCopy ? ($generatedCopy['story_blocks'] ?? []) : __($t . '.story_blocks');
if (!$useGeneratedVerticalCopy && !is_array($storyBlocks)) {
$storyBlocks = __('messages.vertical_restaurants.story_blocks');
}
if (($locale !== 'en' && $arrayLooksWeakOrEnglish($storyBlocks) && isset($generatedCopy['story_blocks']) && is_array($generatedCopy['story_blocks']))
|| ($forceSeniorGeneratedCopy && isset($generatedCopy['story_blocks']) && is_array($generatedCopy['story_blocks']))) {
$storyBlocks = $generatedCopy['story_blocks'];
}
if (!is_array($storyBlocks) || empty($storyBlocks)) {
$storyBlocks = $generatedCopy['story_blocks'] ?? [];
}
$contactReviewUrl = $localizedRoute('contact.index') . '?' . http_build_query([
'entry_page' => 'vertical-' . ($verticalSlug ?? 'restaurants'),
'entry_intent_hint' => ($verticalSlug ?? 'restaurants') . '_review',
'message' => $tt('review_prefill_message'),
]);
$proposalUrl = $localizedRoute('calculator.index') . '?' . http_build_query(['source' => 'vertical-' . ($verticalSlug ?? 'restaurants')]);
$fallbackHeroAlt = $tt('hero_image_alt');
$verticalHeroSlug = Str::slug((string) ($verticalSlug ?? 'restaurants'));
$heroHeadingId = 'vertical-' . $verticalHeroSlug . '-hero-heading';
$heroSliderId = $verticalHeroSlug . '-hero-cards-slider';
$featureOpenAriaPattern = $tt('feature_open_aria', ['feature' => ':feature']);
$featureSeeMoreLabel = $tt('feature_see_more');
$featureDescriptionFallback = $tt('feature_description_fallback');
if ($locale !== 'en'
&& is_string($featureDescriptionFallback)
&& preg_match('/\b(integrated|designed|built)\b/i', $featureDescriptionFallback)
&& isset($generatedCopy['feature_description_fallback'])
&& is_string($generatedCopy['feature_description_fallback'])
) {
$featureDescriptionFallback = $generatedCopy['feature_description_fallback'];
}
$modalServiceDetailLabel = $tt('modal_service_detail');
$modalCloseAria = $tt('modal_close_aria');
$modalBusinessValueLabel = $tt('modal_business_value');
$modalDeliverLabel = $tt('modal_what_we_deliver');
$modalBenefitsLabel = $tt('modal_expected_benefits');
$modalDefaultCta = $tt('modal_default_cta');
$modalRequestProposal = $tt('modal_request_proposal');
$modalStartMessage = $tt('modal_start_message', ['feature' => ':feature']);
if ($useGeneratedVerticalCopy) {
foreach ([
'modalServiceDetailLabel' => 'modal_service_detail',
'modalCloseAria' => 'modal_close_aria',
'modalBusinessValueLabel' => 'modal_business_value',
'modalDeliverLabel' => 'modal_what_we_deliver',
'modalBenefitsLabel' => 'modal_expected_benefits',
'modalDefaultCta' => 'modal_default_cta',
'modalRequestProposal' => 'modal_request_proposal',
'modalStartMessage' => 'modal_start_message',
] as $varName => $copyKey) {
if (isset($generatedCopy[$copyKey]) && is_string($generatedCopy[$copyKey]) && trim($generatedCopy[$copyKey]) !== '') {
$$varName = $generatedCopy[$copyKey];
}
}
}
if ($locale !== 'en') {
$modalFieldMap = [
'modalServiceDetailLabel' => 'modal_service_detail',
'modalCloseAria' => 'modal_close_aria',
'modalBusinessValueLabel' => 'modal_business_value',
'modalDeliverLabel' => 'modal_what_we_deliver',
'modalBenefitsLabel' => 'modal_expected_benefits',
'modalDefaultCta' => 'modal_default_cta',
'modalRequestProposal' => 'modal_request_proposal',
'modalStartMessage' => 'modal_start_message',
];
foreach ($modalFieldMap as $varName => $copyKey) {
if ($looksWeakOrEnglish($$varName) && isset($generatedCopy[$copyKey]) && is_string($generatedCopy[$copyKey])) {
$$varName = $generatedCopy[$copyKey];
}
}
}
$og = asset('images/portfolio/doce-ary/branding-packaging-hero-developed-by-criazo-for-doce-ary.webp');
@endphp
@section('title', $pageSeo['title'] ?? $tt('meta_title'))
@section('meta_description', $pageSeo['description'] ?? $tt('meta_description'))
@section('meta_keywords', $pageSeo['keywords'] ?? $tt('meta_keywords'))
@section('robots', 'index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1')
@section('og_image', $og)
@push('head')
@endpush
@push('schema')
@php
$restaurantsWebPageSchema = [
'@context' => 'https://schema.org',
'@type' => 'WebPage',
'@id' => SeoHelper::getCanonicalUrl() . '/#webpage',
'url' => SeoHelper::getCanonicalUrl(),
'name' => $tt('schema_name'),
'description' => $tt('schema_description'),
'isPartOf' => ['@id' => rtrim(config('seo.site_url'), '/') . '/#website'],
'about' => ['@id' => rtrim(config('seo.site_url'), '/') . '/#organization'],
'inLanguage' => SeoHelper::getCurrentLanguageCode(),
'primaryImageOfPage' => [
'@type' => 'ImageObject',
'url' => $og,
],
];
if (!empty($locationDisplayName)) {
$restaurantsWebPageSchema['about'] = [
'@type' => 'Thing',
'name' => $tt('schema_name'),
'areaServed' => [
'@type' => 'City',
'name' => $locationDisplayName,
'containedInPlace' => [
'@type' => 'Country',
'name' => ($locationCountryCode ?? 'PT') === 'PT' ? 'Portugal' : ($locationCountryCode ?? 'PT'),
],
],
];
$restaurantsWebPageSchema['spatialCoverage'] = [
'@type' => 'Place',
'name' => $locationDisplayName,
];
if (!empty($locationGeoPosition)) {
[$lat, $lng] = array_pad(explode(';', $locationGeoPosition), 2, null);
if ($lat !== null && $lng !== null) {
$restaurantsWebPageSchema['spatialCoverage']['geo'] = [
'@type' => 'GeoCoordinates',
'latitude' => (float) $lat,
'longitude' => (float) $lng,
];
}
}
} else {
$restaurantsWebPageSchema['about']['areaServed'] = SeoHelper::getAreaServedForSchema();
}
@endphp
@php
$featureListSchema = [
'@context' => 'https://schema.org',
'@type' => 'ItemList',
'name' => $tt('schema_name') . ' services',
'description' => $tt('schema_description'),
'itemListElement' => [],
];
$schemaFeatureNames = [];
foreach ($storyBlocks as $storyBlock) {
if (!is_array($storyBlock)) {
continue;
}
foreach (($storyBlock['features'] ?? []) as $featureName) {
if (is_string($featureName) && trim($featureName) !== '') {
$schemaFeatureNames[] = trim($featureName);
}
}
}
$schemaFeatureNames = array_values(array_unique($schemaFeatureNames));
foreach ($schemaFeatureNames as $index => $featureName) {
$featureDescription = $featureDescriptions[$featureName] ?? $featureDescriptionFallback;
$featureListSchema['itemListElement'][] = [
'@type' => 'ListItem',
'position' => $index + 1,
'item' => [
'@type' => 'Service',
'name' => $featureName,
'description' => $featureDescription,
],
];
}
@endphp
@if(!empty($featureListSchema['itemListElement']))
@endif
@endpush
@push('styles')
@endpush
@section('content')
@php
$heroVariants = $useGeneratedVerticalCopy ? ($generatedCopy['hero_variants'] ?? []) : __($t . '.hero_variants');
if (!is_array($heroVariants) || empty($heroVariants)) {
$heroVariants = $generatedCopy['hero_variants'] ?? [];
}
if ($forceSeniorGeneratedCopy && isset($generatedCopy['hero_variants']) && is_array($generatedCopy['hero_variants']) && !empty($generatedCopy['hero_variants'])) {
$heroVariants = $generatedCopy['hero_variants'];
}
if ($locale !== 'en' && $arrayLooksWeakOrEnglish($heroVariants) && isset($generatedCopy['hero_variants']) && is_array($generatedCopy['hero_variants'])) {
$heroVariants = $generatedCopy['hero_variants'];
}
$headlineLabel = trim((string) $tt('hero_eyebrow'));
$fallbackHeroVariantsByLocale = [
'en' => [
['title' => 'Build consistent pipeline with a clearer commercial plan', 'body' => 'Capture high-intent demand, remove friction, and increase qualified orders.'],
['title' => 'Turn visibility into real revenue momentum', 'body' => 'Align channels, offer, and messaging so demand converts faster.'],
['title' => 'Increase repeat revenue without constant discounting', 'body' => 'Use CRM and lifecycle follow-up to raise frequency and lifetime value.'],
],
'pt' => [
['title' => 'Construa pipeline consistente com um plano comercial claro', 'body' => 'Capte procura qualificada, reduza fricção e aumente pedidos com margem.'],
['title' => 'Transforme visibilidade em receita real', 'body' => 'Alinhe canais, oferta e mensagem com objetivos comerciais claros.'],
['title' => 'Aumente recorrência sem viver de promoções', 'body' => 'Use CRM e follow-up contínuo para elevar frequência e valor por cliente.'],
],
'br' => [
['title' => 'Construa pipeline consistente com um plano comercial claro', 'body' => 'Capte demanda qualificada, reduza fricção e aumente pedidos com margem.'],
['title' => 'Transforme visibilidade em receita real', 'body' => 'Alinhe canais, oferta e mensagem com objetivos comerciais claros.'],
['title' => 'Aumente recorrência sem viver de promoções', 'body' => 'Use CRM e follow-up contínuo para elevar frequência e valor por cliente.'],
],
'es' => [
['title' => 'Construye pipeline consistente con un plan comercial claro', 'body' => 'Capta demanda cualificada, reduce fricción y aumenta pedidos con margen.'],
['title' => 'Convierte visibilidad en ingresos reales', 'body' => 'Alinea canales, oferta y mensaje con objetivos comerciales concretos.'],
['title' => 'Aumenta recurrencia sin depender de promociones', 'body' => 'Usa CRM y seguimiento continuo para elevar frecuencia y valor por cliente.'],
],
'fr' => [
['title' => 'Construisez un pipeline régulier avec un plan commercial clair', 'body' => 'Captez une demande qualifiée, réduisez la friction et augmentez les ventes avec marge.'],
['title' => 'Transformez la visibilité en revenus concrets', 'body' => 'Alignez canaux, offre et message sur des objectifs business clairs.'],
['title' => 'Développez la récurrence sans dépendre des promotions', 'body' => 'Activez CRM et suivi continu pour augmenter fréquence d’achat et valeur client.'],
],
];
$weakHeroPattern = '/\bmore\b.*\bmore\b.*\bmore\b|\b(demand|orders|customers)\b.*\b(demand|orders|customers)\b|\bvanity metrics\b/i';
$hasWeakHeroVariant = false;
foreach ($heroVariants as $variant) {
if (!is_array($variant)) {
continue;
}
$title = (string) ($variant['title'] ?? '');
if ($title !== '' && preg_match($weakHeroPattern, $title)) {
$hasWeakHeroVariant = true;
break;
}
}
if ($hasWeakHeroVariant) {
$heroVariants = $fallbackHeroVariantsByLocale[$locale] ?? $fallbackHeroVariantsByLocale['en'];
} else {
foreach ($heroVariants as $index => $variant) {
if (!is_array($variant)) {
continue;
}
$title = trim((string) ($variant['title'] ?? ''));
if ($title === '') {
continue;
}
if (preg_match('/^' . preg_quote($headlineLabel, '/') . '\s*[:\-]\s*/iu', $title)) {
$title = preg_replace('/^' . preg_quote($headlineLabel, '/') . '\s*[:\-]\s*/iu', '', $title) ?? $title;
}
if (preg_match('/\b(more|mais|más|plus)\b.*\b(more|mais|más|plus)\b/i', $title)) {
$heroVariants = $fallbackHeroVariantsByLocale[$locale] ?? $fallbackHeroVariantsByLocale['en'];
break;
}
$heroVariants[$index]['title'] = $title;
}
}
$heroVariant = $heroVariants[array_rand($heroVariants)];
$featureCardNavLabels = match ($locale) {
'pt', 'br' => ['prev' => 'Cards de funcionalidades anteriores', 'next' => 'Próximos cards de funcionalidades'],
'es' => ['prev' => 'Tarjetas de funcionalidades anteriores', 'next' => 'Siguientes tarjetas de funcionalidades'],
'fr' => ['prev' => 'Cartes de fonctionnalités précédentes', 'next' => 'Cartes de fonctionnalités suivantes'],
default => ['prev' => 'Previous feature cards', 'next' => 'Next feature cards'],
};
$fallbackProofTitleByLocale = [
'en' => 'Built for measurable pipeline and revenue growth',
'pt' => 'Focado em pipeline e receita mensurável',
'br' => 'Focado em pipeline e receita mensurável',
'es' => 'Enfocado en pipeline e ingresos medibles',
'fr' => 'Pensé pour un pipeline et des revenus mesurables',
];
$proofTitle = $tt('proof_title');
if (preg_match('/vanity metrics|métricas de vaidade|métricas vanidosas|vanity/i', (string) $proofTitle)) {
$proofTitle = $fallbackProofTitleByLocale[$locale] ?? $fallbackProofTitleByLocale['en'];
}
$fallbackFinalTitleByLocale = [
'en' => "Let's map your highest-impact {$headlineLabel} growth priorities",
'pt' => "Vamos mapear as prioridades de maior impacto para {$headlineLabel}",
'br' => "Vamos mapear as prioridades de maior impacto para {$headlineLabel}",
'es' => "Mapeemos las prioridades de mayor impacto para {$headlineLabel}",
'fr' => "Identifions les priorités les plus impactantes pour {$headlineLabel}",
];
$finalTitle = $tt('final_title');
if (preg_match('/lets review|vamos rever|revisemos|passons en revue/i', (string) $finalTitle)) {
$finalTitle = $fallbackFinalTitleByLocale[$locale] ?? $fallbackFinalTitleByLocale['en'];
}
$featureModalDefaults = $useGeneratedVerticalCopy ? ($generatedCopy['feature_modal_default'] ?? []) : __($t . '.feature_modal_default');
$generatedModalDefaults = is_array($generatedCopy['feature_modal_default'] ?? null) ? $generatedCopy['feature_modal_default'] : [];
if (!is_array($featureModalDefaults)) {
$featureModalDefaults = $generatedModalDefaults;
}
if ($locale !== 'en') {
$featureModalDefaults = array_replace_recursive($generatedModalDefaults, $featureModalDefaults);
foreach (['value', 'cta_label'] as $scalarKey) {
if (!isset($featureModalDefaults[$scalarKey]) || $looksWeakOrEnglish((string) $featureModalDefaults[$scalarKey])) {
$featureModalDefaults[$scalarKey] = $generatedModalDefaults[$scalarKey] ?? ($featureModalDefaults[$scalarKey] ?? '');
}
}
foreach (['examples', 'benefits'] as $listKey) {
if (!isset($featureModalDefaults[$listKey]) || !is_array($featureModalDefaults[$listKey]) || $arrayLooksWeakOrEnglish($featureModalDefaults[$listKey])) {
$featureModalDefaults[$listKey] = $generatedModalDefaults[$listKey] ?? ($featureModalDefaults[$listKey] ?? []);
}
}
}
if ($locale !== 'en') {
$generatedModalDefaults = is_array($generatedCopy['feature_modal_default'] ?? null) ? $generatedCopy['feature_modal_default'] : [];
foreach (['value', 'cta_label'] as $modalScalarKey) {
if ((!isset($featureModalDefaults[$modalScalarKey]) || $looksWeakOrEnglish((string) $featureModalDefaults[$modalScalarKey]))
&& isset($generatedModalDefaults[$modalScalarKey]) && is_string($generatedModalDefaults[$modalScalarKey])) {
$featureModalDefaults[$modalScalarKey] = $generatedModalDefaults[$modalScalarKey];
}
}
foreach (['examples', 'benefits'] as $modalListKey) {
$joined = is_array($featureModalDefaults[$modalListKey] ?? null) ? implode(' ', $featureModalDefaults[$modalListKey]) : '';
if ((!isset($featureModalDefaults[$modalListKey]) || !is_array($featureModalDefaults[$modalListKey]) || $looksWeakOrEnglish($joined))
&& isset($generatedModalDefaults[$modalListKey]) && is_array($generatedModalDefaults[$modalListKey])) {
$featureModalDefaults[$modalListKey] = $generatedModalDefaults[$modalListKey];
}
}
}
$baselineSummary = trim((string) ($featureModalDefaults['value'] ?? ''));
if ($baselineSummary === '') {
$baselineSummary = trim(strip_tags($tt('meta_description')));
}
if ($baselineSummary === '') {
$baselineSummary = 'Capability within your connected growth system.';
}
$featureDescriptions = $useGeneratedVerticalCopy ? ($generatedCopy['feature_descriptions'] ?? []) : __($t . '.feature_descriptions');
$generatedFeatureDescriptions = is_array($generatedCopy['feature_descriptions'] ?? null) ? $generatedCopy['feature_descriptions'] : [];
if (!is_array($featureDescriptions)) {
$featureDescriptions = $generatedFeatureDescriptions;
}
if ($locale !== 'en') {
$featureDescriptions = array_replace($generatedFeatureDescriptions, $featureDescriptions);
foreach ($featureDescriptions as $featureName => $description) {
if (!is_string($description) || $looksWeakOrEnglish($description)) {
$featureDescriptions[$featureName] = $generatedFeatureDescriptions[$featureName] ?? $featureDescriptionFallback;
}
}
}
if ($locale !== 'en') {
foreach ($featureDescriptions as $featureName => $description) {
if (!is_string($description) || trim($description) === '') {
continue;
}
if (preg_match('/\b(integrated|designed|built)\b/i', $description)) {
$featureDescriptions[$featureName] = $generatedCopy['feature_descriptions'][$featureName] ?? $featureDescriptionFallback;
}
}
}
if (empty($featureDescriptions)) {
foreach ($storyBlocks as $storyBlock) {
if (!is_array($storyBlock)) {
continue;
}
foreach (($storyBlock['features'] ?? []) as $featureName) {
if (!isset($featureDescriptions[$featureName])) {
$featureDescriptions[$featureName] = $baselineSummary;
}
}
}
}
$usedFeatures = [];
foreach ($storyBlocks as $storyBlock) {
if (!is_array($storyBlock)) {
continue;
}
foreach (($storyBlock['features'] ?? []) as $featureName) {
if (is_string($featureName) && trim($featureName) !== '') {
$usedFeatures[$featureName] = true;
}
}
}
if (!empty($usedFeatures)) {
$featureDescriptions = array_intersect_key($featureDescriptions, $usedFeatures);
}
$featureDetails = $useGeneratedVerticalCopy ? ($generatedCopy['feature_details'] ?? []) : __($t . '.feature_details');
$generatedFeatureDetails = is_array($generatedCopy['feature_details'] ?? null) ? $generatedCopy['feature_details'] : [];
if (!is_array($featureDetails)) {
$featureDetails = $generatedFeatureDetails;
}
if ($locale !== 'en') {
$featureDetails = array_replace($generatedFeatureDetails, $featureDetails);
foreach ($featureDescriptions as $featureName => $description) {
$detail = $featureDetails[$featureName] ?? '';
if (!is_string($detail) || trim($detail) === '' || $looksWeakOrEnglish($detail)) {
$featureDetails[$featureName] = $generatedFeatureDetails[$featureName] ?? $description;
}
}
}
if ($locale === 'en' && empty($featureDetails)) {
$featureDetails = [
'Google Ads' => 'We build and manage search campaigns focused on high-intent terms, budget efficiency, and booking/order actions. You get clear campaign structure, negative keyword control, conversion tracking, and weekly optimization based on real performance.',
'Google Maps Ads' => 'We position your restaurant inside map-based discovery moments with local targeting and profile-driven actions. This increases visibility where customers compare options quickly and are ready to call, route, or visit.',
'Local SEO' => 'We improve local rankings with location-focused SEO structure, content, and on-page optimization. The objective is simple: make your restaurant appear for nearby searches that lead to real visits and orders.',
'Google Business Profile optimization' => 'We optimize your profile to improve trust and conversion: categories, service details, photos, reviews, posting cadence, and action prompts. This helps turn profile views into calls, bookings, and foot traffic.',
'Meta Ads' => 'We create and manage Instagram/Facebook campaigns for demand generation, retargeting, and offer promotion. Creative, audience, and funnel stages are aligned to produce measurable booking and order outcomes.',
'Influencer campaigns' => 'We identify local creators, structure collaboration deliverables, and coordinate publication windows around your goals. The focus is credible social proof and discoverability, not vanity reach.',
'Campaign strategy for launches, events and promotions' => 'We design integrated campaign plans for key moments: new menu launches, seasonal offers, local events, and promo windows. Messaging, channels, and budget are coordinated so execution feels unified and measurable.',
'Restaurant websites' => 'We build high-performance websites designed for restaurant behavior: instant clarity, strong visuals, fast navigation, and clear conversion paths. Every section supports one goal: move visitors into action.',
'Landing pages' => 'We create campaign-specific pages for promotions, events, and paid traffic. Each page has focused copy, controlled user flow, and conversion-oriented structure tailored to one objective.',
'Online ordering systems' => 'We implement direct ordering flows so customers can buy from your brand without unnecessary friction. This helps reduce dependency on third-party channels and improve margin control.',
'Reservation systems' => 'We configure booking experiences that reduce drop-off and simplify table management. The result is faster confirmation flow for customers and cleaner reservation operations for your team.',
'QR code menus' => 'We design QR menu experiences that are easy to scan, fast to read, and clear to navigate in real service conditions. Better structure improves ordering speed and reduces front-of-house friction.',
'Delivery integrations' => 'We connect delivery tools and platform flows into your digital stack, reducing manual handoffs and inconsistency. The goal is operational clarity between marketing demand and fulfillment execution.',
'Conversion-focused UX/UI' => 'We design interfaces around decision clarity and action velocity. Layout, hierarchy, trust signals, and CTA placement are optimized to improve booking and ordering completion rates.',
'Photography' => 'We produce professional food, space, and brand photography built for conversion touchpoints. Visual assets are planned for web, social, listings, and campaigns with consistent quality standards.',
'Videography' => 'We create video assets for ads, social, and brand presentation that communicate atmosphere and product quality quickly. Content is optimized for modern viewing behavior and performance usage.',
'Content creation' => 'We build a practical content system with clear themes, production cadence, and platform-fit execution. This keeps communication active and aligned with business objectives.',
'Social media management' => 'We manage social channels with strategy, calendar, publishing, and performance review. The goal is consistent brand presence that supports awareness and conversion.',
'Branding' => 'We define and refine your brand identity so your restaurant is recognizable and differentiated. This includes tone, visual language, and practical brand systems for real operations.',
'Graphic design' => 'We create design assets across digital and physical touchpoints with one visual standard. This improves consistency and perceived quality at every customer interaction.',
'Menus' => 'We design menus for both aesthetics and decision flow, helping customers choose faster and increasing clarity on offers. Structure and readability are treated as conversion tools.',
'Banners' => 'We produce campaign banners and promotional graphics for in-store and digital contexts. Assets are created to be clear, quick to process, and brand-aligned.',
'Flyers' => 'We design promotional materials for local distribution, events, and activation campaigns with strong visual hierarchy and clear calls to action.',
'Stationery' => 'We align everyday brand materials with your identity system so every detail reinforces trust and professionalism.',
'Loyalty systems' => 'We structure loyalty mechanics that increase repeat behavior using reward logic tied to real customer habits. The goal is frequency and retention growth.',
'Loyalty apps' => 'We implement loyalty app flows that keep your restaurant accessible and top-of-mind between visits. This strengthens repeat engagement and owned customer touchpoints.',
'CRM' => 'We organize customer data and segmentation so communication becomes targeted and useful. CRM setup supports smarter retention campaigns and better lifetime value decisions.',
'Email marketing' => 'We create lifecycle and campaign emails that bring customers back with relevant offers and timing. Performance is tracked through open, click, and conversion metrics.',
'Remarketing campaigns' => 'We re-engage previous visitors and interested audiences with tailored messaging. This recovers missed demand and improves total acquisition efficiency.',
'Retention strategies' => 'We build retention frameworks that combine loyalty, CRM, and remarketing into one repeat-business system. The focus is sustainable growth, not one-off spikes.',
'Mobile apps' => 'We design and build mobile app experiences for ordering, loyalty, and repeat engagement. Apps are structured to support direct customer access and long-term retention.',
'Multi-location systems' => 'We organize digital systems for restaurants operating across multiple locations. This ensures consistency while preserving local relevance in campaigns and operations.',
'Analytics' => 'We implement analytics views that translate data into decisions: visibility, conversion, and retention performance. Reporting is built for clarity, not complexity.',
'Automation' => 'We automate repetitive operational and marketing workflows to improve speed and reduce errors. This helps teams focus on higher-value execution.',
'Optimization' => 'We run ongoing optimization cycles across campaigns, pages, and flows to continuously improve outcomes. Improvements are prioritized by measurable impact.',
'Performance tracking' => 'We track key metrics across discovery, conversion, and retention so growth decisions are based on evidence. You get visibility into what is working and what needs adjustment.',
'Delivery systems' => 'We structure delivery-facing digital flows so order demand and fulfillment are aligned. This reduces operational disconnects and improves customer experience.',
'Operational digital flows' => 'We connect the moving parts behind growth: campaigns, platforms, customer actions, and internal execution. The result is a system that scales more smoothly.',
];
}
$foodIndustryModalOverrides = [];
if ($isFoodIndustryPage) {
$foodIndustryModalOverrides = [
'Google Ads' => [
'detail' => 'We structure search campaigns around cuisine, occasion, neighborhood, and action intent so spend goes toward people ready to book, order, or visit soon.',
'value' => 'Capture demand that already exists and redirect it toward your direct channels instead of letting marketplaces or competitors take the sale.',
'examples' => [
'Keyword groups split by cuisine, occasion, location, and intent',
'Landing-page or menu paths aligned to each campaign theme',
'Bid, schedule, and negative-keyword optimization around profitable time windows',
],
'benefits' => [
'Higher-intent traffic from search',
'Better direct order or booking conversion',
'Lower wasted spend on low-fit clicks',
],
],
'Google Maps Ads' => [
'detail' => 'We improve visibility in map-based decision moments where proximity, reviews, and convenience drive fast choices.',
'value' => 'Win the last-mile decision when customers compare nearby options and choose where to go right now.',
'examples' => [
'Promoted map presence around high-value service areas',
'Call, route, and profile-action optimization',
'Creative and profile improvements that support immediate local choice',
],
'benefits' => [
'More route and call actions',
'Stronger visibility in “near me” moments',
'Higher conversion from local intent to visit',
],
],
'Local SEO' => [
'detail' => 'We build local organic visibility through structure, on-page relevance, location intent, and supporting content that matches how people search for food and beverage options nearby.',
'value' => 'Reduce dependency on paid visibility by earning local rankings that keep bringing qualified traffic over time.',
'examples' => [
'Location and category page optimization',
'Search-intent content tied to neighborhoods, cuisine, and service modes',
'On-page, internal linking, and local relevance improvements',
],
'benefits' => [
'More organic local discovery',
'Stronger long-term visibility',
'Better qualified inbound traffic',
],
],
'Google Business Profile optimization' => [
'detail' => 'We optimize the profile details that influence fast decisions: imagery, categories, offer clarity, review flow, and action prompts.',
'value' => 'Turn profile views into calls, directions, bookings, and orders with a listing that feels active, credible, and easy to act on.',
'examples' => [
'Category, service, and attribute refinement',
'Photo, post, and review-management structure',
'Action-oriented profile copy and conversion hygiene',
],
'benefits' => [
'More profile-driven actions',
'Better trust at first glance',
'Higher conversion from maps and branded search',
],
],
'Meta Ads' => [
'detail' => 'We run paid social campaigns for offers, launches, retargeting, and brand demand using creative matched to how people discover and evaluate food brands visually.',
'value' => 'Create demand before the customer searches, then retarget interest until it converts into a visit, booking, or checkout.',
'examples' => [
'Campaigns split by awareness, offer promotion, and remarketing',
'Creative testing around menu items, atmosphere, and offers',
'Audience structures aligned to local radius and intent signals',
],
'benefits' => [
'More qualified social demand',
'Stronger campaign recall and brand pull',
'Better retargeting performance',
],
],
'Influencer campaigns' => [
'detail' => 'We coordinate creator partnerships around local relevance, content deliverables, and commercial moments so visibility turns into measurable traffic or bookings.',
'value' => 'Use trusted local voices to accelerate awareness and social proof without relying on vanity reach alone.',
'examples' => [
'Creator shortlisting based on audience and geography fit',
'Offer, launch, or visit-based collaboration plans',
'Tracking structure for posts, stories, and campaign timing',
],
'benefits' => [
'Stronger local reach and credibility',
'More social proof around the brand',
'Better awareness for key launches or offers',
],
],
'Campaign strategy for launches, events and promotions' => [
'detail' => 'We plan campaigns around revenue moments like seasonal menus, events, launches, holidays, or low-demand periods so execution is coordinated across channels.',
'value' => 'Make key commercial moments feel intentional and measurable instead of improvised and inconsistent.',
'examples' => [
'Promotion calendar tied to revenue priorities',
'Channel and messaging plan per campaign moment',
'Offer, landing-page, and creative alignment before launch',
],
'benefits' => [
'Better campaign readiness',
'More consistent promo execution',
'Stronger return from launches and events',
],
],
'Websites' => [
'detail' => 'We build fast websites that present the brand clearly, reduce friction, and move visitors toward the next action without confusion.',
'value' => 'Make your website a working revenue channel instead of a brochure that leaks demand.',
'examples' => [
'Homepage, menu, location, and conversion architecture',
'Mobile-first UX designed for fast decisions',
'Clear paths into booking, ordering, inquiry, or visit intent',
],
'benefits' => [
'Higher website conversion rates',
'Better first impression and trust',
'Less drop-off before the next action',
],
],
'Restaurant websites' => [
'detail' => 'We design restaurant websites around the real decisions customers make: where to eat, what to order, whether to book, and whether to trust the experience.',
'value' => 'Support more bookings and direct orders with a site built around restaurant behavior, not generic templates.',
'examples' => [
'Clear menu, booking, and order-entry architecture',
'Mobile-first layouts for fast restaurant decisions',
'Trust, atmosphere, and CTA structure aligned to conversion',
],
'benefits' => [
'More direct bookings and orders',
'Better conversion from first visit',
'Stronger perceived quality online',
],
],
'Coffee shop websites' => [
'detail' => 'We build coffee-shop websites that prioritize fast intent: menu browse, location clarity, pickup flow, and repeat-visit convenience.',
'value' => 'Turn daily local traffic into visits and orders with a site built for speed, clarity, and habit.',
'examples' => [
'Fast menu and location architecture',
'Pickup, order, and offer paths for mobile users',
'Pages that support recurring local demand, not just discovery',
],
'benefits' => [
'More direct daily orders',
'Higher conversion from local search traffic',
'Stronger repeat visit behavior',
],
],
'Landing pages' => [
'detail' => 'We create focused pages for a single campaign objective, whether that is an event, launch, offer, menu collection, booking push, or neighborhood campaign.',
'value' => 'Give paid traffic or promotional campaigns a dedicated destination built to convert, not distract.',
'examples' => [
'Offer-specific page structure and messaging',
'Clear CTA hierarchy for one commercial outcome',
'Fast-launch templates for campaigns and promotions',
],
'benefits' => [
'Higher campaign conversion rates',
'Better message-match from ad to page',
'Faster testing and iteration',
],
],
'Online ordering systems' => [
'detail' => 'We design or improve direct ordering flows so customers can move from craving to checkout with fewer steps and less confusion.',
'value' => 'Increase direct-order share and protect margin by making your own checkout easier to use than third-party alternatives.',
'examples' => [
'Shorter ordering journey with clearer categories and modifiers',
'Mobile checkout improvements for speed and completion',
'Offer-ready paths connected to campaigns and high-margin items',
],
'benefits' => [
'Higher checkout completion',
'More direct orders',
'Better margin control',
],
],
'Reservation systems' => [
'detail' => 'We optimize booking journeys so customers can reserve quickly while your team gets cleaner scheduling and fewer lost tables.',
'value' => 'Convert interest into confirmed reservations with less drop-off and a smoother booking experience.',
'examples' => [
'Reservation flow setup and friction reduction',
'Capacity-aware booking logic and CTA placement',
'Reminder and confirmation improvements tied to conversion',
],
'benefits' => [
'More confirmed bookings',
'Less booking friction',
'Better use of available capacity',
],
],
'QR code menus' => [
'detail' => 'We structure QR menus for clarity in real service conditions so customers can decide faster and staff spend less time resolving confusion.',
'value' => 'Use the menu as a conversion tool that speeds decisions, supports upsell, and improves in-venue flow.',
'examples' => [
'Readable category and item hierarchy for mobile',
'Visual and copy structure that supports faster choice',
'Menu flow aligned to ordering behavior and service context',
],
'benefits' => [
'Faster table-side decisions',
'Better menu clarity and upsell support',
'Less front-of-house friction',
],
],
'Delivery integrations' => [
'detail' => 'We connect delivery-related platforms and workflows so demand generation, ordering, and fulfilment work as one operational system.',
'value' => 'Reduce inconsistencies between marketing, ordering, and fulfilment so delivery demand is easier to scale.',
'examples' => [
'Integration of delivery tools into the digital stack',
'Consistent offer and menu logic across channels',
'Operational handoff improvements between acquisition and fulfilment',
],
'benefits' => [
'Cleaner delivery operations',
'Better alignment across channels',
'More scalable order fulfilment',
],
],
'Conversion-focused UX/UI' => [
'detail' => 'We improve layouts, hierarchy, trust cues, and action paths so the user experience helps customers complete the next step instead of hesitating.',
'value' => 'Increase conversion from the traffic you already have by removing friction in the key journey.',
'examples' => [
'CTA, layout, and hierarchy refinements by intent',
'Mobile UX improvements for faster action',
'Interface decisions tested against drop-off and completion behavior',
],
'benefits' => [
'Higher completion rates',
'Less abandonment in key journeys',
'Stronger conversion efficiency',
],
],
'Photography' => [
'detail' => 'We produce food, space, and brand photography planned for the channels that drive decisions: website, social, listings, ads, and menus.',
'value' => 'Raise perceived quality and desirability with imagery built for conversion, not just aesthetics.',
'examples' => [
'Hero and menu-product photography planning',
'Channel-specific shots for ads, social, and listings',
'Consistent visual direction across digital touchpoints',
],
'benefits' => [
'Stronger first impression',
'Higher campaign and listing performance',
'Better brand consistency',
],
],
'Videography' => [
'detail' => 'We create short-form and campaign-ready video content that communicates atmosphere, craft, and product quality quickly.',
'value' => 'Use motion to increase attention, recall, and conversion in channels where static content is no longer enough.',
'examples' => [
'Short-form content for paid social and organic channels',
'Atmosphere and product storytelling sequences',
'Video assets adapted to campaign placements and goals',
],
'benefits' => [
'Higher engagement and recall',
'Better performance in paid social',
'Stronger premium perception',
],
],
'Content creation' => [
'detail' => 'We build a repeatable content system around your products, promotions, seasons, and brand voice so communication stays active and useful.',
'value' => 'Keep the brand present in the market with content tied to business priorities instead of random posting.',
'examples' => [
'Content themes mapped to offers, launches, and seasons',
'Production cadence and asset planning',
'Platform-fit content for social, listings, and website use',
],
'benefits' => [
'More consistent communication',
'Better alignment between content and offers',
'Stronger ongoing demand support',
],
],
'Social media management' => [
'detail' => 'We manage publishing, positioning, and performance review so social channels stay active, coherent, and commercially useful.',
'value' => 'Turn social media into a demand and trust channel instead of a sporadic brand chore.',
'examples' => [
'Content calendar and publishing workflow',
'Channel tone, positioning, and consistency management',
'Performance review tied to offers and business moments',
],
'benefits' => [
'More consistent brand presence',
'Better audience engagement quality',
'Stronger support for launches and promotions',
],
],
'Branding' => [
'detail' => 'We define or refine the identity system that makes the brand recognizable across menu, packaging, signage, website, and campaigns.',
'value' => 'Increase differentiation so customers remember, trust, and choose your brand faster.',
'examples' => [
'Brand positioning and identity development',
'Visual language adapted to digital and physical touchpoints',
'Guidelines that support consistency as the brand grows',
],
'benefits' => [
'Stronger recognition and recall',
'Higher perceived value',
'More consistent execution across channels',
],
],
'Graphic design' => [
'detail' => 'We create visual assets for offers, packaging, campaigns, menus, and social so every customer-facing detail feels aligned.',
'value' => 'Improve consistency and clarity across all brand materials, online and offline.',
'examples' => [
'Campaign and offer assets for digital channels',
'Design support for menus, signage, and print',
'Visual systems that keep execution coherent across formats',
],
'benefits' => [
'Better brand consistency',
'Clearer campaign communication',
'Higher perceived professionalism',
],
],
'Menus' => [
'detail' => 'We design menus around decision flow, readability, appetite appeal, and strategic emphasis on the items you most want to sell.',
'value' => 'Use menu design to support faster choice, clearer communication, and better revenue per guest.',
'examples' => [
'Digital and print menu hierarchy planning',
'Layout and copy structure for easier scanning',
'Strategic emphasis on signature and high-margin items',
],
'benefits' => [
'Faster customer decisions',
'Stronger upsell support',
'Better clarity at the point of choice',
],
],
'Banners' => [
'detail' => 'We create promotional banner systems for in-store, online, and campaign use so offers are easy to understand quickly.',
'value' => 'Make promotions feel visible, timely, and consistent wherever customers encounter them.',
'examples' => [
'Promo banners for web, ads, and in-store use',
'Visual hierarchy built for rapid comprehension',
'Assets aligned to the wider campaign system',
],
'benefits' => [
'Clearer offer communication',
'More consistent campaign execution',
'Better visual impact at key moments',
],
],
'Flyers' => [
'detail' => 'We design print collateral for local outreach, events, launches, and nearby activations with clear messaging and actionable offers.',
'value' => 'Support neighborhood demand generation with print assets that are easy to notice and easy to act on.',
'examples' => [
'Local campaign flyer concepts and layout',
'Offer and CTA structure for offline distribution',
'Visual design aligned to the wider brand system',
],
'benefits' => [
'Better local campaign support',
'Clearer offline promotion',
'Stronger neighborhood visibility',
],
],
'Stationery' => [
'detail' => 'We align small-format brand materials so even operational touchpoints reinforce quality and consistency.',
'value' => 'Strengthen trust by making everyday brand details feel intentional instead of improvised.',
'examples' => [
'Branded small-format materials and templates',
'Consistency rules for routine customer touchpoints',
'Design alignment with core brand identity',
],
'benefits' => [
'More premium brand perception',
'Greater consistency across touchpoints',
'Better operational presentation',
],
],
'Loyalty systems' => [
'detail' => 'We structure repeat-purchase mechanics around the habits that matter most: visit frequency, order value, or reactivation after drop-off.',
'value' => 'Increase repeat revenue with a loyalty model customers understand and your team can actually operate.',
'examples' => [
'Reward logic tied to real visit or order behavior',
'Offer structure designed to protect margin',
'Retention flows connected to customer frequency',
],
'benefits' => [
'More repeat purchases or visits',
'Higher customer lifetime value',
'Stronger retention consistency',
],
],
'Loyalty apps' => [
'detail' => 'We plan mobile loyalty experiences that keep your brand visible between visits and make it easier to trigger repeat actions.',
'value' => 'Create a more direct retention channel that lives closer to the customer than email alone.',
'examples' => [
'Reward visibility and repeat-visit journeys',
'Offer and push logic tied to buying behavior',
'App experience planning around convenience and retention',
],
'benefits' => [
'More repeat engagement',
'Better owned-channel retention',
'Higher brand presence between visits',
],
],
'CRM' => [
'detail' => 'We organize customer data, segments, and triggers so follow-up becomes more relevant, timely, and useful.',
'value' => 'Move from generic outreach to retention decisions based on actual customer behavior.',
'examples' => [
'Segmentation by frequency, spend, channel, or behavior',
'Lifecycle triggers for repeat, win-back, and upsell',
'CRM logic connected to campaigns and retention actions',
],
'benefits' => [
'Smarter customer targeting',
'Better repeat campaign performance',
'Clearer customer value visibility',
],
],
'Email marketing' => [
'detail' => 'We build lifecycle and campaign emails for launches, reminders, win-backs, and repeat purchase opportunities.',
'value' => 'Bring customers back with lower-cost communication tied to timing and offer relevance.',
'examples' => [
'Email flows for repeat purchase and reactivation',
'Campaign emails tied to launches and seasonal moments',
'Segmentation and measurement setup for retention impact',
],
'benefits' => [
'More repeat visits and orders',
'Better retention ROI',
'Improved reactivation of inactive customers',
],
],
'Remarketing campaigns' => [
'detail' => 'We re-engage visitors and customers who showed intent but did not complete the next step using tailored messaging and timing.',
'value' => 'Recover demand you already paid to generate before it disappears.',
'examples' => [
'Audience pools built from site, order, and profile behavior',
'Creative and offers matched to prior intent',
'Campaign logic for browse, cart, or booking abandonment',
],
'benefits' => [
'Higher conversion from existing traffic',
'Better overall acquisition efficiency',
'More recovered bookings or orders',
],
],
'Retention strategies' => [
'detail' => 'We connect loyalty, CRM, email, and remarketing into one retention system so repeat revenue is built deliberately instead of inconsistently.',
'value' => 'Create a repeat-business engine that compounds beyond one-off campaigns.',
'examples' => [
'Retention model by customer behavior and visit rhythm',
'Channel roles across loyalty, CRM, and paid remarketing',
'Prioritised roadmap for repeat revenue improvements',
],
'benefits' => [
'More predictable repeat revenue',
'Higher lifetime value',
'Less dependence on constant acquisition',
],
],
'Mobile apps' => [
'detail' => 'We design app experiences around ordering, rewards, convenience, and direct access so repeat customers have a faster path back to the brand.',
'value' => 'Strengthen owned-channel retention and repeat usage with a more direct customer touchpoint.',
'examples' => [
'Ordering and loyalty journeys designed for repeat use',
'Feature planning around convenience and retention',
'App UX aligned to direct revenue and customer habit',
],
'benefits' => [
'More repeat engagement',
'Stronger direct-channel ownership',
'Higher retention convenience',
],
],
'Multi-location systems' => [
'detail' => 'We create structures for brands operating across multiple units so local relevance and central consistency can coexist.',
'value' => 'Scale faster without breaking brand consistency, offer clarity, or reporting visibility.',
'examples' => [
'Location-aware page and system structure',
'Brand and campaign standards across units',
'Centralized visibility into local performance',
],
'benefits' => [
'More consistent multi-unit execution',
'Better local relevance at scale',
'Clearer operational control',
],
],
'Analytics' => [
'detail' => 'We build reporting that shows what is driving bookings, orders, visits, and repeat behavior so decisions can be prioritized quickly.',
'value' => 'See which channels and journeys move revenue, not just clicks and impressions.',
'examples' => [
'Dashboards for demand, conversion, and retention KPIs',
'Channel-level visibility for bookings and orders',
'Decision-ready reporting cadence for optimization',
],
'benefits' => [
'Clearer commercial visibility',
'Faster prioritization of improvements',
'More accountable performance management',
],
],
'Automation' => [
'detail' => 'We automate repetitive marketing and operational tasks so the team spends less time on manual follow-up and more time on execution.',
'value' => 'Reduce avoidable operational drag while keeping key customer actions moving consistently.',
'examples' => [
'Workflow triggers for leads, bookings, or retention actions',
'Automated handoffs between tools and teams',
'Repeatable operational logic for routine tasks',
],
'benefits' => [
'Less manual workload',
'Faster operational response',
'More consistent execution',
],
],
'Optimization' => [
'detail' => 'We run ongoing improvement cycles across campaigns, pages, and customer flows to keep performance moving instead of plateauing.',
'value' => 'Turn the existing system into a compounding asset through prioritised iteration.',
'examples' => [
'Weekly or recurring performance review cycles',
'Prioritised tests across pages, ads, and journeys',
'Execution roadmap based on measurable impact',
],
'benefits' => [
'Continuous performance improvement',
'Better return from current channels',
'Stronger discipline in growth decisions',
],
],
'Performance tracking' => [
'detail' => 'We track the KPIs that matter across discovery, conversion, and retention so you can see whether growth is actually improving.',
'value' => 'Replace guesswork with a clearer view of what is creating revenue and what is leaking it.',
'examples' => [
'KPI framework across channel and funnel stages',
'Tracking for bookings, orders, repeat behavior, and ROI',
'Review structure for trend analysis and action setting',
],
'benefits' => [
'Better visibility into growth health',
'More confident decision-making',
'Earlier identification of performance issues',
],
],
'Delivery systems' => [
'detail' => 'We structure the digital and operational pieces behind delivery so acquisition, order handling, and fulfilment stay aligned as volume grows.',
'value' => 'Support delivery growth without creating unnecessary operational chaos or channel disconnects.',
'examples' => [
'Delivery-channel logic connected to campaigns and menus',
'Workflow alignment between checkout and fulfilment',
'Operational clarity across tools, offers, and service areas',
],
'benefits' => [
'More reliable delivery operations',
'Better coordination across teams and tools',
'Stronger customer experience at scale',
],
],
'Operational digital flows' => [
'detail' => 'We connect front-end demand systems to back-end execution so the business can scale with fewer gaps between marketing and operations.',
'value' => 'Build a clearer operating system behind growth, not just isolated marketing activity.',
'examples' => [
'Process mapping across customer actions and internal execution',
'Tool and workflow alignment between teams',
'Digital flow design for smoother handoffs and fewer blind spots',
],
'benefits' => [
'Less fragmentation across operations',
'Smoother internal execution',
'Better scalability as demand grows',
],
],
];
}
$containsAnyFeatureTerm = static function (string $haystack, array $needles): bool {
foreach ($needles as $needle) {
if (str_contains($haystack, $needle)) {
return true;
}
}
return false;
};
$genericFeatureModalOverride = static function (string $feature, string $summary, string $detail) use ($containsAnyFeatureTerm): array {
$featureLc = mb_strtolower($feature);
$summarySource = trim($summary) !== '' ? trim($summary) : $feature;
$detailSource = trim($detail) !== '' ? trim($detail) : $summarySource;
if ($containsAnyFeatureTerm($featureLc, ['google ads', 'meta ads', 'maps ads', 'google shopping', 'influencer', 'campaign strategy'])) {
return [
'value' => 'Turn demand capture into a measurable acquisition channel tied to qualified traffic, leads, bookings, or sales.',
'examples' => [
'Campaign structure aligned to intent, offer, audience, or location',
'Creative and landing-path decisions matched to the buying journey',
'Ongoing budget, targeting, and performance optimization',
],
'benefits' => [
'Higher-quality inbound demand',
'Better conversion from paid traffic',
'Clearer visibility into acquisition efficiency',
],
];
}
if ($containsAnyFeatureTerm($featureLc, ['seo', 'business profile', 'search console'])) {
return [
'value' => 'Strengthen discoverability in organic and local search so qualified intent keeps reaching the business over time.',
'examples' => [
'Search-intent, on-page, and local relevance improvements',
'Technical and content priorities based on ranking opportunities',
'Ongoing visibility monitoring and refinement',
],
'benefits' => [
'More qualified organic discovery',
'Stronger long-term visibility',
'Less dependence on paid traffic alone',
],
];
}
if ($containsAnyFeatureTerm($featureLc, ['website', 'websites', 'ecommerce', 'store', 'landing page', 'landing pages', 'page planning', 'navigation strategy', 'content hierarchy', 'conversion-focused sections', 'wireframes', 'responsive design', 'design systems', 'custom website development', 'cms implementation', 'campaign landing system', 'multi-location pages'])) {
return [
'value' => 'Make the digital experience support conversion directly, with clearer paths from visit to inquiry, booking, checkout, or action.',
'examples' => [
'Page structure and UX aligned to the main business objective',
'Content, layout, and CTA hierarchy built around user decisions',
'Implementation that supports scalability, speed, and maintainability',
],
'benefits' => [
'Higher conversion from existing traffic',
'Better user clarity and trust',
'Stronger website contribution to revenue or pipeline',
],
];
}
if ($containsAnyFeatureTerm($featureLc, ['ux/ui', 'ux improvements', 'form optimization', 'a/b', 'heatmap', 'conversion tracking'])) {
return [
'value' => 'Reduce friction in the decision journey so more users complete the next step without hesitation.',
'examples' => [
'Interface and flow improvements based on user behavior',
'Testing or tracking tied to key conversion actions',
'Prioritized changes focused on completion-rate gains',
],
'benefits' => [
'Higher completion rates',
'Lower drop-off in key journeys',
'More efficient conversion from existing demand',
],
];
}
if ($containsAnyFeatureTerm($featureLc, ['ordering', 'reservation', 'booking', 'qr code', 'delivery', 'checkout'])) {
return [
'value' => 'Make the action flow faster and more reliable so demand becomes confirmed revenue with less friction.',
'examples' => [
'Action flow design focused on speed, clarity, and completion',
'Operational and UX improvements around the core transaction',
'Supporting structure for reminders, confirmations, or fulfilment',
],
'benefits' => [
'Higher completion of the core action',
'Less operational friction',
'Better conversion from intent to revenue',
],
];
}
if ($containsAnyFeatureTerm($featureLc, ['photography', 'videography', 'content creation', 'social media', 'branding', 'graphic design', 'menus', 'banners', 'flyers', 'stationery', 'messaging architecture', 'content refinements'])) {
return [
'value' => 'Improve how the brand is perceived and understood so customers trust, remember, and choose it more easily.',
'examples' => [
'Creative assets or messaging built for real decision points',
'Consistent brand execution across digital and physical touchpoints',
'Production or refinement aligned to campaign and conversion needs',
],
'benefits' => [
'Stronger perceived value and clarity',
'Better consistency across touchpoints',
'More effective support for acquisition and conversion',
],
];
}
if ($containsAnyFeatureTerm($featureLc, ['loyalty', 'crm', 'email', 'remarketing', 'retention', 'lead routing', 'crm integrations', 'marketing automation'])) {
return [
'value' => 'Build stronger follow-up and repeat-business mechanics so more acquired customers turn into retained revenue.',
'examples' => [
'Segmentation, follow-up, or reward logic tied to customer behavior',
'Retention workflows connected to lifecycle stages and intent',
'Execution structure that supports reactivation, repeat purchase, or nurture',
],
'benefits' => [
'Higher customer retention or lead progression',
'Better lifetime value from existing demand',
'More consistent follow-up execution',
],
];
}
if ($containsAnyFeatureTerm($featureLc, ['analytics', 'reporting', 'performance tracking', 'analytics setup'])) {
return [
'value' => 'Turn performance data into a decision system so growth priorities are based on evidence instead of guesswork.',
'examples' => [
'Tracking and dashboard structure tied to key business outcomes',
'Visibility across channel, funnel, or lifecycle performance',
'Review process that supports faster prioritization',
],
'benefits' => [
'Clearer view of what is working',
'Faster and better prioritization',
'More accountable optimization decisions',
],
];
}
if ($containsAnyFeatureTerm($featureLc, ['automation', 'integrations', 'operational digital flows', 'delivery systems', 'multi-location systems'])) {
return [
'value' => 'Connect workflows and systems so execution scales with less manual friction and fewer operational gaps.',
'examples' => [
'Workflow design across tools, teams, and customer actions',
'Integration logic that reduces repeated manual work',
'Operational structure built for consistency as complexity grows',
],
'benefits' => [
'More efficient execution',
'Less fragmentation across systems',
'Stronger scalability and operational control',
],
];
}
if ($containsAnyFeatureTerm($featureLc, ['offer and conversion mapping', 'seo intent mapping', 'technical seo setup', 'performance optimization'])) {
return [
'value' => 'Align the underlying growth structure so traffic, pages, and offers work together more efficiently.',
'examples' => [
'Strategic setup tied to search, funnel, or conversion intent',
'Implementation priorities based on measurable leverage',
'Refinement of technical or structural gaps affecting performance',
],
'benefits' => [
'Better alignment between strategy and execution',
'Higher efficiency from existing assets',
'Clearer next-step priorities for growth',
],
];
}
return [
'value' => 'Make ' . $summarySource . ' contribute more clearly to measurable growth instead of functioning as an isolated task.',
'examples' => [
'Implementation scope defined around ' . $feature,
'Execution tied to the most relevant conversion or workflow stage',
'Measurement and refinement after rollout based on outcomes',
],
'benefits' => [
'Clearer business contribution from ' . $feature,
'Better efficiency in the related customer journey',
'More confidence in next-step decisions',
],
];
};
if (!empty($usedFeatures)) {
$featureDetails = array_intersect_key($featureDetails, $usedFeatures);
}
$featureExamplesOverrides = $useGeneratedVerticalCopy ? ($generatedCopy['feature_examples'] ?? []) : __($t . '.feature_examples');
$generatedFeatureExamples = is_array($generatedCopy['feature_examples'] ?? null) ? $generatedCopy['feature_examples'] : [];
if (!is_array($featureExamplesOverrides)) {
$featureExamplesOverrides = $generatedFeatureExamples;
}
if ($locale !== 'en') {
$featureExamplesOverrides = array_replace($generatedFeatureExamples, $featureExamplesOverrides);
}
$generatedFeatureModalOverrides = is_array($generatedCopy['feature_modal_overrides'] ?? null) ? $generatedCopy['feature_modal_overrides'] : [];
$featureModalData = [];
foreach ($featureDescriptions as $feature => $summary) {
$detail = $featureDetails[$feature] ?? $summary;
if ($locale !== 'en' && $looksWeakOrEnglish($detail)) {
$detail = $summary;
}
$modalOverride = array_replace(
$genericFeatureModalOverride($feature, $summary, $detail),
$generatedFeatureModalOverrides[$feature] ?? [],
$foodIndustryModalOverrides[$feature] ?? []
);
if (is_array($modalOverride)) {
if (!isset($featureDetails[$feature]) || trim((string) ($featureDetails[$feature] ?? '')) === '' || $detail === $summary) {
$detail = $modalOverride['detail'] ?? $detail;
}
}
$featureModalData[$feature] = [
'summary' => $summary,
'detail' => $detail,
'value' => $modalOverride['value'] ?? ($featureModalDefaults['value'] ?? ($generatedCopy['feature_modal_default']['value'] ?? $baselineSummary)),
'examples' => $modalOverride['examples'] ?? ($featureModalDefaults['examples'] ?? ($generatedCopy['feature_modal_default']['examples'] ?? [])),
'benefits' => $modalOverride['benefits'] ?? ($featureModalDefaults['benefits'] ?? ($generatedCopy['feature_modal_default']['benefits'] ?? [])),
'ctaLabel' => $featureModalDefaults['cta_label'] ?? ($generatedCopy['feature_modal_default']['cta_label'] ?? $modalDefaultCta),
];
}
foreach ($featureExamplesOverrides as $featureName => $examples) {
if (isset($featureModalData[$featureName]) && is_array($examples) && !empty($examples)) {
$featureModalData[$featureName]['examples'] = $examples;
}
}
$featureFaqs = [];
foreach ($featureModalData as $featureName => $featureData) {
$answerParts = [];
if (!empty($featureData['summary'])) {
$answerParts[] = $featureData['summary'];
}
if (!empty($featureData['detail']) && $featureData['detail'] !== ($featureData['summary'] ?? null)) {
$answerParts[] = $featureData['detail'];
}
if (!empty($featureData['benefits']) && is_array($featureData['benefits'])) {
$answerParts[] = $modalBenefitsLabel . ': ' . implode(', ', array_slice($featureData['benefits'], 0, 3));
}
$featureFaqs[] = [
'question' => $featureName . ': ' . $modalServiceDetailLabel,
'answer' => trim(implode(' ', array_filter($answerParts))),
];
}
$featureFaqs = array_slice($featureFaqs, 0, 12);
$featureModalDataJson = json_encode($featureModalData, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
$iconSet = [
'googleAds' => '',
'googleMaps' => '',
'meta' => '',
'instagram' => '',
'seo' => '',
'camera' => '',
'video' => '',
'palette' => '',
'loyalty' => '',
'crm' => '',
'mail' => '',
'analytics' => '',
'automation' => '',
'app' => '',
'delivery' => '',
'menu' => '',
'web' => '',
'reservation' => '',
'megaphone' => '',
'default' => '',
];
$featureIcon = static function (string $feature) use ($iconSet): string {
$f = mb_strtolower($feature);
if (str_contains($f, 'local seo')) return $iconSet['googleMaps'];
if (str_contains($f, 'google ads')) return $iconSet['googleAds'];
if (str_contains($f, 'maps')) return $iconSet['googleMaps'];
if (str_contains($f, 'meta')) return $iconSet['meta'];
if (str_contains($f, 'instagram')) return $iconSet['instagram'];
if (str_contains($f, 'seo') || str_contains($f, 'business profile')) return $iconSet['seo'];
if (str_contains($f, 'photo')) return $iconSet['camera'];
if (str_contains($f, 'video')) return $iconSet['video'];
if (str_contains($f, 'brand') || str_contains($f, 'design') || str_contains($f, 'content')) return $iconSet['palette'];
if (str_contains($f, 'loyalty')) return $iconSet['loyalty'];
if (str_contains($f, 'crm')) return $iconSet['crm'];
if (str_contains($f, 'email')) return $iconSet['mail'];
if (str_contains($f, 'analytics') || str_contains($f, 'tracking') || str_contains($f, 'performance')) return $iconSet['analytics'];
if (str_contains($f, 'automation') || str_contains($f, 'optimization')) return $iconSet['automation'];
if (str_contains($f, 'app')) return $iconSet['app'];
if (str_contains($f, 'delivery')) return $iconSet['delivery'];
if (str_contains($f, 'qr') || str_contains($f, 'menu')) return $iconSet['menu'];
if (str_contains($f, 'website') || str_contains($f, 'landing') || str_contains($f, 'ux/ui')) return $iconSet['web'];
if (str_contains($f, 'reservation') || str_contains($f, 'booking')) return $iconSet['reservation'];
if (str_contains($f, 'campaign') || str_contains($f, 'influencer') || str_contains($f, 'remarketing')) return $iconSet['megaphone'];
return $iconSet['default'];
};
@endphp
{{-- Hero --}}
{{ $block['eyebrow'] ?? '' }} {{ $block['body'] ?? '' }}
{{ $tt('ecosystem_lead') }}
{{ $card['desc'] }} {{ $tt('proof_lead') }} {{ $projectCategory }} {{ $projectSubtitle }} {{ $faq['answer'] }}{{ $block['headline'] ?? '' }}
{{ $tt('ecosystem_title') }}
{{ $card['title'] }}
{{ $proofTitle }}
@endif
{{ $projectTitle }}
@if($projectSubtitle)
{{ __('messages.homepage.faq_title_1') }}
{{ $faq['question'] }}