diff --git a/README.md b/README.md index f78fa41..1879ed5 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,8 @@ Importa el repo en Vercel. `vercel.json` ya define el build (`npm run build`), l ## Pendientes de contenido -- **Press:** confirmar el titular exacto del artículo de Gulf Magazine y su URL (`FEATURE` en `src/pages/press.mjs`). +- **Press:** falta el link del artículo de Gulf Insider y confirmar su titular exacto (`FEATURE` en `src/pages/press.mjs`). +- **Korrith:** falta el cargo de Dylan (el tercer campo, vacío, en `src/pages/portfolio.mjs`). - **Páginas fuera del alcance actual:** Playbook y Poetry 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`. - **Formulario de contacto:** hoy abre el cliente de correo con el mensaje prellenado. Para recibirlo directo hay que conectar un servicio (Formspree, Resend, etc.). diff --git a/src/pages/about.mjs b/src/pages/about.mjs index 474ebd2..bca2e6c 100644 --- a/src/pages/about.mjs +++ b/src/pages/about.mjs @@ -50,7 +50,7 @@ export default {
- Dylan Mazzei + Dylan Mazzei
-
-
- ${icon('book')} -

Some Ideas Need Structure

-
-

That instinct became The Business Launch Playbook.

-

I wanted to put what I had learned about beginnings somewhere useful, especially that strange stretch where an idea has to become something real.

-
-
+
${eyebrow('A DIFFERENT OUTLET')}

Some Thoughts Need Space.

diff --git a/src/pages/business-setup.mjs b/src/pages/business-setup.mjs index 1c86ee3..cfae293 100644 --- a/src/pages/business-setup.mjs +++ b/src/pages/business-setup.mjs @@ -125,7 +125,6 @@ export default {

You open another account. Hire someone. Add a partner. Enter another market. Raise money. Sell something.

Suddenly, a decision made in an afternoon is still sitting in the middle of the business years later.

My perspective comes from operating companies across different industries and markets, not simply helping someone complete a filing.

-

It’s also why I wrote The Business Launch Playbook.

The beginning deserves more thought than it usually gets.

diff --git a/src/pages/consulting.mjs b/src/pages/consulting.mjs index 3e9c7ac..3499bc4 100644 --- a/src/pages/consulting.mjs +++ b/src/pages/consulting.mjs @@ -26,7 +26,7 @@ const plans = [ const services = [ { id: 'marketing', icon: 'search', name: 'Marketing & 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 & 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.'], 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: '/consulting/business-optimization/' }, { 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: '/consulting/supply-chain/' }, { 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: '/consulting/cybersecurity/' }, @@ -191,7 +191,7 @@ export default {
${btn('EXPLORE DYLAN’S VENTURES', '/portfolio/')}
- Dylan Mazzei + Dylan Mazzei
diff --git a/src/pages/fractional.mjs b/src/pages/fractional.mjs index b642745..faf3334 100644 --- a/src/pages/fractional.mjs +++ b/src/pages/fractional.mjs @@ -136,7 +136,7 @@ export default { h2: 'I Don’t Advise From the Sidelines.', paras: ['*Fractional leadership only works if the person in the seat is willing to own decisions.', 'That is how I approach my own companies, and it is how I approach a fractional role.', 'I work with the team, review the numbers, make the calls that belong to the role, and stay close enough to see whether those decisions are working.'], link: ['You can see the companies I operate today and the businesses and exits that shaped that experience.', '/portfolio/'], - side: '
Dylan Mazzei
', + side: '
Dylan Mazzei at LIVEX
', }) + faqBlock({ id: 'fr-faq', h2: 'Before You Open a Seat.', items: faqs }) + closingBlock({ diff --git a/src/pages/home.mjs b/src/pages/home.mjs index 3e24711..2d2dcba 100644 --- a/src/pages/home.mjs +++ b/src/pages/home.mjs @@ -206,27 +206,6 @@ export default { -
- -
-
- ${eyebrow('FROM THE NOTEBOOK')} -

Different Businesses. Different Beginnings. One Playbook.

-

I’ve started enough businesses to know the beginning matters.

-

The early calls. The first customers. The moments when an idea has to become more than an idea.

-

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.

-
-
- -
-
-
-
diff --git a/src/pages/portfolio.mjs b/src/pages/portfolio.mjs index 6f6441f..1d5a4c2 100644 --- a/src/pages/portfolio.mjs +++ b/src/pages/portfolio.mjs @@ -1,6 +1,8 @@ import { icon, eyebrow, btn, textLink } from '../layout.mjs'; -const URLS = {"Ai Growth Technologies": "https://aigrowthtechnologies.com", "READTYCH": "https://readtych.com", "Growth360Partners": "https://growth360partners.com", "Infinitus Texas": "https://www.infinitustx.com", "Skinny Spiritz": "https://skinnyspiritz.com", "meSEO": "https://meseoapp.com"}; +const URLS = {"Ai Growth Technologies": "https://aigrowthtechnologies.com", "READTYCH": "https://readtych.com", "Growth360Partners": "https://growth360partners.com", "Infinitus Texas": "https://www.infinitustx.com", "Skinny Spiritz": "https://skinnyspiritz.com", "meSEO": "https://meseoapp.com", "Korrith": "https://korrith.com"}; + +const DARK_LOGOS = ['meseo.png']; const ventures = [ ['Ai Growth Technologies', 'AG', 'CEO & Board Member', 'AI-focused marketing and growth company working at the intersection of digital visibility, strategy, and performance.', ['AI Search', 'Digital Visibility', 'Growth Strategy'], null], @@ -9,7 +11,8 @@ const ventures = [ ['Infinitus Texas', 'IT', 'Partner & Strategic Advisor', 'Strategic partnership focused on brand positioning, marketing direction, and creating stronger foundations for scalable growth.', ['Strategy', 'Positioning', 'Growth'], 'infinitus-texas.png'], ['Skinny Spiritz', 'SS', 'Chief Executive Officer & Board Member', 'Beverage brand where product, positioning, placement, partnerships, and customer attention all have to work together.', ['Spirits', 'Brand Growth', 'Partnerships'], 'skinny-spiritz.svg'], ['AiGrowth360', 'A3', 'Chief Executive Officer & Founder', 'Performance-driven digital marketing company using AI, analytics, and search strategy to find better ways to create measurable growth.', ['AI', 'Analytics', 'Performance Marketing'], null], - ['meSEO', 'me', 'Founder & Strategic Growth Leader', 'Web application built around AI search, SEO, and the changing ways businesses are discovered online.', ['Software', 'AI Search', 'SEO'], null], + ['meSEO', 'me', 'Founder & Strategic Growth Leader', 'Web application built around AI search, SEO, and the changing ways businesses are discovered online.', ['Software', 'AI Search', 'SEO'], 'meseo.png'], + ['Korrith', 'KO', '', 'Enterprise-grade managed infrastructure, AI-powered security, and quantum readiness.', ['Secure Infrastructure', 'AI Security', 'Quantum Readiness'], 'korrith.png'], ]; const capabilities = [ @@ -62,8 +65,8 @@ export default { ${ventures .map( ([name, mono, role, desc, focus, logo]) => `
${URLS[name] ? `` : ''} - -

${name}

${role}

+ +

${name}

${role ? `

${role}

` : ''}

${desc}

FOCUS:
${focus.map((f) => `${f}`).join('')}
` diff --git a/src/pages/press.mjs b/src/pages/press.mjs index 1dc2ddd..c1d4731 100644 --- a/src/pages/press.mjs +++ b/src/pages/press.mjs @@ -1,9 +1,9 @@ import { icon, eyebrow, btn, textLink, SITE } from '../layout.mjs'; -// TODO(content): the source document asks for the exact published Gulf Magazine -// headline. Replace FEATURE.headline (and add FEATURE.url) once it is confirmed. +// TODO(content): add the Gulf Insider article link (FEATURE.url) and confirm the +// exact published headline (FEATURE.headline). const FEATURE = { - outlet: 'GULF MAGAZINE • FEATURE ARTICLE', + outlet: 'GULF INSIDER • FEATURE ARTICLE', headline: 'Inside Dylan Mazzei’s High-Stakes', url: null, }; @@ -46,10 +46,11 @@ export default {
${eyebrow('FEATURED PRESS')}
+ ${FEATURE.url ? `` : ''} @@ -62,6 +63,14 @@ export default {
+
+
+ +
+
+
diff --git a/static/assets/dylan-portrait.jpg b/static/assets/dylan-portrait.jpg index 36954c0..45378c4 100644 Binary files a/static/assets/dylan-portrait.jpg and b/static/assets/dylan-portrait.jpg differ diff --git a/static/assets/logos/korrith.png b/static/assets/logos/korrith.png new file mode 100644 index 0000000..546c520 Binary files /dev/null and b/static/assets/logos/korrith.png differ diff --git a/static/assets/logos/meseo.png b/static/assets/logos/meseo.png new file mode 100644 index 0000000..e179480 Binary files /dev/null and b/static/assets/logos/meseo.png differ diff --git a/static/assets/photos/dylan-bull.jpg b/static/assets/photos/dylan-bull.jpg new file mode 100644 index 0000000..18c72bb Binary files /dev/null and b/static/assets/photos/dylan-bull.jpg differ diff --git a/static/assets/photos/dylan-dinner.jpg b/static/assets/photos/dylan-dinner.jpg new file mode 100644 index 0000000..4de87e0 Binary files /dev/null and b/static/assets/photos/dylan-dinner.jpg differ diff --git a/static/assets/photos/dylan-gallery-wall.jpg b/static/assets/photos/dylan-gallery-wall.jpg new file mode 100644 index 0000000..1e97a06 Binary files /dev/null and b/static/assets/photos/dylan-gallery-wall.jpg differ diff --git a/static/assets/photos/dylan-goodlife.jpg b/static/assets/photos/dylan-goodlife.jpg new file mode 100644 index 0000000..0abe770 Binary files /dev/null and b/static/assets/photos/dylan-goodlife.jpg differ diff --git a/static/assets/photos/dylan-livex-smile.jpg b/static/assets/photos/dylan-livex-smile.jpg new file mode 100644 index 0000000..2a8ba75 Binary files /dev/null and b/static/assets/photos/dylan-livex-smile.jpg differ diff --git a/static/assets/photos/dylan-livex.jpg b/static/assets/photos/dylan-livex.jpg new file mode 100644 index 0000000..bb1448d Binary files /dev/null and b/static/assets/photos/dylan-livex.jpg differ diff --git a/static/assets/photos/dylan-podcast.jpg b/static/assets/photos/dylan-podcast.jpg new file mode 100644 index 0000000..1a7b176 Binary files /dev/null and b/static/assets/photos/dylan-podcast.jpg differ diff --git a/static/assets/styles.css b/static/assets/styles.css index 5ef18b7..8c280f7 100644 --- a/static/assets/styles.css +++ b/static/assets/styles.css @@ -1011,3 +1011,11 @@ h1, h2, h3, h4 { font-weight: 600; } .venture-link { position: absolute; inset: 0; z-index: 2; border-radius: inherit; } .venture:has(.venture-link) { cursor: pointer; } +.vlogo.vlogo-dark { background: #111318; border-color: #111318; } +.gallery { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; } +.gallery figure { margin: 0; border-radius: 24px; overflow: hidden; border: 1px solid var(--bd); aspect-ratio: 3 / 4; } +.gallery img { width: 100%; height: 100%; object-fit: cover; object-position: center 25%; transition: transform .6s ease; } +.gallery figure:hover img { transform: scale(1.04); } +@media (max-width: 900px) { .gallery { grid-template-columns: repeat(2, 1fr); } } +.feature-press { position: relative; } +.fp-link { position: absolute; inset: 0; z-index: 3; border-radius: inherit; }