// ============================================================
// VACATURES · single source of truth
// ------------------------------------------------------------
// Add or remove a job: edit the VACANCIES array below.
// To create a detail page, copy /vacatures/<existing>.html and
// just change the SLUG inside it; everything else is derived
// from this file.
// ============================================================

const VACANCIES = [
  {
    slug: "commercial-lead",
    title: "Commercial Lead",
    blurb: "Eerste sales-persoon van Repetive. Bouw onze pipeline, zit aan tafel bij directies en sluit deals waar klanten écht blij van worden.",
    location: "Hybride",
    locationDetail: "kantoor in Tilburg",
    type: "Fulltime",
    level: "Medior / Senior",
    salary: "€4.500 – €6.500",
    salaryNote: "bruto + variabel, o.b.v. ervaring",
    color: "#FB993F",
    colorAlt: "#F83C72",
    href: "vacatures/commercial-lead.html",
    applyEmail: "arlette@repetive.ai",
    intro: "Bij Repetive bouwen we AI agents die ondernemers weer tijd geven om te ondernemen. We groeien hard en zoeken iemand die onze oplossingen bij de juiste bedrijven op tafel krijgt. Niet door koud te bellen, maar door oprecht te begrijpen waar een ondernemer tegenaan loopt en te laten zien hoe AI agents dat kunnen veranderen.",
    sections: [
      { heading: "Wat ga je doen?", paragraphs: [
        "Je bouwt een pipeline van MKB- en enterprise-klanten die baat hebben bij AI agents. Dat begint met het identificeren van de juiste bedrijven en het voeren van gesprekken op directieniveau. Je luistert, stelt de goede vragen en vertaalt wat je hoort naar een propositie die klopt, samen met onze consultants. Van eerste kennismaking tot het sluiten van de deal: jij bent het gezicht van Repetive aan tafel.",
        "Daarnaast signaleer je marktkansen, denk je mee over onze go-to-market strategie en bouw je mee aan het sales playbook. Bij Repetive schrijf je het boek terwijl je het leest. Omdat we een AI-first bedrijf zijn, is de eerste vraag bij alles: hoe kan AI ons hierin versterken? Dat geldt ook voor je eigen saleswerk."
      ] },
      { heading: "Wie zoeken we?", paragraphs: [
        "Iemand met 3+ jaar ervaring in B2B tech sales, SaaS of consultancy die sterk is in relatiebeheer en consultative selling. Je verkoopt niet, je helpt. Je kunt de vertaling maken van klantbehoefte naar AI agent-oplossing en voelt je comfortabel in gesprekken met directies en DGA’s.",
        "Je bent ondernemend, wacht niet op leads maar creëert ze, en je bent enthousiast over AI en de impact die het kan hebben op hoe bedrijven werken."
      ] },
      { heading: "Wat we verwachten", bullets: [
        "3+ jaar ervaring in B2B tech sales, SaaS of consultancy",
        "Consultative selling-aanpak: luisteren, vertalen, helpen in plaats van pushen",
        "Gemak in gesprekken op directie- en DGA-niveau",
        "Pipelinebouwer: je creëert leads in plaats van te wachten op marketing",
        "Enthousiast over AI en wat het kan betekenen voor de manier waarop bedrijven werken"
      ] },
      { heading: "Waarom Repetive?", paragraphs: [
        "Je verkoopt iets waar klanten écht blij van worden, en je blijft betrokken zodat de belofte die jij aan tafel doet, ook na de handtekening uitkomt. Je zit aan tafel als ondernemer tussen ondernemers: je begrijpt de druk en de verantwoordelijkheid van de DGA aan de andere kant. Omdat we een AI-first bedrijf zijn, gebruik je dagelijks AI in je eigen salesproces. Je zit aan tafel met de founders en de klanten, in een groeiende club die het lef heeft om hard te gaan in een markt waarin stilstand het grootste risico is."
      ] },
      { heading: "Wat biedt Repetive jou", bullets: [
        "Salaris: €4.500 – €6.500 bruto per maand + variabele beloning o.b.v. ervaring.",
        "We schrijven het wettelijk aantal vakantiedagen op in je contract, maar houden dit niet bij. Je neemt verlof wanneer jij het nodig hebt en wanneer het kan. We geloven ook hier in eigenaarschap.",
        "Natuurlijk hoort een goed pensioen en een moderne mobiliteitsregeling erbij. Daar kun je op bouwen.",
        "Werken bij een AI-first club betekent niet dat het menselijke niet meer belangrijk is. Juist niet! Werken moet vooral leuk zijn! Daarom is er naast grote betrokkenheid op inhoud ook veel ruimte voor persoonlijke verbinding."
      ] },
    ],
    seo: {"description":"Vacature: Commercial Lead bij Repetive. Bouw onze B2B-pipeline en zit aan tafel bij directies. Hybride, fulltime, Medior/Senior."},
  },
  {
    slug: "ai-software-engineer",
    title: "AI Software Engineer",
    blurb: "Bouw mee aan onze Agent-Factory: het platform waarmee we AI agents bouwen, uitrollen en onderhouden. Klein team, veel vrijheid, directe impact.",
    location: "Tilburg",
    locationDetail: "veel op kantoor, thuiswerken mogelijk",
    type: "Fulltime",
    level: "Medior / Senior",
    salary: "€4.000 – €6.000",
    salaryNote: "bruto, o.b.v. ervaring",
    color: "#4D01B4",
    colorAlt: "#8D0D9C",
    href: "vacatures/ai-software-engineer.html",
    applyEmail: "arlette@repetive.ai",
    intro: "Wij leveren AI agents. Die maken we met AI agents. Die worden ondersteund door ons eigen platform. Dat bouwen we ook weer met AI. Het resultaat: een klein team dat levert alsof het drie keer zo groot is, en een werkwijze die je nergens anders vindt. We zoeken een engineer die onze Agent-Factory naar het volgende niveau tilt.",
    sections: [
      { heading: "Wat ga je doen?", paragraphs: [
        "Je bouwt mee aan onze Agent-Factory: het platform waarmee het Repetive-team AI agents bouwt, uitrolt en onderhoudt voor klanten. Het fundament staat, maar er is veel te kiezen en te bouwen. Je ontwerpt de architectuur, workflows en API-koppelingen die het platform aandrijven, en zorgt dat alles schaalt, betrouwbaar is en veilig draait in de cloud.",
        "Je bouwt ook aan onze interne knowledge base die de agents voorziet van de kennis die ze nodig hebben, en je maakt het platform zelf slimmer: waar kan AI de builders ondersteunen? Waar kan het autonoom taken overnemen? Nieuwe AI-tooling evalueren en integreren is onderdeel van je werk, van agent frameworks tot onze eigen tooling. Omdat we een klein team zijn, beslis je mee over de stack, de richting en de product-roadmap."
      ] },
      { heading: "Wie zoeken we?", paragraphs: [
        "Een software engineer met ervaring in Python en minimaal één andere production-ready taal (denk aan C# of Java). Je denkt in systemen en platforms: schaalbaarheid, betrouwbaarheid, security en clean architecture zijn voor jou vanzelfsprekend.",
        "Je werkt aan de forefront van wat er met AI coding tools en agents mogelijk is. Bij Repetive schrijf je geen code met de hand: je plant, stuurt AI agents aan en reviewt het resultaat. Je voelt je thuis in een startup waar je zelf richting geeft aan wat je bouwt, en je vindt het vet om platform-tooling te maken die het hele team sneller en slimmer maakt."
      ] },
      { heading: "Wat we verwachten", bullets: [
        "Sterke ervaring in Python én een tweede production-ready taal (zoals C# of Java)",
        "Cloud-native, full-stack mindset met aandacht voor schaalbaarheid, betrouwbaarheid en security",
        "Ervaring met agentic coding workflows en AI-tooling als onderdeel van je dagelijkse werk",
        "Architectuurgevoel en zin om mee te beslissen over stack, richting en product-roadmap",
        "Bouwersmentaliteit: je vindt het vet om platform-tooling te maken die het hele team versnelt, in plaats van steeds opnieuw het wiel uit te vinden"
      ] },
      { heading: "Waarom Repetive?", paragraphs: [
        "Wat je vandaag bouwt, draait morgen bij het hele team en bij klanten, en jij zorgt dat het ook overmorgen nog overeind staat. Je werkt niet mét AI als experiment, het is je primaire werkwijze. Klein team, veel vrijheid, directe impact: geen ticket-fabriek, maar het fundament van het bedrijf dat jij mee neerzet. We bouwen voor de modellen van de toekomst: wat nu net schuurt, wordt bij de volgende generatie de standaard. Dat vraagt lef om vandaag al te kiezen voor wat morgen normaal is."
      ] },
      { heading: "Wat biedt Repetive jou", bullets: [
        "Salaris: €4.000 – €6.000 bruto per maand o.b.v. ervaring.",
        "We schrijven het wettelijk aantal vakantiedagen op in je contract, maar houden dit niet bij. Je neemt verlof wanneer jij het nodig hebt en wanneer het kan. We geloven ook hier in eigenaarschap.",
        "Natuurlijk hoort een goed pensioen en een moderne mobiliteitsregeling erbij. Daar kun je op bouwen.",
        "Werken bij een AI-first club betekent niet dat het menselijke niet meer belangrijk is. Juist niet! Werken moet vooral leuk zijn! Daarom is er naast grote betrokkenheid op inhoud ook veel ruimte voor persoonlijke verbinding."
      ] },
    ],
    seo: {"description":"Vacature: AI Software Engineer bij Repetive. Bouw mee aan onze Agent-Factory in Python + cloud-native. Tilburg, fulltime, Medior/Senior."},
  },
  {
    slug: "experienced-ai-consultant",
    title: "Experienced AI Consultant",
    blurb: "Schakel tussen DGA en developer. Vertaal bedrijfsambities naar werkende AI agents en zorg dat ze ook daadwerkelijk landen.",
    location: "Hybride",
    locationDetail: "bij klanten of op kantoor",
    type: "Fulltime",
    level: "Medior / Senior",
    salary: "€5.000 – €7.000",
    salaryNote: "bruto, o.b.v. ervaring",
    color: "#F83C72",
    colorAlt: "#8D0D9C",
    href: "vacatures/experienced-ai-consultant.html",
    applyEmail: "arlette@repetive.ai",
    intro: "Bij Repetive bouwen we AI agents die ondernemers de ruimte geven om weer te ondernemen. De markt groeit hard en wij groeien mee. We zoeken een consultant die net zo makkelijk met een DGA over strategie praat als met een developer over API-koppelingen, en die het verschil tussen ‘adviseren’ en ‘zorgen dat het werkt’ in zijn vingers heeft.",
    sections: [
      { heading: "Wat ga je doen?", paragraphs: [
        "Je bent de schakel tussen de bedrijfsdoelen van onze klanten en de AI agents die we voor hen bouwen. Je duikt in bedrijfsprocessen, stelt de juiste vragen aan directies en vertaalt ambities naar een helder functioneel ontwerp. Welke taken kan een AI agent overnemen? Welke systemen moet hij aanspreken? Waar liggen de grenzen? Jij maakt die afwegingen, legt ze vast en begeleidt vervolgens het veranderproces zodat teams ook daadwerkelijk gaan samenwerken met de agents.",
        "Daarnaast ben je sparringpartner voor onze klanten én coach je junior consultants in het team. Omdat we een AI-first bedrijf zijn, is de eerste vraag bij alles wat we doen: hoe kan AI ons hierin helpen? Dat geldt ook voor jouw werk."
      ] },
      { heading: "Wie zoeken we?", paragraphs: [
        "Iemand met 3-5+ jaar ervaring in consultancy, AI/data transformatie of verandermanagement die conceptueel sterk is en complexe ideeën helder kan overbrengen aan directies. Je snapt hoe AI agents werken en kunt meedenken over technische haalbaarheid, zonder zelf de code te schrijven.",
        "Je hebt ervaring met het vertalen van bedrijfsprocessen naar digitale oplossingen en voelt je thuis in een omgeving waar je zelf richting geeft. En misschien wel het belangrijkste: je wordt enthousiast van de snelheid waarmee AI zich ontwikkelt en wilt daar vooraan bij staan."
      ] },
      { heading: "Wat we verwachten", bullets: [
        "3-5+ jaar ervaring in consultancy, AI/data transformatie of verandermanagement",
        "Conceptueel sterk, met de communicatieve flexibiliteit om zowel met directies als developers te schakelen",
        "Affiniteit met de techniek achter AI agents: je hoeft niet zelf te coderen, maar denkt wel mee over haalbaarheid",
        "Ervaring in het vertalen van bedrijfsprocessen naar digitale oplossingen",
        "Zelfsturende en ondernemende mentaliteit: je wacht niet op een briefing, je maakt hem"
      ] },
      { heading: "Waarom Repetive?", paragraphs: [
        "Je werkt aan de frontlinie van AI-transformatie in het MKB. Geen PowerPoint-consultancy, maar oplossingen die morgen draaien bij klanten, en die jij blijft begeleiden zodat ze ook over een jaar nog werken. Je zit aan tafel als ondernemer tussen ondernemers: je voelt de druk van de DGA aan de andere kant en weet dat continuïteit het verschil maakt. Als AI-first bedrijf zit die mentaliteit in alles wat we doen. Je krijgt directe invloed op strategische keuzes en bouwt mee aan een bedrijf dat hard durft te gaan in een markt waarin stilstand het grootste risico is."
      ] },
      { heading: "Wat biedt Repetive jou", bullets: [
        "Salaris: €5.000 – €7.000 bruto per maand o.b.v. ervaring.",
        "We schrijven het wettelijk aantal vakantiedagen op in je contract, maar houden dit niet bij. Je neemt verlof wanneer jij het nodig hebt en wanneer het kan. We geloven ook hier in eigenaarschap.",
        "Natuurlijk hoort een goed pensioen en een moderne mobiliteitsregeling erbij. Daar kun je op bouwen.",
        "Werken bij een AI-first club betekent niet dat het menselijke niet meer belangrijk is. Juist niet! Werken moet vooral leuk zijn! Daarom is er naast grote betrokkenheid op inhoud ook veel ruimte voor persoonlijke verbinding."
      ] },
    ],
    seo: {"description":"Vacature: Experienced AI Consultant bij Repetive. Schakel tussen directies en bouwteams. Hybride, fulltime, Medior/Senior."},
  },
  {
    slug: "marketing-events-specialist",
    title: "Marketing & Events Specialist",
    blurb: "Maak Repetive zichtbaar. Bedenk content en organiseer events die zowel ondernemers als talent naar ons toe trekken.",
    location: "Hybride",
    locationDetail: "kantoor, thuis of bij events",
    type: "Fulltime",
    level: "Medior",
    salary: "€3.500 – €5.000",
    salaryNote: "bruto, o.b.v. ervaring",
    color: "#FFC031",
    colorAlt: "#FB993F",
    href: "vacatures/marketing-events-specialist.html",
    applyEmail: "arlette@repetive.ai",
    intro: "Bij Repetive helpen we MKB-ondernemers om hun bedrijfsvoering slimmer te maken met AI agents. De markt groeit hard en wij willen dat iedereen weet wie we zijn: als partner voor klanten én als werkgever voor talent. Daarom zoeken wij iemand die ons merk zichtbaar maakt en mensen bij elkaar brengt.",
    sections: [
      { heading: "Wat ga je doen?", paragraphs: [
        "Je zorgt dat Repetive zichtbaar is bij de juiste doelgroepen. Dat begint met content: je bedenkt en produceert case stories, social posts en behind-the-scenes updates over het team. Je snapt welke boodschap bij welk kanaal past en hoe je content inzet in flows en funnels die leads opleveren of talent aantrekken. Samen met Carmen bouw je aan de marketing automation pipeline.",
        "Daarnaast organiseer je events waar de juiste mensen samenkomen: roundtables voor ondernemers die willen weten wat AI agents voor hen kunnen betekenen, tech talks voor de mensen die het bouwen, en borrels waar je beide groepen mixt. Elk event heeft een doel en jij kiest het format dat daarbij past. Omdat we een AI-first bedrijf zijn, is de eerste vraag bij alles: hoe kan AI ons hierin helpen? Dat geldt ook voor jouw werk."
      ] },
      { heading: "Wie zoeken we?", paragraphs: [
        "Iemand met ervaring in content marketing en events die het leuk vindt om iets vanaf de grond op te bouwen. Of die ervaring uit marketing, communicatie, eventmanagement of een andere creatief-operationele rol komt, maakt niet uit, zolang je snapt hoe je campagnes, funnels en events inzet om doelgroepen te bereiken.",
        "Je weet hoe je verschillende doelgroepen aanspreekt: een DGA die overweegt om AI in te zetten bereik je anders dan een developer die overweegt bij ons te komen werken. Je denkt in formats en flows, niet alleen in losse posts."
      ] },
      { heading: "Wat we verwachten", bullets: [
        "Ervaring in content marketing: campagnes, social media, funnels",
        "Ervaring met het organiseren van zakelijke events, meetups of community activiteiten",
        "Affiniteit met marketing automation en analytics: je snapt hoe flows werken",
        "Creatief en ondernemend: je bedenkt formats, niet alleen content",
        "Hands-on mentaliteit: je wacht niet tot iemand het voor je regelt, je regelt het zelf"
      ] },
      { heading: "Waarom Repetive?", paragraphs: [
        "Je bouwt het merk van een snelgroeiend AI-bedrijf vanaf de basis op. Dat betekent veel vrijheid om eigen events en formats te ontwikkelen, en een team dat marketing ziet als strategisch, niet als kostenpost. Je werkt dagelijks met AI in je eigen werk en zit dicht op de founders en het team. Elke week is anders, en dat is precies het punt, want stilstand is in deze markt het grootste risico."
      ] },
      { heading: "Wat biedt Repetive jou", bullets: [
        "Salaris: €3.500 – €5.000 bruto per maand o.b.v. ervaring.",
        "We schrijven het wettelijk aantal vakantiedagen op in je contract, maar houden dit niet bij. Je neemt verlof wanneer jij het nodig hebt en wanneer het kan. We geloven ook hier in eigenaarschap.",
        "Natuurlijk hoort een goed pensioen en een moderne mobiliteitsregeling erbij. Daar kun je op bouwen.",
        "Werken bij een AI-first club betekent niet dat het menselijke niet meer belangrijk is. Juist niet! Werken moet vooral leuk zijn! Daarom is er naast grote betrokkenheid op inhoud ook veel ruimte voor persoonlijke verbinding."
      ] },
    ],
    seo: {"description":"Vacature: Marketing & Events Specialist bij Repetive. Content, campagnes, funnels en events. Hybride, fulltime, Medior."},
  }
];

// ---- Lookup ---------------------------------------------------------------
function vacGetBySlug(slug) {
  const found = (VACANCIES || []).find(v => v.slug === slug);
  if (!found) {
    console.warn(`[vacatures] No vacancy found for slug "${slug}". Add it to VACANCIES in vacatures_data.jsx.`);
    return null;
  }
  return found;
}

// ---- SEO injection · runs on detail-page mount ----------------------------
function vacInjectSeo(vac) {
  if (!vac) return;
  const seo = vac.seo || {};
  const seoTitle = seo.title || `Vacature: ${vac.title}`;
  const description = seo.description || vac.blurb || '';
  const ogTitle = seo.ogTitle || seoTitle;
  const ogDescription = seo.ogDescription || description;
  const keywords = seo.keywords || `vacature, ${vac.title}, Repetive, AI, MKB`;

  document.title = `${seoTitle} · Repetive`;

  const head = document.head;
  const upsertMeta = (attrs) => {
    const key = attrs.name ? `name="${attrs.name}"` : `property="${attrs.property}"`;
    let el = head.querySelector(`meta[${key}]`);
    if (!el) {
      el = document.createElement('meta');
      Object.entries(attrs).forEach(([k, v]) => { if (k !== 'content') el.setAttribute(k, v); });
      head.appendChild(el);
    }
    el.setAttribute('content', attrs.content);
  };

  upsertMeta({ name: 'description', content: description });
  upsertMeta({ name: 'keywords', content: keywords });
  upsertMeta({ property: 'og:type', content: 'website' });
  upsertMeta({ property: 'og:title', content: ogTitle });
  upsertMeta({ property: 'og:description', content: ogDescription });
  upsertMeta({ property: 'og:site_name', content: 'Repetive · Vacatures' });
  upsertMeta({ name: 'twitter:card', content: 'summary_large_image' });
  upsertMeta({ name: 'twitter:title', content: ogTitle });
  upsertMeta({ name: 'twitter:description', content: ogDescription });

  // JSON-LD JobPosting · idempotent
  head.querySelectorAll('script[data-vac-ld="jobposting"]').forEach(el => el.remove());
  const ld = document.createElement('script');
  ld.type = 'application/ld+json';
  ld.dataset.vacLd = 'jobposting';
  ld.textContent = JSON.stringify({
    '@context': 'https://schema.org',
    '@type': 'JobPosting',
    title: vac.title,
    description: description,
    hiringOrganization: { '@type': 'Organization', name: 'Repetive', sameAs: 'https://repetive.ai' },
    jobLocation: { '@type': 'Place', address: { '@type': 'PostalAddress', addressLocality: 'Tilburg', addressCountry: 'NL' } },
    employmentType: 'FULL_TIME',
    inLanguage: 'nl',
    datePosted: new Date().toISOString().slice(0, 10),
  });
  head.appendChild(ld);
}

Object.assign(window, { VACANCIES, vacGetBySlug, vacInjectSeo });
