<?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">
  <!-- 1. Homepage & Profile Images -->
  <url>
    <loc>https://zahidhasantonmoy.vercel.app</loc>
    <image:image>
      <image:loc>https://zahidhasantonmoy.vercel.app/images/profile.jpg</image:loc>
      <image:title>Zahid Hasan Tonmoy - Full Stack Developer &amp; AI Engineer</image:title>
      <image:caption>Zahid Hasan Tonmoy - Full Stack Developer profile photo</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/blog/laravel-blade-dynamic-data-rendering</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1789560394/gjb1tfcejq3eo1nadrnq.jpg</image:loc>
      <image:title>Rendering Dynamic Data with Laravel Blade</image:title>
      <image:caption>I practiced Laravel Blade by passing Controller data to a View and rendering dynamic values, arrays with @foreach, and conditions with @if.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/bn/blog/laravel-blade-dynamic-data-rendering</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1789560394/gjb1tfcejq3eo1nadrnq.jpg</image:loc>
      <image:title>Laravel Blade-এ Dynamic Data Render করা: Controller থেকে View পর্যন্ত</image:title>
      <image:caption>Laravel Blade practice-এর মাধ্যমে Controller থেকে View-তে data পাঠানো এবং @foreach ও @if ব্যবহার করে dynamic content render করা বুঝেছি।</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/blog/laravel-postgresql-marketplace-react-api-learning-log</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1789967412/dwjcyad8rh9ty74xl7tf.jpg</image:loc>
      <image:title>Building a Laravel Marketplace with PostgreSQL While Debugging React State</image:title>
      <image:caption>Notes from building a Laravel + PostgreSQL marketplace (roles, product approval, migrations, foreign keys) alongside a React debugging session on fetch error handling and stale state.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/bn/blog/laravel-postgresql-marketplace-react-api-learning-log</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1789967412/dwjcyad8rh9ty74xl7tf.jpg</image:loc>
      <image:title>Laravel Marketplace আর React API নিয়ে কাজ করতে গিয়ে যা যা শিখলাম</image:title>
      <image:caption>Laravel ও PostgreSQL দিয়ে একটা marketplace project বানাতে গিয়ে role, product approval, migration আর foreign key নিয়ে যা শিখেছি, সাথে React-এ fetch error handling ও stale state নিয়ে একটা debugging অভিজ্ঞতা।</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/blog/llm-vs-ai-agent-difference</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1790242464/portfolio/blog/crbkufwmramy0hbdf1gf.jpg</image:loc>
      <image:title>LLM vs AI Agent: What&apos;s Actually the Difference?</image:title>
      <image:caption>An LLM predicts text and stops; an agent wraps that same model in a loop that lets it act, check the result, and decide again. The difference isn&apos;t the model — it&apos;s the loop.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/bn/blog/llm-vs-ai-agent-difference</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1790242464/portfolio/blog/crbkufwmramy0hbdf1gf.jpg</image:loc>
      <image:title>LLM আর AI Agent এক জিনিস না — আসল পার্থক্যটা কোথায়?</image:title>
      <image:caption>LLM টেক্সট predict করে থেমে যায়; agent সেই একই model-কে একটা loop-এর ভেতর বসিয়ে দেয়, যা তাকে action নিতে, result check করতে, আর আবার decide করতে দেয়। পার্থক্যটা model-এ না, loop-এ।</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/blog/languages-and-tools-for-ai-agents</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1790749110/portfolio/blog/u3fyus1v3byplzpz5uvn.jpg</image:loc>
      <image:title>Python or TypeScript for AI Agents? The Languages, Libraries and Tools You Actually Need</image:title>
      <image:caption>Python people say Python, JavaScript people say TypeScript. This post opens up what actually matters — the one required SDK, which tools are optional, and the same minimal agent written side by side in both languages.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/bn/blog/languages-and-tools-for-ai-agents</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1790749110/portfolio/blog/u3fyus1v3byplzpz5uvn.jpg</image:loc>
      <image:title>এআই এজেন্ট বানাতে কোন কোন ভাষা, লাইব্রেরি ও টুলস আসলে দরকার হয়</image:title>
      <image:caption>Python-ওয়ালারা বলে Python, JavaScript-ওয়ালারা বলে TypeScript। আসলে কী লাগে — একমাত্র বাধ্যতামূলক SDK, কোন টুল ঐচ্ছিক, আর একই ছোট্ট এজেন্ট দুই ভাষায় পাশাপাশি — এই পোস্টে সেটাই দেখানো হলো।</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/blog/practicing-laravel-blade-templates-with-dynamic-data</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1789455585/f0dx3l4nrndbgyam7udt.jpg</image:loc>
      <image:title>Practicing Laravel Blade Templates with Dynamic Data</image:title>
      <image:caption>Practicing Laravel Blade Templates with Dynamic Data</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/bn/blog/practicing-laravel-blade-templates-with-dynamic-data</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1789455585/f0dx3l4nrndbgyam7udt.jpg</image:loc>
      <image:title>Laravel Blade Template এবং Dynamic Data নিয়ে Practice</image:title>
      <image:caption>Laravel Blade Template এবং Dynamic Data নিয়ে Practice</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/blog/components-of-an-ai-agent</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1790591414/portfolio/blog/unjv526f0j7b2kkeyrlk.png</image:loc>
      <image:title>What&apos;s Inside an AI Agent? Brain, Memory, Tools and the Action Loop</image:title>
      <image:caption>An AI agent is a brain, memory, tools and a loop. This post pulls the four apart with a small TypeScript expense tracker, so you can tell which one is misbehaving.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/bn/blog/components-of-an-ai-agent</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1790591414/portfolio/blog/unjv526f0j7b2kkeyrlk.png</image:loc>
      <image:title>এআই এজেন্টের ভেতরে আসলে কী কী থাকে — Brain, Memory, Tools আর Action Loop</image:title>
      <image:caption>এআই এজেন্ট মানে Brain, Memory, Tools আর একটা loop। একটা ছোট্ট TypeScript এজেন্টের কোড দিয়ে চারটা অংশ আলাদা করে দেখালাম, যাতে বোঝা যায় ঠিক কোনটা গোলমাল করছে।</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/blog/tool-calling-in-ai-agents</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1790654834/portfolio/blog/owgb9vvrgneqbyfsi5za.jpg</image:loc>
      <image:title>Tool Calling in AI Agents: How It Actually Works</image:title>
      <image:caption>A plain chatbot invents the weather and the exchange rate. This post opens up how tool calling lets a model request a real function, run it, and use what comes back — including what happens when it asks for two tools at once.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/bn/blog/tool-calling-in-ai-agents</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1790654834/portfolio/blog/owgb9vvrgneqbyfsi5za.jpg</image:loc>
      <image:title>Tool Calling / Function Calling — এজেন্ট কীভাবে বাইরের জগতের সাথে কাজ করে</image:title>
      <image:caption>সাধারণ চ্যাটবট আবহাওয়া আর বিনিময় হার বানিয়ে বলে দেয়। Tool calling দিয়ে মডেল কীভাবে একটা আসল ফাংশন চায়, সেটা চলে আর ফলাফল ব্যবহার করে — একসাথে দুটো tool চাইলে কী হয় তা-সহ, এই পোস্টে সেটাই খোলা হলো।</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/blog/short-term-vs-long-term-memory-in-ai-agents</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1790654866/portfolio/blog/lqamwri8fjh7jms4801z.jpg</image:loc>
      <image:title>Short-Term vs Long-Term Memory in AI Agents</image:title>
      <image:caption>An agent&apos;s conversation keeps growing and it still forgets things from last week — two different problems wearing the same name. This post opens up short-term compaction and long-term recall in one working file, plus a real retrieval failure found while testing it.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/bn/blog/short-term-vs-long-term-memory-in-ai-agents</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1790654866/portfolio/blog/lqamwri8fjh7jms4801z.jpg</image:loc>
      <image:title>Agent কীভাবে &quot;মনে রাখে&quot; — Short-term আর Long-term Memory-এর পার্থক্য</image:title>
      <image:caption>এজেন্টের কথোপকথন ক্রমাগত বড় হয়, তবু গত সপ্তাহের কিছু ঠিকই ভুলে যায় — একই নামের দুটো আলাদা সমস্যা। short-term compaction আর long-term recall একটা কাজের ফাইলে, সাথে টেস্ট করতে গিয়ে পাওয়া একটা আসল recall-ব্যর্থতা, এই পোস্টে সেটাই দেখানো হলো।</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/blog/what-is-rag-in-ai-agents</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1790661301/portfolio/blog/liip7nga5k2mzui9f3hl.jpg</image:loc>
      <image:title>What Is RAG? How AI Agents Retrieve and Use Real Knowledge</image:title>
      <image:caption>An agent can have every tool it needs and still answer wrong because it doesn&apos;t know something. This post opens up RAG — how retrieval and a working TypeScript example let a model answer from real documents instead of guessing.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/bn/blog/what-is-rag-in-ai-agents</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1790661301/portfolio/blog/liip7nga5k2mzui9f3hl.jpg</image:loc>
      <image:title>RAG (Retrieval Augmented Generation) কী এবং এজেন্টের জ্ঞান বাড়াতে এটা কীভাবে কাজে লাগে</image:title>
      <image:caption>এজেন্টের কাছে দরকারি সব tool থাকতে পারে, তবু সে ভুল উত্তর দিতে পারে, শুধু কারণ সে একটা জিনিস জানে না। RAG আর একটা কাজের TypeScript উদাহরণ দিয়ে এই পোস্টে দেখানো হলো মডেল কীভাবে আন্দাজের বদলে আসল ডকুমেন্ট থেকে উত্তর দেয়।</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/blog/how-to-write-a-good-prompt-for-an-ai-agent</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1791197539/portfolio/blog/ah5ubpglrfc7qowkog92.jpg</image:loc>
      <image:title>The Rules for Writing a Good Prompt for an AI Agent</image:title>
      <image:caption>A perfect memory system can&apos;t save an agent that doesn&apos;t know when to reach for the tool in front of it. This post covers the five things a good agent system prompt needs, why tool descriptions are prompts too, and a small checker tested against real descriptions from this series.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/bn/blog/how-to-write-a-good-prompt-for-an-ai-agent</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1791197539/portfolio/blog/ah5ubpglrfc7qowkog92.jpg</image:loc>
      <image:title>একটা ভালো Prompt লেখার নিয়ম — Agent-এর জন্য কার্যকর Prompt Engineering</image:title>
      <image:caption>ঠিক সামনে থাকা tool-টাই যদি এজেন্ট কখন ব্যবহার করবে না জানে, নিখুঁত memory সিস্টেমও তাকে বাঁচাতে পারে না। ভালো একটা system prompt-এ যে পাঁচটা জিনিস থাকা উচিত, tool description কেন নিজেই একটা prompt, আর এই সিরিজের আসল description-এর ওপর চালানো একটা ছোট্ট checker, এই পোস্টে সেটাই দেখানো হলো।</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/blog/what-is-an-ai-agent</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1790235514/portfolio/blog/nycnaj265yctmgxihsx2.jpg</image:loc>
      <image:title>What Is an AI Agent, Really — and Why Is Everyone Suddenly Talking About It?</image:title>
      <image:caption>A chatbot answers once, while an agent keeps working until the job is done. This post shows what that loop looks like in real code and why agents suddenly feel practical.</image:caption>
    </image:image>
  </url>
  <url>
    <loc>https://zahidhasantonmoy.vercel.app/bn/blog/what-is-an-ai-agent</loc>
    <image:image>
      <image:loc>https://res.cloudinary.com/pfnaw6be/image/upload/v1790235514/portfolio/blog/nycnaj265yctmgxihsx2.jpg</image:loc>
      <image:title>এআই এজেন্ট আসলে কী — আর হঠাৎ সবাই এটা নিয়ে এত কথা বলছে কেন?</image:title>
      <image:caption>চ্যাটবট একবার উত্তর দেয়, এজেন্ট কাজ শেষ না হওয়া পর্যন্ত এগোতে থাকে। সেই loop-টা কোডে কেমন দেখায় আর কেন হঠাৎ এজেন্ট নিয়ে এত আলোচনা, এই পোস্টে সেটাই।</image:caption>
    </image:image>
  </url>
</urlset>