Remove CTAs that pointed to pages outside the content package

Playbook, Poetry, Fractional Roles, and four service lines keep their copy
but no longer show a button, since those pages are not part of the site.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Alejandro Veras
2026-10-01 11:13:08 -04:00
parent ee8e0ab417
commit f73968c0dc
5 changed files with 9 additions and 19 deletions
+1 -1
View File
@@ -36,6 +36,6 @@ Importa el repo en Vercel. `vercel.json` ya define el build (`npm run build`), l
## Pendientes de contenido ## Pendientes de contenido
- **Press:** confirmar el titular exacto del artículo de Gulf Magazine y su URL (`FEATURE` en `src/pages/press.mjs`). - **Press:** confirmar el titular exacto del artículo de Gulf Magazine y su URL (`FEATURE` en `src/pages/press.mjs`).
- **Páginas que aún no existen.** Mientras tanto sus botones llevan a `/contact/` (`SITE.pending` en `src/layout.mjs`): Playbook, Poetry, Fractional Roles, Business Optimization, Supply Chain, Cybersecurity y Education. - **Páginas fuera del alcance actual:** Playbook, Poetry, Fractional Roles, Business Optimization, Supply Chain, Cybersecurity y Education no forman parte del sitio. Sus secciones se muestran sin botón; si se crean esas páginas, se añade el botón con su texto original del documento.
- **Calendario:** poner el link real de agenda en `SITE.calendar`. - **Calendario:** poner el link real de agenda en `SITE.calendar`.
- **Formulario de contacto:** hoy abre el cliente de correo con el mensaje prellenado. Para recibirlo directo hay que conectar un servicio (Formspree, Resend, etc.). - **Formulario de contacto:** hoy abre el cliente de correo con el mensaje prellenado. Para recibirlo directo hay que conectar un servicio (Formspree, Resend, etc.).
-2
View File
@@ -8,8 +8,6 @@ export const SITE = {
instagram: 'https://www.instagram.com/caposins', instagram: 'https://www.instagram.com/caposins',
// Replace with the real scheduling link (Calendly, Cal.com, etc.). // Replace with the real scheduling link (Calendly, Cal.com, etc.).
calendar: 'mailto:dylan@dylanmazzei.com?subject=Scheduling%20a%20conversation', calendar: 'mailto:dylan@dylanmazzei.com?subject=Scheduling%20a%20conversation',
// Pages that are not built yet. Their CTAs point here until they exist.
pending: '/contact/',
}; };
const ICONS = { const ICONS = {
+1 -5
View File
@@ -1,4 +1,4 @@
import { icon, eyebrow, btn, paras, SITE } from '../layout.mjs'; import { icon, eyebrow, btn, paras } from '../layout.mjs';
const lines = (arr) => `<div class="lines">${arr.map((t, i) => `<p${i === 0 ? ' class="ink"' : ''}>${t}</p>`).join('')}</div>`; const lines = (arr) => `<div class="lines">${arr.map((t, i) => `<p${i === 0 ? ' class="ink"' : ''}>${t}</p>`).join('')}</div>`;
@@ -184,16 +184,12 @@ export default {
<p>That instinct became The Business Launch Playbook.</p> <p>That instinct became The Business Launch Playbook.</p>
<p>I wanted to put what I had learned about beginnings somewhere useful, especially that strange stretch where an idea has to become something real.</p> <p>I wanted to put what I had learned about beginnings somewhere useful, especially that strange stretch where an idea has to become something real.</p>
</div> </div>
<div class="spacer"></div>
<div>${btn('EXPLORE THE PLAYBOOK', SITE.pending)}</div>
</article> </article>
<article class="card card-lg card-dark"> <article class="card card-lg card-dark">
${eyebrow('A DIFFERENT OUTLET')} ${eyebrow('A DIFFERENT OUTLET')}
<h3 class="h-lg">Some Thoughts Need Space.</h3> <h3 class="h-lg">Some Thoughts Need Space.</h3>
<p class="poem"><span>That’s poetry for me.</span><span>No pitch deck. No growth plan. No conversion rate.</span></p> <p class="poem"><span>That’s poetry for me.</span><span>No pitch deck. No growth plan. No conversion rate.</span></p>
<p class="body">Just something I wanted to say and the patience to find the right words for it.</p> <p class="body">Just something I wanted to say and the patience to find the right words for it.</p>
<div class="spacer"></div>
<div>${btn('READ MY POETRY', SITE.pending, 'ghost-light')}</div>
</article> </article>
</div> </div>
</div> </div>
+6 -7
View File
@@ -1,4 +1,4 @@
import { icon, eyebrow, btn, textLink, paras, faq, SITE } from '../layout.mjs'; import { icon, eyebrow, btn, textLink, paras, faq } from '../layout.mjs';
const steps = [ const steps = [
['Business Diagnostic', ['We go inside the business to examine operations, financials, technology, marketing, and the places where growth is creating friction.', 'The goal is simple: find what deserves attention first.']], ['Business Diagnostic', ['We go inside the business to examine operations, financials, technology, marketing, and the places where growth is creating friction.', 'The goal is simple: find what deserves attention first.']],
@@ -27,10 +27,10 @@ const plans = [
const services = [ const services = [
{ id: 'marketing', icon: 'search', name: 'Marketing &amp; AI Search', h: 'Get Found Where Attention Is Moving.', p: ['SEO, AI search visibility, paid media, and funnel strategy grounded in what people actually discover, click, and choose.', 'Marketing has been part of my operating world for years, and it remains one of the areas where technology keeps changing the answer.'], cta: 'EXPLORE MARKETING &amp; AI SEARCH', href: '/consulting/marketing/' }, { id: 'marketing', icon: 'search', name: 'Marketing &amp; AI Search', h: 'Get Found Where Attention Is Moving.', p: ['SEO, AI search visibility, paid media, and funnel strategy grounded in what people actually discover, click, and choose.', 'Marketing has been part of my operating world for years, and it remains one of the areas where technology keeps changing the answer.'], cta: 'EXPLORE MARKETING &amp; AI SEARCH', href: '/consulting/marketing/' },
{ id: 'business-setup', icon: 'building', name: 'Business Setup', h: 'Start With Fewer Expensive Mistakes.', p: ['Entity and state selection, licensing, banking architecture, and the practical decisions that turn an idea into an operating business.', 'I’ve started enough companies to know that early decisions have a habit of following you. I unpack more of that thinking in The Business Launch Playbook.'], cta: 'EXPLORE BUSINESS SETUP', href: '/consulting/business-setup/' }, { id: 'business-setup', icon: 'building', name: 'Business Setup', h: 'Start With Fewer Expensive Mistakes.', p: ['Entity and state selection, licensing, banking architecture, and the practical decisions that turn an idea into an operating business.', 'I’ve started enough companies to know that early decisions have a habit of following you. I unpack more of that thinking in The Business Launch Playbook.'], cta: 'EXPLORE BUSINESS SETUP', href: '/consulting/business-setup/' },
{ id: 'optimization', icon: 'gauge', name: 'Business Optimization', h: 'Find What Growth Made Messy.', p: ['Growth creates opportunity.', 'It also creates workarounds, extra steps, unnecessary costs, unclear ownership, and processes nobody remembers choosing.', 'The job is to find what the business has outgrown and make it work for where the company is going next.'], cta: 'EXPLORE BUSINESS OPTIMIZATION', href: SITE.pending }, { id: 'optimization', icon: 'gauge', name: 'Business Optimization', h: 'Find What Growth Made Messy.', p: ['Growth creates opportunity.', 'It also creates workarounds, extra steps, unnecessary costs, unclear ownership, and processes nobody remembers choosing.', 'The job is to find what the business has outgrown and make it work for where the company is going next.'] },
{ id: 'supply-chain', icon: 'truck', name: 'Supply Chain', h: 'Know What Happens Before It Reaches the Customer.', p: ['Sourcing, supplier vetting, logistics planning, and landed-cost analysis for businesses where products have to move through the real world.', 'My work across consumer products and e-commerce has taught me that what happens before the sale can determine whether the sale makes sense.'], cta: 'EXPLORE SUPPLY CHAIN', href: SITE.pending }, { id: 'supply-chain', icon: 'truck', name: 'Supply Chain', h: 'Know What Happens Before It Reaches the Customer.', p: ['Sourcing, supplier vetting, logistics planning, and landed-cost analysis for businesses where products have to move through the real world.', 'My work across consumer products and e-commerce has taught me that what happens before the sale can determine whether the sale makes sense.'] },
{ id: 'cybersecurity', icon: 'shield', name: 'Cybersecurity', h: 'Find the Exposure Before Someone Else Does.', p: ['Security posture assessments, vulnerability reviews, and compliance readiness grounded in how the business actually operates.', 'The goal isn’t security theatre.', 'It’s understanding where the business is exposed and what deserves attention first.'], cta: 'EXPLORE CYBERSECURITY', href: SITE.pending }, { id: 'cybersecurity', icon: 'shield', name: 'Cybersecurity', h: 'Find the Exposure Before Someone Else Does.', p: ['Security posture assessments, vulnerability reviews, and compliance readiness grounded in how the business actually operates.', 'The goal isn’t security theatre.', 'It’s understanding where the business is exposed and what deserves attention first.'] },
{ id: 'education', icon: 'edu', name: 'Education', h: 'Make the Strategy Survive the Classroom.', p: ['EdTech product strategy, institutional technology adoption, and market-entry thinking shaped around the realities of schools, educators, and implementation.', 'A product can make perfect sense in a meeting and still fail the people expected to use it.', 'The classroom gets the final vote.'], cta: 'EXPLORE EDUCATION CONSULTING', href: SITE.pending }, { id: 'education', icon: 'edu', name: 'Education', h: 'Make the Strategy Survive the Classroom.', p: ['EdTech product strategy, institutional technology adoption, and market-entry thinking shaped around the realities of schools, educators, and implementation.', 'A product can make perfect sense in a meeting and still fail the people expected to use it.', 'The classroom gets the final vote.'] },
]; ];
const faqs = [ const faqs = [
@@ -117,7 +117,6 @@ export default {
<p>I can step into the business as a fractional CMO, COO, CISO, or Chief AI Officer, bringing the same operator mindset that shapes my current ventures into a defined leadership role.</p> <p>I can step into the business as a fractional CMO, COO, CISO, or Chief AI Officer, bringing the same operator mindset that shapes my current ventures into a defined leadership role.</p>
</div> </div>
<p class="statement">Strategy gets more useful when someone owns what happens next.</p> <p class="statement">Strategy gets more useful when someone owns what happens next.</p>
<div class="btn-row">${btn('EXPLORE FRACTIONAL ROLES', SITE.pending, 'light')}</div>
</div> </div>
<div class="roles reveal" aria-hidden="true"> <div class="roles reveal" aria-hidden="true">
<div class="role"><span class="index">FRACTIONAL</span><b>CMO</b></div> <div class="role"><span class="index">FRACTIONAL</span><b>CMO</b></div>
@@ -146,7 +145,7 @@ export default {
<span class="tp-title">${s.name}</span> <span class="tp-title">${s.name}</span>
<h3 class="h-display">${s.h}</h3> <h3 class="h-display">${s.h}</h3>
<div class="prose">${paras(s.p)}</div> <div class="prose">${paras(s.p)}</div>
<div class="btn-row">${btn(s.cta, s.href)}</div> ${s.cta ? `<div class="btn-row">${btn(s.cta, s.href)}</div>` : ''}
</article>` </article>`
) )
.join('')} .join('')}
+1 -4
View File
@@ -1,4 +1,4 @@
import { icon, eyebrow, btn, textLink, mark, SITE } from '../layout.mjs'; import { icon, eyebrow, btn, textLink, mark } from '../layout.mjs';
const ventures = [ const ventures = [
['search', 'MARKETING &amp; AI SEARCH', 'Leading teams through a constantly changing search landscape.'], ['search', 'MARKETING &amp; AI SEARCH', 'Leading teams through a constantly changing search landscape.'],
@@ -174,7 +174,6 @@ export default {
<li>${icon('arrow')}The moments when an idea has to become more than an idea.</li> <li>${icon('arrow')}The moments when an idea has to become more than an idea.</li>
</ul> </ul>
<p class="body">The Business Launch Playbook puts my approach to those moments on the page, shaped by years of starting, operating, and growing businesses across very different industries.</p> <p class="body">The Business Launch Playbook puts my approach to those moments on the page, shaped by years of starting, operating, and growing businesses across very different industries.</p>
<div class="btn-row">${btn('GET THE PLAYBOOK', SITE.pending)}</div>
</div> </div>
<div class="visual book-stage"> <div class="visual book-stage">
<div class="book" role="img" aria-label="The Business Launch Playbook by Dylan Mazzei"> <div class="book" role="img" aria-label="The Business Launch Playbook by Dylan Mazzei">
@@ -204,8 +203,6 @@ export default {
<h2 class="h-display">And Then There’s Poetry.</h2> <h2 class="h-display">And Then There’s Poetry.</h2>
<p class="poem"><span>Not every idea of mine becomes a company.</span><span>Some become words.</span></p> <p class="poem"><span>Not every idea of mine becomes a company.</span><span>Some become words.</span></p>
<p class="body">Poetry gives me somewhere to put thoughts that don't belong in a business plan, a strategy session, or a boardroom.</p> <p class="body">Poetry gives me somewhere to put thoughts that don't belong in a business plan, a strategy session, or a boardroom.</p>
<div class="spacer"></div>
<div>${btn('TURN THE PAGE', SITE.pending, 'ghost-light')}</div>
</article> </article>
</div> </div>
</section> </section>