> ## Documentation Index
> Fetch the complete documentation index at: https://developer.upsun.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Artificial Intelligence

export const ShowMore = ({children, className = '', id = 'posts', btnClassName = ''}) => {
  const hash = 'show-all-' + id;
  const [expanded, setExpanded] = useState(false);
  useEffect(() => {
    const check = () => {
      if (window.location.hash === '#' + hash) {
        setExpanded(true);
      }
    };
    check();
    window.addEventListener('hashchange', check);
    return () => window.removeEventListener('hashchange', check);
  }, [hash]);
  const wrapClass = expanded ? className : className + ' blog-paginated';
  return <div>
      <div className={wrapClass}>
        {children}
      </div>
      {!expanded && <div className={btnClassName} style={{
    marginTop: '2rem',
    textAlign: 'center'
  }}>
          <a href={'#' + hash} style={{
    display: 'inline-flex',
    alignItems: 'center',
    gap: '0.5rem',
    padding: '0.75rem 1.5rem',
    borderRadius: '9999px',
    border: '1px solid #e5e7eb',
    fontSize: '0.875rem',
    fontWeight: 500,
    color: '#374151',
    textDecoration: 'none'
  }}>
            Show all posts ▾
          </a>
        </div>}
    </div>;
};

<ShowMore id="ai-articles" className="blog-card-grid">
  <a href="/posts/ai/aiweekly-2026-04-27" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/aiweekly-2026-04-27/aiweekly.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/aiweekly-2026-04-27/aiweekly.webp" alt="AI Weekly Review - Apr. 27th 2026" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`ai` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        ai
                      </span>
                    )}

        <span className="text-xs text-subtle">Monday, April 27th 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">AI Weekly Review - Apr. 27th 2026</h3>
      <p className="blog-card-desc">A press, Youtube and Github review of everything AI</p>
    </div>
  </a>

  <a href="/posts/ai/aiweekly-2026-04-13" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/aiweekly-2026-04-13/aiweekly.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/aiweekly-2026-04-13/aiweekly.webp" alt="AI Weekly Review - Apr. 13th 2026" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`ai` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        ai
                      </span>
                    )}

        <span className="text-xs text-subtle">Monday, April 13th 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">AI Weekly Review - Apr. 13th 2026</h3>
      <p className="blog-card-desc">A press, Youtube and Github review of everything AI</p>
    </div>
  </a>

  <a href="/posts/ai/aiweekly-2026-04-07" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/aiweekly-2026-04-07/aiweekly.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/aiweekly-2026-04-07/aiweekly.webp" alt="AI Weekly Review - Apr. 7th 2026" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`ai` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        ai
                      </span>
                    )}

        <span className="text-xs text-subtle">Tuesday, April 7th 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">AI Weekly Review - Apr. 7th 2026</h3>
      <p className="blog-card-desc">A press, Youtube and Github review of everything AI</p>
    </div>
  </a>

  <a href="/posts/discussions/why-ai-agents-need-cloud-sandboxes" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/discussions/why-ai-agents-need-cloud-sandboxes/why-ai-agents-need-cloud-sandboxes.png` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/discussions/why-ai-agents-need-cloud-sandboxes/why-ai-agents-need-cloud-sandboxes.png" alt="Why AI agents need cloud sandboxes" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`discussions` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        discussions
                      </span>
                    )}

        <span className="text-xs text-subtle">Tuesday, March 31st 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Why AI agents need cloud sandboxes</h3>
      <p className="blog-card-desc">AI agents run real commands on real systems. Learn why cloud sandboxes with production data beat local isolation for safe AI agent workflows.</p>
    </div>
  </a>

  <a href="/posts/ai/aiweekly-2026-03-30" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/aiweekly-2026-03-30/aiweekly.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/aiweekly-2026-03-30/aiweekly.webp" alt="AI Weekly Review - Mar. 30th 2026" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`ai` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        ai
                      </span>
                    )}

        <span className="text-xs text-subtle">Monday, March 30th 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">AI Weekly Review - Mar. 30th 2026</h3>
      <p className="blog-card-desc">A press, Youtube and Github review of everything AI</p>
    </div>
  </a>

  <a href="/posts/ai/stuck-on-localhost" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/stuck-on-localhost/stuck-on-localhost.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/stuck-on-localhost/stuck-on-localhost.webp" alt="Your agents are stuck on localhost. Upsun isn't." className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`ai` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        ai
                      </span>
                    )}

        <span className="text-xs text-subtle">Thursday, March 26th 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Your agents are stuck on localhost. Upsun isn't.</h3>
      <p className="blog-card-desc">Coding agents made engineers faster, but cycle time hasn't budged. Background agents running on GitHub, GitLab, and Claude Code can break the bottleneck by producing PRs that Upsun deploys and validates automatically. A practical guide to setting it up with real YAML configs, infrastructure-as-code workflows, and preview environments.</p>
    </div>
  </a>

  <a href="/posts/ai/aiweekly-2026-03-23" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/aiweekly-2026-03-23/aiweekly.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/aiweekly-2026-03-23/aiweekly.webp" alt="AI Weekly Review - Mar. 23rd 2026" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`ai` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        ai
                      </span>
                    )}

        <span className="text-xs text-subtle">Monday, March 23rd 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">AI Weekly Review - Mar. 23rd 2026</h3>
      <p className="blog-card-desc">A press, Youtube and Github review of everything AI</p>
    </div>
  </a>

  <a href="/posts/ai/aiweekly-2026-03-16" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/aiweekly-2026-03-16/aiweekly.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/aiweekly-2026-03-16/aiweekly.webp" alt="AI Weekly Review - Mar. 16th 2026" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`ai` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        ai
                      </span>
                    )}

        <span className="text-xs text-subtle">Monday, March 16th 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">AI Weekly Review - Mar. 16th 2026</h3>
      <p className="blog-card-desc">A press, Youtube and Github review of everything AI</p>
    </div>
  </a>

  <a href="/posts/ai/aiweekly-2026-03-09" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/aiweekly-2026-03-09/aiweekly.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/aiweekly-2026-03-09/aiweekly.webp" alt="AI Weekly Review - Mar. 9th 2026" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`ai` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        ai
                      </span>
                    )}

        <span className="text-xs text-subtle">Monday, March 9th 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">AI Weekly Review - Mar. 9th 2026</h3>
      <p className="blog-card-desc">A press, Youtube and Github review of everything AI</p>
    </div>
  </a>

  <a href="/posts/discussions/how-product-managers-use-preview-environments-and-ai-to-prototype" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/discussions/how-product-managers-use-preview-environments-and-ai-to-prototype/how-product-managers-use-preview-environments-and-ai-to-prototype.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/discussions/how-product-managers-use-preview-environments-and-ai-to-prototype/how-product-managers-use-preview-environments-and-ai-to-prototype.webp" alt="How product managers use preview environments and AI to prototype" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`discussions` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        discussions
                      </span>
                    )}

        <span className="text-xs text-subtle">Thursday, March 5th 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">How product managers use preview environments and AI to prototype</h3>
      <p className="blog-card-desc">Learn how product managers at Upsun use AI coding assistants and preview environments to prototype feature ideas, validate concepts with real data, and share interactive demos with stakeholders.</p>
    </div>
  </a>

  <a href="/posts/ai/aiweekly-2026-03-02" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/aiweekly-2026-03-02/aiweekly.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/aiweekly-2026-03-02/aiweekly.webp" alt="AI Weekly Review - Mar. 2nd 2026" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`ai` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        ai
                      </span>
                    )}

        <span className="text-xs text-subtle">Monday, March 2nd 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">AI Weekly Review - Mar. 2nd 2026</h3>
      <p className="blog-card-desc">A press, Youtube and Github review of everything AI</p>
    </div>
  </a>

  <a href="/posts/discussions/cpu-vs-gpu" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/discussions/cpu-vs-gpu/cpu-vs-gpu.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/discussions/cpu-vs-gpu/cpu-vs-gpu.webp" alt="CPU vs GPU for AI: most AI applications don't need GPUs" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`discussions` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        discussions
                      </span>
                    )}

        <span className="text-xs text-subtle">Thursday, February 26th 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">CPU vs GPU for AI: most AI applications don't need GPUs</h3>
      <p className="blog-card-desc">How to build and deploy an Angular application on Upsun.</p>
    </div>
  </a>

  <a href="/posts/ai/aiweekly-2026-02-23" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/aiweekly-2026-02-23/aiweekly.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/aiweekly-2026-02-23/aiweekly.webp" alt="AI Weekly Review - Feb. 23th 2026" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`ai` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        ai
                      </span>
                    )}

        <span className="text-xs text-subtle">Monday, February 23rd 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">AI Weekly Review - Feb. 23th 2026</h3>
      <p className="blog-card-desc">A press, Youtube and Github review of everything AI</p>
    </div>
  </a>

  <a href="/posts/ai/agents-md-less-is-more" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/agents-md-less-is-more/agents-md-less-is-more.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/agents-md-less-is-more/agents-md-less-is-more.webp" alt="The research is in: your AGENTS.md is probably too long" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`ai` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        ai
                      </span>
                    )}

        <span className="text-xs text-subtle">Monday, February 23rd 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">The research is in: your AGENTS.md is probably too long</h3>
      <p className="blog-card-desc">Research shows comprehensive AGENTS.md files actually hurt coding agent performance. Learn why less is more and how to build context files that work.</p>
    </div>
  </a>

  <a href="/posts/ai/aiweekly-2026-02-17" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/aiweekly-2026-02-17/aiweekly.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/aiweekly-2026-02-17/aiweekly.webp" alt="AI Weekly Review - Feb. 17th 2026" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`ai` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        ai
                      </span>
                    )}

        <span className="text-xs text-subtle">Tuesday, February 17th 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">AI Weekly Review - Feb. 17th 2026</h3>
      <p className="blog-card-desc">A press, Youtube and Github review of everything AI</p>
    </div>
  </a>

  <a href="/posts/ai/making-coding-agents-reliable" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/making-coding-agents-reliable/making-coding-agents-reliable.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/making-coding-agents-reliable/making-coding-agents-reliable.webp" alt="Making coding agents (Claude Code, Codex, etc.) reliable" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`ai` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        ai
                      </span>
                    )}

        <span className="text-xs text-subtle">Tuesday, February 17th 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Making coding agents (Claude Code, Codex, etc.) reliable</h3>
      <p className="blog-card-desc">The bottleneck for AI coding agents isn't model capability. It's your verification infrastructure. Here's how to fix that.</p>
    </div>
  </a>

  <a href="/posts/ai/git-worktrees-for-parallel-ai-coding-agents" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/git-worktrees-for-parallel-ai-coding-agents/git-worktrees-for-parallel-ai-coding-agents.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/git-worktrees-for-parallel-ai-coding-agents/git-worktrees-for-parallel-ai-coding-agents.webp" alt="Git worktrees for parallel AI coding agents" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`ai` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        ai
                      </span>
                    )}

        <span className="text-xs text-subtle">Wednesday, February 11th 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Git worktrees for parallel AI coding agents</h3>
      <p className="blog-card-desc">Learn how git worktrees enable parallel AI agent workflows, their limitations, and what an ideal orchestration tool needs.</p>
    </div>
  </a>

  <a href="/posts/ai/will-ai-make-software-companies-worthless" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/will-ai-make-software-companies-worthless/thumbnail.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/will-ai-make-software-companies-worthless/thumbnail.webp" alt="Will AI make software companies worthless?" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`ai` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        ai
                      </span>
                    )}

        <span className="text-xs text-subtle">Friday, January 30th 2026</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Will AI make software companies worthless?</h3>
      <p className="blog-card-desc">If anyone can build software with AI, do software companies still matter? The answer is more nuanced than you might think.</p>
    </div>
  </a>

  <a href="/posts/discussions/whatsun-efficient-code-analysis" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/discussions/whatsun-efficient-code-analysis/whatsun.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/discussions/whatsun-efficient-code-analysis/whatsun.webp" alt="Efficient code analysis for LLMs" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`discussions` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        discussions
                      </span>
                    )}

        <span className="text-xs text-subtle">Thursday, December 18th 2025</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Efficient code analysis for LLMs</h3>
      <p className="blog-card-desc">Learn how Whatsun generates concise codebase summaries to improve the performance and accuracy of AI features.</p>
    </div>
  </a>

  <a href="/posts/discussions/building-ai-feature-necessary-evals" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/discussions/building-ai-feature-necessary-evals/ai-necessary-evals.svg` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/discussions/building-ai-feature-necessary-evals/ai-necessary-evals.svg" alt="Building an AI feature: The necessary evals" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`discussions` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        discussions
                      </span>
                    )}

        <span className="text-xs text-subtle">Thursday, December 4th 2025</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Building an AI feature: The necessary evals</h3>
      <p className="blog-card-desc">What we learned building an AI feature: evaluations take most of the time, and your existing tools are enough.</p>
    </div>
  </a>

  <a href="/posts/ai/upsun-mcp-announcement" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/ai/upsun-mcp-announcement/upsun-mcp-announcement.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/ai/upsun-mcp-announcement/upsun-mcp-announcement.webp" alt="Introducing the Upsun MCP server: bring Upsun into your LLMs" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`featured` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        featured
                      </span>
                    )}

        <span className="text-xs text-subtle">Monday, September 22nd 2025</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Introducing the Upsun MCP server: bring Upsun into your LLMs</h3>
      <p className="blog-card-desc">Manage your Upsun infrastructure directly through AI assistants with our new Model Context Protocol server - now in beta at mcp.upsun.com</p>
    </div>
  </a>

  <a href="/posts/use-cases/n8n-saved-my-life" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/use-cases/n8n-saved-my-life/social-media.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/use-cases/n8n-saved-my-life/social-media.webp" alt="How n8n saved our Advocacy impact on Social Media!" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`featured` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        featured
                      </span>
                    )}

        <span className="text-xs text-subtle">Thursday, July 3rd 2025</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">How n8n saved our Advocacy impact on Social Media!</h3>
      <p className="blog-card-desc">Learn how n8n workflows improve internal communication and amplify our Advocacy social media impact.</p>
    </div>
  </a>

  <a href="/posts/releases/llms-introduction" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/releases/llms-introduction/llms-introduction.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/releases/llms-introduction/llms-introduction.webp" alt="Upsun and Platform.sh Docs are now llms.txt compatible!" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`featured` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        featured
                      </span>
                    )}

        <span className="text-xs text-subtle">Friday, February 14th 2025</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Upsun and Platform.sh Docs are now llms.txt compatible!</h3>
      <p className="blog-card-desc">We’re thrilled to announce that both [Upsun Documentation](https://docs.upsun.com) and [Platform.sh Documentation](https://docs.platform.sh) are now fully compatible with [llms.txt proposed standard](https://llmstxt.org/)!</p>
    </div>
  </a>

  <a href="/posts/how-tos/install-pandoc-on-upsun" className="blog-card group rounded-xl bg-card border-theme card-hover shadow-sm hover:shadow-md transition-all overflow-hidden flex flex-col">
    {`/images/posts/how-tos/install-pandoc-on-upsun/pandoc.webp` !== '' && (
          <div className="blog-card-img-wrap">
            <img src="/images/posts/how-tos/install-pandoc-on-upsun/pandoc.webp" alt="Up(sun) and ready with Pandoc" className="blog-card-img" />
          </div>
        )}

    <div className="blog-card-body">
      <div className="flex items-center gap-2">
        {`how-tos` !== '' && (
                      <span className="text-xs font-semibold uppercase tracking-wider px-2 py-0.5 rounded-md bg-accent-badge border border-accent-soft text-accent">
                        how-tos
                      </span>
                    )}

        <span className="text-xs text-subtle">Wednesday, February 12th 2025</span>
      </div>

      <h3 className="blog-card-title group-hover:text-accent transition-colors">Up(sun) and ready with Pandoc</h3>
      <p className="blog-card-desc">With the recent growth in enthusiasm for AI assistants, you may be looking for how these assistants can provide technical information about your product.</p>
    </div>
  </a>
</ShowMore>
