<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">

  <!-- Homepage — highest priority -->
  <url>
    <loc>https://hassanr.com/</loc>
    <lastmod>2026-05-22</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/profile.webp</image:loc>
      <image:title>Hassan Raza - Full-Stack and AI Engineer</image:title>
      <image:caption>Hassan Raza, Full-Stack Engineer and AI Specialist based in Pakistan</image:caption>
    </image:image>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/og-image.webp</image:loc>
      <image:title>Hassan Raza Portfolio</image:title>
      <image:caption>Hassan Raza - Building revenue-generating digital products for startups and businesses</image:caption>
    </image:image>
  </url>

  <!-- Blog index -->
  <url>
    <loc>https://hassanr.com/blogs/</loc>
    <lastmod>2026-06-30</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>

  <!-- Blog posts — add new posts at the TOP of this block (newest first) -->

  <url>
    <loc>https://hassanr.com/blogs/ai-tools-small-business-compete-enterprise-affordable-2026.html</loc>
    <lastmod>2026-06-30</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-small-business-ai-compete-enterprise.webp</image:loc>
      <image:title>How Small Businesses Can Use AI to Compete With Enterprise (Without the Enterprise Budget)</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/side-project-freelance-portfolio-attract-ai-clients-2026.html</loc>
    <lastmod>2026-06-29</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-side-project-freelance-portfolio.webp</image:loc>
      <image:title>How to Turn Your Side Project Into a Freelance Portfolio That Wins AI Clients</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/get-first-ai-development-client-freelance-2026.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-first-ai-freelance-client.webp</image:loc>
      <image:title>How to Land Your First AI SaaS Client as a Freelance Developer (Without a Big Portfolio)</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/solo-developer-ai-saas-2026-why-build-alone.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-solo-developer-ai-saas-2026.webp</image:loc>
      <image:title>Why I Build AI Products Solo in 2026 (And Why the Timing Has Never Been Better)</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/building-two-ai-saas-solo-developer-lessons-2026.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-two-ai-saas-solo-developer-lessons.webp</image:loc>
      <image:title>From Zero to Two AI SaaS Products: What 12 Months of Solo Building Taught Me</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/prisma-migrations-production-nextjs-vercel.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-prisma-migrations-nextjs-vercel.webp</image:loc>
      <image:title>How to Set Up Prisma Database Migrations in a Production Next.js App on Vercel</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/gpt4o-vs-gemini-flash-cost-comparison-production-2026.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-gpt4o-vs-gemini-cost-comparison.webp</image:loc>
      <image:title>GPT-4o vs Gemini 2.5 Flash: Real Cost Comparison for a Production AI SaaS (2026)</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/ai-social-media-content-pipeline-creator-2026.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-ai-social-media-content-pipeline.webp</image:loc>
      <image:title>How to Build an Automated Social Media Content Pipeline With AI (Creator Economy)</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/ai-customer-support-automation-small-business-2026.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-ai-customer-support-automation.webp</image:loc>
      <image:title>How to Automate Customer Support With AI: From Chatbot to Smart Ticket Routing</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/ai-product-description-generator-ecommerce-nextjs.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-ai-product-description-generator.webp</image:loc>
      <image:title>How to Build an AI Product Description Generator for E-Commerce (With Real Code)</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/ai-tools-real-estate-developer-build-2026.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-ai-real-estate-tools-developer.webp</image:loc>
      <image:title>AI for Real Estate: What a Developer Would Build for a Real Estate Business in 2026</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/claude-api-structured-output-json-production.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-claude-api-structured-output.webp</image:loc>
      <image:title>How to Use the Claude API for Structured JSON Output in Production (2026)</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/rag-pipeline-without-langchain-python-production.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-rag-pipeline-python-openai.webp</image:loc>
      <image:title>How to Build a RAG Pipeline Without LangChain (Pure Python + OpenAI, Production-Ready)</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/tool-registry-pattern-nextjs-multi-tool-saas.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-tool-registry-pattern-nextjs.webp</image:loc>
      <image:title>The Tool Registry Pattern: How to Build a Scalable Multi-Tool AI Platform</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/dark-mode-nextjs-app-router-next-themes.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-dark-mode-nextjs-next-themes.webp</image:loc>
      <image:title>How to Implement Dark Mode in Next.js App Router With next-themes (2026 Guide)</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/command-palette-nextjs-shadcn-ui.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-command-palette-shadcn-nextjs.webp</image:loc>
      <image:title>How to Build a Command Palette in Next.js With shadcn/ui Command Component</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/multi-tenant-saas-prisma-postgresql-nextjs.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-multi-tenant-prisma-nextjs.webp</image:loc>
      <image:title>How to Build a Multi-Tenant SaaS With Prisma and PostgreSQL in Next.js</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/deploy-fastapi-celery-render-production.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-deploy-fastapi-celery-render.webp</image:loc>
      <image:title>How to Deploy FastAPI + Celery on Render: A Production Setup Guide</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/sendgrid-email-large-file-python-cloud-storage.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-sendgrid-large-file-delivery.webp</image:loc>
      <image:title>How to Email Large AI-Generated Files Using SendGrid and Cloud Storage</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/fastapi-vs-nextjs-ai-saas-backend-2026.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-fastapi-vs-nextjs-ai-saas-2026.webp</image:loc>
      <image:title>FastAPI vs Next.js: Which Backend Should You Use for an AI SaaS in 2026?</image:title>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/async-ai-pipeline-python-long-running.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-async-ai-pipeline-python.webp</image:loc>
      <image:title>How to Build an Async AI Pipeline That Runs for Hours Without Timing Out</image:title>
      <image:caption>Fire-and-forget async AI pipeline — FastAPI HTTP 202, Celery per-task time limits, MongoDB state, SSE bundle progress, email delivery for 141–190 minute jobs</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/stripe-webhook-fastapi-python-celery-ai-jobs.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-stripe-fastapi-ai-jobs.webp</image:loc>
      <image:title>How to Integrate Stripe Payments Into a FastAPI Python SaaS That Triggers AI Jobs</image:title>
      <image:caption>Stripe Checkout → FastAPI webhook signature verification → idempotency guard → Celery dispatch → AI pipeline → PDF email delivery</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/reduce-gpt4o-api-costs-production-optimization.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-gpt4o-cost-optimization.webp</image:loc>
      <image:title>How I Reduced GPT-4o API Costs From $203 to $14 Per Order (Real Production Numbers)</image:title>
      <image:caption>GPT-4o cost optimization — $203 to $14 per order, token budgets, batch size tuning, Redis pre-computation, inter-batch sleep, 161 API calls, 8,620 answers</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/generate-pdf-python-weasyprint-production.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-pdf-generation-weasyprint.webp</image:loc>
      <image:title>How to Generate a 1,720-Page PDF Programmatically With Python and WeasyPrint</image:title>
      <image:caption>Jinja2 + WeasyPrint chunked rendering — 1,725 pages, 173 chunks, CHUNK_SIZE=10, pypdf merge, OOM guard, bundled fonts, Docker deployment gotchas</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/fastapi-celery-redis-ai-jobs-production.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-fastapi-celery-redis-ai.webp</image:loc>
      <image:title>How to Build a Celery + FastAPI + Redis Task Queue for AI Jobs in Production</image:title>
      <image:caption>FastAPI + Celery + Redis — 161 GPT-4o calls per order, 5 dedicated workers, queue-per-product routing, task_acks_late reliability, section-level MongoDB checkpointing</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/ai-saas-tech-stack-2026-nextjs-postgresql.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-ai-saas-tech-stack-2026.webp</image:loc>
      <image:title>The Exact Tech Stack I Use to Ship AI SaaS Products Fast in 2026</image:title>
      <image:caption>Next.js 16 + PostgreSQL + Google Gemini + Vercel — production AI SaaS stack with 9 tools, Prisma, Zod, Server Actions, and 33× lower API cost vs GPT-4o</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/how-to-price-ai-development-projects-freelance-2026.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-pricing-ai-development-freelance.webp</image:loc>
      <image:title>How to Price AI Development Projects as a Freelance Developer in 2026</image:title>
      <image:caption>AI development pricing framework — 4 project types, 6 complexity factors, agency $80k–$120k vs solo $35k–$55k benchmarks</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/how-affiliate-marketers-use-ai-content-creation-faster.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-affiliate-ai-content-tools.webp</image:loc>
      <image:title>How Affiliate Marketers Can Use AI to Create Content 10x Faster</image:title>
      <image:caption>Creator Dropp 9 AI tools for Facebook, Instagram, and YouTube — page setup, policy-aware ad copy, faceless Instagram posts, and production-ready YouTube scripts</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/what-i-learned-building-ai-saas-from-scratch-real-numbers.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-ai-saas-lessons-learned.webp</image:loc>
      <image:title>What I Learned Building a 9-Tool AI SaaS From Scratch — Real Numbers and Honest Mistakes</image:title>
      <image:caption>Solo developer retrospective — 9 AI tools, 6 networks, 280 TypeScript files, honest mistakes with exact day costs, and real monthly running costs in 2026</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/building-background-job-system-nextjs-vercel-cron.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-background-jobs-vercel-cron.webp</image:loc>
      <image:title>How to Build a Background Job System for Long-Running Tasks in Next.js on Vercel</image:title>
      <image:caption>Vercel Cron + incremental sync + per-network failure isolation — hourly background job syncing six APIs under the sixty-second serverless timeout</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/building-sales-dashboard-multiple-affiliate-networks-adapter-pattern.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-sales-dashboard-adapter-pattern.webp</image:loc>
      <image:title>How to Aggregate Sales Data from Multiple APIs Into One Dashboard</image:title>
      <image:caption>Pluggable adapter architecture aggregating sales from 6 affiliate networks — one file per new network, idempotent Prisma upsert, per-source failure isolation</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/nextauth-v5-role-based-access-control-nextjs.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-nextauth-v5-rbac-nextjs.webp</image:loc>
      <image:title>How to Add Role-Based Access Control to Next.js With NextAuth v5</image:title>
      <image:caption>NextAuth v5 RBAC in Next.js 16 — proxy.ts route protection, session role callbacks, and two-layer admin enforcement</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/build-smart-link-tracker-utm-analytics-nextjs.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-link-tracker-utm-analytics.webp</image:loc>
      <image:title>How to Build a Smart Link Tracker with UTM Analytics in Next.js</image:title>
      <image:caption>/go/[alias] redirect architecture with fire-and-forget click logging, SHA-256 IP hashing, and UTM analytics dashboard</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/how-to-encrypt-and-store-third-party-api-keys-nextjs-aes-256-gcm.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-encrypt-api-keys-aes-256-gcm.webp</image:loc>
      <image:title>How to Encrypt and Store Third-Party API Keys in a Next.js SaaS (AES-256-GCM)</image:title>
      <image:caption>AES-256-GCM affiliate credential encryption in Next.js—hex IV and auth tag storage, Prisma AffiliateNetworkAccount, Server Action save path</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/how-to-build-privacy-safe-click-analytics-without-storing-pii.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-privacy-safe-click-analytics.webp</image:loc>
      <image:title>How to Build Privacy-Safe Click Analytics Without Storing PII</image:title>
      <image:caption>Cookieless click analytics with SHA-256 salted IPs, server-side UTM capture, and fire-and-forget Prisma writes from Next.js</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/building-sales-dashboard-aggregates-six-affiliate-networks.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-sales-dashboard-affiliate-networks.webp</image:loc>
      <image:title>Building a Sales Dashboard That Aggregates 6 Affiliate Networks</image:title>
      <image:caption>Affiliate dashboard architecture—adapter integrations, Postgres normalization, AES-256 encrypted credentials, and hourly Vercel Cron sync</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/building-canva-style-ad-editor-fabric-js-nextjs.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-canva-fabric-js-editor.webp</image:loc>
      <image:title>How I Built a Canva-Style Ad Editor With Fabric.js in Next.js</image:title>
      <image:caption>Canva-style ad creative editor with Fabric.js 5 — layers, undo/redo, snap guides, and preset Facebook and Instagram sizes</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/how-i-rate-limited-ai-saas-for-zero-dollars.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-rate-limiting-ai-saas.webp</image:loc>
      <image:title>How I Rate-Limited an AI SaaS for $0 — And What It Cost Me Later</image:title>
      <image:caption>In-memory sliding window rate limiter vs Redis for Next.js AI SaaS on Vercel</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/building-multi-step-ai-wizard-nextjs-server-actions.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-ai-wizard-server-actions.webp</image:loc>
      <image:title>How I Built a Multi-Step AI Wizard With Next.js Server Actions</image:title>
      <image:caption>The 6-step pattern used to build 9 AI tools with Next.js Server Actions and Google Gemini</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/how-to-integrate-ai-into-your-business.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-ai-business-integration.webp</image:loc>
      <image:title>How to Integrate AI Into Your Business Without Hiring a Full Team</image:title>
      <image:caption>9 AI-powered tools built with Google Gemini replacing a copywriter, designer, and social media manager</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/building-profitable-ai-products-cost-optimization.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-profitable-ai-products.webp</image:loc>
      <image:title>How to Build Profitable AI Products — From $200 API Bills to $8 Unit Economics</image:title>
      <image:caption>Real strategies to control OpenAI costs at scale — from $200 API bills to $8 per customer in production</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/building-crash-safe-long-running-ai-jobs.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-crash-safe-ai-jobs.webp</image:loc>
      <image:title>How to Build Crash-Safe Long-Running AI Jobs — Lessons from Generating 1,720-Page PDFs</image:title>
      <image:caption>Production patterns for AI jobs that run for hours — idempotent task design, crash recovery, and batching strategies</image:caption>
    </image:image>
  </url>

  <url>
    <loc>https://hassanr.com/blogs/production-ready-llm-apps-batch-processing-async-scaling.html</loc>
    <lastmod>2026-05-27</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://hassanr.com/assets/images/blog/blog-llm-batch-processing.webp</image:loc>
      <image:title>Production-Ready LLM Apps: Batch Processing, Async Patterns &amp; Scaling</image:title>
      <image:caption>How Pulse Clarity scales AI PDF generation from 15-second reports to 1,720-page horoscopes using Celery and GPT-4o</image:caption>
    </image:image>
  </url>

</urlset>
