Initial commit: site + GA4 + Docker for Coolify
This commit is contained in:
@@ -0,0 +1,152 @@
|
||||
import { icon, eyebrow, btn, textLink, paras, faq } from '../layout.mjs';
|
||||
|
||||
const covers = [
|
||||
['search', 'Search & AI Visibility', ['SEO strategy', 'AI search visibility, including LLMO, GEO, and AEO', 'Schema and entity strategy', 'Local and multi-location visibility']],
|
||||
['route', 'Acquisition & Conversion', ['Paid media', 'Social media management', 'Funnel strategy', 'Conversion opportunities']],
|
||||
['chart', 'Measurement & Marketing Operations', ['Analytics setup', 'Channel and attribution review', 'Marketing team evaluation', 'Agency and vendor evaluation']],
|
||||
];
|
||||
|
||||
const who = [
|
||||
['gauge', 'You’re Spending, but the ROI Is Blurry.', ['Budget is moving across channels, but nobody can clearly connect enough of that activity to revenue.', 'Before spending more, we figure out what the current spend is actually doing.']],
|
||||
['search', 'Organic Growth Has Stopped Behaving Like It Used To.', ['Rankings may still matter, but traditional SEO now shares the discovery journey with AI Overviews, answer engines, LLMs, local results, and other surfaces.', 'If the strategy hasn’t changed, the market already has.']],
|
||||
['rocket', 'Paid Media Works Until You Try to Scale It.', ['A channel can perform well and still have a ceiling.', 'When acquisition starts getting more expensive, we look beyond simply increasing the budget and examine the offer, funnel, search presence, channel mix, and what happens after the click.']],
|
||||
];
|
||||
|
||||
const steps = [
|
||||
['Diagnose', ['We audit analytics, search visibility, paid accounts, funnels, current marketing activity, and the teams or vendors responsible for it.', 'We find the leaks before prescribing the fix.']],
|
||||
['Prioritise', ['You get a clear roadmap showing what deserves attention now, what can wait, and where the strongest opportunities sit.', 'Not twenty priorities.', 'The ones that matter.']],
|
||||
['Execute', ['When execution makes sense, we move into a focused 90-day sprint with specialist support from the same operating ecosystem behind my current ventures.', 'Your existing team can stay involved. So can your existing vendors if they’re doing good work.']],
|
||||
];
|
||||
|
||||
const faqs = [
|
||||
['What is AI search visibility, LLMO, GEO, and AEO?', ['These terms describe different approaches to improving how a business, brand, or content appears across AI-generated answers and modern search experiences.', 'The terminology is still evolving. What matters is making your business understandable, credible, and discoverable across the systems people increasingly use to find answers.']],
|
||||
['Do you execute or advise?', ['Both.', 'Some businesses need a roadmap their existing team can execute. Others need hands-on implementation through a 90-day sprint or ongoing support.', 'The diagnostic determines the right approach.']],
|
||||
['Do you work with existing marketing teams?', ['Yes.', 'I’m not interested in replacing a capable team simply to create more work for mine.', 'If your internal team or existing agency is strong, we can design the strategy around making them more effective.']],
|
||||
['What budget size is needed?', ['There isn’t one universal marketing budget that makes an engagement worthwhile.', 'The more important question is whether there is enough opportunity, complexity, or existing spend for the diagnostic to uncover meaningful improvements.']],
|
||||
];
|
||||
|
||||
const surfaces = ['a search result', 'an AI answer', 'an ad', 'a social platform', 'a local listing'];
|
||||
|
||||
export default {
|
||||
path: '/consulting/marketing/',
|
||||
title: 'Marketing Consulting for Founders | Dylan Mazzei',
|
||||
description: 'Marketing consulting for founders covering SEO, AI search, paid media, funnels, analytics, and digital visibility, starting with a diagnostic.',
|
||||
schema: [
|
||||
{ '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: faqs.map(([q, a]) => ({ '@type': 'Question', name: q, acceptedAnswer: { '@type': 'Answer', text: a.join(' ') } })) },
|
||||
],
|
||||
body: `
|
||||
<section class="page-hero" aria-labelledby="m-hero">
|
||||
<div class="wrap page-hero-grid">
|
||||
<div class="stack anim">
|
||||
<nav class="crumbs" aria-label="Breadcrumb"><a href="/consulting/">Consulting</a>${icon('chev')}<span>Marketing</span></nav>
|
||||
${eyebrow('MARKETING CONSULTING')}
|
||||
<h1 id="m-hero" class="h-display-lg">Marketing Consulting for a Search World That Won’t Sit Still.</h1>
|
||||
<p class="lead">Search changed. Discovery changed. The customer journey changed with it.</p>
|
||||
<div class="prose">
|
||||
<p>I run marketing businesses, so I’m not watching those changes from the sidelines. My teams work inside SEO, AI search, paid media, content, and conversion every day.</p>
|
||||
<p class="body-ink">The goal isn’t to add another marketing tactic.</p>
|
||||
<p>It’s to figure out what is actually earning attention, what is wasting money, and where your next customer is increasingly likely to find you.</p>
|
||||
</div>
|
||||
<div class="btn-row">${btn('BOOK YOUR DIAGNOSTIC', '/contact/')}</div>
|
||||
</div>
|
||||
<div class="panel anim" aria-hidden="true">
|
||||
<div class="panel-bar"><span class="lights"><i></i><i></i><i></i></span><strong>Visibility Is Bigger Than Google Rankings Now.</strong></div>
|
||||
<div style="padding:20px;display:grid;gap:10px">
|
||||
${surfaces.map((s, i) => `<div class="row" style="border:1px solid var(--mist);border-radius:12px;padding:12px 14px"><span class="ico">${icon(['search', 'spark', 'target', 'users', 'pin'][i])}</span><span class="name">${s}</span><span class="status"><span class="dot"></span></span></div>`).join('')}
|
||||
<div class="row" style="border-radius:12px;padding:12px 14px;background:var(--accent);color:var(--on-accent);border:0"><span class="name">your website</span>${icon('arrow', 'check')}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" aria-labelledby="covers">
|
||||
<div class="wrap">
|
||||
<div class="sec-head reveal">
|
||||
<div class="stack-sm">${eyebrow('WHAT THIS COVERS')}<h2 id="covers" class="h-display">Visibility Is Bigger Than Google Rankings Now.</h2></div>
|
||||
<div class="prose">
|
||||
<p>People can discover your business through a search result, an AI answer, an ad, a social platform, or a local listing before they ever reach your website.</p>
|
||||
<p class="body-ink">The strategy has to connect those moments.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="covers reveal">
|
||||
${covers.map(([ic, h, items]) => `<article class="cover"><div class="cover-head"><span class="ic">${icon(ic)}</span><h3>${h}</h3></div><ul>${items.map((it) => `<li>${icon('check')}${it}</li>`).join('')}</ul></article>`).join('')}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" aria-labelledby="who">
|
||||
<div class="wrap">
|
||||
<div class="sec-head reveal">
|
||||
<div class="stack-sm">${eyebrow('WHO THIS IS FOR')}<h2 id="who" class="h-display">When More Marketing Isn’t Necessarily the Answer.</h2></div>
|
||||
</div>
|
||||
<div class="cards cards-3 reveal">
|
||||
${who.map(([ic, h, p]) => `<article class="card"><span class="ic">${icon(ic)}</span><h3 class="h-sm">${h}</h3><div class="prose">${paras(p)}</div></article>`).join('')}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section band" aria-labelledby="delivery">
|
||||
<div class="wrap">
|
||||
<div class="sec-head reveal">
|
||||
<div class="stack-sm">${eyebrow('HOW DELIVERY WORKS')}<h2 id="delivery" class="h-display">We Don’t Start With a Channel. We Start With the Business.</h2></div>
|
||||
<div class="prose">
|
||||
<p style="color:var(--on-dark)">Marketing problems have a habit of disguising themselves.</p>
|
||||
<p>Weak conversion can look like a traffic problem. Poor attribution can make a good channel look bad. A visibility problem can begin somewhere entirely different from SEO.</p>
|
||||
<p>That’s why every engagement follows the same diagnostic-first approach behind my consulting work.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="rules">
|
||||
${steps.map(([h, p], i) => `<article class="rule reveal"><span class="index">STEP_0${i + 1}</span><h3>${i + 1}. ${h}</h3><div class="prose">${p.map((t, j) => `<p${j === 0 ? ' class="ink"' : ''}>${t}</p>`).join('')}</div></article>`).join('')}
|
||||
</div>
|
||||
<div class="sec-foot reveal" style="border-color:var(--dark-line);margin-top:48px;border-top:0">
|
||||
<div class="prose"><p>The objective is not to replace people unnecessarily.</p><p class="statement">It’s to make the marketing work better.</p></div>
|
||||
${btn('START WITH THE DIAGNOSTIC', '/contact/', 'light')}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" aria-labelledby="why-op">
|
||||
<div class="wrap">
|
||||
<div class="showcase reveal">
|
||||
<div class="stack">
|
||||
${eyebrow('WHY OPERATOR-LED MARKETING')}
|
||||
<h2 id="why-op" class="h-display">I Have to Live With These Strategies Too.</h2>
|
||||
<div class="prose">
|
||||
<p class="body-ink">Marketing advice looks different when your own businesses depend on it.</p>
|
||||
<p>I’ve spent years operating in digital marketing while also being the person on the other side asking whether the leads are good, whether acquisition makes economic sense, and whether the strategy is producing anything the business can actually use.</p>
|
||||
</div>
|
||||
<p><a class="inline-link" href="/portfolio/">You can see the businesses behind that operating experience.</a></p>
|
||||
</div>
|
||||
<div class="stack-sm">
|
||||
<p class="statement">That tension matters.</p>
|
||||
<article class="card card-dark"><h3 class="h-lg">Marketing has to perform outside the marketing report.</h3></article>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" aria-labelledby="faq-m">
|
||||
<div class="wrap faq-layout">
|
||||
<div class="stack-sm sticky reveal">${eyebrow('FREQUENTLY ASKED QUESTIONS')}<h2 id="faq-m" class="h-display">Before We Talk Marketing.</h2></div>
|
||||
<div class="reveal">${faq(faqs)}</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="section" aria-labelledby="numbers">
|
||||
<div class="wrap">
|
||||
<div class="closing reveal">
|
||||
<div class="closing-inner">
|
||||
${eyebrow('START WITH THE NUMBERS')}
|
||||
<h2 id="numbers" class="h-display-lg">Before You Spend More, Find Out What’s Working.</h2>
|
||||
<div class="prose">
|
||||
<p>Every engagement begins with the Business Diagnostic because another campaign won’t solve a problem we haven’t identified yet.</p>
|
||||
<p>We’ll look at where your visibility, traffic, leads, and marketing spend are going, then identify what deserves attention first.</p>
|
||||
<p class="body-ink">If there’s a stronger way forward, you’ll know what it is before committing more budget to it.</p>
|
||||
</div>
|
||||
<div class="btn-row">${btn('BOOK YOUR DIAGNOSTIC', '/contact/')}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
`,
|
||||
};
|
||||
Reference in New Issue
Block a user