<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <!-- ORDEN DE LOS HIJOS DE <url>: no es estetico, lo pide el XSD oficial.
     tUrl es una <xsd:sequence> estricta: loc, lastmod?, changefreq?, priority?
     y recien ahi el <xsd:any namespace="##other">, que es donde entran los
     <xhtml:link>. Hasta sep-2026 los links iban pegados al <loc>, o sea antes
     del lastmod, y eso hace que un validador estricto corte el documento
     entero con "element lastmod: This element is not expected", seis veces:
     una por URL. Google lo tolera; Bing y cualquier parser que valide contra
     el schema, no. Los alternates van DESPUES de <priority>. -->
  <!-- / y /en/ son el mismo contenido en dos idiomas: cada uno declara el set
       completo (incluyéndose), que es lo que Google pide para que sea recíproco.
       /en/index.html lo genera tools/prerender-en.mjs. -->
  <url>
    <loc>https://javiercaruso.com/</loc>
    <lastmod>2026-10-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>1.0</priority>
    <xhtml:link rel="alternate" hreflang="es" href="https://javiercaruso.com/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://javiercaruso.com/en/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://javiercaruso.com/"/>
  </url>
  <url>
    <loc>https://javiercaruso.com/en/</loc>
    <lastmod>2026-10-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
    <xhtml:link rel="alternate" hreflang="es" href="https://javiercaruso.com/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://javiercaruso.com/en/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://javiercaruso.com/"/>
  </url>
  <!-- /fractional/ y /en/fractional/: el cuarto par, y la unica pagina del sitio
       que existe para una BUSQUEDA y no para contar algo. Va con prioridad alta
       (0.9 / 0.8) a proposito: es la pagina por la que se quiere rankear
       "fractional CTO", "fractional AI", "fractional HR" y "board member", que
       hasta sep-2026 no estaban escritos en ningun archivo del sitio.
       /en/fractional/index.html lo genera tools/prerender-en.mjs. -->
  <url>
    <loc>https://javiercaruso.com/fractional/</loc>
    <lastmod>2026-10-11</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
    <xhtml:link rel="alternate" hreflang="es" href="https://javiercaruso.com/fractional/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://javiercaruso.com/en/fractional/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://javiercaruso.com/fractional/"/>
  </url>
  <url>
    <loc>https://javiercaruso.com/en/fractional/</loc>
    <lastmod>2026-10-11</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <xhtml:link rel="alternate" hreflang="es" href="https://javiercaruso.com/fractional/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://javiercaruso.com/en/fractional/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://javiercaruso.com/fractional/"/>
  </url>
  <!-- /projects/ y /en/projects/ son el mismo contenido en dos idiomas, igual que
       el par de arriba: cada uno declara el set COMPLETO (incluyéndose), que es lo
       que Google pide para que sea recíproco. Hasta ago-2026 /projects/ no
       declaraba alternates y /en/projects/ no existía: la copy inglesa ya estaba
       en el DOM de la página, pero sólo se alcanzaba con `#en`, y Google ignora
       los fragmentos, así que era invisible. /en/projects/index.html lo genera
       tools/prerender-en.mjs, igual que /en/index.html. -->
  <url>
    <loc>https://javiercaruso.com/projects/</loc>
    <lastmod>2026-10-11</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <xhtml:link rel="alternate" hreflang="es" href="https://javiercaruso.com/projects/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://javiercaruso.com/en/projects/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://javiercaruso.com/projects/"/>
  </url>
  <url>
    <loc>https://javiercaruso.com/en/projects/</loc>
    <lastmod>2026-10-11</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
    <xhtml:link rel="alternate" hreflang="es" href="https://javiercaruso.com/projects/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://javiercaruso.com/en/projects/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://javiercaruso.com/projects/"/>
  </url>
  <!-- /projects/carusos/ y /en/projects/carusos/: el tercer par, y el último que
       faltaba. Hasta ago-2026 esta URL era la única al revés del sitio: servía
       inglés desde la URL canónica española y no declaraba alternates, así que
       era también la única URL interna que devolvía a un visitante inglés al
       español. /en/projects/carusos/index.html lo genera tools/prerender-en.mjs,
       igual que los otros dos pares. -->
  <url>
    <loc>https://javiercaruso.com/projects/carusos/</loc>
    <lastmod>2026-09-12</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <xhtml:link rel="alternate" hreflang="es" href="https://javiercaruso.com/projects/carusos/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://javiercaruso.com/en/projects/carusos/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://javiercaruso.com/projects/carusos/"/>
  </url>
  <url>
    <loc>https://javiercaruso.com/en/projects/carusos/</loc>
    <lastmod>2026-09-12</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <xhtml:link rel="alternate" hreflang="es" href="https://javiercaruso.com/projects/carusos/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://javiercaruso.com/en/projects/carusos/"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://javiercaruso.com/projects/carusos/"/>
  </url>
  <!-- /cv/ NO tiene alternates y no es un olvido: es UNA URL con los dos idiomas
       en el mismo DOM (patron de /projects/ pero sin par prerenderizado), y abre
       siempre en ingles. Declarar un hreflang apuntando a una URL que no existe
       es peor que no declarar ninguno. El dia que se separe en /cv/ y /es/cv/,
       van los tres links en las DOS entradas, reciprocos, como los pares de
       arriba. -->
  <url>
    <loc>https://javiercaruso.com/cv/</loc>
    <lastmod>2026-10-11</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
</urlset>
