// Blog data — index entries + full post bodies for the featured post.

const BLOG_POSTS = [
  {
    slug: 'ai-coworker-not-chatbot',
    title: 'Why &ldquo;AI coworker&rdquo; is not a marketing word',
    excerpt: 'Chatbots answer questions. Coworkers ship work. The line between them isn\u2019t branding — it\u2019s memory, action, and accountability.',
    category: 'Philosophy',
    categoryTint: 'var(--t-design)',
    date: 'May 18, 2026',
    read: '6 min',
    author: { name: 'Ana', role: 'Co-founder', avatar: 'public/avatars/anastasia.webp' },
    cover: { tint1: 'var(--accent-tint-45)', tint2: 'rgba(168,85,247,0.30)' },
    featured: true,
  },
  {
    slug: 'living-in-the-group-chat',
    title: 'Why we put the bot in the group chat (not in another app)',
    excerpt: 'Most AI products start by asking for a new tab in your day. Octodus does the opposite. Here\u2019s what we learned from the first 12 months of teams using it.',
    category: 'Product',
    categoryTint: 'var(--t-code)',
    date: 'May 2, 2026',
    read: '8 min',
    author: { name: 'Dan', role: 'CTO', avatar: 'public/avatars/denis.webp' },
    cover: { tint1: 'rgba(96,165,250,0.45)', tint2: 'var(--accent-tint-30)' },
  },
  {
    slug: 'self-healing-3am',
    title: 'The morning we found a 3 AM bug, fixed, with receipts',
    excerpt: 'A failing disk filled up overnight. By the time the on-call engineer opened Telegram, the cleanup was already deployed and audited.',
    category: 'Engineering',
    categoryTint: 'var(--t-auto)',
    date: 'Apr 21, 2026',
    read: '5 min',
    author: { name: 'Dan', role: 'CTO', avatar: 'public/avatars/denis.webp' },
    cover: { tint1: 'var(--accent-tint-50)', tint2: 'rgba(251,113,133,0.25)' },
  },
  {
    slug: 'agencies-double-output',
    title: 'How an agency doubled output without doubling hires',
    excerpt: 'Ten concurrent clients, one Octodus, two months. We sat down with Elena and unpacked exactly which workflows broke first and which kept scaling.',
    category: 'Case study',
    categoryTint: 'var(--t-research)',
    date: 'Apr 8, 2026',
    read: '11 min',
    author: { name: 'Elena', role: 'Agency owner', avatar: 'public/avatars/elena.webp' },
    cover: { tint1: 'rgba(251,191,36,0.4)', tint2: 'rgba(251,113,133,0.25)' },
  },
  {
    slug: 'rules-not-prompts',
    title: 'Rules, not prompts: why we stopped writing system prompts',
    excerpt: 'Prompt engineering is a workaround. Real teammates learn rules once. Here\u2019s the architecture we ended up with after a year of trial and error.',
    category: 'Architecture',
    categoryTint: 'var(--t-plan)',
    date: 'Mar 26, 2026',
    read: '9 min',
    author: { name: 'Ana', role: 'Co-founder', avatar: 'public/avatars/anastasia.webp' },
    cover: { tint1: 'rgba(192,132,252,0.45)', tint2: 'var(--accent-tint-25)' },
  },
  {
    slug: 'voice-notes-real-input',
    title: 'Voice notes are the most underrated input',
    excerpt: 'A 47-second voice note turned into 112 dev-ready prompts. We dug into the chat logs to figure out why voice keeps beating typed prompts on quality.',
    category: 'Field notes',
    categoryTint: 'var(--t-sales)',
    date: 'Mar 12, 2026',
    read: '4 min',
    author: { name: 'Max', role: 'Solo founder', avatar: 'public/avatars/michael.webp' },
    cover: { tint1: 'rgba(251,113,133,0.4)', tint2: 'rgba(192,132,252,0.3)' },
  },
  {
    slug: 'octodus-numbers-q1',
    title: 'Octodus by the numbers · Q1 2026',
    excerpt: 'Actions shipped, average response time, the funniest mistakes, and where memory still gets confused. Quarterly transparency report.',
    category: 'Transparency',
    categoryTint: 'var(--t-design)',
    date: 'Feb 28, 2026',
    read: '7 min',
    author: { name: 'Octodus team', role: 'Team', avatar: 'public/avatars/michael.webp' },
    cover: { tint1: 'var(--accent-tint-40)', tint2: 'var(--accent-tint-25)' },
  },
];

// Full body for the featured post (others can have their own files later)
const FEATURED_BODY = [
  {
    kind: 'lead',
    text: 'For most of 2024 we tried to call Octodus an "AI assistant." It tested fine. It also lied about what we built.',
  },
  {
    kind: 'p',
    text: 'An assistant is the person who hands you the pen and waits. They schedule. They forward. They produce a draft for you to fix. They never ship without being told to, and they never decide whether to ship at all. That\u2019s a useful job — humans do it well, software has done it for thirty years — but it\u2019s not what teams kept reporting back to us.',
  },
  {
    kind: 'p',
    text: 'Octodus, in those same threads, was the one who decided the pageant banner went to print, which 47 of 110 prompts shipped to the dev team, and that the disk cleanup ran at 3:14 AM without waking anyone up. Those aren\u2019t assistant moves. Those are coworker moves.',
  },
  {
    kind: 'h2',
    text: 'Three things a coworker does that an assistant doesn\u2019t',
  },
  {
    kind: 'list',
    items: [
      ['Remembers the team\u2019s rules.', 'Not a system prompt — actual rules learned from being told once. "Draft, wait for OK, then publish." We never get asked again.'],
      ['Takes action, not notes.', 'A coworker files the task themselves. They run the script. They post the receipts. They don\u2019t hand you the script in a chat bubble.'],
      ['Owns the outcome.', 'If the cleanup ran but the disk is still full, that\u2019s on the coworker to figure out. Octodus posts the before-and-after — and re-runs if it has to.'],
    ],
  },
  {
    kind: 'pullquote',
    text: 'A coworker is judged by the work that got shipped — not the work that got described.',
  },
  {
    kind: 'h2',
    text: 'Why the language matters',
  },
  {
    kind: 'p',
    text: 'It changes how you deploy it. If Octodus is an "assistant," you ask it for a draft, you read the draft, you copy-paste the draft, you ship the draft. If Octodus is a coworker, you say "this is going out at 17:00 — make it happen" and you go to lunch. The product is the same — the contract is different.',
  },
  {
    kind: 'p',
    text: 'It also changes the bar. Coworkers can be wrong. Coworkers can be told off. Coworkers don\u2019t get a free pass for hallucinating because they\u2019re "just AI." If we ship a "coworker," we are accepting a higher accountability than we would as an assistant. That\u2019s on purpose.',
  },
  {
    kind: 'h2',
    text: 'What this means for what we build next',
  },
  {
    kind: 'p',
    text: 'Two things. First: memory and rules get more investment, not less — that\u2019s the substrate that lets a coworker stay accountable across days, not just messages. Second: every new capability we ship is now scored against a single question — "could a human teammate own this end to end?" If yes, Octodus will too. If no, we don\u2019t ship the capability yet.',
  },
  {
    kind: 'p',
    text: 'We\u2019ll see how the language ages. But after a year of running this experiment in production threads with several thousand teams, "AI coworker" has stayed honest — and that\u2019s a higher bar than most marketing language clears.',
  },
];

Object.assign(window, { BLOG_POSTS, FEATURED_BODY });
