{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://alejandrocastanoduque.com/#website",
      "url": "https://alejandrocastanoduque.com/en/",
      "name": "Alejandro Castaño, Portfolio",
      "inLanguage": "en",
      "publisher": {
        "@id": "https://alejandrocastanoduque.com/#person"
      }
    },
    {
      "@type": "Person",
      "@id": "https://alejandrocastanoduque.com/#person",
      "name": "Alejandro Castaño Duque",
      "alternateName": "Alejandro Castaño",
      "jobTitle": "Technical SEO & GEO Strategist",
      "description": "Technical SEO and GEO for e-commerce: visibility in Google and in AI answers, measured in GA4 and Search Console. Berlin.",
      "email": "mailto:alejandrocadu@gmail.com",
      "url": "https://alejandrocastanoduque.com/en/",
      "image": "https://alejandrocastanoduque.com/og.png",
      "address": {
        "@type": "PostalAddress",
        "addressLocality": "Berlin",
        "addressCountry": "DE"
      },
      "worksFor": {
        "@type": "Organization",
        "name": "Loona Marketing"
      },
      "alumniOf": [
        {
          "@type": "CollegeOrUniversity",
          "name": "Gisma University of Applied Sciences"
        },
        {
          "@type": "CollegeOrUniversity",
          "name": "Universidad de Medellín"
        }
      ],
      "knowsLanguage": [
        {
          "@type": "Language",
          "name": "Spanish"
        },
        {
          "@type": "Language",
          "name": "English"
        },
        {
          "@type": "Language",
          "name": "German"
        }
      ],
      "knowsAbout": [
        "Marketing Automation",
        "AI Agents",
        "Model Context Protocol",
        "Claude",
        "Technical SEO",
        "Generative Engine Optimization",
        "Structured Data",
        "Core Web Vitals",
        "Google Search Console",
        "Google Analytics 4",
        "Google Tag Manager",
        "Server-side tracking",
        "Looker Studio",
        "Shopify",
        "WordPress"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/alejandrocastanod/"
      ]
    },
    {
      "@type": "BreadcrumbList",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Technical SEO & GEO Strategist",
          "item": "https://alejandrocastanoduque.com/en/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Projects",
          "item": "https://alejandrocastanoduque.com/en/projects/"
        }
      ]
    },
    {
      "@type": "CollectionPage",
      "@id": "https://alejandrocastanoduque.com/en/projects/#webpage",
      "url": "https://alejandrocastanoduque.com/en/projects/",
      "inLanguage": "en",
      "isPartOf": {
        "@id": "https://alejandrocastanoduque.com/#website"
      },
      "name": "Projects",
      "description": "Systems I built for SEO, GEO and measurement, plus a few side builds.",
      "mainEntity": {
        "@id": "https://alejandrocastanoduque.com/en/projects/#list"
      }
    },
    {
      "@type": "ItemList",
      "@id": "https://alejandrocastanoduque.com/en/projects/#list",
      "name": "Projects",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "item": {
            "@type": "CreativeWork",
            "@id": "https://alejandrocastanoduque.com/en/projects/#ai-visibility",
            "url": "https://alejandrocastanoduque.com/en/projects/#ai-visibility",
            "name": "AI-visibility monitoring and technical GEO",
            "description": "Visibility, share of voice and cited sources in Peec AI across AI Overviews, ChatGPT and Perplexity; a Gemini grounding tracker as a proxy for query fan-out; AI crawlers unblocked in Cloudflare. Orders from AI assistants +40% year over year.",
            "keywords": "Peec AI, Gemini API, Cloudflare, GA4",
            "creator": {
              "@id": "https://alejandrocastanoduque.com/#person"
            }
          }
        },
        {
          "@type": "ListItem",
          "position": 2,
          "item": {
            "@type": "CreativeWork",
            "@id": "https://alejandrocastanoduque.com/en/projects/#merchant-ai-feed",
            "url": "https://alejandrocastanoduque.com/en/projects/#merchant-ai-feed",
            "name": "Product data for AI shopping surfaces",
            "description": "A supplemental feed with Google’s conversational attributes (Q&A, related products, variants, popularity), live since Jul 2026 with automated refresh. The active catalog (889 products) was verified against manufacturer sources to feed it.",
            "keywords": "Merchant Center, Supplemental feed, Python",
            "creator": {
              "@id": "https://alejandrocastanoduque.com/#person"
            }
          }
        },
        {
          "@type": "ListItem",
          "position": 3,
          "item": {
            "@type": "CreativeWork",
            "@id": "https://alejandrocastanoduque.com/en/projects/#competitor-intel",
            "url": "https://alejandrocastanoduque.com/en/projects/#competitor-intel",
            "name": "Competitor intelligence: pricing, content and business moves",
            "description": "A weekly read on 6 competitor stores that answers three questions. How they price: MAP parity and who undercuts it, discount anchoring with strikethrough prices, coordinated manufacturer price rises, Black Friday tiers built weeks ahead. What they publish: editorial pace, the topics we were missing and shifts in AI visibility. Where their business is going: four brands consolidated into one platform, private labels replacing third-party products, new ad channels, clinic referral pages and buy-now-pay-later offers. Every finding goes to the team that owns it with a recommendation and stays open until it is decided.",
            "keywords": "changedetection.io, Shopify API, Python, Decision log",
            "creator": {
              "@id": "https://alejandrocastanoduque.com/#person"
            }
          }
        },
        {
          "@type": "ListItem",
          "position": 4,
          "item": {
            "@type": "CreativeWork",
            "@id": "https://alejandrocastanoduque.com/en/projects/#measurement-stack",
            "url": "https://alejandrocastanoduque.com/en/projects/#measurement-stack",
            "name": "SEO and GEO measurement stack",
            "description": "Daily Search Console archive in SQLite beyond the 16-month limit, a Google-update watcher (14 days before vs after), causal-impact tooling for SEO changes and AI-crawler verification against published bot IP ranges.",
            "keywords": "Search Console API, SQLite, Causal impact",
            "creator": {
              "@id": "https://alejandrocastanoduque.com/#person"
            }
          }
        },
        {
          "@type": "ListItem",
          "position": 5,
          "item": {
            "@type": "CreativeWork",
            "@id": "https://alejandrocastanoduque.com/en/projects/#ad-signals",
            "url": "https://alejandrocastanoduque.com/en/projects/#ad-signals",
            "name": "Offline conversions and tracking-health checks",
            "description": "The ad click ID is captured on the store and uploaded to Google Ads every day as an offline conversion, so bidding learns from real orders; the setup was validated end to end before going live. Weekly monitors compare Shopify orders with GA4 purchases, alert when the gap goes over 20% and track attribution coverage.",
            "keywords": "Google Ads API, Cloudflare Workers, GA4, Python",
            "creator": {
              "@id": "https://alejandrocastanoduque.com/#person"
            }
          }
        },
        {
          "@type": "ListItem",
          "position": 6,
          "item": {
            "@type": "CreativeWork",
            "@id": "https://alejandrocastanoduque.com/en/projects/#seo-reporting",
            "url": "https://alejandrocastanoduque.com/en/projects/#seo-reporting",
            "name": "Automated monthly SEO report",
            "description": "Pulls Search Console and GA4 through their APIs and builds the monthly deck, with our site changes and Google updates marked on the charts so every movement in traffic arrives with its explanation instead of a guess.",
            "keywords": "Search Console API, GA4 Data API, python-pptx",
            "creator": {
              "@id": "https://alejandrocastanoduque.com/#person"
            }
          }
        },
        {
          "@type": "ListItem",
          "position": 7,
          "item": {
            "@type": "CreativeWork",
            "@id": "https://alejandrocastanoduque.com/en/projects/#content-research",
            "url": "https://alejandrocastanoduque.com/en/projects/#content-research",
            "name": "Content-gap and demand research tools",
            "description": "A content-gap tool that weights competitor pages by their SERP position (BM25), extracts topics and maps headings with embeddings, plus Reddit demand mining through the official API. Both feed the SEO briefs.",
            "keywords": "Python, BM25, spaCy, Reddit API",
            "creator": {
              "@id": "https://alejandrocastanoduque.com/#person"
            }
          }
        },
        {
          "@type": "ListItem",
          "position": 8,
          "item": {
            "@type": "CreativeWork",
            "@id": "https://alejandrocastanoduque.com/en/projects/#local-toolkit",
            "url": "https://alejandrocastanoduque.com/en/projects/#local-toolkit",
            "name": "A local research toolkit for SEO and GEO",
            "description": "Small command-line tools I wrote, on top of open-source software I self-host (Firecrawl, crawl4ai, changedetection.io): a scraper that escalates from the lightest method to a headless browser and stops at captchas instead of solving them, YouTube transcripts in bulk, Google Trends and competitor-catalog diffs, structured-data extraction, an agentic-commerce check for Shopify stores, and one command that starts and stops the local services.",
            "keywords": "Python, Bash, Firecrawl (self-hosted), crawl4ai",
            "creator": {
              "@id": "https://alejandrocastanoduque.com/#person"
            }
          }
        },
        {
          "@type": "ListItem",
          "position": 9,
          "item": {
            "@type": "CreativeWork",
            "@id": "https://alejandrocastanoduque.com/en/projects/#claude-mcp",
            "url": "https://alejandrocastanoduque.com/en/projects/#claude-mcp",
            "name": "Claude skills, agents and MCP connectors",
            "description": "Adapted per client and connected to GA4, Search Console, Ahrefs, SEMrush, DataForSEO, Screaming Frog, Shopify, GTM and Cloudflare, so audits and reports run from one place. Includes brand-specific workflows for content briefs, product pages, collections and technical fixes.",
            "keywords": "Claude, MCP, Claude Code",
            "creator": {
              "@id": "https://alejandrocastanoduque.com/#person"
            }
          }
        },
        {
          "@type": "ListItem",
          "position": 10,
          "item": {
            "@type": "CreativeWork",
            "@id": "https://alejandrocastanoduque.com/en/projects/#lead-automation",
            "url": "https://alejandrocastanoduque.com/en/projects/#lead-automation",
            "name": "Lead automation and a deploy CLI",
            "description": "Google Apps Script for validation, anti-spam, Google Sheets and CRM handoff with no manual data entry. Deploys went from about 30 minutes to a single command with a CLI I built.",
            "keywords": "Apps Script, CLI, GTM server-side",
            "creator": {
              "@id": "https://alejandrocastanoduque.com/#person"
            }
          }
        },
        {
          "@type": "ListItem",
          "position": 11,
          "item": {
            "@type": "CreativeWork",
            "@id": "https://alejandrocastanoduque.com/en/projects/#berlin-job-pipeline",
            "url": "https://alejandrocastanoduque.com/en/projects/#berlin-job-pipeline",
            "name": "Job-search pipeline and a LinkedIn audit MCP",
            "description": "A pipeline on official job APIs that filters roles by language, visa sponsorship and salary threshold, and an MCP server that audits a LinkedIn profile against the keywords of real job titles. No scraping, no account access.",
            "keywords": "Job APIs, MCP, Automation",
            "creator": {
              "@id": "https://alejandrocastanoduque.com/#person"
            }
          }
        }
      ]
    }
  ]
}
