<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:mobile="http://www.google.com/schemas/sitemap-mobile/1.0" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url><loc>https://blog.janjic.ca/posts/typed-tool-schemas-that-the-model-can-actually-follow</loc><lastmod>2026-08-31T00:51:20.165Z</lastmod></url>
<url><loc>https://blog.janjic.ca/posts/streaming-responses-cost-more-than-you-think</loc><lastmod>2026-08-31T00:51:20.107Z</lastmod></url>
<url><loc>https://blog.janjic.ca/posts/your-api-does-not-need-to-be-an-agent</loc><lastmod>2026-08-31T00:51:20.047Z</lastmod></url>
<url><loc>https://blog.janjic.ca/posts/put-a-queue-in-front-of-it-before-you-scale-anything</loc><lastmod>2026-08-31T00:51:19.985Z</lastmod></url>
<url><loc>https://blog.janjic.ca/posts/rewriting-the-eval-harness-after-forty-flaky-runs</loc><lastmod>2026-08-31T00:51:19.913Z</lastmod></url>
<url><loc>https://blog.janjic.ca/posts/treat-the-context-window-as-a-budget-not-a-bucket</loc><lastmod>2026-08-31T00:51:19.848Z</lastmod></url>
<url><loc>https://blog.janjic.ca/posts/what-an-agent-actually-is-in-code</loc><lastmod>2026-08-31T00:51:19.772Z</lastmod></url>
<url><loc>https://blog.janjic.ca/posts/production-rag-on-postgres-start-to-finish</loc><lastmod>2026-08-31T00:51:19.697Z</lastmod></url>
<url><loc>https://blog.janjic.ca/posts/tool-calling-that-holds-up</loc><lastmod>2026-08-31T01:04:44.058Z</lastmod></url>
</urlset>