<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mahima Thacker</title>
    <description>The latest articles on DEV Community by Mahima Thacker (@mahima_thacker).</description>
    <link>https://dev.to/mahima_thacker</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2605656%2F57b2ab50-a45f-4f1d-997f-a58a2a31c986.jpeg</url>
      <title>DEV Community: Mahima Thacker</title>
      <link>https://dev.to/mahima_thacker</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mahima_thacker"/>
    <language>en</language>
    <item>
      <title>Agent Trajectory and Convergence: Why the Path Matters in AI Agent Evals</title>
      <dc:creator>Mahima Thacker</dc:creator>
      <pubDate>Tue, 07 Jul 2026 09:45:03 +0000</pubDate>
      <link>https://dev.to/mahima_thacker/agent-trajectory-and-convergence-why-the-path-matters-in-ai-agent-evals-1g90</link>
      <guid>https://dev.to/mahima_thacker/agent-trajectory-and-convergence-why-the-path-matters-in-ai-agent-evals-1g90</guid>
      <description>&lt;p&gt;When evaluating AI agents, we often focus on the final answer.&lt;/p&gt;

&lt;p&gt;Was it correct?&lt;br&gt;
Was it useful?&lt;br&gt;
Was it grounded?&lt;/p&gt;

&lt;p&gt;That matters.&lt;/p&gt;

&lt;p&gt;But for agents, there is another important question:&lt;br&gt;
How did the agent get there?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is where agent trajectory comes in.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an agent trajectory?
&lt;/h2&gt;

&lt;p&gt;Agent trajectory means the path an agent takes before producing the final answer.&lt;/p&gt;

&lt;p&gt;It includes the steps the agent went through, such as:&lt;/p&gt;

&lt;p&gt;router decisions&lt;br&gt;
tool calls&lt;br&gt;
database lookups&lt;br&gt;
retrieval steps&lt;br&gt;
LLM calls&lt;br&gt;
repeated actions&lt;br&gt;
final response&lt;/p&gt;

&lt;p&gt;A simple agent path may look like this:&lt;/p&gt;

&lt;p&gt;User input&lt;br&gt;
→ Router&lt;br&gt;
→ Database lookup&lt;br&gt;
→ Data analyzer&lt;br&gt;
→ Output&lt;/p&gt;

&lt;p&gt;A messy agent path may look like this:&lt;br&gt;
User input&lt;br&gt;
→ Router&lt;br&gt;
→ Database lookup&lt;br&gt;
→ Router&lt;br&gt;
→ Data analyzer&lt;br&gt;
→ Router&lt;br&gt;
→ Database lookup&lt;br&gt;
→ Router&lt;br&gt;
→ Data analyzer&lt;br&gt;
→ Output&lt;br&gt;
Both paths may eventually produce the correct answer.&lt;/p&gt;

&lt;p&gt;But they are not equally good.&lt;/p&gt;

&lt;p&gt;The second path takes more steps, costs more, takes longer, and creates more chances for something to fail.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frapapxh5zlmzvqzx971j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frapapxh5zlmzvqzx971j.png" alt=" " width="800" height="923"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why trajectory matters
&lt;/h2&gt;

&lt;p&gt;Imagine a user asks:&lt;br&gt;
“Show me last month’s sales trend.”&lt;/p&gt;

&lt;p&gt;The agent may need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand the question&lt;/li&gt;
&lt;li&gt;Choose the right database tool&lt;/li&gt;
&lt;li&gt;Fetch the data&lt;/li&gt;
&lt;li&gt;Analyze the result&lt;/li&gt;
&lt;li&gt;Generate the final answer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is a reasonable path.&lt;/p&gt;

&lt;p&gt;But an inefficient agent may:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;call the same tool multiple times&lt;/li&gt;
&lt;li&gt;keep going back to the router&lt;/li&gt;
&lt;li&gt;repeat the same analysis&lt;/li&gt;
&lt;li&gt;use the wrong tool first&lt;/li&gt;
&lt;li&gt;query the database again without need&lt;/li&gt;
&lt;li&gt;take many steps before giving the answer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The final answer may look okay.&lt;br&gt;
But the system behavior is not okay.&lt;/p&gt;

&lt;p&gt;In production, inefficient paths matter because they increase:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;latency&lt;/li&gt;
&lt;li&gt;cost&lt;/li&gt;
&lt;li&gt;API usage&lt;/li&gt;
&lt;li&gt;tool calls&lt;/li&gt;
&lt;li&gt;failure risk&lt;/li&gt;
&lt;li&gt;debugging complexity&lt;/li&gt;
&lt;li&gt;user wait time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why agent evals should evaluate both:&lt;/p&gt;

&lt;p&gt;Output quality&lt;br&gt;
+&lt;br&gt;
Path quality&lt;/p&gt;

&lt;h2&gt;
  
  
  What is convergence?
&lt;/h2&gt;

&lt;p&gt;Convergence measures how closely an agent follows the optimal path for a given query.&lt;/p&gt;

&lt;p&gt;Simple meaning:&lt;br&gt;
Is the agent reaching the answer cleanly, or is it wandering around?&lt;br&gt;
If the agent takes the shortest useful path most of the time, convergence is high.&lt;/p&gt;

&lt;p&gt;If it keeps taking unnecessary steps, convergence is lower.&lt;br&gt;
A simple convergence score&lt;/p&gt;

&lt;p&gt;One way to calculate convergence is by running the agent on similar queries and recording how many steps it takes.&lt;/p&gt;

&lt;p&gt;Let:&lt;br&gt;
N = total number of runs&lt;br&gt;
S_agent,i = number of steps taken by the agent in run i&lt;br&gt;
S_optimal = shortest successful path length across the runs&lt;/p&gt;

&lt;p&gt;Then:&lt;br&gt;
Convergence score =&lt;br&gt;
average of min(1, S_optimal / S_agent,i)&lt;/p&gt;

&lt;p&gt;Or written more formally:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overall Convergence Score&lt;/strong&gt; = (Σᵢ₌₁ᴺ min(1, S_optimal / S_agent,i)) / N&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhqo6yhvott6aoagv161p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhqo6yhvott6aoagv161p.png" alt=" " width="799" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Simple example:&lt;/p&gt;

&lt;p&gt;Assume the shortest successful path takes 5 steps.&lt;br&gt;
If one agent run takes 5 steps:&lt;br&gt;
score = min(1, 5 / 5) = 1&lt;/p&gt;

&lt;p&gt;That is ideal.&lt;/p&gt;

&lt;p&gt;If another run takes 10 steps:&lt;br&gt;
score = min(1, 5 / 10) = 0.5&lt;/p&gt;

&lt;p&gt;If another run takes 20 steps:&lt;br&gt;
score = min(1, 5 / 20) = 0.25&lt;/p&gt;

&lt;p&gt;Lower score means the agent is taking more steps than needed.&lt;br&gt;
What a convergence score tells us&lt;/p&gt;

&lt;p&gt;A convergence score helps answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the agent taking the shortest useful path?&lt;/li&gt;
&lt;li&gt;Is it repeating unnecessary steps?&lt;/li&gt;
&lt;li&gt;Is it using tools efficiently?&lt;/li&gt;
&lt;li&gt;Is it getting stuck before answering?&lt;/li&gt;
&lt;li&gt;Is it consistent across similar inputs?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is useful because two agents may both answer correctly, but one may do it in a much cleaner way.&lt;/p&gt;

&lt;p&gt;But convergence is not enough&lt;br&gt;
Convergence should not be measured alone.&lt;/p&gt;

&lt;p&gt;A short wrong path is not better than a longer correct path.&lt;/p&gt;

&lt;p&gt;For example, if the agent gives a wrong answer in 3 steps, that is not good just because it was fast.&lt;/p&gt;

&lt;p&gt;So convergence should be evaluated together with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;final answer correctness&lt;/li&gt;
&lt;li&gt;task success&lt;/li&gt;
&lt;li&gt;tool choice accuracy&lt;/li&gt;
&lt;li&gt;grounding&lt;/li&gt;
&lt;li&gt;safety&lt;/li&gt;
&lt;li&gt;output quality
Efficiency only matters after the agent is doing the right thing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How this connects to traces
&lt;/h2&gt;

&lt;p&gt;To measure trajectory and convergence, we need traces.&lt;br&gt;
A trace shows what happened during an agent run.&lt;/p&gt;

&lt;p&gt;It can show:&lt;/p&gt;

&lt;p&gt;which steps happened&lt;br&gt;
how many steps were taken&lt;br&gt;
which tools were called&lt;br&gt;
whether steps repeated&lt;br&gt;
whether the agent made progress&lt;br&gt;
where time was spent&lt;/p&gt;

&lt;p&gt;Without traces, we only see the final answer.&lt;br&gt;
With traces, we can inspect the path.&lt;/p&gt;

&lt;p&gt;That is why observability and evals work well together.&lt;/p&gt;

&lt;p&gt;Observability shows what happened.&lt;br&gt;
Evals help decide whether it was good or bad.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;Agent evals are not only about final answers.&lt;br&gt;
They are also about behavior.&lt;/p&gt;

&lt;p&gt;A good agent should answer correctly.&lt;/p&gt;

&lt;p&gt;But it should also take a clean, efficient, and understandable path.&lt;/p&gt;

&lt;p&gt;That is why trajectory matters.&lt;br&gt;
And that is why convergence can be a useful signal when evaluating AI agents.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>evals</category>
      <category>llm</category>
    </item>
    <item>
      <title>How to Choose the Right Eval for an AI Agent</title>
      <dc:creator>Mahima Thacker</dc:creator>
      <pubDate>Fri, 03 Jul 2026 12:05:36 +0000</pubDate>
      <link>https://dev.to/mahima_thacker/how-to-choose-the-right-eval-for-an-ai-agent-2o1p</link>
      <guid>https://dev.to/mahima_thacker/how-to-choose-the-right-eval-for-an-ai-agent-2o1p</guid>
      <description>&lt;p&gt;When I started learning about AI agent evaluation, I thought evals were mostly about checking the final answer.&lt;/p&gt;

&lt;p&gt;But agents are not just final-answer machines.&lt;/p&gt;

&lt;p&gt;They are systems made of smaller parts:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;router&lt;/li&gt;
&lt;li&gt;tools&lt;/li&gt;
&lt;li&gt;skills&lt;/li&gt;
&lt;li&gt;memory&lt;/li&gt;
&lt;li&gt;retrieval&lt;/li&gt;
&lt;li&gt;final response&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each part can fail differently.&lt;/p&gt;

&lt;p&gt;So the better question is not only:&lt;br&gt;
Did the agent answer correctly?&lt;/p&gt;

&lt;p&gt;It is also:&lt;br&gt;
Which part of the agent should I evaluate, and what type of eval makes sense there?&lt;/p&gt;

&lt;h2&gt;
  
  
  Not every eval needs an LLM judge
&lt;/h2&gt;

&lt;p&gt;This was one important thing I learned.&lt;br&gt;
It is easy to think that if we are evaluating LLM systems, we should use another LLM to judge everything.&lt;/p&gt;

&lt;p&gt;But that is not always the best choice.&lt;br&gt;
Some checks are simple and deterministic.&lt;br&gt;
Some checks are subjective.&lt;br&gt;
Some checks need human judgment.&lt;/p&gt;

&lt;p&gt;A good eval setup uses the right method for the right problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three common eval methods
&lt;/h2&gt;

&lt;p&gt;There are three common ways to evaluate LLM systems and agents:&lt;br&gt;
&lt;strong&gt;1) Code-based evals&lt;br&gt;
2) LLM-as-a-judge evals&lt;br&gt;
3) Human evaluation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s break them down simply.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Code-based evals
&lt;/h3&gt;

&lt;p&gt;Code-based evals are useful when the expected behavior is clear.&lt;br&gt;
For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;did the output return valid JSON?&lt;/li&gt;
&lt;li&gt;did the answer contain a required keyword?&lt;/li&gt;
&lt;li&gt;did it match a regex?&lt;/li&gt;
&lt;li&gt;did the agent call the correct tool?&lt;/li&gt;
&lt;li&gt;did it extract the correct parameter?&lt;/li&gt;
&lt;li&gt;did the SQL stay read-only?&lt;/li&gt;
&lt;li&gt;did generated code run successfully?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are easier to automate because the rules are clear.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expected:&lt;/strong&gt;&lt;br&gt;
tool = order_status_check&lt;br&gt;
order_number = 1234&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Actual:&lt;/strong&gt;&lt;br&gt;
tool = order_status_check&lt;br&gt;
order_number = 1234&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt;&lt;br&gt;
pass&lt;br&gt;
This does not need an LLM judge.&lt;/p&gt;

&lt;p&gt;Code can check it.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. LLM-as-a-judge evals
&lt;/h2&gt;

&lt;p&gt;LLM-as-a-judge is useful when the output quality is harder to check with simple rules.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;is the summary useful?&lt;/li&gt;
&lt;li&gt;is the answer grounded in the source?&lt;/li&gt;
&lt;li&gt;did the response answer the user’s actual question?&lt;/li&gt;
&lt;li&gt;is the tone appropriate?&lt;/li&gt;
&lt;li&gt;did the agent hallucinate?&lt;/li&gt;
&lt;li&gt;is the reasoning coherent?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are qualitative checks.&lt;br&gt;
You can ask another LLM to judge the output using a clear rubric.&lt;br&gt;
But this method is not perfect.&lt;/p&gt;

&lt;p&gt;LLM judges can also make mistakes.&lt;/p&gt;

&lt;p&gt;So it helps to use clear labels like:&lt;br&gt;
correct / incorrect&lt;br&gt;
grounded / not grounded&lt;br&gt;
safe / unsafe&lt;br&gt;
useful / not useful&lt;/p&gt;

&lt;p&gt;Avoid vague scores like:&lt;br&gt;
87% helpful&lt;br&gt;
73% grounded&lt;br&gt;
Discrete labels are usually easier to interpret and compare.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Human evaluation
&lt;/h3&gt;

&lt;p&gt;Human evaluation is still important.&lt;/p&gt;

&lt;p&gt;Especially when the task is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;high-stakes&lt;/li&gt;
&lt;li&gt;subjective&lt;/li&gt;
&lt;li&gt;domain-specific&lt;/li&gt;
&lt;li&gt;safety-sensitive&lt;/li&gt;
&lt;li&gt;tied to user trust&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, in healthcare, legal, finance, education, or enterprise workflows, a human may need to review whether the result is actually acceptable.&lt;/p&gt;

&lt;p&gt;Humans can also provide labels that later become part of your test dataset.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
User feedback: thumbs up / thumbs down&lt;br&gt;
Human label: correct / incorrect&lt;br&gt;
Reviewer note: answer missed key context&lt;br&gt;
This feedback can help improve future evals.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to choose the right eval
&lt;/h2&gt;

&lt;p&gt;A simple rule:&lt;/p&gt;

&lt;p&gt;If the criteria is deterministic, use code-based evals.&lt;br&gt;
If the criteria is qualitative, use LLM-as-a-judge.&lt;br&gt;
If the criteria needs domain judgment, use human evaluation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Here is a simple mental model:
&lt;/h3&gt;

&lt;p&gt;Clear rule → code-based eval&lt;br&gt;
Quality judgment → LLM-as-a-judge&lt;br&gt;
Domain or safety judgment → human evaluation&lt;/p&gt;

&lt;p&gt;The goal is not to use the most advanced eval.&lt;br&gt;
The goal is to use the eval that gives the clearest signal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evaluating a router
&lt;/h2&gt;

&lt;p&gt;A router decides what the agent should do next.&lt;/p&gt;

&lt;p&gt;It may choose:&lt;br&gt;
which tool to call&lt;br&gt;
which workflow to run&lt;br&gt;
what parameters to extract&lt;br&gt;
whether to answer directly&lt;br&gt;
whether more context is needed&lt;/p&gt;

&lt;p&gt;Router evals usually check two things:&lt;br&gt;
Did the router choose the right function/tool?&lt;br&gt;
Did the router extract the right parameters?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example&lt;/strong&gt;:&lt;br&gt;
User:&lt;br&gt;
“Can you check the status of order #1234?”&lt;/p&gt;

&lt;p&gt;Correct router decision:&lt;br&gt;
tool = order_status_check&lt;br&gt;
order_number = 1234&lt;/p&gt;

&lt;p&gt;Wrong router decision:&lt;br&gt;
tool = shipping_status_check&lt;br&gt;
shipping_tracking_id = 1234&lt;/p&gt;

&lt;p&gt;The wrong decision may look small, but it changes the whole path.&lt;br&gt;
If the router fails, the rest of the agent may fail too.&lt;/p&gt;

&lt;p&gt;That is why router evals are important.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evaluating skills
&lt;/h2&gt;

&lt;p&gt;A skill is a task the agent can perform.&lt;br&gt;
For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;database lookup&lt;/li&gt;
&lt;li&gt;data analysis&lt;/li&gt;
&lt;li&gt;data visualization&lt;/li&gt;
&lt;li&gt;retrieval&lt;/li&gt;
&lt;li&gt;summarization&lt;/li&gt;
&lt;li&gt;code generation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each skill may need its own eval.&lt;br&gt;
For a database lookup skill, you may evaluate:&lt;/p&gt;

&lt;p&gt;did it generate correct SQL?&lt;br&gt;
did it query the right table?&lt;br&gt;
did it avoid unsafe operations?&lt;br&gt;
did it return the right data?&lt;/p&gt;

&lt;p&gt;For a data analysis skill, you may evaluate:&lt;/p&gt;

&lt;p&gt;was the calculation correct?&lt;br&gt;
did it identify the right entity?&lt;br&gt;
was the explanation clear?&lt;br&gt;
For a visualization skill, you may evaluate:&lt;br&gt;
did the generated code run?&lt;br&gt;
did the chart match the user’s request?&lt;br&gt;
did it use the right data?&lt;/p&gt;

&lt;p&gt;Different skills need different checks.&lt;/p&gt;

&lt;p&gt;The mistake: evaluating the agent as one black box&lt;br&gt;
If we only evaluate the final answer, we get weak feedback.&lt;/p&gt;

&lt;p&gt;We may only know:&lt;br&gt;
The agent failed.&lt;/p&gt;

&lt;p&gt;But we do not know why.&lt;/p&gt;

&lt;p&gt;A better eval setup tells us:&lt;br&gt;
the router chose the wrong tool&lt;br&gt;
the parameter extraction failed&lt;br&gt;
the retrieval step returned weak context&lt;br&gt;
the SQL was invalid&lt;br&gt;
the summary hallucinated&lt;br&gt;
the final answer was not useful&lt;br&gt;
This makes improvement easier.&lt;/p&gt;

&lt;p&gt;You can fix the specific part that failed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;Agent evals become more useful when we break the agent into parts.&lt;/p&gt;

&lt;p&gt;Evaluate the router.&lt;br&gt;
Evaluate the tools.&lt;br&gt;
Evaluate the skills.&lt;br&gt;
Evaluate the final response.&lt;br&gt;
Evaluate the path.&lt;/p&gt;

&lt;p&gt;That is how evals move from vague scoring to practical debugging.&lt;/p&gt;

&lt;p&gt;The goal is not just to say:&lt;br&gt;
This agent is good or bad.&lt;/p&gt;

&lt;p&gt;The goal is to understand:&lt;br&gt;
What failed, where it failed, and how to improve it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>llm</category>
      <category>testing</category>
    </item>
    <item>
      <title>Tracing AI Agents: Why Observability Matters</title>
      <dc:creator>Mahima Thacker</dc:creator>
      <pubDate>Sat, 27 Jun 2026 06:44:19 +0000</pubDate>
      <link>https://dev.to/mahima_thacker/tracing-ai-agents-why-observability-matters-3j21</link>
      <guid>https://dev.to/mahima_thacker/tracing-ai-agents-why-observability-matters-3j21</guid>
      <description>&lt;p&gt;When building AI agents, the final answer is only one part of the system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The more useful question is often:&lt;/strong&gt;&lt;br&gt;
What happened before the agent gave that answer?&lt;/p&gt;

&lt;p&gt;That is where &lt;strong&gt;observability&lt;/strong&gt; comes in.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is observability?
&lt;/h2&gt;

&lt;p&gt;Observability means having visibility into what your system is doing.&lt;br&gt;
For an AI agent, that means seeing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;which steps ran&lt;/li&gt;
&lt;li&gt;which tools were called&lt;/li&gt;
&lt;li&gt;what inputs were passed&lt;/li&gt;
&lt;li&gt;what outputs came back&lt;/li&gt;
&lt;li&gt;where the agent failed&lt;/li&gt;
&lt;li&gt;where it repeated itself&lt;/li&gt;
&lt;li&gt;whether it actually made progress&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without observability, debugging agents becomes guesswork.&lt;/p&gt;

&lt;p&gt;You see seeing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;which steps ran&lt;/li&gt;
&lt;li&gt;which tools were called&lt;/li&gt;
&lt;li&gt;what inputs were passed&lt;/li&gt;
&lt;li&gt;what outputs came back&lt;/li&gt;
&lt;li&gt;where the agent failed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;the final answer, but you do not know how the agent got there.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a trace?
&lt;/h2&gt;

&lt;p&gt;A trace is the full path of one request through the system.&lt;br&gt;
For an AI agent, a trace may look like this:&lt;br&gt;
User query&lt;br&gt;
→ Router&lt;br&gt;
→ Tool selection&lt;br&gt;
→ Tool call&lt;br&gt;
→ Tool result&lt;br&gt;
→ LLM step&lt;br&gt;
→ Final answer&lt;/p&gt;

&lt;p&gt;That whole journey is one trace.&lt;br&gt;
It tells the story of one agent run.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a span?
&lt;/h2&gt;

&lt;p&gt;A span is one step inside a trace.&lt;/p&gt;

&lt;p&gt;For example, these can all be spans:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;router decision&lt;/li&gt;
&lt;li&gt;retrieval call&lt;/li&gt;
&lt;li&gt;database query&lt;/li&gt;
&lt;li&gt;API call&lt;/li&gt;
&lt;li&gt;LLM call&lt;/li&gt;
&lt;li&gt;tool execution&lt;/li&gt;
&lt;li&gt;summarization step&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Many spans together make one trace.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A simple way to remember it:&lt;br&gt;
Trace = full journey&lt;br&gt;
Span = one step in the journey&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwpbdfse79pfnyu1elw08.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwpbdfse79pfnyu1elw08.png" alt=" " width="800" height="744"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why agents need traces
&lt;/h2&gt;

&lt;p&gt;AI agents can fail in many places before the final answer.&lt;br&gt;
For example, an agent may:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;choose the wrong tool&lt;/li&gt;
&lt;li&gt;send the wrong input to a tool&lt;/li&gt;
&lt;li&gt;retrieve weak context&lt;/li&gt;
&lt;li&gt;ignore the tool result&lt;/li&gt;
&lt;li&gt;repeat the same step&lt;/li&gt;
&lt;li&gt;get stuck in a loop&lt;/li&gt;
&lt;li&gt;take too many steps before answering&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you only check the final answer, you may miss these problems.&lt;br&gt;
The answer may look okay, but the path may still be inefficient, risky, or wrong.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fri5dfmaqcuxxpk3km8c4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fri5dfmaqcuxxpk3km8c4.png" alt=" " width="800" height="923"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is instrumentation?
&lt;/h2&gt;

&lt;p&gt;Instrumentation is the process of adding tracking points to your code.&lt;/p&gt;

&lt;p&gt;It tells the system:&lt;br&gt;
Capture this step as part of the trace.&lt;/p&gt;

&lt;p&gt;For example, you may instrument:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the router&lt;/li&gt;
&lt;li&gt;the tool call&lt;/li&gt;
&lt;li&gt;the LLM call&lt;/li&gt;
&lt;li&gt;the retrieval step&lt;/li&gt;
&lt;li&gt;the final response&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This helps collect useful data like:&lt;br&gt;
start time&lt;br&gt;
end time&lt;br&gt;
input&lt;br&gt;
output&lt;br&gt;
errors&lt;br&gt;
latency&lt;br&gt;
metadata&lt;/p&gt;

&lt;p&gt;Tools like &lt;strong&gt;OpenTelemetry&lt;/strong&gt; and &lt;strong&gt;Arize Phoenix&lt;/strong&gt; help collect and visualize these traces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this helps debugging
&lt;/h2&gt;

&lt;p&gt;Imagine your agent gives a bad answer.&lt;/p&gt;

&lt;p&gt;Without traces, you may only know:&lt;br&gt;
The answer was wrong.&lt;br&gt;
With traces, you can ask better questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did the router choose the wrong path?&lt;/li&gt;
&lt;li&gt;Did retrieval return weak context?&lt;/li&gt;
&lt;li&gt;Did the tool fail?&lt;/li&gt;
&lt;li&gt;Did the LLM ignore the tool result?&lt;/li&gt;
&lt;li&gt;Did the agent repeat steps?&lt;/li&gt;
&lt;li&gt;Did the agent spend too much time in one part?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gives you a clearer debugging path.&lt;br&gt;
Instead of guessing, you can inspect the actual run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Observability and evals work together
&lt;/h2&gt;

&lt;p&gt;Observability tells you what happened.&lt;/p&gt;

&lt;p&gt;Evals help you decide whether that behavior was good or bad.&lt;br&gt;
For example, a trace may show:&lt;br&gt;
The agent called the database tool 5 times.&lt;/p&gt;

&lt;p&gt;An eval can help decide:&lt;br&gt;
Was that useful, or was the agent stuck?&lt;/p&gt;

&lt;p&gt;That is why traces and evals are stronger together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;If we want to build reliable agents, we need visibility into each step.&lt;br&gt;
That means:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;traces&lt;/li&gt;
&lt;li&gt;spans&lt;/li&gt;
&lt;li&gt;instrumentation&lt;/li&gt;
&lt;li&gt;evals&lt;/li&gt;
&lt;li&gt;error analysis&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The final answer matters. But the path matters too.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>learning</category>
      <category>llm</category>
    </item>
    <item>
      <title>Understanding AI Agents: Routers, Tools, Memory, and Why They Need Better Evals</title>
      <dc:creator>Mahima Thacker</dc:creator>
      <pubDate>Fri, 26 Jun 2026 09:44:27 +0000</pubDate>
      <link>https://dev.to/mahima_thacker/understanding-ai-agents-routers-tools-memory-and-why-they-need-better-evals-1l03</link>
      <guid>https://dev.to/mahima_thacker/understanding-ai-agents-routers-tools-memory-and-why-they-need-better-evals-1l03</guid>
      <description>&lt;p&gt;As you all know, AI agents are software systems that can reason, choose tools, and take actions on behalf of a user.&lt;/p&gt;

&lt;p&gt;They work by routing a request, using one or more tools or skills, carrying state or memory, and then producing a final answer or action.&lt;/p&gt;

&lt;p&gt;That sounds simple, but once you start building agentic systems, you quickly realize something:&lt;/p&gt;

&lt;p&gt;An agent is not one big magic box. It is a workflow.And every workflow has places where it can break.&lt;/p&gt;

&lt;h2&gt;
  
  
  A simple agent flow
&lt;/h2&gt;

&lt;p&gt;A basic agent flow may look like this:&lt;br&gt;
User query&lt;br&gt;
→ Router&lt;br&gt;
→ Tool selection&lt;br&gt;
→ Tool call&lt;br&gt;
→ Tool result&lt;br&gt;
→ LLM reasoning&lt;br&gt;
→ Final answer&lt;/p&gt;

&lt;p&gt;The user only sees the final answer.&lt;/p&gt;

&lt;p&gt;But the system did many things before reaching that answer.&lt;/p&gt;

&lt;p&gt;This is why evaluating agents is harder than checking if the final response sounds good.&lt;/p&gt;

&lt;h2&gt;
  
  
  The main parts of an agent
&lt;/h2&gt;

&lt;p&gt;Most agents have a few common parts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq22pkk8x7pbjc2e6kaet.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq22pkk8x7pbjc2e6kaet.png" alt=" " width="800" height="554"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Router
&lt;/h3&gt;

&lt;p&gt;The router decides what should happen next.&lt;/p&gt;

&lt;p&gt;It may decide:&lt;br&gt;
which tool to call&lt;br&gt;
which workflow to run&lt;br&gt;
whether the question needs retrieval&lt;br&gt;
whether the agent should ask a follow-up question&lt;br&gt;
whether it can answer directly&lt;/p&gt;

&lt;p&gt;The router can be an LLM, a rules-based system, a classifier, or a mix of these.&lt;br&gt;
If the router makes a wrong decision, everything after that can go wrong too.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Tools or skills
&lt;/h3&gt;

&lt;p&gt;A skill is a block of logic that helps the agent complete a task.&lt;br&gt;
It may include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API calls&lt;/li&gt;
&lt;li&gt;database queries&lt;/li&gt;
&lt;li&gt;web search&lt;/li&gt;
&lt;li&gt;calculations&lt;/li&gt;
&lt;li&gt;retrieval&lt;/li&gt;
&lt;li&gt;code execution&lt;/li&gt;
&lt;li&gt;summarization&lt;/li&gt;
&lt;li&gt;file processing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, a RAG skill might look like this:&lt;br&gt;
embed query&lt;br&gt;
→ search vector database&lt;br&gt;
→ retrieve context&lt;br&gt;
→ call LLM with retrieved context&lt;/p&gt;

&lt;p&gt;A tool may work perfectly on its own, but the agent can still use it incorrectly.&lt;/p&gt;

&lt;p&gt;That is why we need to evaluate not only the tool, but also how the agent chooses and uses the tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Memory and state
&lt;/h3&gt;

&lt;p&gt;Memory helps the agent remember previous context.&lt;br&gt;
State helps different parts of the agent share information during execution.&lt;/p&gt;

&lt;p&gt;This can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;chat history&lt;/li&gt;
&lt;li&gt;retrieved context&lt;/li&gt;
&lt;li&gt;configuration values&lt;/li&gt;
&lt;li&gt;previous tool outputs&lt;/li&gt;
&lt;li&gt;intermediate decisions&lt;/li&gt;
&lt;li&gt;execution steps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Memory is powerful, but it can also create problems.&lt;br&gt;
If the memory contains outdated, irrelevant, or confusing context, the agent may make poor decisions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example: data analysis agent&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine a data analysis agent.&lt;br&gt;
The user asks:&lt;br&gt;
“Show me sales trends from last month.”&lt;/p&gt;

&lt;p&gt;The agent may need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand the request&lt;/li&gt;
&lt;li&gt;Choose the database tool&lt;/li&gt;
&lt;li&gt;Generate the right query&lt;/li&gt;
&lt;li&gt;Fetch the data&lt;/li&gt;
&lt;li&gt;Analyze the result&lt;/li&gt;
&lt;li&gt;Create a summary&lt;/li&gt;
&lt;li&gt;Maybe generate a chart&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The final answer may look fine. But the path may still be wrong.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj4ixh8bmssj6toq44l6e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj4ixh8bmssj6toq44l6e.png" alt=" " width="800" height="753"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The agent may have queried the wrong table.&lt;/p&gt;

&lt;p&gt;It may have used incomplete data.&lt;br&gt;
It may have ignored a tool result.&lt;br&gt;
It may have repeated the same step.&lt;br&gt;
It may have generated a confident answer from a weak context.&lt;/p&gt;

&lt;p&gt;This is the problem with only checking final answers.&lt;br&gt;
What can go wrong?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A few common failures:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;wrong tool selected&lt;/li&gt;
&lt;li&gt;tool called with wrong input&lt;/li&gt;
&lt;li&gt;weak retrieval context&lt;/li&gt;
&lt;li&gt;invalid query&lt;/li&gt;
&lt;li&gt;repeated tool calls&lt;/li&gt;
&lt;li&gt;loop without progress&lt;/li&gt;
&lt;li&gt;hallucinated summary&lt;/li&gt;
&lt;li&gt;poor final response&lt;/li&gt;
&lt;li&gt;correct answer but inefficient path&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is why agent evals need to be more granular.&lt;br&gt;
Evaluate the components&lt;/p&gt;

&lt;p&gt;Instead of asking only:&lt;br&gt;
“Is the final answer correct?”&lt;br&gt;
We should also ask:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Router eval&lt;/strong&gt;&lt;br&gt;
Did the agent choose the right path?&lt;br&gt;
&lt;strong&gt;Tool eval&lt;/strong&gt;&lt;br&gt;
Did it call the right tool with the right input?&lt;br&gt;
&lt;strong&gt;Retrieval eval&lt;/strong&gt;&lt;br&gt;
Did it use relevant context?&lt;br&gt;
&lt;strong&gt;Memory eval&lt;/strong&gt;&lt;br&gt;
Did memory help, or did it confuse the agent?&lt;br&gt;
&lt;strong&gt;Path eval&lt;/strong&gt;&lt;br&gt;
Did the agent avoid loops and unnecessary repeated steps?&lt;br&gt;
&lt;strong&gt;Response eval&lt;/strong&gt;&lt;br&gt;
Was the final answer useful, grounded, and clear?&lt;/p&gt;

&lt;h2&gt;
  
  
  Why traces matter
&lt;/h2&gt;

&lt;p&gt;Traces show what actually happened during the agent run.&lt;/p&gt;

&lt;p&gt;A good trace can show:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;router decision&lt;/li&gt;
&lt;li&gt;selected tool&lt;/li&gt;
&lt;li&gt;tool input&lt;/li&gt;
&lt;li&gt;tool output&lt;/li&gt;
&lt;li&gt;step count&lt;/li&gt;
&lt;li&gt;retries&lt;/li&gt;
&lt;li&gt;repeated steps&lt;/li&gt;
&lt;li&gt;final answer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without traces, debugging agents is mostly guesswork.&lt;br&gt;
You see the final answer, but not the path.&lt;br&gt;
And for agents, the path matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;AI agents are workflows.&lt;br&gt;
Workflows need visibility.&lt;br&gt;
If we want agents to become reliable, we need more than prompts.&lt;/p&gt;

&lt;p&gt;We need:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;traces&lt;/li&gt;
&lt;li&gt;evals&lt;/li&gt;
&lt;li&gt;error analysis&lt;/li&gt;
&lt;li&gt;component-level checks&lt;/li&gt;
&lt;li&gt;path-level debugging&lt;/li&gt;
&lt;li&gt;better developer tooling&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is what I’m exploring more through projects like LoopGuard and Supabase Agent Eval Kit.&lt;/p&gt;

&lt;p&gt;Still learning, but this area feels important.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>agents</category>
      <category>evals</category>
    </item>
    <item>
      <title>Why AI Agents Need Both Tests and Traces</title>
      <dc:creator>Mahima Thacker</dc:creator>
      <pubDate>Thu, 25 Jun 2026 12:11:44 +0000</pubDate>
      <link>https://dev.to/mahima_thacker/why-ai-agents-need-both-tests-and-traces-1a83</link>
      <guid>https://dev.to/mahima_thacker/why-ai-agents-need-both-tests-and-traces-1a83</guid>
      <description>&lt;p&gt;I’ve been learning more about evaluating AI agents recently, and one thing clicked for me:&lt;/p&gt;

&lt;p&gt;For agents, checking the final answer is not enough.&lt;br&gt;
You also need to evaluate the path the agent took.&lt;/p&gt;

&lt;p&gt;Traditional software is usually easier to test because it is more deterministic.&lt;/p&gt;

&lt;p&gt;If you give a function the same input, you usually expect the same output.&lt;/p&gt;

&lt;p&gt;same input → same expected output&lt;/p&gt;

&lt;p&gt;That makes unit tests and integration tests easier to write.&lt;br&gt;
But LLM-based systems are different.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3uj2m3revwlw7gym7arz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3uj2m3revwlw7gym7arz.png" alt=" " width="799" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The same input can produce different outputs. The agent may use tools, memory, retrieval, prompts, and multiple reasoning steps before giving a final answer.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So the question is not only:&lt;br&gt;
Did the agent answer correctly?&lt;/p&gt;

&lt;p&gt;It is also:&lt;br&gt;
How did the agent reach that answer?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  A simple example: data analyzer agent
&lt;/h2&gt;

&lt;p&gt;Imagine you are building a data analyzer agent.&lt;/p&gt;

&lt;p&gt;The user asks:&lt;br&gt;
“What was our revenue growth last month?”&lt;/p&gt;

&lt;p&gt;The agent may need to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Understand the user’s request&lt;/li&gt;
&lt;li&gt;Choose the right tool&lt;/li&gt;
&lt;li&gt;Query the right database table&lt;/li&gt;
&lt;li&gt;Analyze the result&lt;/li&gt;
&lt;li&gt;Summarize the answer&lt;/li&gt;
&lt;li&gt;Remember previous context if needed&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The final answer might look correct. But the path may still be wrong.&lt;br&gt;
Maybe the agent queried the wrong table.&lt;/p&gt;

&lt;p&gt;Maybe it used weak context.&lt;br&gt;
Maybe it ignored a tool result.&lt;br&gt;
Maybe it repeated the same step multiple times.&lt;br&gt;
Maybe it got stuck in a loop before answering.&lt;/p&gt;

&lt;p&gt;This is why agent evaluation is different.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwp2edkexysx1txvwo6kz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwp2edkexysx1txvwo6kz.png" alt=" " width="800" height="898"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Output evaluation is not enough
&lt;/h2&gt;

&lt;p&gt;Most people start by evaluating the final output.&lt;br&gt;
That is useful.&lt;/p&gt;

&lt;p&gt;You can ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the answer correct?&lt;/li&gt;
&lt;li&gt;Is the answer grounded?&lt;/li&gt;
&lt;li&gt;Did the agent hallucinate?&lt;/li&gt;
&lt;li&gt;Did it answer the user’s question?&lt;/li&gt;
&lt;li&gt;Was the response useful?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But for agents, this only shows part of the picture.&lt;br&gt;
An agent can produce a correct-looking answer after taking a bad path.&lt;/p&gt;

&lt;p&gt;And in production, that bad path matters.&lt;br&gt;
It can increase cost, latency, risk, and user confusion.&lt;/p&gt;

&lt;h2&gt;
  
  
  You need to evaluate the path too.
&lt;/h2&gt;

&lt;p&gt;For an AI agent, the path includes things like:&lt;/p&gt;

&lt;p&gt;which tool it selected&lt;br&gt;
what input it passed to the tool&lt;br&gt;
what the tool returned&lt;br&gt;
whether it retried&lt;br&gt;
whether it repeated itself&lt;br&gt;
whether it made progress&lt;br&gt;
whether it used the right context&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is where traces become important.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A trace shows what actually happened inside the agent workflow.&lt;br&gt;
Without traces, debugging agents becomes guesswork.&lt;/p&gt;

&lt;p&gt;You see the final answer, but you don’t know what happened before that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Error analysis for agents
&lt;/h2&gt;

&lt;p&gt;In machine learning, error analysis means observing, isolating, and diagnosing mistakes made by a model.&lt;/p&gt;

&lt;p&gt;For agentic workflows, error analysis applies to the whole system.&lt;br&gt;
Not just the final LLM response.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The router selected the wrong tool&lt;/li&gt;
&lt;li&gt;The retrieval step returned irrelevant context&lt;/li&gt;
&lt;li&gt;The agent queried the wrong database table&lt;/li&gt;
&lt;li&gt;The tool call failed, but the agent continued confidently&lt;/li&gt;
&lt;li&gt;The agent repeated the same action without progress&lt;/li&gt;
&lt;li&gt;The final answer was acceptable, but the workflow was inefficient&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are system-level failures.&lt;/p&gt;

&lt;p&gt;You cannot catch them by only reading the final answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Different parts need different evals
&lt;/h2&gt;

&lt;p&gt;One eval cannot check everything.&lt;/p&gt;

&lt;p&gt;A router decision, tool call, retrieval step, summary, and final answer may all need different checks.&lt;/p&gt;

&lt;h3&gt;
  
  
  1) Code-based evals
&lt;/h3&gt;

&lt;p&gt;Code-based evals are useful when the expected behavior is clear.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Did the agent call the right tool?&lt;/li&gt;
&lt;li&gt;Did it return valid JSON?&lt;/li&gt;
&lt;li&gt;Did it stay within the expected number of steps?&lt;/li&gt;
&lt;li&gt;Did it avoid unsafe operations?&lt;/li&gt;
&lt;li&gt;Did the API response match the expected schema?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are easier to automate.&lt;/p&gt;

&lt;h3&gt;
  
  
  2) LLM-as-a-judge
&lt;/h3&gt;

&lt;p&gt;LLM-as-a-judge is useful when quality is harder to check with code.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the summary useful?&lt;/li&gt;
&lt;li&gt;Is the answer grounded in the source?&lt;/li&gt;
&lt;li&gt;Did it answer the actual user question?&lt;/li&gt;
&lt;li&gt;Is the response coherent?&lt;/li&gt;
&lt;li&gt;Did it hallucinate?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is useful for subjective outputs, but it should still be used carefully.&lt;/p&gt;

&lt;h3&gt;
  
  
  3) Human evaluation
&lt;/h3&gt;

&lt;p&gt;Human evaluation still matters.&lt;br&gt;
Especially for:&lt;br&gt;
high-stakes workflows&lt;br&gt;
domain-specific tasks&lt;br&gt;
safety-sensitive outputs&lt;br&gt;
tone and usefulness&lt;br&gt;
ambiguous answers&lt;/p&gt;

&lt;p&gt;Sometimes the best evaluator is still a person who understands the real user and context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tests tell us if something passed
&lt;/h2&gt;

&lt;p&gt;Tests are important.&lt;br&gt;
They help us check whether the agent behaves correctly on known examples.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Question&lt;/strong&gt;: “Show me total revenue for May”&lt;br&gt;
&lt;strong&gt;Expected tool&lt;/strong&gt;: run_sql_query&lt;br&gt;
&lt;strong&gt;Expected behaviour&lt;/strong&gt;: query revenue table&lt;br&gt;
&lt;strong&gt;Expected output&lt;/strong&gt;: grounded answer with a number&lt;/p&gt;

&lt;p&gt;This gives us a way to catch regressions.&lt;/p&gt;

&lt;p&gt;If we change the prompt, model, tool schema, or agent logic, we can run the same eval again and see what changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Traces show us what happened
&lt;/h2&gt;

&lt;p&gt;Traces are equally important.&lt;br&gt;
They tell us the story of the run.&lt;br&gt;
For example:&lt;br&gt;
User query&lt;br&gt;
→ Router decision&lt;br&gt;
→ Tool selected&lt;br&gt;
→ Tool input&lt;br&gt;
→ Tool output&lt;br&gt;
→ Agent reasoning step&lt;br&gt;
→ Final answer&lt;/p&gt;

&lt;p&gt;A trace helps us see where things went wrong.&lt;/p&gt;

&lt;p&gt;Maybe the router failed.&lt;br&gt;
Maybe the tool returned bad data.&lt;br&gt;
Maybe the LLM ignored the tool result.&lt;br&gt;
Maybe the agent looped.&lt;br&gt;
Maybe the answer was fine, but the path was too expensive.&lt;br&gt;
Tests and traces work better together.&lt;/p&gt;

&lt;h2&gt;
  
  
  The main lesson
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;AI agents need both:&lt;br&gt;
Tests to check expected behavior.&lt;br&gt;
Traces to understand actual behavior.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Tests tell us whether something passed or failed.&lt;br&gt;
Traces show us what happened.&lt;/p&gt;

&lt;p&gt;Together, they make agents easier to debug, improve, and trust.&lt;/p&gt;

&lt;p&gt;That is the direction I’m exploring more through projects like LoopGuard and Supabase Agent Eval Kit.&lt;/p&gt;

&lt;p&gt;I’m still learning, but this area feels important because agents are not just prompt-in, answer-out systems. They are workflows.&lt;/p&gt;

&lt;p&gt;And workflows need visibility.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>testing</category>
      <category>llm</category>
    </item>
    <item>
      <title>AI Is Not Killing DevRel. It Is Making It 10x Bigger - My DevRel Uni Cohort 7 Reflection</title>
      <dc:creator>Mahima Thacker</dc:creator>
      <pubDate>Wed, 03 Jun 2026 11:38:09 +0000</pubDate>
      <link>https://dev.to/mahima_thacker/ai-is-not-killing-devrel-it-is-making-it-10x-bigger-my-devrel-uni-cohort-7-reflection-9ad</link>
      <guid>https://dev.to/mahima_thacker/ai-is-not-killing-devrel-it-is-making-it-10x-bigger-my-devrel-uni-cohort-7-reflection-9ad</guid>
      <description>&lt;p&gt;That is the one line I am taking with me after finishing DevRel Uni Cohort 7.&lt;/p&gt;

&lt;p&gt;Before this cohort, I had a lot of questions in my head.&lt;/p&gt;

&lt;p&gt;Will AI replace DevRel/other roles?&lt;br&gt;
Are docs still important?&lt;br&gt;
Do communities still matter?&lt;br&gt;
What even is my role in all of this?&lt;/p&gt;

&lt;p&gt;Five sessions later, I have answers.&lt;/p&gt;

&lt;p&gt;And honestly, my whole way of thinking has shifted.&lt;/p&gt;

&lt;p&gt;So let me share what I learned, what surprised me, and what I am taking forward.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR:  All 5 Sessions in One Place
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Session 1&lt;/strong&gt; - Bianca: The core of DevRel (sensemaking, storytelling, distribution, feedback loops) stays the same. But the audience, docs, content, and community are all changing because of AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Session 2&lt;/strong&gt; - Nader Dabit: Do not lock yourself into one title. Become a technologist. Keep learning, keep building, keep moving. The safest thing in tech is being adaptable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Session 3&lt;/strong&gt; — Patrick Skinner: Speed without systems is chaos. Build a Brainlifting habit — learn daily, document what works, and keep your knowledge system alive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Session 4&lt;/strong&gt; — Hassan El Mghari: Developer Experience is not enough anymore. Agent Experience is the new frontier. Your docs need to be readable by humans AND AI agents.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Session 5&lt;/strong&gt; — Francesco Andreolí: DevRel is becoming more important, not less. GEO is the new SEO. Build systems that help both humans and agents grow your ecosystem.&lt;/p&gt;

&lt;h3&gt;
  
  
  One big theme connects all of them:
&lt;/h3&gt;

&lt;p&gt;DevRel in the age of AI is not about doing less. It is about doing more, with better systems, for a bigger audience that now includes AI agents and LLMs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&amp;gt; So the real skill is simple: be adaptable.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Actually Changed for Me
&lt;/h2&gt;

&lt;p&gt;Here is what shifted in my head:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. My audience is not just developers anymore.&lt;/strong&gt;&lt;br&gt;
It is developers, founders, students, non-coders, and AI agents too. That changes everything about how I write, teach, and build.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Docs are not just for humans.&lt;/strong&gt;&lt;br&gt;
If ChatGPT or Claude cannot understand my docs, my product loses. Writing for LLMs is now part of the job. GEO (Generative Engine Optimization) is real.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. I do not need to pick one identity forever.&lt;/strong&gt;&lt;br&gt;
Nader's line, "become a technologist", — broke something open for me. I was so worried about choosing the "right" path. Now I just want to keep learning and stay adaptable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Speed is not the goal. Systems are.&lt;/strong&gt;&lt;br&gt;
Patrick's session hit hard. AI can make me 10x faster. But without systems for learning, documenting, and reviewing, I am just creating chaos faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Trust is still human.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the part that gave me peace. Sensemaking is human. Storytelling is human. Community is human. AI cannot replace any of that. It can only scale it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Surprised Me Most
&lt;/h2&gt;

&lt;p&gt;Honestly? How much the human part of DevRel still matters.&lt;br&gt;
I thought the whole cohort would be about new tools, new workflows, and new automations.&lt;/p&gt;

&lt;p&gt;And yes, we covered all of that.&lt;/p&gt;

&lt;p&gt;But every single mentor - Bianca, Nader, Patrick, Hassan, Francesco kept coming back to the same thing:&lt;/p&gt;

&lt;p&gt;Taste. Judgment. Trust. Community.&lt;br&gt;
You cannot automate those.&lt;br&gt;
You can only build them by showing up, being honest, and helping people.&lt;br&gt;
That surprised me. In a good way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two Sessions That Stuck With Me
&lt;/h2&gt;

&lt;p&gt;Every session was valuable. But two of them keep playing in my head.&lt;br&gt;
Nader's session on navigating a tech career.&lt;br&gt;
Nader did not just give career advice. He gave a way of thinking about a career.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The line that stayed with me was: become a technologist.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not a frontend developer. Not a DevRel. Not a content creator. A technologist.&lt;br&gt;
Someone who learns what is needed, builds across domains, and adapts as the industry moves.&lt;/p&gt;

&lt;p&gt;That reframe took the pressure off picking the "right" path. Because in tech, there is no right path. There is only the next move.&lt;/p&gt;

&lt;p&gt;He also talked about how careers are not straight lines. They look messy in the moment. They only make sense looking back.&lt;/p&gt;

&lt;p&gt;That gave me permission to experiment without needing a guaranteed outcome at every step.&lt;/p&gt;

&lt;p&gt;Hassan's session on building apps and Agent Experience.&lt;br&gt;
Hassan did not just talk about AI. He showed how he actually builds with it, coding agents, demo apps, documentation bots, internal tools, and automations.&lt;br&gt;
It was not a theory. It was real workflows from someone shipping every week.&lt;/p&gt;

&lt;p&gt;But the part that stuck was this:&lt;br&gt;
He is not just building apps for users. He is building apps that help people learn, ship, and explore a product faster — with AI inside the workflow.&lt;/p&gt;

&lt;p&gt;And the bigger idea, Agent Experience, changed how I think about my own work.&lt;br&gt;
If a developer reads my docs, that is one user.&lt;br&gt;
If an AI agent reads my docs and recommends my product to hundreds of developers, that is leverage.&lt;br&gt;
So now I am not just asking, "Is my doc clear for a human?"&lt;br&gt;
I am also asking, "Can an agent understand it well enough to actually act on it?"&lt;br&gt;
That is a new lens. And it is hard to unsee once you see it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How AI Changed The Way I Build and Learn
&lt;/h2&gt;

&lt;p&gt;I was already using AI before this cohort.&lt;br&gt;
So the shift was not "I started using AI."&lt;br&gt;
It was "I started thinking about AI differently."&lt;br&gt;
Before, I used AI to help me build.&lt;br&gt;
Now, I also build for AI.&lt;br&gt;
That is a small switch in words. But a big switch in mindset.&lt;/p&gt;

&lt;h2&gt;
  
  
  A few habits I picked up during the cohort:
&lt;/h2&gt;

&lt;p&gt;I write docs that work for humans first, but I also check if an AI agent can understand them.&lt;br&gt;
I think about how my content shows up in ChatGPT, Claude, and other AI tools, not just Google.&lt;br&gt;
I build systems around my AI workflow, not just speed.&lt;br&gt;
I treat AI as part of my audience, not just my toolkit.&lt;/p&gt;

&lt;p&gt;AI does not give me ideas. It helps me move faster on the ideas I already have.&lt;br&gt;
But the bigger unlock from this cohort was realising AI is also a reader, a learner, and a distributor of my work.&lt;br&gt;
That changes everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built During the Cohort
&lt;/h2&gt;

&lt;p&gt;This cohort also pushed me to ship.&lt;br&gt;
I worked on DriftGuard, a developer tool that came from a simple frustration:&lt;br&gt;
SDK docs often drift from the actual code.&lt;br&gt;
A docs example works at one point, then the SDK changes, and nobody notices until a developer tries it and it breaks.&lt;br&gt;
That is painful.&lt;br&gt;
So I shipped the first version of DriftGuard to npm.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;npm install --save-dev @driftguardjs/cli&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The idea is simple.&lt;br&gt;
You point it at your SDK, snapshot once, and commit the baseline. Then every PR can check for broken doc snippets, removed exports, or changed signatures.&lt;/p&gt;

&lt;p&gt;If something drifts, DriftGuard can fail the check and show the file and line where the issue happened.&lt;/p&gt;

&lt;p&gt;It is still early, but building this during the cohort helped me connect the sessions to a real problem.&lt;br&gt;
Because DevRel is not only about explaining things better.&lt;br&gt;
It is also about reducing friction for developers.&lt;br&gt;
And that is what I want DriftGuard to help with.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Am Taking Forward
&lt;/h2&gt;

&lt;p&gt;A few things I am committing to after this cohort:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build in public. Even when it feels small. Even when I am not an expert.&lt;/li&gt;
&lt;li&gt;Write for both humans and agents. Every doc, every post, every README.&lt;/li&gt;
&lt;li&gt;Build a learning loop. Learn, build, share, get feedback, repeat.&lt;/li&gt;
&lt;li&gt;Keep my network warm. Not transactional. Just real.&lt;/li&gt;
&lt;li&gt;Stop waiting to feel "ready." Move when the window opens.&lt;/li&gt;
&lt;li&gt;Treat every day like Day 1.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Thank You, DevRel Uni
&lt;/h2&gt;

&lt;p&gt;A huge thank you to Bianca and the entire DevRel Uni team for putting this together.&lt;/p&gt;

&lt;p&gt;You did not just teach us frameworks.&lt;br&gt;
You brought in mentors who have actually done the work.&lt;/p&gt;

&lt;p&gt;And you created a space where we could ask honest questions and meet honest people.&lt;/p&gt;

&lt;p&gt;I met so many incredible builders in this cohort.&lt;br&gt;
People I know I will stay in touch with for a long time.&lt;br&gt;
That alone made the whole thing worth it.&lt;br&gt;
And to every mentor — Bianca, Nader, Patrick, Hassan, and Francesco,  thank you for being so generous with your time and your truth.&lt;/p&gt;

&lt;h2&gt;
  
  
  If You Are Reading This
&lt;/h2&gt;

&lt;p&gt;If you are even a little bit curious about DevRel, AI, or building developer ecosystems, join the next DevRel Uni Cohort.&lt;/p&gt;

&lt;p&gt;You will not just learn frameworks.&lt;br&gt;
You will meet your people.&lt;br&gt;
And in the age of AI, that is the most valuable thing you can do.&lt;/p&gt;

&lt;p&gt;The fundamentals of DevRel are not changing.&lt;br&gt;
The tools are just getting 10x more powerful.&lt;/p&gt;

&lt;p&gt;So learn AI.&lt;br&gt;
Use it.&lt;br&gt;
And become better at helping people build.&lt;/p&gt;

&lt;p&gt;See you in the next chapter!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>DriftGuard: catching when your code quietly breaks your docs</title>
      <dc:creator>Mahima Thacker</dc:creator>
      <pubDate>Wed, 03 Jun 2026 09:36:49 +0000</pubDate>
      <link>https://dev.to/mahima_thacker/driftguard-catching-when-your-code-quietly-breaks-your-docs-1c2e</link>
      <guid>https://dev.to/mahima_thacker/driftguard-catching-when-your-code-quietly-breaks-your-docs-1c2e</guid>
      <description>&lt;p&gt;if you've ever shipped an SDK update and then, three weeks later, a GitHub issue lands saying "the README example doesn't work," you'll recognize this problem. &lt;br&gt;
The code changed. The docs didn't. Users hit broken snippets. You only find out from the angry messages.&lt;/p&gt;

&lt;p&gt;I built DriftGuard because I kept seeing this in Web3 SDKs - contracts get upgraded, the TypeScript SDK evolves, but the docs and example apps lag behind. By the time someone reports it, a dozen users have already been confused.&lt;/p&gt;
&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;DriftGuard is a CLI + GitHub Action that detects "drift" - when changes in one layer of your project break another layer. It runs in CI on every pull request and posts inline annotations at the exact line that broke.&lt;/p&gt;

&lt;p&gt;It's not a doc generator like Mintlify. It doesn't write docs for you. It just makes sure the docs you already have stay accurate.&lt;/p&gt;

&lt;p&gt;contracts ─┐&lt;br&gt;
SDK       ─┼─▶ DriftGuard ─▶ ✓ no drift     PR passes&lt;br&gt;
docs      ─┤                ✗ drift found   PR fails with file:line&lt;br&gt;
demos     ─┘&lt;/p&gt;
&lt;h2&gt;
  
  
  Who it's for
&lt;/h2&gt;

&lt;p&gt;DevRel engineers maintaining SDK docs and example apps&lt;br&gt;
SDK maintainers who ship breaking changes occasionally&lt;br&gt;
Web3 teams with contracts + SDK + docs + demo repos to keep in sync&lt;br&gt;
If your project has a public API and docs that show how to use it, DriftGuard probably helps.&lt;/p&gt;
&lt;h2&gt;
  
  
  What it actually checks
&lt;/h2&gt;

&lt;p&gt;Four layers, all deterministic — no AI guessing:&lt;/p&gt;

&lt;p&gt;1) Solidity contracts: Function/event added or removed, mutability tightened, parameter type changes&lt;/p&gt;

&lt;p&gt;2) TypeScript SDK: Exports added/removed, signature changes, kind changes (function → class)&lt;/p&gt;

&lt;p&gt;3)Docs: TypeScript code blocks in .md/.mdx get re-type-checked against the current SDK&lt;/p&gt;

&lt;p&gt;4) Demos Optional: runs install + test in real demo projects to catch runtime drift&lt;/p&gt;

&lt;p&gt;When a check fails, you get a GitHub annotation right at the file:line in the PR diff. The same finding appears in the workflow summary as Markdown and in a SARIF report for GitHub's code-scanning tab.&lt;/p&gt;
&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Two steps:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1) Snapshot — run driftguard snapshot once. It captures your contracts, SDK exports, and doc snippets in a normalized JSON file. Commit it.&lt;/p&gt;

&lt;p&gt;2) Check — on every PR, driftguard check recomputes the same shapes and diffs against the committed snapshot. Differences become findings.&lt;br&gt;
The snapshot is the approval mechanism. If you intentionally change your SDK signature, you re-run driftguard snapshot to update the baseline. The next check passes.&lt;/p&gt;

&lt;p&gt;For doc snippets, the validation step is the interesting part. Each TypeScript code block in your README gets compiled against your current SDK using a path-mapped ts-morph Project. If your SDK changes a signature, the snippet that calls the old shape stops compiling — and the check fails at the line of the snippet in the markdown file.&lt;/p&gt;
&lt;h2&gt;
  
  
  Quick start
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;npm install --save-dev @driftguardjs/cli&lt;br&gt;
npx driftguard init       # writes a starter config (auto-detects  what's in your project)&lt;br&gt;
npx driftguard snapshot   # captures the baseline&lt;br&gt;
git add .driftguard/snapshot.json driftguard.config.ts&lt;br&gt;
git commit -m "add driftguard"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Add to your CI workflow:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;mahimathacker/driftguard@v0&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;check&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the whole setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned building it
&lt;/h2&gt;

&lt;p&gt;Dogfooding catches bugs nothing else does. The first time I ran DriftGuard against its own repo, it produced 1500-character unreadable diffs — Zod schemas were expanding into huge inferred types. The code was correct. The output was unusable in a PR comment. No test would've caught this. I had to run the tool against itself to feel what a real user feels.&lt;/p&gt;

&lt;p&gt;Bundling complex libraries doesn't always work. I spent two hours trying to bundle the GitHub Action into a single JavaScript file. Two libraries the tool uses (ts-morph and jiti) do runtime dynamic loading that no bundler can package cleanly. Eventually I gave up and made the action just install the CLI from npm at runtime. The simpler approach turned out to be the right one.&lt;/p&gt;

&lt;h2&gt;
  
  
  How AI shaped the workflow:
&lt;/h2&gt;

&lt;p&gt;AI was fast at two specific things:&lt;/p&gt;

&lt;p&gt;Architecture decisions before they became regrets — content-hash IDs for doc snippets (instead of line numbers, which break when you add a paragraph above), lenient-by-default snapshots (so users can adopt the tool without first fixing every broken example), syntactic types over inferred types in the diff output.&lt;/p&gt;

&lt;p&gt;Diagnosing CI output — when a test PR didn't render annotations as expected, AI immediately pointed at "GitHub requires repo-relative paths, not absolute." That alone saved an hour of reading docs.&lt;br&gt;
What AI didn't decide: when to stop polishing and ship. When to abandon the bundling path. What counts as a v0.1.0 blocker versus a v0.1.x polish item. Those judgment calls stayed with me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to find it
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;npm: &lt;a href="https://www.npmjs.com/package/@driftguardjs/cli" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/@driftguardjs/cli&lt;/a&gt;&lt;br&gt;
GitHub: &lt;a href="https://github.com/mahimathacker/driftguard" rel="noopener noreferrer"&gt;https://github.com/mahimathacker/driftguard&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Built as part of DevRel Uni Cohort 7. Next on the roadmap: Solidity snippet validation, AI-suggested fixes for broken snippets, and an MCP server so coding agents can query "what would break if I change X?" before they make the change.&lt;/p&gt;

&lt;p&gt;If you try it on your own SDK, I'd love to hear what breaks first — issues or DMs both work.&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>devrel</category>
      <category>web3</category>
      <category>ai</category>
    </item>
    <item>
      <title>You Changed One Line and Called It a Migration. Opus 4.8 Has Other Plans.</title>
      <dc:creator>Mahima Thacker</dc:creator>
      <pubDate>Fri, 29 May 2026 11:25:25 +0000</pubDate>
      <link>https://dev.to/mahima_thacker/you-changed-one-line-and-called-it-a-migration-opus-48-has-other-plans-53jo</link>
      <guid>https://dev.to/mahima_thacker/you-changed-one-line-and-called-it-a-migration-opus-48-has-other-plans-53jo</guid>
      <description>&lt;h2&gt;
  
  
  What actually changes in your backend when you move from Claude Opus 4.7 to 4.8, the 9 things the benchmark screenshots don't tell you.
&lt;/h2&gt;

&lt;p&gt;Most of us ran the same play this week: open the config, swap claude-opus-4-7 for claude-opus-4-8, redeploy, see the request come back 200, move on.&lt;/p&gt;

&lt;p&gt;The API contract didn't break, so it felt finished. It wasn't. &lt;/p&gt;

&lt;p&gt;Anthropic's migration guide says code that ran on 4.7 keeps running on 4.8 with no changes, and that's true, but it's a statement about the request format, not about behavior. &lt;/p&gt;

&lt;p&gt;Your output lengths, token bills, tool-call counts, retries, and where your agent decides to stop can all shift without a single error code.&lt;/p&gt;

&lt;p&gt;So for anyone running Opus in production, 4.8 reads less like a "smarter model" headline and more like a list of changed defaults you should check before trusting it with real traffic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Here's that list:
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. What "no breaking changes" actually covers
&lt;/h4&gt;

&lt;p&gt;It covers the call succeeding. That's about it.&lt;br&gt;
The same prompt can come back longer or shorter, spend more or fewer thinking tokens, call tools more or less often, and cost more or less per request, all while returning 200. If the only thing you checked after the swap is that the endpoint still responds, you haven't really tested the upgrade yet.&lt;/p&gt;
&lt;h4&gt;
  
  
  2. The effort default quietly dropped from xhigh to high
&lt;/h4&gt;

&lt;p&gt;This is the one most likely to catch you, and almost nobody's mentioning it.&lt;/p&gt;

&lt;p&gt;On Opus 4.7 the default effort was xhigh. On 4.8 it's high, on every surface, API and Claude Code included. If you upgrade and change nothing, your high-autonomy and coding agents may now reason less by default than they did the day before.&lt;/p&gt;

&lt;p&gt;It's not a regression. high is Anthropic's chosen balance of quality and cost, and they recommend setting xhigh yourself for coding and agentic work. But it's still a behavior change riding along inside a "no breaking changes" release, and the only way you'll notice is by looking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Two things worth knowing when you set it:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;effort goes in output_config, not inside thinking. Put it in the wrong place and you get a validation error rather than a silent fallback.&lt;/p&gt;

&lt;p&gt;xhigh isn't new in 4.8. It shipped with 4.7, where it was the default. The change in 4.8 is that you now have to ask for it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-4-8&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;64000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;                    &lt;span class="c1"&gt;# leave room to think + act
&lt;/span&gt;    &lt;span class="n"&gt;output_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;effort&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;xhigh&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;   &lt;span class="c1"&gt;# not inside `thinking`
&lt;/span&gt;    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[...],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The levels run low, medium, high (default), xhigh, max. Use xhigh for coding and long-running agents, step down to medium or low for cheap simple calls, and reach for max only when your own evals show it buys you something over xhigh, since it spends tokens with no ceiling.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Adaptive thinking is something you turn on
&lt;/h4&gt;

&lt;p&gt;A common misread is that 4.8 "thinks adaptively now" out of the box. It doesn't. Adaptive thinking is a mode you enable with thinking: {type: "adaptive"}, and it's off until you set it. Once it's on, the model decides per turn whether a step needs real reasoning or a direct answer.&lt;/p&gt;

&lt;p&gt;This matters because agent loops mix trivial steps and hard ones. "Read this file" and "refactor this module under these three constraints" don't deserve the same thinking budget, and without adaptive thinking you were often paying for deep reasoning on the trivial steps anyway. With it enabled, 4.8 wastes fewer thinking tokens than 4.7 did at the same effort level.&lt;/p&gt;

&lt;p&gt;At high (the default) and max, the model will almost always think. At lower levels it may skip thinking on easy turns. Effort and adaptive thinking are separate knobs that interact, so it's worth setting both deliberately rather than leaving one on its default.&lt;/p&gt;

&lt;h4&gt;
  
  
  4. 1M context is the default.
&lt;/h4&gt;

&lt;p&gt;That's not a reason to stop retrieving.&lt;br&gt;
Opus 4.8 serves the full 1M-token window by default now, with no beta header and no long-context surcharge. If your client still sends an old context-window beta header for backward compatibility, you can drop it.&lt;/p&gt;

&lt;p&gt;What the bigger window doesn't fix: noisy retrieval, duplicate files, stale context, sloppy chunking, missing citations, slow prompts, or a bill that quietly tripled because you started stuffing whole repos into every call.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. The change you'll actually feel is tool behaviour
&lt;/h4&gt;

&lt;p&gt;If there's one capability improvement to care about, it's this.&lt;/p&gt;

&lt;p&gt;Anthropic calls out two things in 4.8: better tool triggering (the model is less likely to skip a tool call the task needed, which some 4.7 users ran into) and better compaction handling (long agentic runs stay on task with fewer derailments after the context gets compacted).&lt;/p&gt;

&lt;p&gt;In practice, production agents don't usually fail because the model is dumb. They fail like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;it should have read the file, but guessed&lt;br&gt;
it should have run the tests, but skipped them&lt;br&gt;
it should have called the API, but assumed the result&lt;br&gt;
it had the constraint earlier in the session, then drifted off it&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;4.8 is aimed at that class of failure. For agent systems, raw intelligence was rarely the limiting factor. Picking the right tool, calling it at the right moment, using the result, and not losing the thread after compaction is most of what decides whether the thing works, and that's hard to read off a benchmark table but easy to feel in a long session.&lt;/p&gt;

&lt;h4&gt;
  
  
  6. System messages mid-conversation
&lt;/h4&gt;

&lt;p&gt;Opus 4.8 accepts role: "system" messages placed immediately after a user turn in the messages array (there are placement rules). Earlier models, 4.7 included, rejected that with a 400.&lt;/p&gt;

&lt;p&gt;It looks minor and it isn't, because it gives you a way to re-steer a running agent without rebuilding the whole prompt history. The agent is halfway through a refactor, tests start failing, your harness drops in a system entry like "fix the failing tests before continuing," and the agent adjusts. &lt;/p&gt;

&lt;p&gt;Since you're not rewriting earlier turns, you keep your prompt-cache hits. Use the top-level system field for instructions that apply from the start, and in-array system messages for course corrections during the run.&lt;/p&gt;

&lt;h4&gt;
  
  
  7. Prompt caching now works for shorter prompts
&lt;/h4&gt;

&lt;p&gt;The minimum cacheable prompt length on 4.8 dropped to 1,024 tokens, down from 4.7's higher threshold. Prompts that were too short to cache before will cache now, with no code change.&lt;/p&gt;

&lt;p&gt;It's worth a few minutes to split the stable parts of your prompt from the dynamic ones so the cache actually earns its keep:&lt;/p&gt;

&lt;p&gt;stable, cache it: system prompt, tool definitions, repo map, schemas, policy text&lt;br&gt;
dynamic, don't: the user's question, retrieved chunks, latest tool output&lt;/p&gt;

&lt;p&gt;Easy to skip in a demo, expensive to skip in production.&lt;/p&gt;

&lt;h4&gt;
  
  
  8. Same sticker price, different real cost
&lt;/h4&gt;

&lt;p&gt;Standard pricing is unchanged from 4.7: $5 / $25 per million input/output tokens. But the sticker price isn't the bill. What you actually pay depends on effort level, context size, output length, tool calls, retries, cache hits, and batch usage.&lt;/p&gt;

&lt;p&gt;There's also fast mode (research preview, Claude API, speed: "fast"): up to about 2.5x the output tokens per second from the same model, at $10 / $50 per million. Worth being precise here, because it's easy to misread: fast mode is a premium, roughly 2x the standard rate, not a discount. It's only cheaper compared to fast mode on the older 4.6/4.7 models, which ran $30 / $150. &lt;/p&gt;

&lt;p&gt;The honest framing is that fast mode finally costs something reasonable for latency-critical paths, not that it got cheap.&lt;/p&gt;

&lt;p&gt;The real cost decision is routing: which requests need 4.8, which can go to a smaller model, which run in batch, which justify fast mode.&lt;/p&gt;

&lt;h4&gt;
  
  
  9. Don't let "new model, must be better" replace your evals
&lt;/h4&gt;

&lt;p&gt;This is the part I'd argue for hardest, and the rest of this post is why. Each change above is a thing to actually measure on your own workload before you trust 4.8 with production traffic:&lt;/p&gt;

&lt;p&gt;The effort drop (§2): compare your hardest agent task at high vs xhigh. If you upgraded and left the default, did reasoning depth or token use quietly fall?&lt;/p&gt;

&lt;p&gt;tool triggering (§5): count skipped-but-needed tool calls across your agent traces, 4.7 vs 4.8. This is the one most likely to have improved, so it's the one worth proving.&lt;/p&gt;

&lt;p&gt;caching (§7): did your cache hit-rate change now that the floor is 1,024 tokens?&lt;/p&gt;

&lt;p&gt;cost and latency (§8): track output tokens, tool-call counts, retries, and p95, and watch which direction each moved.&lt;/p&gt;

&lt;p&gt;The question isn't whether 4.8 is better in the abstract. It's whether it's better for your workload under your cost and latency budget, and that's the one your evals can answer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bottom line
&lt;/h3&gt;

&lt;p&gt;For casual chat, 4.8 just feels like a slightly better Claude. For anyone building agents, coding tools, RAG, or automation, the interesting changes aren't in the headline number. &lt;/p&gt;

&lt;p&gt;They're in the defaults and primitives: opt-in adaptive thinking, the effort default moving back to high,fewer skipped tool calls, calmer long-running agents, 1M context by default, mid-conversation system messages, a lower cache floor, and fast-mode pricing that makes more sense than it used to.&lt;/p&gt;

&lt;p&gt;So treat the model swap as the first step, not the whole job. Re-set xhigh for your agents before you forget, re-baseline your prompt caching, and run your evals before you flip production over, not after the bill shows up.&lt;/p&gt;

&lt;p&gt;If you've already done the 4.7 to 4.8 move and hit something I didn't list here, leave it in the comments. The silent-default stuff is usually what you only find out the hard way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources: Anthropic's Opus 4.8 migration guide, the Effort and Adaptive Thinking API docs, and the Opus 4.8 announcement (May 28, 2026).&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>model</category>
      <category>opus</category>
    </item>
    <item>
      <title>Decentralized Finance Part 4: Real World Assets Meet DeFi</title>
      <dc:creator>Mahima Thacker</dc:creator>
      <pubDate>Fri, 29 May 2026 08:40:19 +0000</pubDate>
      <link>https://dev.to/mahima_thacker/decentralized-finance-part-4-real-world-assets-meet-defi-17k3</link>
      <guid>https://dev.to/mahima_thacker/decentralized-finance-part-4-real-world-assets-meet-defi-17k3</guid>
      <description>&lt;p&gt;What if you could earn rent from a house you don’t own, in a country you’ve never been to, using an app on your phone?&lt;/p&gt;

&lt;p&gt;That’s the power of real-world assets in DeFi.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Are Real World Assets (RWA)?
&lt;/h3&gt;

&lt;p&gt;Real World Assets are things that exist outside the blockchain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Houses&lt;br&gt;
Company shares&lt;br&gt;
Government bonds&lt;br&gt;
Invoices&lt;br&gt;
Art or collectibles&lt;/p&gt;

&lt;p&gt;These things are now being linked to DeFi through tokenization.&lt;/p&gt;

&lt;p&gt;This means creating a digital version of a real asset, which can then be traded or used inside smart contracts.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why Should We Care?
&lt;/h4&gt;

&lt;p&gt;Tokenized real world assets open up new investment opportunities, making high-value assets more accessible to everyone. They bring much-needed liquidity to traditionally hard-to-sell assets, allowing for quicker transactions. The transparency and security of blockchain technology reduce fraud and build trust. Plus, integrating RWAs with DeFi creates innovative financial products and services, building a more inclusive, efficient, and transparent financial system for all, and more...&lt;/p&gt;

&lt;h4&gt;
  
  
  RWA Needs an On-Chain Connection
&lt;/h4&gt;

&lt;p&gt;Real world assets live outside the blockchain.&lt;/p&gt;

&lt;p&gt;To use them inside DeFi, we need a way to connect them to smart contracts.&lt;/p&gt;

&lt;p&gt;This means creating a bridge between the physical world and the digital one.&lt;/p&gt;

&lt;p&gt;Someone needs to verify the asset, hold it safely, and create a digital version of it on-chain.&lt;/p&gt;

&lt;p&gt;That digital token is what DeFi apps can then use for trading, lending, borrowing, or earning.&lt;/p&gt;

&lt;p&gt;Without this connection, real-world assets cannot interact with DeFi tools. The token must reflect the real thing clearly and must be backed by trust.&lt;/p&gt;

&lt;h4&gt;
  
  
  You Can Make These TODAY!
&lt;/h4&gt;

&lt;p&gt;The exciting part is that tokenizing real-world assets isn't just for big corporations or tech gurus. With the right platforms and knowledge, individuals and businesses can also participate in creating these digital representations of physical assets today. The process generally involves a few key steps. &lt;/p&gt;

&lt;p&gt;First, the real-world asset needs to be legally verified and appraised to determine its value and ownership. This is a crucial step to ensure that the digital token accurately reflects the physical asset. Once verified, the asset is then 'tokenized' on a blockchain.&lt;/p&gt;

&lt;p&gt;This means a smart contract is created that represents the asset, and digital tokens are issued. These tokens can then be bought, sold, or traded on various blockchain platforms. While it might sound complex, many platforms are emerging that simplify this process, making it more accessible for a wider audience. This means that the potential for bringing real-world value onto the blockchain is immense, and it's happening right now, opening up new avenues for investment and ownership.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Benefits of RWA + DeFi
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;ol&gt;
&lt;li&gt;New Investment Opportunities: Tokenized real-world assets make high-value assets (like real estate, art, etc.) more accessible to everyone, lowering the barrier to entry for investments.&lt;/li&gt;
&lt;/ol&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Increased Liquidity: Traditionally illiquid assets can be bought and sold almost instantly on a global market, allowing for quicker transactions and easier access to asset value.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enhanced Transparency and Security: Blockchain technology ensures that every transaction is recorded on an immutable ledger, reducing fraud and increasing trust in asset ownership and transfer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Innovative Financial Products: The integration of RWAs with DeFi platforms enables new financial services, such as using tokenized real estate as collateral for loans or participating in decentralized exchanges with real-world backed assets.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Popular RWA Projects in DeFi
&lt;/h4&gt;

&lt;p&gt;Centrifuge - Brings real-world loans (like invoices) to DeFi&lt;/p&gt;

&lt;p&gt;Goldfinch - Offers loans to real businesses in emerging markets&lt;/p&gt;

&lt;p&gt;Maple - Lets institutions borrow on-chain&lt;/p&gt;

&lt;p&gt;Ondo - Tokenizes US Treasuries for yield&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenges to Watch:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Legal rules are not clear yet&lt;br&gt;
Need for trusted middlemen to hold the real asset&lt;br&gt;
Hard to scale across countries&lt;br&gt;
Price feeds and real-world data must be accurate&lt;br&gt;
Final Thoughts&lt;/p&gt;

&lt;p&gt;Real World Assets will bring real growth to DeFi.&lt;/p&gt;

&lt;p&gt;They connect blockchain to the world we live in.&lt;/p&gt;

&lt;p&gt;And they give DeFi a chance to solve real problems, not just trade tokens.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>defi</category>
      <category>rwa</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Decentralized Finance Part 3: The Complete Guide to Stablecoins</title>
      <dc:creator>Mahima Thacker</dc:creator>
      <pubDate>Fri, 29 May 2026 07:19:31 +0000</pubDate>
      <link>https://dev.to/mahima_thacker/decentralized-finance-part-3-the-complete-guide-to-stablecoins-4m60</link>
      <guid>https://dev.to/mahima_thacker/decentralized-finance-part-3-the-complete-guide-to-stablecoins-4m60</guid>
      <description>&lt;h3&gt;
  
  
  The Problem That Started It All
&lt;/h3&gt;

&lt;p&gt;Imagine you bought a cup of coffee with Bitcoin six months ago. Back then, it cost you 0.0001 BTC. Today, that same amount of Bitcoin could buy you either half a cup or three cups, depending on Bitcoin's wild price swings. But if you paid with dollars six months ago and pay with dollars today, you'd pay roughly the same amount. This is the fundamental problem that stablecoins solve.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Are Stablecoins?
&lt;/h3&gt;

&lt;p&gt;Most people think stablecoins are simply "non-volatile crypto assets." This definition is wrong.&lt;/p&gt;

&lt;p&gt;The correct definition: A stablecoin is a crypto asset whose buying power fluctuates very little relative to the rest of the market.&lt;/p&gt;

&lt;p&gt;The keyword here is "buying power." It's not about price stability, it's about purchasing power stability. A stablecoin should let you buy roughly the same amount of goods today as you could yesterday, next week, or next month.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Do We Care About Stablecoins?
&lt;/h3&gt;

&lt;p&gt;Money serves three critical functions, and understanding these explains why stablecoins matter:&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Store of Value
&lt;/h4&gt;

&lt;p&gt;Money should preserve your wealth over time. When you save money in a bank or invest in stocks, you expect it to maintain its purchasing power. Volatile assets like Bitcoin fail at this because your wealth can disappear overnight.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Unit of Account
&lt;/h4&gt;

&lt;p&gt;Money should help us measure how valuable something is. We price Bitcoin in dollars, not the other way around, because Bitcoin's constant price changes make it a poor measuring stick. Nobody wants to price their business in Bitcoin when it could be worth 50% less tomorrow.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Medium of Exchange
&lt;/h4&gt;

&lt;p&gt;Money should facilitate transactions. While you can technically buy groceries with Bitcoin, most people won't because they don't want to spend an asset that might double in value next week.&lt;/p&gt;

&lt;p&gt;The Web3 Money Problem: Ethereum works great as a store of value and medium of exchange, but fails as a unit of account due to its volatile nature. We need Web3 money that can do all three functions reliably&lt;/p&gt;

&lt;h3&gt;
  
  
  Categories and Properties of Stablecoins
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Relative Stability: Pegged/Anchored or &amp;nbsp;Floating
&lt;/h4&gt;

&lt;p&gt;Pegged&amp;nbsp; Stablecoins: These are tied to another asset's value. Most popular stablecoins fall into this category:&lt;/p&gt;

&lt;p&gt;Tether (USDT): 1 USDT = 1 USD&lt;/p&gt;

&lt;p&gt;USD Coin (USDC): 1 USDC = 1 USD&lt;/p&gt;

&lt;p&gt;Floating Stablecoins: These maintain stable buying power without being tied to any specific asset. Think of it this way: if you could buy 10 apples with 10 dollars five years ago, but today you can only buy 5 apples with 10 dollars due to inflation, a floating stablecoin would adjust so you can still buy 10 apples with the same amount.&lt;/p&gt;

&lt;p&gt;Anchored Stablecoins: These are pegged to a specific reference point that moves over time. Think of it like measuring ocean levels, where the anchor point itself changes but the relationship remains stable.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Stability Method: Governed vs Algorithmic
&lt;/h4&gt;

&lt;p&gt;This refers to who or what controls the minting and burning of stablecoins to maintain their peg.&lt;/p&gt;

&lt;p&gt;Governed Stablecoins: Humans or organizations decide when to create or destroy tokens. These are typically centralized:&lt;/p&gt;

&lt;p&gt;A government entity&lt;/p&gt;

&lt;p&gt;A company (like Circle for USDC)&lt;/p&gt;

&lt;p&gt;A decentralized autonomous organization (DAO)&lt;/p&gt;

&lt;p&gt;Algorithmic Stablecoins: Smart contracts automatically mint and burn tokens based on predetermined rules. No human intervention required:&lt;/p&gt;

&lt;p&gt;DAI (partially algorithmic)&lt;/p&gt;

&lt;p&gt;FRAX&lt;/p&gt;

&lt;p&gt;RAI&lt;/p&gt;

&lt;p&gt;UST (failed example)&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Collateral Type: Endogenous vs Exogenous
&lt;/h4&gt;

&lt;p&gt;This describes what backs the stablecoin's value.&lt;/p&gt;

&lt;p&gt;Exogenous Collateral: Backed by assets outside the stablecoin's ecosystem:&lt;/p&gt;

&lt;p&gt;USDC is backed by US dollars&lt;/p&gt;

&lt;p&gt;DAI is backed by ETH, USDC, and other external assets&lt;/p&gt;

&lt;p&gt;If these stablecoins fail, their underlying collateral (dollars, ETH) continues to exist and function.&lt;/p&gt;

&lt;p&gt;Endogenous Collateral: Backed by assets within the same ecosystem:&lt;/p&gt;

&lt;p&gt;UST was backed by LUNA tokens&lt;/p&gt;

&lt;p&gt;If UST failed, LUNA would fail too (which actually happened)&lt;/p&gt;

&lt;p&gt;The relationship creates a reflexive loop where the stablecoin and its collateral depend on each other for value.&lt;/p&gt;

&lt;p&gt;The Endogenous Dilemma&lt;/p&gt;

&lt;p&gt;Endogenous collateral sounds risky, so why use it at all?&lt;/p&gt;

&lt;p&gt;The Answer: Capital Efficiency&lt;/p&gt;

&lt;p&gt;With exogenous stablecoins like USDC, you need to over-collateralize. To mint $100 worth of DAI, you might need to deposit $150 worth of ETH. This ties up a lot of capital.&lt;/p&gt;

&lt;p&gt;Endogenous stablecoins can theoretically operate with zero external collateral because they're backed by their own ecosystem. This makes them highly capital efficient but also highly risky.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary of Popular Stablecoins
&lt;/h3&gt;

&lt;p&gt;Check out these visuals to understand how some of the most well-known stablecoins are built and how they work&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fitgmyv5l6ndxcyih3hp0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fitgmyv5l6ndxcyih3hp0.png" alt=" " width="800" height="610"&gt;&lt;/a&gt;&lt;br&gt;
(DAI StableCoin)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1kxc1ijxvt6q21qn8bc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa1kxc1ijxvt6q21qn8bc.png" alt=" " width="800" height="555"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(USDC StableCoin)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fotgjt9134e2gz93o4qgu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fotgjt9134e2gz93o4qgu.png" alt=" " width="800" height="619"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;(RAI StableCoin)&lt;/p&gt;

&lt;h4&gt;
  
  
  What Stablecoins Really Do
&lt;/h4&gt;

&lt;p&gt;Beyond just maintaining stable value, stablecoins serve as:&lt;/p&gt;

&lt;p&gt;Financial Infrastructure: They enable DeFi protocols to function with predictable unit pricing.&lt;/p&gt;

&lt;p&gt;Bridge Between Traditional and Crypto: They allow seamless movement between fiat and crypto worlds.&lt;/p&gt;

&lt;p&gt;Yield Generation: Many stablecoins can be staked or lent to earn interest.&lt;/p&gt;

&lt;p&gt;Global Access: They provide dollar-equivalent access to people in countries with unstable currencies.&lt;/p&gt;

&lt;p&gt;Which Stablecoins Are Good?&lt;/p&gt;

&lt;p&gt;For Safety and Reliability:&lt;/p&gt;

&lt;p&gt;USDC: Highly regulated, transparent reserves&lt;/p&gt;

&lt;p&gt;DAI: Decentralized, over-collateralized, battle-tested&lt;/p&gt;

&lt;p&gt;For Innovation:&lt;/p&gt;

&lt;p&gt;RAI: Truly algorithmic, not pegged to fiat&lt;/p&gt;

&lt;p&gt;FRAX: Hybrid model balancing efficiency and stability&lt;/p&gt;

&lt;p&gt;Trade-offs to Consider:&lt;/p&gt;

&lt;p&gt;Centralized stablecoins (USDC) offer stability but can be frozen or regulated&lt;/p&gt;

&lt;p&gt;Decentralized stablecoins (DAI, RAI) offer censorship resistance but may have slight fees and complexity&lt;/p&gt;

&lt;p&gt;Algorithmic stablecoins offer capital efficiency but carry higher risks&lt;/p&gt;

&lt;h4&gt;
  
  
  The Future of Stablecoins
&lt;/h4&gt;

&lt;p&gt;The stablecoin landscape continues evolving as projects balance three competing priorities:&lt;/p&gt;

&lt;p&gt;Stability - Maintaining purchasing power&lt;/p&gt;

&lt;p&gt;Decentralization - Avoiding central points of failure&lt;/p&gt;

&lt;p&gt;Capital Efficiency - Maximizing utility of locked assets&lt;/p&gt;

&lt;p&gt;The most successful stablecoins will likely be those that find the optimal balance between these three factors while serving the core functions of money in the digital age.&lt;/p&gt;

&lt;p&gt;Before you use or build with stablecoins, take the time to understand how they’re designed. The more you know, the better decisions you’ll make in the Web3 world.&lt;/p&gt;

</description>
      <category>web3</category>
      <category>defi</category>
      <category>stablecoin</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Decentralized Finance Part 2: Money Markets</title>
      <dc:creator>Mahima Thacker</dc:creator>
      <pubDate>Fri, 29 May 2026 07:10:24 +0000</pubDate>
      <link>https://dev.to/mahima_thacker/decentralized-finance-part-2-money-markets-4p0h</link>
      <guid>https://dev.to/mahima_thacker/decentralized-finance-part-2-money-markets-4p0h</guid>
      <description>&lt;p&gt;Banks have controlled lending and borrowing for centuries. They decide who gets loans, set the interest rates, and hold all the power. If your credit score isn't perfect or you don't have the right paperwork, you're out of luck.&lt;/p&gt;

&lt;p&gt;DeFi Money Markets flip this system completely upside down.&lt;/p&gt;

&lt;p&gt;No credit checks. No paperwork. No waiting weeks for approval.&lt;/p&gt;

&lt;p&gt;Just deposit your crypto as collateral, and borrow instantly. The smart contract handles everything else.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Are DeFi Money Markets?
&lt;/h3&gt;

&lt;p&gt;DeFi money markets are lending platforms built on smart contracts.&lt;/p&gt;

&lt;p&gt;They allow users to:&lt;/p&gt;

&lt;p&gt;Lend crypto and earn interest - Deposit your tokens and get paid for lending them out&lt;/p&gt;

&lt;p&gt;Borrow crypto and pay interest - Put up collateral and borrow different tokens&lt;/p&gt;

&lt;p&gt;The most popular platforms include Aave, Compound, and others.&lt;/p&gt;

&lt;p&gt;But here’s the catch:&lt;/p&gt;

&lt;p&gt;You can’t borrow unless you first deposit something valuable.&lt;/p&gt;

&lt;p&gt;This is called collateral.&lt;/p&gt;

&lt;h4&gt;
  
  
  Traditional Borrowing vs DeFi
&lt;/h4&gt;

&lt;p&gt;In traditional loans, you get money based on:&lt;/p&gt;

&lt;p&gt;Your salary&lt;/p&gt;

&lt;p&gt;Credit score&lt;/p&gt;

&lt;p&gt;Personal background&lt;/p&gt;

&lt;p&gt;In DeFi, none of that matters.&lt;/p&gt;

&lt;p&gt;The only thing that matters is how much you deposit as collateral.&lt;/p&gt;

&lt;p&gt;How Collateral-Based Borrowing Works&lt;/p&gt;

&lt;p&gt;The Collateral System&lt;/p&gt;

&lt;p&gt;In DeFi, collateral is your security deposit. It's like leaving your car keys with a friend when you borrow their bike. If you don't return the bike, they keep your keys.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's a simple example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You deposit 1,000 USDC as collateral&lt;/p&gt;

&lt;p&gt;You can then borrow 800 DAI (or ETH worth $800)&lt;/p&gt;

&lt;p&gt;You can't borrow more than you deposited&lt;/p&gt;

&lt;p&gt;Your collateral stays locked until you repay the loan&lt;/p&gt;

&lt;h3&gt;
  
  
  DeFi Money Markets Glossary
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Collateral
&lt;/h4&gt;

&lt;p&gt;The crypto you deposit as security to borrow other tokens. If you deposit 1 ETH to a protocol, your collateral is 1 ETH.&lt;/p&gt;

&lt;h4&gt;
  
  
  Loan-to-Value (LTV) Ratio
&lt;/h4&gt;

&lt;p&gt;LTV determines how much you can borrow compared to your collateral value. It's expressed as a percentage.&lt;/p&gt;

&lt;p&gt;Example with 75% LTV:&lt;/p&gt;

&lt;p&gt;You deposit 1 ETH worth $1,000 as collateral&lt;/p&gt;

&lt;p&gt;You can borrow up to 0.75 ETH worth of other tokens (or $750 worth)&lt;/p&gt;

&lt;p&gt;The protocol keeps 25% as a safety buffer&lt;/p&gt;

&lt;p&gt;Different tokens have different LTV ratios based on their stability and risk.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Liquidation Threshold
&lt;/h4&gt;

&lt;p&gt;Liquidation happens when your borrowed amount becomes too risky compared to your collateral. It's the protocol's way of protecting itself and other users.&lt;/p&gt;

&lt;p&gt;Common triggers:&lt;/p&gt;

&lt;p&gt;Your collateral drops in value (ETH price falls)&lt;/p&gt;

&lt;p&gt;Your borrowed asset rises in value (borrowed token pumps)&lt;/p&gt;

&lt;p&gt;You borrow too close to your limit&lt;/p&gt;

&lt;p&gt;How Liquidation Works&lt;/p&gt;

&lt;p&gt;When you cross the liquidation threshold:&lt;/p&gt;

&lt;p&gt;Liquidators step in - These are users who "buy" your debt&lt;/p&gt;

&lt;p&gt;You pay a penalty - Usually 5-10% of your collateral value&lt;/p&gt;

&lt;p&gt;Your collateral gets sold - To cover the borrowed amount&lt;/p&gt;

&lt;p&gt;You keep the rest - Any remaining collateral after paying debt and penalty&lt;/p&gt;

&lt;p&gt;The warning system: Most protocols show you a "health factor" that warns you before liquidation happens.&lt;/p&gt;

&lt;h4&gt;
  
  
  Annual Percentage Yield (APY)
&lt;/h4&gt;

&lt;p&gt;The yearly return on your investment, including compound interest. If you earn 10% APY, your money grows by 10% over one year with compounding.&lt;/p&gt;

&lt;h4&gt;
  
  
  Annual Percentage Rate (APR)
&lt;/h4&gt;

&lt;p&gt;The yearly cost of borrowing without compound interest. If you pay 8% APR, you pay 8% interest over one year on the original loan amount.&lt;/p&gt;

&lt;h4&gt;
  
  
  Receipt Token
&lt;/h4&gt;

&lt;p&gt;A special token you receive when depositing into a protocol. It's like a receipt that proves you deposited funds. These tokens are minted when you deposit and burned when you withdraw.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reserve/Underlying Asset
&lt;/h4&gt;

&lt;p&gt;The actual token you deposited into the protocol. For example, if you deposit ETH into AAVE, WETH is the underlying token, and you receive aWETH receipt tokens.&lt;/p&gt;

&lt;p&gt;Key Benefits of DeFi Money Markets&lt;/p&gt;

&lt;p&gt;For Lenders:&lt;/p&gt;

&lt;p&gt;Earn passive income on idle crypto&lt;/p&gt;

&lt;p&gt;No minimum deposit requirements&lt;/p&gt;

&lt;p&gt;Withdraw anytime (subject to liquidity)&lt;/p&gt;

&lt;p&gt;Transparent interest rates&lt;/p&gt;

&lt;p&gt;For Borrowers:&lt;/p&gt;

&lt;p&gt;No credit checks or paperwork&lt;/p&gt;

&lt;p&gt;Instant loan approval&lt;/p&gt;

&lt;p&gt;Keep your crypto exposure while borrowing&lt;/p&gt;

&lt;p&gt;Access to leverage trading strategies&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Popular DeFi Money Market Protocols&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AAVE: The largest lending protocol with innovative features like flash loans and rate switching.&lt;/p&gt;

&lt;p&gt;Compound: Pioneer in DeFi lending with simple, reliable mechanics.&lt;/p&gt;

&lt;p&gt;MakerDAO: Focused on DAI stablecoin creation through collateralized debt positions.&lt;/p&gt;

&lt;h4&gt;
  
  
  Conclusion
&lt;/h4&gt;

&lt;p&gt;DeFi money markets represent a fundamental shift in how we think about lending and borrowing. They remove gatekeepers, reduce costs, and provide global access to financial services.&lt;/p&gt;

&lt;p&gt;The power is now in your hands. No banker can reject your loan application. No credit agency can block your access. Just you, your crypto, and the smart contract.&lt;/p&gt;

&lt;p&gt;But with great power comes great responsibility. Understanding collateral, liquidation, and risk management is essential before diving in&lt;/p&gt;

</description>
      <category>defi</category>
      <category>web3</category>
      <category>blockchain</category>
      <category>amm</category>
    </item>
    <item>
      <title>Decentralized Finance Part 1: Understanding DEXs and AMMs</title>
      <dc:creator>Mahima Thacker</dc:creator>
      <pubDate>Fri, 29 May 2026 07:05:57 +0000</pubDate>
      <link>https://dev.to/mahima_thacker/decentralized-finance-part-1-understanding-dexs-and-amms-3jbn</link>
      <guid>https://dev.to/mahima_thacker/decentralized-finance-part-1-understanding-dexs-and-amms-3jbn</guid>
      <description>&lt;p&gt;A few years ago, if you wanted to buy or sell crypto, you had to go through a central exchange. You'd sign up, verify your identity, and trust the platform to keep your money safe.&lt;/p&gt;

&lt;p&gt;Then came Decentralized Exchanges (DEXs), a new way to trade crypto without giving up control.&lt;/p&gt;

&lt;p&gt;No sign-ups. No middlemen. No waiting for someone on the other side.&lt;/p&gt;

&lt;p&gt;Just you, a wallet, and a smart contract.&lt;/p&gt;

&lt;p&gt;This is the revolutionary promise of Decentralized Finance (DeFi), where smart contracts handle everything automatically. Today, we'll explore the foundation of DeFi: Decentralized Exchanges (DEXs) and the magic behind them&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Decentralized Exchange (DEX)?
&lt;/h2&gt;

&lt;p&gt;A Decentralized Exchange (DEX) lets you trade one token for another, directly from your wallet. There’s no company holding your money. Instead, smart contracts handle everything.&lt;/p&gt;

&lt;p&gt;You connect your wallet. You choose what you want to swap. And the trade happens instantly.&lt;/p&gt;

&lt;h3&gt;
  
  
  How Does a DEX Actually Work?
&lt;/h3&gt;

&lt;p&gt;Let's break down the key components that make DEXs possible:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Liquidity Pools
&lt;/h3&gt;

&lt;p&gt;A liquidity pool is like a jar filled with two tokens. For example:&lt;/p&gt;

&lt;p&gt;50 ETH and&lt;/p&gt;

&lt;p&gt;10,000 DAI&lt;/p&gt;

&lt;p&gt;People add their tokens to these pools. These people are called liquidity providers, and they earn small fees from every trade that happens.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Swapping
&lt;/h3&gt;

&lt;p&gt;You want to swap your DAI for ETH?&lt;/p&gt;

&lt;p&gt;The smart contract pulls ETH from the pool and adds your DAI to it.&lt;/p&gt;

&lt;p&gt;The price changes based on how much you take and how much you give.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Automated Market Maker (AMM): The Price Calculator
&lt;/h3&gt;

&lt;p&gt;Here's where it gets interesting. Instead of matching you with another trader (like in traditional markets), an AMM uses a mathematical formula to determine prices instantly. It's like having a calculator that always knows the fair price based on how much of each token is in the pool.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Small Fees, Big Rewards
&lt;/h3&gt;

&lt;p&gt;Every trade pays a small fee (typically 0.3%). This fee gets distributed among all the people who provided liquidity to that pool. It's like getting a cut of every transaction just for helping keep the marketplace running.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding Liquidity and Why It Matters
&lt;/h3&gt;

&lt;p&gt;What is Liquidity? Liquidity is simply having enough tokens in a pool to make trading smooth and efficient. Think of it like having enough cash in your wallet to buy coffee without needing to break a $100 bill.&lt;/p&gt;

&lt;p&gt;Why Do We Need It? Without enough liquidity, strange things happen:&lt;/p&gt;

&lt;p&gt;Trades become slow and expensive&lt;/p&gt;

&lt;p&gt;Prices swing wildly with small purchases&lt;/p&gt;

&lt;p&gt;Large trades become nearly impossible&lt;/p&gt;

&lt;p&gt;Who Benefits?&lt;/p&gt;

&lt;p&gt;Traders get fast, reliable swaps&lt;/p&gt;

&lt;p&gt;Liquidity providers earn passive income from fees&lt;/p&gt;

&lt;p&gt;The entire ecosystem stays healthy and functional&lt;/p&gt;

&lt;p&gt;Examples of Popular DEXs&lt;/p&gt;

&lt;p&gt;PancakeSwap - Built on Binance Smart Chain. Fast and great for beginners.&lt;/p&gt;

&lt;p&gt;SushiSwap - Available on many chains. It rewards people who add liquidity.&lt;/p&gt;

&lt;p&gt;There are many more. Each one has its own pools, tokens, and features.&lt;/p&gt;

&lt;h2&gt;
  
  
  DEX vs CEX: Choose Your Adventure
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Centralized Exchange (CEX):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Requires account creation and identity verification&lt;/p&gt;

&lt;p&gt;Company holds your funds&lt;/p&gt;

&lt;p&gt;Easy to use with familiar interfaces&lt;/p&gt;

&lt;p&gt;Customer support available&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decentralized Exchange (DEX):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No signup required&lt;/p&gt;

&lt;p&gt;You always control your funds&lt;/p&gt;

&lt;p&gt;More privacy and anonymity&lt;/p&gt;

&lt;p&gt;Full responsibility for your own security&lt;/p&gt;

&lt;p&gt;The Bottom Line: Want complete control and privacy? Go with a DEX. Prefer simplicity and support? Choose a CEX.&lt;/p&gt;

&lt;p&gt;How Automated Market Makers Work&lt;/p&gt;

&lt;p&gt;An Automated Market Maker (AMM) is a smart contract that lets you swap tokens without needing someone else on the other side.&lt;/p&gt;

&lt;h4&gt;
  
  
  Let’s Break Down the Formula
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;X × Y = K&lt;br&gt;
X = Amount of Token 1 in the pool&lt;br&gt;
Y = Amount of Token 2 in the pool&lt;br&gt;
K = A constant number that never changes&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Think of K as the pool's "balance point." No matter how much trading happens, the formula ensures X × Y always equals K.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A Real-World Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let's say we have a pool with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;50 ETH (Token 1)&lt;br&gt;
10,000 DAI (Token 2)&lt;br&gt;
K = 50 × 10,000 = 500,000&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now imagine you want to buy 1 ETH using DAI.&lt;/p&gt;

&lt;p&gt;After your trade:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ETH remaining = 49 (you took 1 ETH out)&lt;br&gt;
To keep K = 500,000, we need: 49 × Y = 500,000&lt;br&gt;
Y = 500,000 ÷ 49 = 10,204.08 DAI&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Since the pool started with 10,000 DAI and needs 10,204.08 DAI after your trade, you must add 204.08 DAI to buy 1 ETH.&lt;/p&gt;

&lt;p&gt;The price was calculated automatically by the formula, not by a person!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Prices Change as You Trade:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's where it gets interesting. The more ETH you try to buy, the more DAI you need to add to keep K constant. This makes each additional ETH more expensive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Buying 1 ETH costs ~204 DAI&lt;/p&gt;

&lt;p&gt;Buying 2 ETH would cost even more per ETH&lt;/p&gt;

&lt;p&gt;Buying 10 ETH would be extremely expensive per ETH&lt;/p&gt;

&lt;p&gt;This price increase is called "slippage," and it's completely normal in AMMs. It prevents any single person from draining the entire pool&lt;/p&gt;

&lt;p&gt;This price jump is called slippage, the more you buy, the more you pay.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AMM vs Order Book&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Order Book (used by CEX): Buyers and sellers agree on a price&lt;/p&gt;

&lt;p&gt;AMM (used by DEX): The price is decided by a formula&lt;/p&gt;

&lt;p&gt;In AMMs, you don’t wait for someone to match your trade.&lt;/p&gt;

&lt;p&gt;The pool is always ready, the formula handles everything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DEXs eliminate middlemen - You trade directly through smart contracts&lt;/p&gt;

&lt;p&gt;Liquidity pools are the foundation - They provide the tokens needed for smooth trading&lt;/p&gt;

&lt;p&gt;AMMs use simple math - The X × Y = K formula determines all prices&lt;/p&gt;

&lt;p&gt;Everyone benefits - Traders get instant swaps, providers earn fees&lt;/p&gt;

&lt;p&gt;You stay in control - Your funds never leave your wallet&lt;/p&gt;

&lt;p&gt;In Part 2, we'll explore money markets&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>blockchain</category>
      <category>cryptocurrency</category>
      <category>web3</category>
    </item>
  </channel>
</rss>
