<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
  <loc>https://userefract.io/</loc>
</url>
<url>
  <loc>https://userefract.io/pricing/</loc>
</url>
<url>
  <loc>https://userefract.io/contact/</loc>
</url>
<url>
  <loc>https://userefract.io/legal/privacy/</loc>
</url>
<url>
  <loc>https://userefract.io/legal/terms/</loc>
</url>
<url>
  <loc>https://userefract.io/legal/licenses/</loc>
</url>
<url>
  <loc>https://userefract.io/blog/</loc>
</url>
<url>
  <loc>https://userefract.io/blog/series/saas-boundary-patterns</loc>
</url>
<url>
  <loc>https://userefract.io/blog/series/the-production-saas-playbook</loc>
</url>
<url>
  <loc>https://userefract.io/blog/series/why-refract</loc>
</url>
<url>
  <loc>https://userefract.io/blog/series/pluggable-by-design</loc>
</url>
<url>
  <loc>https://userefract.io/blog/series/evaluating-refract</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/why-your-ai-calls-shouldnt-know-which-model-theyre-talking-to</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/production-best-practices-for-ai-coding-specifications</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/the-product-price-migration-we-d-repeat-and-what-it-buys-you-over-a-billing-config-file</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/your-ai-agent-isnt-lying-its-just-passing-the-test-it-rewrote</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/the-pricing-capabilities-youll-need-before-you-think-you-need-them</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/the-most-expensive-architectural-decisions-are-the-ones-you-dont-realize-youre-making</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/multi-tenant-rbac-in-typescript-schema-boundaries-and-migration-safety</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/how-we-implemented-agents-md-in-a-production-typescript-monorepo</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/idempotent-stripe-webhooks-in-nodejs-typescript-patterns-that-survive-replay</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/best-non-nextjs-typescript-saas-boilerplate-2026</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/pluggable-scheduler-tooling-one-clock-one-contract</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/apollo-graphql-saas-decision-framework</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/product-limits-scoped-quotas-and-usage-metering</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/nodejs-monorepo-vs-nextjs-typescript-saas-boilerplate</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/apollo-graphql-typescript-saas-boilerplate-2026</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/pluggable-ai-tooling-three-providers-one-contract</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/the-stack-behind-refract</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/the-hidden-revenue-tax-of-vendor-coupled-saas-architecture</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/interface-first-saas-how-to-swap-infrastructure-without-rewriting-product-logic</loc>
</url>
<url>
  <loc>https://userefract.io/blog/article/why-im-building-refract</loc>
</url>
</urlset>