---
title: "Blog // Field Notes, Page 6 · FoundrySoft"
description: "Engineering notes from senior practitioners on generative AI, retrieval systems, and the real work of shipping LLM-powered software to production."
image: "https://foundrysoft.co/api/og?type=page&title=Engineering+intelligent+software&st=Production-grade+software+and+AI+systems+for+teams+who+need+more+than+another+demo."
url: "https://foundrysoft.co/blog/page/6"
---

Field Notes, 127 Articles

# Notes from the foundry

Engineering essays on generative AI, retrieval systems, and what it takes to ship intelligent software to production.

[101 Tutorial // Frontend AI Build a Streaming AI Chat UI with the Vercel AI SDK 2026-06-21 →](https://foundrysoft.co/blog/streaming-ai-chat-vercel-ai-sdk) [102 Tutorial // Agents Build a Multi-File Refactor Agent with GPT-5.5 2026-06-20 →](https://foundrysoft.co/blog/multi-file-refactor-agent-gpt-5-5) [103 Tutorial // Document AI Build a PDF Data Extraction Pipeline with an LLM 2026-06-20 →](https://foundrysoft.co/blog/pdf-data-extraction-llm-python) [104 Tutorial // DevTools Spin Up Sandboxed Subagents with the Antigravity CLI 2026-06-19 →](https://foundrysoft.co/blog/antigravity-cli-subagents) [105 Tutorial // MCP Build an MCP Server to Connect Claude to Your Database 2026-06-19 →](https://foundrysoft.co/blog/build-mcp-server-claude-database) [106 Tutorial // Infrastructure Self-Host an Open-Weight Coding LLM with vLLM 2026-06-18 →](https://foundrysoft.co/blog/self-host-coding-llm-vllm) [107 Tutorial // Search Build a Semantic Search Engine with Embeddings and Qdrant 2026-06-18 →](https://foundrysoft.co/blog/semantic-search-embeddings-qdrant) [108 Engineering // LLMs Shipping Generative AI Features Without Breaking Production 2026-06-18 →](https://foundrysoft.co/blog/shipping-generative-ai-features) [109 Tutorial // Voice AI Build an AI Voice Agent with Twilio and a Realtime Model 2026-06-17 →](https://foundrysoft.co/blog/ai-voice-agent-twilio-realtime) [110 Tutorial // MCP How to Build an OAuth-Secured MCP Server (TypeScript Tutorial) 2026-06-17 →](https://foundrysoft.co/blog/oauth-secured-mcp-server) [111 Tutorial // Workflows Build a Durable Multi-Step Workflow with Claude Opus 4.8 2026-06-16 →](https://foundrysoft.co/blog/durable-workflow-opus-4-8) [112 Tutorial // Evals Add an Eval Harness to Your LLM App 2026-06-16 →](https://foundrysoft.co/blog/llm-eval-harness-typescript) [113 Tutorial // DevTools Build a Code Completion Backend with Codestral 2026-06-15 →](https://foundrysoft.co/blog/code-completion-backend-codestral) [114 Tutorial // Agents Build a Multi-Agent Workflow with LangGraph 2026-06-15 →](https://foundrysoft.co/blog/multi-agent-workflow-langgraph) [115 Tutorial // DevTools Build an AI Code Review Bot for Your Pull Requests 2026-06-14 →](https://foundrysoft.co/blog/ai-code-review-bot-claude) [116 AI // Retrieval RAG Is Not a Silver Bullet · It's a Retrieval Problem 2026-05-29 →](https://foundrysoft.co/blog/rag-is-not-a-silver-bullet) [117 Insights // Hiring How to Evaluate an AI Development Partner 2026-05-22 →](https://foundrysoft.co/blog/how-to-evaluate-ai-development-partner) [118 Insights // Architecture Vendor Lock-In with LLMs: How to Keep Providers Swappable 2026-05-15 →](https://foundrysoft.co/blog/avoid-llm-vendor-lock-in) [119 Insights // Cost Cutting LLM Cost 50% Without Wrecking Quality 2026-05-08 →](https://foundrysoft.co/blog/cut-llm-cost-without-wrecking-quality) [120 Insights // Cost What It Really Costs to Run an LLM Feature in Production 2026-05-01 →](https://foundrysoft.co/blog/real-cost-of-llm-feature-in-production)

[‹ Prev](https://foundrysoft.co/blog/page/5) [1](https://foundrysoft.co/blog) [2](https://foundrysoft.co/blog/page/2) [3](https://foundrysoft.co/blog/page/3) [4](https://foundrysoft.co/blog/page/4) [5](https://foundrysoft.co/blog/page/5) 6 [7](https://foundrysoft.co/blog/page/7) [Next ›](https://foundrysoft.co/blog/page/7)

```json
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "FoundrySoft",
  "url": "https://foundrysoft.co",
  "logo": "https://foundrysoft.co/logo.svg",
  "description": "FoundrySoft builds production-grade software and AI systems for US companies, from an India-based team of senior engineers.",
  "sameAs": [
    "https://github.com/foundrysofthq",
    "https://www.linkedin.com/company/foundrysoft",
    "https://www.instagram.com/foundrysoft/"
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "FoundrySoft",
  "url": "https://foundrysoft.co"
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "Blog",
  "name": "FoundrySoft Blog",
  "url": "https://foundrysoft.co/blog/page/6",
  "blogPost": [
    {
      "@type": "BlogPosting",
      "headline": "Build a Streaming AI Chat UI with the Vercel AI SDK",
      "url": "https://foundrysoft.co/blog/streaming-ai-chat-vercel-ai-sdk",
      "datePublished": "2026-06-21"
    },
    {
      "@type": "BlogPosting",
      "headline": "Build a Multi-File Refactor Agent with GPT-5.5",
      "url": "https://foundrysoft.co/blog/multi-file-refactor-agent-gpt-5-5",
      "datePublished": "2026-06-20"
    },
    {
      "@type": "BlogPosting",
      "headline": "Build a PDF Data Extraction Pipeline with an LLM",
      "url": "https://foundrysoft.co/blog/pdf-data-extraction-llm-python",
      "datePublished": "2026-06-20"
    },
    {
      "@type": "BlogPosting",
      "headline": "Spin Up Sandboxed Subagents with the Antigravity CLI",
      "url": "https://foundrysoft.co/blog/antigravity-cli-subagents",
      "datePublished": "2026-06-19"
    },
    {
      "@type": "BlogPosting",
      "headline": "Build an MCP Server to Connect Claude to Your Database",
      "url": "https://foundrysoft.co/blog/build-mcp-server-claude-database",
      "datePublished": "2026-06-19"
    },
    {
      "@type": "BlogPosting",
      "headline": "Self-Host an Open-Weight Coding LLM with vLLM",
      "url": "https://foundrysoft.co/blog/self-host-coding-llm-vllm",
      "datePublished": "2026-06-18"
    },
    {
      "@type": "BlogPosting",
      "headline": "Build a Semantic Search Engine with Embeddings and Qdrant",
      "url": "https://foundrysoft.co/blog/semantic-search-embeddings-qdrant",
      "datePublished": "2026-06-18"
    },
    {
      "@type": "BlogPosting",
      "headline": "Shipping Generative AI Features Without Breaking Production",
      "url": "https://foundrysoft.co/blog/shipping-generative-ai-features",
      "datePublished": "2026-06-18"
    },
    {
      "@type": "BlogPosting",
      "headline": "Build an AI Voice Agent with Twilio and a Realtime Model",
      "url": "https://foundrysoft.co/blog/ai-voice-agent-twilio-realtime",
      "datePublished": "2026-06-17"
    },
    {
      "@type": "BlogPosting",
      "headline": "How to Build an OAuth-Secured MCP Server (TypeScript Tutorial)",
      "url": "https://foundrysoft.co/blog/oauth-secured-mcp-server",
      "datePublished": "2026-06-17"
    },
    {
      "@type": "BlogPosting",
      "headline": "Build a Durable Multi-Step Workflow with Claude Opus 4.8",
      "url": "https://foundrysoft.co/blog/durable-workflow-opus-4-8",
      "datePublished": "2026-06-16"
    },
    {
      "@type": "BlogPosting",
      "headline": "Add an Eval Harness to Your LLM App",
      "url": "https://foundrysoft.co/blog/llm-eval-harness-typescript",
      "datePublished": "2026-06-16"
    },
    {
      "@type": "BlogPosting",
      "headline": "Build a Code Completion Backend with Codestral",
      "url": "https://foundrysoft.co/blog/code-completion-backend-codestral",
      "datePublished": "2026-06-15"
    },
    {
      "@type": "BlogPosting",
      "headline": "Build a Multi-Agent Workflow with LangGraph",
      "url": "https://foundrysoft.co/blog/multi-agent-workflow-langgraph",
      "datePublished": "2026-06-15"
    },
    {
      "@type": "BlogPosting",
      "headline": "Build an AI Code Review Bot for Your Pull Requests",
      "url": "https://foundrysoft.co/blog/ai-code-review-bot-claude",
      "datePublished": "2026-06-14"
    },
    {
      "@type": "BlogPosting",
      "headline": "RAG Is Not a Silver Bullet · It's a Retrieval Problem",
      "url": "https://foundrysoft.co/blog/rag-is-not-a-silver-bullet",
      "datePublished": "2026-05-29"
    },
    {
      "@type": "BlogPosting",
      "headline": "How to Evaluate an AI Development Partner",
      "url": "https://foundrysoft.co/blog/how-to-evaluate-ai-development-partner",
      "datePublished": "2026-05-22"
    },
    {
      "@type": "BlogPosting",
      "headline": "Vendor Lock-In with LLMs: How to Keep Providers Swappable",
      "url": "https://foundrysoft.co/blog/avoid-llm-vendor-lock-in",
      "datePublished": "2026-05-15"
    },
    {
      "@type": "BlogPosting",
      "headline": "Cutting LLM Cost 50% Without Wrecking Quality",
      "url": "https://foundrysoft.co/blog/cut-llm-cost-without-wrecking-quality",
      "datePublished": "2026-05-08"
    },
    {
      "@type": "BlogPosting",
      "headline": "What It Really Costs to Run an LLM Feature in Production",
      "url": "https://foundrysoft.co/blog/real-cost-of-llm-feature-in-production",
      "datePublished": "2026-05-01"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://foundrysoft.co/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Blog",
      "item": "https://foundrysoft.co/blog"
    }
  ]
}
```
