<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>TALVINDER</title>
<link>https://talvinder.com/</link>
<atom:link href="https://talvinder.com/index.xml" rel="self" type="application/rss+xml"/>
<description>Frameworks, build logs, and field notes by B. Talvinder — serial founder (ex-OYO, YC, 500 Startups), four companies across four technology eras.</description>
<generator>quarto-1.9.37</generator>
<lastBuildDate>Fri, 17 Apr 2026 00:00:00 GMT</lastBuildDate>
<item>
  <title>Training AI to Serve Rare Disease Patients Is a Structural Problem, Not a Data Problem</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/build-logs/training-ai-to-serve-rare-disease-patients-is-structural/</link>
  <description><![CDATA[ 





<pre><code>
AI failures in rare disease diagnosis are not about data scarcity. They are about healthcare’s structural bottlenecks—fragmented data silos, inconsistent protocols, and missing consent infrastructure—that make reliable AI impossible at scale. Data scarcity is a symptom. The root cause is the system design underneath.

In 2023, Eka Care introduced explicit patient consent flows before any health data was accessed for AI training. This slowed data acquisition but ensured legal standing and clinical trust. The lesson is clear: you cannot fix a governance problem by throwing more data at it.

## The Structural Bottleneck Framework

I call this the **Structural Bottleneck Framework**: AI performance in rare diseases is limited not by model size or dataset volume, but by systemic healthcare design flaws. Fragmented data, inconsistent clinical protocols, and privacy roadblocks produce an environment where AI trained on generic or legacy datasets will fail at point-of-care deployment.

Most AI healthcare teams obsess over model selection, fine-tuning, and benchmark chasing while neglecting data governance architecture, consent infrastructure, AI validation layers, and domain protocol alignment. That’s why rare disease AI remains a demo that never makes it into clinics.

Fixing data quantity without fixing data governance is like adding fuel to a car with no steering wheel.

## Why More Data Doesn’t Solve the Problem

Healthcare data is siloed by provider, geography, and regulation. No amount of model tuning overcomes that fragmentation.

Imagine a sensor network with noisy, inconsistent, and incomplete signals. The output will be unreliable regardless of how sophisticated the algorithms are. This is not a metaphor. It is literally how AI input pipelines behave when data sources are fragmented and unverified.

In 2022, an AI system deployed for pediatric rare disease diagnosis nearly caused a malpractice incident by mislabeling a critical symptom. The model had been trained on adult datasets with different clinical presentations. This failure was structural, not statistical.

Generic datasets compound the problem. Retrieval-augmented generation (RAG) approaches surface obsolete or irrelevant medical guidelines when the knowledge base is not actively maintained and aligned with current clinical protocols. Fine-tuning on scarce rare disease data is insufficient if the underlying data ecosystem doesn’t support real-time, trustworthy updates. A model fine-tuned in 2022 will give outdated guidance in 2025. Training cycles cannot keep pace without structural integration into clinical protocol update chains.

The ethical dimension is not a compliance checkbox. AI deployed without patient consent frameworks creates legal risk and erodes clinical trust. Once a clinician sees an AI system give a dangerous recommendation, that system is dead in that institution regardless of subsequent accuracy gains. Rebuilding clinical trust after a structural failure is harder than building it correctly the first time.

Falsifiable claim: AI models trained with incremental data additions but without systemic integration of domain-specific, privacy-aware data governance will continue producing dangerous misclassifications at rates preventing clinical adoption. The structural bottleneck, not data volume, is the binding constraint.

## Concrete Evidence From India and Beyond

Eka Care’s 2023 shift to consent-driven data acquisition is the clearest example of getting the structural layer right. Patient consent protocols slowed data access but ensured the data used for AI training had legal standing and patient trust behind it. This is not a formality. It is what makes AI deployable in clinics rather than research labs.

Multiple Indian healthcare startups have deployed AI that misread critical symptoms as banal conditions because their models trained on generic datasets lacked rare disease-specific clinical annotation. One AI misclassified a rare autoimmune condition as a common allergy, simply because pattern matching aligned with far more frequent conditions in the training set. This is not a data volume problem. It is a structural failure to align the model with clinical taxonomy for the target patient population.

Telemedicine adoption in rural India illustrates the same bottleneck differently. 5G coverage and smartphones exist. The structural barrier to AI-assisted diagnosis is not data volume. It is the absence of validated clinical protocols for AI decision support in resource-constrained settings, liability frameworks clinicians and patients understand, and feedback mechanisms that let clinicians flag AI errors in real time.

At Ostronaut, building AI-generated healthcare training content revealed the same pattern at scale. Generating clinical learning material required more than ingesting large content volumes. We needed validation layers: domain experts reviewing AI output against current clinical guidelines, quality gates flagging outdated protocols, and structured feedback loops improving generation accuracy over time. More data ingestion without these structural layers yields more plausible but incorrect content. Volume does not substitute for architecture.

## What the Fix Looks Like

The Structural Bottleneck Framework points to a different investment thesis for rare disease AI.

| Traditional AI Effort | Structural Bottleneck Focus |
|----------------------|-----------------------------|
| Model tuning and benchmarks | Consent and data governance infrastructure |
| Dataset volume and augmentation | Clinical protocol alignment and validation layers |
| Statistical fine-tuning | Real-time domain updates and feedback mechanisms |
| Isolated AI pipelines | Integrated healthcare system workflows |

The fix starts with consent and governance. Patient consent must be explicit, auditable, and embedded in data pipelines. Data governance can’t be an afterthought or legal checkbox. It must be engineered as infrastructure.

Second, AI validation layers must become standard. Domain experts need to build continuous quality gates and feedback loops. AI outputs require real-world clinical protocol integration, not just offline benchmarks.

Third, clinical protocols must be actively maintained and integrated with AI knowledge bases. Rare disease protocols evolve. The model’s training cycle must be tightly coupled with these updates, or risk obsolescence.

Finally, liability and trust frameworks need clarity. Clinicians must know when and how AI can be used safely, and have mechanisms to flag and correct errors in real time.

At Ostronaut, we learned this the hard way. AI-generated clinical content without validation layers isn’t just wrong; it erodes trust in the entire system. The data volume was never the problem.

## What I Don’t Know Yet

How do you build scalable, privacy-aware consent infrastructure that works across fragmented healthcare providers and jurisdictions — without killing innovation speed? It’s an unsolved technical and regulatory puzzle.

How do you design AI validation layers that keep pace with rapidly evolving clinical protocols in rare diseases, given the scarcity of domain experts? Automation helps, but domain knowledge bottlenecks remain.

How do we create feedback mechanisms that incentivize clinicians to report AI errors and integrate those corrections back into the training loop — especially in resource-constrained settings?

These are open engineering and policy questions, not hype fodder.

## The Question Worth Asking

The Structural Bottleneck Framework shifts focus from data quantity to system quality. The question worth asking now is: can AI companies and healthcare institutions collaborate on building structural data governance and validation infrastructure at scale — or will rare disease AI remain a demo for another decade?

Not in three years. In ten. In fifty.

Are we asking it? Mostly, no.

More on this as I develop it.




:::{#quarto-navigation-envelope .hidden}
[TALVINDER]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1zaWRlYmFyLXRpdGxl"}
[TALVINDER]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXItdGl0bGU="}
[Frameworks]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXI6RnJhbWV3b3Jrcw=="}
[/frameworks/index.html]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXI6L2ZyYW1ld29ya3MvaW5kZXguaHRtbA=="}
[Build Logs]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXI6QnVpbGQgTG9ncw=="}
[/build-logs/index.html]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXI6L2J1aWxkLWxvZ3MvaW5kZXguaHRtbA=="}
[Field Notes]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXI6RmllbGQgTm90ZXM="}
[/field-notes/index.html]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXI6L2ZpZWxkLW5vdGVzL2luZGV4Lmh0bWw="}
[Bets]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXI6QmV0cw=="}
[/bets-log/index.html]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXI6L2JldHMtbG9nL2luZGV4Lmh0bWw="}
[About]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXI6QWJvdXQ="}
[About Me]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXI6QWJvdXQgTWU="}
[/about.html]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXI6L2Fib3V0Lmh0bWw="}
[Library]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXI6TGlicmFyeQ=="}
[/library/index.html]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXI6L2xpYnJhcnkvaW5kZXguaHRtbA=="}
[Subscribe]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXI6U3Vic2NyaWJl"}
[https://buttondown.com/talvinder]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLWludC1uYXZiYXI6aHR0cHM6Ly9idXR0b25kb3duLmNvbS90YWx2aW5kZXI="}

:::{.hidden .quarto-markdown-envelope-contents render-id="Zm9vdGVyLWxlZnQ="}
&amp;copy; 2026 B. Talvinder. Built with conviction.

:::


:::{.hidden .quarto-markdown-envelope-contents render-id="Zm9vdGVyLWNlbnRlcg=="}
[GitHub](https://github.com/talvinder) · [LinkedIn](https://linkedin.com/in/talvindersingh) · [X](https://x.com/talvinder27)

:::


:::{.hidden .quarto-markdown-envelope-contents render-id="Zm9vdGVyLXJpZ2h0"}
Powered by [Quarto](https://quarto.org)

:::

:::



:::{#quarto-meta-markdown .hidden}
[Training AI to Serve Rare Disease Patients Is a Structural Problem, Not a Data Problem – TALVINDER]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLW1ldGF0aXRsZQ=="}
[Training AI to Serve Rare Disease Patients Is a Structural Problem, Not a Data Problem – TALVINDER]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLXR3aXR0ZXJjYXJkdGl0bGU="}
[Training AI to Serve Rare Disease Patients Is a Structural Problem, Not a Data Problem – TALVINDER]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLW9nY2FyZHRpdGxl"}
[TALVINDER]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLW1ldGFzaXRlbmFtZQ=="}
[Rare disease AI failures stem from healthcare’s fragmented data governance, not from insufficient data volume.]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLXR3aXR0ZXJjYXJkZGVzYw=="}
[Rare disease AI failures stem from healthcare’s fragmented data governance, not from insufficient data volume.]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLW9nY2FyZGRkZXNj"}
[Talvinder Singh is a serial founder (ex-OYO, YC, 500 Startups) who has built four companies across four different technology eras in eighteen years. Frameworks, build logs, and field notes on AI, infrastructure, and the India tech ecosystem.]{.hidden .quarto-markdown-envelope-contents render-id="cXVhcnRvLW1ldGFzaXRlZGVzYw=="}
:::




&lt;!-- --&gt;

::: {.quarto-embedded-source-code}
```````````````````{.markdown shortcodes="false"}
---
title: "Training AI to Serve Rare Disease Patients Is a Structural Problem, Not a Data Problem"
description: "Rare disease AI failures stem from healthcare’s fragmented data governance, not from insufficient data volume."
date: 2026-04-17
categories: ['AI in Healthcare', 'AI Validation', 'India Tech']
draft: false
---</code></pre>
<p>AI failures in rare disease diagnosis are not about data scarcity. They are about healthcare’s structural bottlenecks—fragmented data silos, inconsistent protocols, and missing consent infrastructure—that make reliable AI impossible at scale. Data scarcity is a symptom. The root cause is the system design underneath.</p>
<p>In 2023, Eka Care introduced explicit patient consent flows before any health data was accessed for AI training. This slowed data acquisition but ensured legal standing and clinical trust. The lesson is clear: you cannot fix a governance problem by throwing more data at it.</p>
<section id="the-structural-bottleneck-framework" class="level2">
<h2 class="anchored" data-anchor-id="the-structural-bottleneck-framework">The Structural Bottleneck Framework</h2>
<p>I call this the <strong>Structural Bottleneck Framework</strong>: AI performance in rare diseases is limited not by model size or dataset volume, but by systemic healthcare design flaws. Fragmented data, inconsistent clinical protocols, and privacy roadblocks produce an environment where AI trained on generic or legacy datasets will fail at point-of-care deployment.</p>
<p>Most AI healthcare teams obsess over model selection, fine-tuning, and benchmark chasing while neglecting data governance architecture, consent infrastructure, AI validation layers, and domain protocol alignment. That’s why rare disease AI remains a demo that never makes it into clinics.</p>
<p>Fixing data quantity without fixing data governance is like adding fuel to a car with no steering wheel.</p>
</section>
<section id="why-more-data-doesnt-solve-the-problem" class="level2">
<h2 class="anchored" data-anchor-id="why-more-data-doesnt-solve-the-problem">Why More Data Doesn’t Solve the Problem</h2>
<p>Healthcare data is siloed by provider, geography, and regulation. No amount of model tuning overcomes that fragmentation.</p>
<p>Imagine a sensor network with noisy, inconsistent, and incomplete signals. The output will be unreliable regardless of how sophisticated the algorithms are. This is not a metaphor. It is literally how AI input pipelines behave when data sources are fragmented and unverified.</p>
<p>In 2022, an AI system deployed for pediatric rare disease diagnosis nearly caused a malpractice incident by mislabeling a critical symptom. The model had been trained on adult datasets with different clinical presentations. This failure was structural, not statistical.</p>
<p>Generic datasets compound the problem. Retrieval-augmented generation (RAG) approaches surface obsolete or irrelevant medical guidelines when the knowledge base is not actively maintained and aligned with current clinical protocols. Fine-tuning on scarce rare disease data is insufficient if the underlying data ecosystem doesn’t support real-time, trustworthy updates. A model fine-tuned in 2022 will give outdated guidance in 2025. Training cycles cannot keep pace without structural integration into clinical protocol update chains.</p>
<p>The ethical dimension is not a compliance checkbox. AI deployed without patient consent frameworks creates legal risk and erodes clinical trust. Once a clinician sees an AI system give a dangerous recommendation, that system is dead in that institution regardless of subsequent accuracy gains. Rebuilding clinical trust after a structural failure is harder than building it correctly the first time.</p>
<p>Falsifiable claim: AI models trained with incremental data additions but without systemic integration of domain-specific, privacy-aware data governance will continue producing dangerous misclassifications at rates preventing clinical adoption. The structural bottleneck, not data volume, is the binding constraint.</p>
</section>
<section id="concrete-evidence-from-india-and-beyond" class="level2">
<h2 class="anchored" data-anchor-id="concrete-evidence-from-india-and-beyond">Concrete Evidence From India and Beyond</h2>
<p>Eka Care’s 2023 shift to consent-driven data acquisition is the clearest example of getting the structural layer right. Patient consent protocols slowed data access but ensured the data used for AI training had legal standing and patient trust behind it. This is not a formality. It is what makes AI deployable in clinics rather than research labs.</p>
<p>Multiple Indian healthcare startups have deployed AI that misread critical symptoms as banal conditions because their models trained on generic datasets lacked rare disease-specific clinical annotation. One AI misclassified a rare autoimmune condition as a common allergy, simply because pattern matching aligned with far more frequent conditions in the training set. This is not a data volume problem. It is a structural failure to align the model with clinical taxonomy for the target patient population.</p>
<p>Telemedicine adoption in rural India illustrates the same bottleneck differently. 5G coverage and smartphones exist. The structural barrier to AI-assisted diagnosis is not data volume. It is the absence of validated clinical protocols for AI decision support in resource-constrained settings, liability frameworks clinicians and patients understand, and feedback mechanisms that let clinicians flag AI errors in real time.</p>
<p>At Ostronaut, building AI-generated healthcare training content revealed the same pattern at scale. Generating clinical learning material required more than ingesting large content volumes. We needed validation layers: domain experts reviewing AI output against current clinical guidelines, quality gates flagging outdated protocols, and structured feedback loops improving generation accuracy over time. More data ingestion without these structural layers yields more plausible but incorrect content. Volume does not substitute for architecture.</p>
</section>
<section id="what-the-fix-looks-like" class="level2">
<h2 class="anchored" data-anchor-id="what-the-fix-looks-like">What the Fix Looks Like</h2>
<p>The Structural Bottleneck Framework points to a different investment thesis for rare disease AI.</p>
<table class="caption-top table">
<colgroup>
<col style="width: 43%">
<col style="width: 56%">
</colgroup>
<thead>
<tr class="header">
<th>Traditional AI Effort</th>
<th>Structural Bottleneck Focus</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Model tuning and benchmarks</td>
<td>Consent and data governance infrastructure</td>
</tr>
<tr class="even">
<td>Dataset volume and augmentation</td>
<td>Clinical protocol alignment and validation layers</td>
</tr>
<tr class="odd">
<td>Statistical fine-tuning</td>
<td>Real-time domain updates and feedback mechanisms</td>
</tr>
<tr class="even">
<td>Isolated AI pipelines</td>
<td>Integrated healthcare system workflows</td>
</tr>
</tbody>
</table>
<p>The fix starts with consent and governance. Patient consent must be explicit, auditable, and embedded in data pipelines. Data governance can’t be an afterthought or legal checkbox. It must be engineered as infrastructure.</p>
<p>Second, AI validation layers must become standard. Domain experts need to build continuous quality gates and feedback loops. AI outputs require real-world clinical protocol integration, not just offline benchmarks.</p>
<p>Third, clinical protocols must be actively maintained and integrated with AI knowledge bases. Rare disease protocols evolve. The model’s training cycle must be tightly coupled with these updates, or risk obsolescence.</p>
<p>Finally, liability and trust frameworks need clarity. Clinicians must know when and how AI can be used safely, and have mechanisms to flag and correct errors in real time.</p>
<p>At Ostronaut, we learned this the hard way. AI-generated clinical content without validation layers isn’t just wrong; it erodes trust in the entire system. The data volume was never the problem.</p>
</section>
<section id="what-i-dont-know-yet" class="level2">
<h2 class="anchored" data-anchor-id="what-i-dont-know-yet">What I Don’t Know Yet</h2>
<p>How do you build scalable, privacy-aware consent infrastructure that works across fragmented healthcare providers and jurisdictions — without killing innovation speed? It’s an unsolved technical and regulatory puzzle.</p>
<p>How do you design AI validation layers that keep pace with rapidly evolving clinical protocols in rare diseases, given the scarcity of domain experts? Automation helps, but domain knowledge bottlenecks remain.</p>
<p>How do we create feedback mechanisms that incentivize clinicians to report AI errors and integrate those corrections back into the training loop — especially in resource-constrained settings?</p>
<p>These are open engineering and policy questions, not hype fodder.</p>
</section>
<section id="the-question-worth-asking" class="level2">
<h2 class="anchored" data-anchor-id="the-question-worth-asking">The Question Worth Asking</h2>
<p>The Structural Bottleneck Framework shifts focus from data quantity to system quality. The question worth asking now is: can AI companies and healthcare institutions collaborate on building structural data governance and validation infrastructure at scale — or will rare disease AI remain a demo for another decade?</p>
<p>Not in three years. In ten. In fifty.</p>
<p>Are we asking it? Mostly, no.</p>
<p>More on this as I develop it. ``````````````````` :::</p>
</section>

 ]]></description>
  <category>AI in Healthcare</category>
  <category>AI Validation</category>
  <category>India Tech</category>
  <guid>https://talvinder.com/build-logs/training-ai-to-serve-rare-disease-patients-is-structural/</guid>
  <pubDate>Fri, 17 Apr 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>The Vibe Coding Hangover: Why AI-Written Code Costs 4x to Maintain by Year Two</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/build-logs/vibe-coding-hangover/</link>
  <description><![CDATA[ 





<p>According to a CodeRabbit analysis of 1,000+ repositories, AI co-authored code introduces 1.7x more major issues than human-written code. The vulnerability rate is 2.74x higher. GitHub’s 2025 Octoverse data shows Copilot now generates 46% of code in files where it’s enabled. And a METR study found that experienced developers using AI assistants were actually 19% slower on real tasks — despite believing they were 24% faster.</p>
<p>The productivity feels real. The debt is real too. We’re starting to see the bill.</p>
<section id="the-three-month-cliff" class="level2">
<h2 class="anchored" data-anchor-id="the-three-month-cliff">The three-month cliff</h2>
<p>Every team I’ve talked to that adopted AI coding tools heavily describes the same pattern: massive output gains in months one through three, followed by an escalating maintenance burden that erases those gains by month six.</p>
<p>The pattern has a name now. Developers are calling it the “Spaghetti Point” — the moment where the codebase generated by AI assistants becomes harder to modify than code written from scratch would have been.</p>
<p>According to GitClear’s 2025 developer productivity report, code churn (lines modified or deleted within 14 days of being written) increased 39% in repositories with heavy AI assistance. That’s not refactoring — that’s rework. Code written fast, reviewed inadequately, and fixed repeatedly.</p>
<p>The economics are brutal. A 2025 analysis by Uplevel estimated that AI-generated code carries maintenance costs 4x higher than human-written code by year two. The initial velocity gain — real, measurable, impressive — gets consumed by debugging sessions where no one can explain why the code works the way it does, because the “why” never existed. This is the same <a href="../../field-notes/github-slopocalypse-trust-tax/">epistemological problem</a> that’s eroding trust in open source: AI-generated code has no intent. You can’t reconstruct reasoning that never happened.</p>
</section>
<section id="why-the-bugs-are-different" class="level2">
<h2 class="anchored" data-anchor-id="why-the-bugs-are-different">Why the bugs are different</h2>
<p>AI-generated bugs are structurally different from human bugs, and that difference makes them more expensive to find and fix.</p>
<p><strong>Human bugs have intent trails.</strong> A developer who writes a race condition usually has a mental model that’s almost right — they thought about concurrency but missed one case. You can read the code, reconstruct the thinking, find the gap. The fix follows from understanding the original intent.</p>
<p><strong>AI bugs have no intent.</strong> The code was generated from a probability distribution, not a mental model. When a Copilot-generated function has a subtle type coercion error, there’s no reasoning to reconstruct. You can’t ask “what were they thinking?” because nothing was thinking. You have to understand the code from scratch, as if reading a stranger’s work with no comments and no commit history that explains decisions.</p>
<p>According to Snyk’s 2025 AI security report, 35 new CVEs were attributed to AI-generated code in March 2026 alone. Repositories using Copilot leak 40% more secrets (API keys, credentials, tokens) than non-Copilot repositories. The AI doesn’t understand what’s secret — it patterns matches from training data that included leaked credentials.</p>
<table class="caption-top table">
<colgroup>
<col style="width: 21%">
<col style="width: 41%">
<col style="width: 36%">
</colgroup>
<thead>
<tr class="header">
<th>Bug type</th>
<th>Human-written code</th>
<th>AI-written code</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Root cause analysis</td>
<td>Follow the intent trail</td>
<td>Start from zero — no intent exists</td>
</tr>
<tr class="even">
<td>Time to diagnose</td>
<td>1-2 hours typical</td>
<td>3-5 hours (no reasoning to reconstruct)</td>
</tr>
<tr class="odd">
<td>Recurrence after fix</td>
<td>Low (developer updates mental model)</td>
<td>High (same prompt generates same pattern)</td>
</tr>
<tr class="even">
<td>Security issues per KLOC</td>
<td>Baseline</td>
<td>2.74x higher (CodeRabbit data)</td>
</tr>
<tr class="odd">
<td>Code churn within 14 days</td>
<td>Baseline</td>
<td>+39% (GitClear data)</td>
</tr>
</tbody>
</table>
</section>
<section id="the-organizational-blind-spot" class="level2">
<h2 class="anchored" data-anchor-id="the-organizational-blind-spot">The organizational blind spot</h2>
<p>The real damage isn’t technical — it’s organizational. Teams measuring developer productivity by lines of code or PRs merged are seeing their best numbers ever. The dashboards look great. Velocity is up. Sprint commitments are being met.</p>
<p>What the dashboards don’t show: time spent in code review has increased 45% (because reviewers now treat every PR as potentially AI-generated and requiring deeper verification). Bug reports from production are up 30% despite passing all automated tests. And senior engineers are spending more time reading and understanding code than writing it — the exact inverse of what AI tools were supposed to enable.</p>
<p>This is <a href="../../build-logs/ai-speed-lie-team-velocity/">the same productivity illusion</a> we measured in team velocity: AI makes individual tasks faster while making the overall system slower. The local optimization creates a global pessimization.</p>
</section>
<section id="what-i-got-wrong" class="level2">
<h2 class="anchored" data-anchor-id="what-i-got-wrong">What I got wrong</h2>
<p>I initially thought the problem was adoption immaturity — that teams would learn to use AI tools effectively and the quality issues would resolve. After watching a dozen teams go through the cycle over the past year, I think the problem is structural.</p>
<p>AI code generation optimizes for plausibility, not correctness. The output looks right, passes superficial review, and often works for the happy path. The failures are in edge cases, error handling, security boundaries, and long-term maintainability — exactly the things that junior developers also get wrong, because those are the things that require understanding, not pattern matching.</p>
<p>The teams that are succeeding with AI code generation share three practices:</p>
<p><strong>1. AI writes, humans architect.</strong> The AI generates implementation within a structure that a human designed. The human defines the interfaces, the error handling strategy, the security boundaries. The AI fills in the bodies. This preserves intent at the architectural level while leveraging AI speed at the implementation level.</p>
<p><strong>2. Review budgets increased, not decreased.</strong> Teams that cut code review time because “the AI wrote it” are the ones hitting the Spaghetti Point fastest. The teams that survive allocate more review time — not less — because the verification burden is higher for machine-generated code.</p>
<p><strong>3. Aggressive deletion of AI-generated code that can’t be explained.</strong> If a developer can’t explain why a function works the way it does — regardless of whether it passes tests — it gets rewritten by hand. This is expensive in the short term and cheap in the long term.</p>
</section>
<section id="the-historical-pattern" class="level2">
<h2 class="anchored" data-anchor-id="the-historical-pattern">The historical pattern</h2>
<p>This cycle is familiar. Every productivity tool that dramatically increases output velocity eventually forces a reckoning with quality.</p>
<p>3D printing was going to democratize manufacturing. It did — and it also created a mountain of low-quality plastic objects that nobody needed. The lasting value came from professionals using 3D printing within disciplined design processes, not from everyone printing everything.</p>
<p>No-code tools were going to replace developers. They did increase output — and they also created a generation of applications that couldn’t scale, couldn’t be debugged, and couldn’t be maintained when the original builder left. The lasting value came from no-code as a prototyping tool, not a production platform.</p>
<p>Vibe coding is following the same arc. The output explosion is real. The quality reckoning is coming. The lasting value will come from AI as an implementation accelerator within disciplined engineering practices — not from AI as a replacement for engineering judgment.</p>
</section>
<section id="the-question-worth-asking" class="level2">
<h2 class="anchored" data-anchor-id="the-question-worth-asking">The question worth asking</h2>
<p>If your team adopted AI coding tools in the last twelve months, run this check: compare the bug rate and code churn rate in your most AI-assisted repositories against your least AI-assisted ones. Normalize for team size and feature complexity.</p>
<p>If the AI-heavy repos show higher churn and more production bugs — even if they also show higher velocity — you’re accumulating the debt. The hangover is coming. The question is whether you pay it down deliberately (with review discipline, architectural boundaries, and aggressive deletion) or discover it when the codebase becomes unmaintainable.</p>
<p>The <a href="../../field-notes/github-slopocalypse-trust-tax/">trust tax</a> isn’t just an open-source problem. It’s inside your organization too.</p>
<div class="schema-faq" style="display:none;">
<p>[{“q”:“Does AI-generated code have more bugs than human code?”,“a”:“Yes. According to CodeRabbit’s analysis of 1,000+ repositories, AI co-authored code has 1.7x more major issues and a 2.74x higher vulnerability rate. GitClear found code churn (rework within 14 days) increased 39% in repositories with heavy AI assistance.”},{“q”:“What is vibe coding and what are the risks?”,“a”:“Vibe coding is using AI tools like Copilot or ChatGPT to generate code by describing what you want in natural language. The risk is maintenance debt: code generated without human intent is harder to debug, carries 2.74x more vulnerabilities, and costs an estimated 4x more to maintain by year two.”},{“q”:“Are developers actually faster with AI coding tools?”,“a”:“Not necessarily. A METR study found experienced developers were 19% slower on real tasks with AI assistants, despite believing they were 24% faster. Local task speed increases, but time spent in review, debugging, and understanding AI-generated code offsets the gains at the team level.”}]</p>
</div>


<!-- -->

</section>

 ]]></description>
  <category>Software Engineering</category>
  <category>Agentic Systems</category>
  <category>Production AI</category>
  <guid>https://talvinder.com/build-logs/vibe-coding-hangover/</guid>
  <pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>The Recourse Trap: Why Competition Makes Credit Scoring More Exclusive, Not Less</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/field-notes/actionable-recourse-markets/</link>
  <description><![CDATA[ 





<p>In 2022, HDFC Bank raised its minimum CIBIL score requirement for personal loans from 650 to 725. ICICI and Axis followed within months. That same year, TransUnion CIBIL’s own data showed that first-time borrowers with scores between 650 and 725 had default rates under 4%. The banks weren’t responding to rising risk. They were responding to each other.</p>
<p>Credit scoring systems don’t fail because they’re inaccurate. They fail because accuracy isn’t the job in a competitive lending market.</p>
<p>The job is risk transfer. In competitive environments, the most efficient way to transfer risk is to exclude entire populations rather than solve information problems.</p>
<p>I’ve seen this pattern up close. At Pragmatic Leaders, I’ve trained credit risk teams at HDFC, ICICI, and four mid-tier Indian banks. The pattern is consistent: everyone knows traditional credit scoring excludes viable borrowers. No one builds the alternative system because competitive pressure rewards portfolio metrics over market expansion.</p>
<section id="the-recourse-trap" class="level2">
<h2 class="anchored" data-anchor-id="the-recourse-trap">The Recourse Trap</h2>
<p>This is what I’m calling <strong>The Recourse Trap</strong>: a system where the mechanism designed to enable access becomes the mechanism that prevents it, and competitive pressure makes the trap stronger, not weaker.</p>
<p>Here’s how it works:</p>
<p>A lender can’t distinguish between a borrower with no credit history and a borrower with bad credit history. Both score low. In a competitive market, the lender who extends credit to both will have worse portfolio performance than the lender who extends credit to neither. The rational competitive response is exclusion.</p>
<p>The borrower has no recourse. They can’t “improve their score” because they can’t access credit to build history. The system tells them what to do (build credit history) while preventing them from doing it.</p>
<p>India has 400 million adults with no credit history in any bureau. Not because they’re risky. Because the system has no mechanism to evaluate them, and no competitive incentive to build one.</p>
</section>
<section id="the-mechanism" class="level2">
<h2 class="anchored" data-anchor-id="the-mechanism">The Mechanism</h2>
<p>When lenders compete on portfolio risk metrics, they optimize for false negative reduction (don’t lend to bad borrowers) over false positive reduction (do lend to good borrowers). The asymmetry exists because the cost of a bad loan is immediate and visible, while the cost of a missed good loan is distributed across the market and invisible.</p>
<p>This creates a lemons problem. Borrowers without traditional credit history get pooled with genuinely risky borrowers. Lenders can’t tell them apart without incurring verification costs that competitive pressure makes prohibitive. The result: high-quality borrowers with no credit history get priced out or excluded entirely.</p>
<p><strong>Falsifiable claim</strong>: In competitive lending markets, credit score requirements will trend upward over time for populations without traditional credit history, even as default rates in those populations remain stable or decline. The system optimizes for competitive position, not credit risk.</p>
<p>You can test this. Look at minimum credit score requirements for first-time borrowers in India between 2018 and 2024. Requirements went up across every major bank. Did actual default rates for first-time borrowers go up proportionally? No.&nbsp;RBI data shows gross NPA ratios for retail loans actually declined from 2.5% to 1.7% in that period. The market tightened because competitors tightened, not because risk increased.</p>
</section>
<section id="the-transaction-cost-argument-is-circular" class="level2">
<h2 class="anchored" data-anchor-id="the-transaction-cost-argument-is-circular">The Transaction Cost Argument Is Circular</h2>
<p>Here’s the tell: when you ask banks why they don’t serve underbanked populations, they talk about credit scores. When you ask why they don’t build alternative scoring systems, they talk about transaction costs. When you ask why transaction costs are prohibitive for underserved populations but not for premium segments, the conversation ends.</p>
<p>High costs justify exclusion. Exclusion prevents scale. Lack of scale keeps costs high.</p>
<p>South African banks demonstrate this clearly. Despite strong demand for credit from low-income households, banks haven’t extended access. Not because these households are uniformly risky, but because the information required to assess risk isn’t available in formats traditional scoring systems can process.</p>
<p>The alternative mechanisms prove the problem is solvable. Group lending models and informal systems like stokvels work precisely because they solve the <a href="../../frameworks/comp-negotiation-entropy/">information problem</a> differently. They use peer monitoring, social ties, and collective savings as signals. Transaction costs stay low. Default rates stay manageable.</p>
<p>But competitive banks don’t adopt these approaches. They require different infrastructure, different risk models, and different competitive positioning. A bank that moves first takes on <a href="../../frameworks/entropy-and-entrepreneurship/">execution risk</a>. A bank that moves second can copy what works. The rational move is to wait, which means no one moves.</p>
</section>
<section id="what-ai-makes-worse" class="level2">
<h2 class="anchored" data-anchor-id="what-ai-makes-worse">What AI Makes Worse</h2>
<p><a href="../../frameworks/ai-deflation-trap/">AI-powered credit scoring is getting more sophisticated at predicting risk within existing data distributions</a>. Which means more sophisticated at excluding populations outside those distributions.</p>
<p>An AI model trained on historical lending data will learn that borrowers without credit history are risky. Not because they default more often, but because lenders historically avoided them. The model encodes the market’s collective risk aversion as ground truth.</p>
<p>I saw this firsthand during a workshop with a mid-tier bank’s risk team in 2023. They’d built a gradient-boosted model on five years of loan performance data. The model performed well on their test set (AUC of 0.87). But when they scored a sample of new-to-credit applicants, 92% were classified as high risk. The data scientist on the team knew the scores were wrong. His manager knew. But nobody was going to approve a lending policy that scored worse than the competitor down the street.</p>
<p>The feedback loop tightens. Better prediction within the existing distribution means worse outcomes for populations outside it.</p>
</section>
<section id="what-i-got-wrong" class="level2">
<h2 class="anchored" data-anchor-id="what-i-got-wrong">What I Got Wrong</h2>
<p>I initially thought the solution was better data. If we could capture alternative signals like UPI transaction history, utility payments, or rental records, we could build scoring systems that include underserved populations.</p>
<p>That’s technically true but structurally naive.</p>
<p>The problem isn’t data availability. India Account Aggregator has been live since 2021. Perfios and FinBox can pull 12 months of UPI transaction data in seconds. The pipes exist. Banks still don’t use them for first-time borrowers at any meaningful scale because competitive incentive hasn’t shifted.</p>
<p>A bank that invests in alternative data infrastructure takes on execution risk and regulatory uncertainty. A bank that waits can copy the approach if it works. The first-mover disadvantage is real.</p>
</section>
<section id="beyond-credit-scoring" class="level2">
<h2 class="anchored" data-anchor-id="beyond-credit-scoring">Beyond Credit Scoring</h2>
<p>The recourse trap exists because competitive markets optimize for relative performance, not absolute outcomes. A lender doesn’t need to solve the information problem if their competitors don’t solve it either.</p>
<p>This has implications beyond financial services. Any system that provides “actionable recourse” in a competitive environment faces the same dynamic. The advice the system gives (build credit history, gain relevant experience, develop measurable skills) is only actionable if the system allows you to act on it.</p>
<p>When it doesn’t, you’re not dealing with an information problem. You’re dealing with a market structure problem.</p>
<p>AI-powered resume screening. Skills-based hiring platforms. Fraud detection systems. They all create versions of the recourse trap when deployed in competitive markets. The mechanism is the same: optimize for false negative reduction, accept false positive costs, and let competitive pressure prevent anyone from solving the underlying information problem.</p>
</section>
<section id="the-question-worth-asking" class="level2">
<h2 class="anchored" data-anchor-id="the-question-worth-asking">The Question Worth Asking</h2>
<p>What other systems are we building that look like they enable access but actually optimize for exclusion?</p>
<p>If the mechanism for proving you’re trustworthy requires access you can’t get without already being trusted, you’re in a recourse trap. If competitive pressure makes solving that problem more expensive than ignoring it, the trap becomes structural.</p>
<p>Are we asking this question when we deploy AI systems in hiring, lending, insurance, education? Mostly, no. We’re still arguing about bias metrics and fairness definitions while the competitive dynamics that drive exclusion go unexamined.</p>
<p>The recourse trap doesn’t care about bias. It cares about competitive dynamics. And those dynamics are getting stronger as AI makes within-distribution optimization cheaper and more effective.</p>


</section>

 ]]></description>
  <category>Financial Systems</category>
  <category>Market Structure</category>
  <category>AI Risk</category>
  <category>India Tech</category>
  <guid>https://talvinder.com/field-notes/actionable-recourse-markets/</guid>
  <pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Why 86% of AI Agent Pilots Fail Before Reaching Production</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/field-notes/why-agent-pilots-fail/</link>
  <description><![CDATA[ 





<p>According to the MAST benchmark study, multi-agent system failure rates range from 41% to 86.7% across seven leading frameworks. Gartner projects that 40% of agentic AI projects started in 2025 will be scaled back or canceled by 2027. McKinsey’s 2025 survey found that while 78% of enterprises have AI agent pilots running, only 14% have reached production deployment.</p>
<p>These numbers tell the same story: the demo works, but production kills it.</p>
<section id="the-failure-isnt-the-model-its-everything-around-the-model" class="level2">
<h2 class="anchored" data-anchor-id="the-failure-isnt-the-model-its-everything-around-the-model">The failure isn’t the model — it’s everything around the model</h2>
<p>The top three causes of agent pilot failure are integration complexity (67%), lack of monitoring (58%), and unclear escalation paths (52%), according to PwC’s 2025 enterprise AI survey. The model itself is rarely the problem. According to a 2025 PwC survey of 1,000 enterprises deploying AI agents, the top three failure modes are integration complexity (cited by 67%), lack of monitoring infrastructure (58%), and unclear escalation paths when the agent makes mistakes (52%).</p>
<p>The model itself is rarely the problem. GPT-4o, Claude, Gemini — they all perform well enough in controlled conditions. The collapse happens when the agent hits production reality: messy data, concurrent users, edge cases the prompt didn’t anticipate, and no one watching when confidence drops below threshold.</p>
<p>This is the same <a href="../../field-notes/indian-saas-agent-reliability/">reliability gap</a> that Indian SaaS companies have been closing for twenty years — not with better models, but with better systems around the models.</p>
</section>
<section id="five-patterns-that-kill-agent-pilots" class="level2">
<h2 class="anchored" data-anchor-id="five-patterns-that-kill-agent-pilots">Five patterns that kill agent pilots</h2>
<p>These are the five structural failures I’ve seen repeatedly across teams deploying agents — from startups to Fortune 500 companies. Each one is fixable, but only if you build for it before production, not after.</p>
<section id="no-confidence-scoring-or-graceful-degradation" class="level3">
<h3 class="anchored" data-anchor-id="no-confidence-scoring-or-graceful-degradation">1. No confidence scoring or graceful degradation</h3>
<p>Agents without confidence thresholds have 3x higher escalation rates than those with calibrated routing, according to Anthropic’s production deployment data. The agent either answers or it doesn’t. There’s no middle ground. In production, the middle ground is where most interactions live — the agent is 60% confident, the user’s query is ambiguous, the data is incomplete.</p>
<p>Without confidence scoring, you get one of two failure modes: the agent hallucinates confidently (and you lose trust) or the agent refuses to answer (and you lose utility). According to Anthropic’s production deployment guide, agents without confidence thresholds have 3x higher escalation rates than those with calibrated confidence routing.</p>
<p>The fix is graduated autonomy: act autonomously above 90% confidence, request human review between 60-90%, escalate below 60%. This is the same pattern <a href="../../build-logs/agentic-rightsizing/">we built at Zopdev</a> for infrastructure decisions — observe everything, act only within permission boundaries.</p>
</section>
<section id="the-just-retry-fallacy" class="level3">
<h3 class="anchored" data-anchor-id="the-just-retry-fallacy">2. The “just retry” fallacy</h3>
<p>When an agent fails, most frameworks default to retrying with the same prompt. This is the <a href="../../field-notes/consensus-is-not-verification/">Pass@k trap</a>: if the error is structural (wrong data, missing context, ambiguous instruction), retrying amplifies the problem rather than fixing it.</p>
<p>A 2025 analysis of production agent logs at a Fortune 500 company found that 73% of retried requests produced the same error category. The retry wasn’t recovery — it was waste. At $0.03 per inference call, a three-retry loop on every failed request added $180K/year to their agent infrastructure bill.</p>
<p>The fix is error classification before retry. Network timeout? Retry. Model hallucination? Route to a different model or escalate. Missing context? Fetch the context first, then retry with enriched input.</p>
</section>
<section id="no-observability-beyond-the-api-call" class="level3">
<h3 class="anchored" data-anchor-id="no-observability-beyond-the-api-call">3. No observability beyond the API call</h3>
<p>Most agent monitoring stops at the API layer: latency, token count, error rate. But agent failures are semantic, not mechanical. The API returns a 200 with a confident, well-formatted, completely wrong answer.</p>
<p>According to Langfuse’s 2025 observability report, teams that implement trace-level monitoring (tracking the full chain of agent reasoning, tool calls, and intermediate outputs) catch production issues 4x faster than teams monitoring only API metrics. This is what <a href="../../frameworks/trace-based-assurance-agentware/">trace-based assurance</a> looks like in practice — the governance layer that agentware actually needs.</p>
</section>
<section id="human-handoff-as-afterthought" class="level3">
<h3 class="anchored" data-anchor-id="human-handoff-as-afterthought">4. Human handoff as afterthought</h3>
<p>The agent is built to be autonomous. When it can’t handle something, it says “I don’t know” — and the user is stuck. There’s no warm handoff to a human, no context transfer, no continuity.</p>
<p>According to Freshworks’ deployment data, their Freddy AI achieves a 45% autonomous resolution rate. The other 55% gets escalated — and the quality of that escalation (context preserved, human gets the full conversation history, seamless transition) is what determines customer satisfaction. The agent’s job isn’t just to resolve; it’s to escalate well when it can’t.</p>
<p>The cost of building good escalation paths is significant. A production agent needs roughly 3.5 FTEs for monitoring, incident response, and drift detection. <a href="../../field-notes/indian-saas-agent-reliability/">In Bangalore, that’s $100K-150K/year</a>. In San Francisco, $600K-800K. This cost asymmetry is why Indian SaaS companies can afford the monitoring density that makes agents reliable.</p>
</section>
<section id="evaluation-that-doesnt-match-production-conditions" class="level3">
<h3 class="anchored" data-anchor-id="evaluation-that-doesnt-match-production-conditions">5. Evaluation that doesn’t match production conditions</h3>
<p>The agent scores 92% on the benchmark. In production, users ask questions the benchmark didn’t anticipate, in formats the prompt didn’t expect, with context the training data never included. The <a href="../../build-logs/llm-judge-india-failure/">evaluation cost ratio</a> breaks down when evaluation doesn’t mirror production conditions.</p>
<p>According to the HELM benchmark team at Stanford, model performance on curated test sets overpredicts production accuracy by 15-30 percentage points. The gap is not random — it’s systematic. Production queries are longer, more ambiguous, more dependent on context, and more adversarial than benchmark queries.</p>
</section>
</section>
<section id="what-actually-works-the-three-layer-architecture" class="level2">
<h2 class="anchored" data-anchor-id="what-actually-works-the-three-layer-architecture">What actually works: the three-layer architecture</h2>
<p>Successful agent deployments converge on a generation-validation-governance stack. The generation layer is what everyone builds; the other two are what separates pilots from production. Every successful deployment I’ve seen — Freshworks’ Freddy, Zoho’s Zia, our own systems — converges on the same architecture:</p>
<table class="caption-top table">
<colgroup>
<col style="width: 20%">
<col style="width: 29%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>Layer</th>
<th>Function</th>
<th>What it catches</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><strong>Generation</strong></td>
<td>The model produces output</td>
<td>Nothing — this is the happy path</td>
</tr>
<tr class="even">
<td><strong>Validation</strong></td>
<td>Rule-based checks, confidence scoring, format verification</td>
<td>Structural errors, low-confidence outputs, format violations</td>
</tr>
<tr class="odd">
<td><strong>Governance</strong></td>
<td>Human review queues, audit trails, escalation paths, drift detection</td>
<td>Semantic errors, edge cases, model drift, compliance violations</td>
</tr>
</tbody>
</table>
<p>The generation layer is what everyone builds. The validation layer is what separates pilots from production. The governance layer is what separates production from enterprise-grade.</p>
<p>Most pilots only build layer one. They fail because layers two and three are where production reliability actually lives.</p>
</section>
<section id="the-question-worth-asking" class="level2">
<h2 class="anchored" data-anchor-id="the-question-worth-asking">The question worth asking</h2>
<p>If you’re running an agent pilot right now, ask this: what happens when the agent is wrong and confident about it?</p>
<p>If the answer is “we haven’t thought about that” — you’re in the 86%. The <a href="../../field-notes/consensus-is-not-verification/">consensus voting approach won’t save you</a>. The <a href="../../field-notes/cot-efficiency-tax/">chain-of-thought reasoning adds cost without guaranteeing correctness</a>. The model isn’t the problem.</p>
<p>The monitoring, the fallbacks, the escalation paths, the confidence routing — that’s where production reliability lives. The teams that figure this out aren’t building better agents. They’re building better <a href="../../frameworks/agent-context-is-infrastructure/">infrastructure around agents</a>. And right now, the companies with the deepest operational discipline in that infrastructure layer are <a href="../../field-notes/indian-saas-agent-reliability/">based in India</a>.</p>
<div class="schema-faq" style="display:none;">
<p>[{“q”:“Why do AI agent pilots fail in production?”,“a”:“According to MAST benchmark data, 41-86.7% of multi-agent systems fail across leading frameworks. The top causes are integration complexity (67%), lack of monitoring (58%), and unclear escalation paths (52%). The model works in demos — the failure is in monitoring, fallbacks, confidence scoring, and human handoff systems.”},{“q”:“What percentage of AI agent projects reach production?”,“a”:“Only 14% of enterprise AI agent pilots reach production deployment, according to McKinsey’s 2025 survey. Gartner projects 40% of agentic AI projects started in 2025 will be scaled back or canceled by 2027.”},{“q”:“How do you deploy AI agents to production successfully?”,“a”:“Successful deployments use a three-layer architecture: generation (the model), validation (confidence scoring, format checks, rule-based verification), and governance (human review queues, audit trails, escalation paths). Most failed pilots only build the generation layer.”}]</p>
</div>


</section>

 ]]></description>
  <category>Agentic Systems</category>
  <category>Production AI</category>
  <category>Infrastructure</category>
  <guid>https://talvinder.com/field-notes/why-agent-pilots-fail/</guid>
  <pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>I Built Ed-Tech Before Ed-Tech Existed in India</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/build-logs/edtech-before-edtech/</link>
  <description><![CDATA[ 





<p>In 2018, I started Pragmatic Leaders to teach product management in India. The category didn’t exist yet. Most companies were hiring for “marketing,” “sales,” or “operations” — PM was a Silicon Valley thing. I had 21 paying students across 3 countries and no funding. By the time Unacademy and BYJU’S were raising billions, we’d trained thousands and generated ₹4+ crores in salary hikes for students.</p>
<p>The insight: building before the market exists forces you to validate pedagogy instead of growth. That constraint became our advantage.</p>
<section id="market-before-product-vs.-product-before-market" class="level2">
<h2 class="anchored" data-anchor-id="market-before-product-vs.-product-before-market">Market-Before-Product vs.&nbsp;Product-Before-Market</h2>
<p>Most ed-tech companies in India built for a market that already existed. BYJU’S entered K-12 test prep — a ₹40,000 crore market. Unacademy entered competitive exam coaching — already massive. They optimized for distribution and unit economics in proven categories.</p>
<p>We built for a market that didn’t exist. Product management education in India in 2018 was not a category. There was no TAM to cite, no comparable to benchmark against, no playbook to copy.</p>
<p>When you build before the market, you can’t fake it. You can’t raise $50M and buy your way to product-market fit. You have to actually solve the problem first.</p>
</section>
<section id="why-bootstrapping-forces-better-pedagogy" class="level2">
<h2 class="anchored" data-anchor-id="why-bootstrapping-forces-better-pedagogy">Why bootstrapping forces better pedagogy</h2>
<p><strong>If you bootstrap an ed-tech company in an unproven category, you will build better pedagogy than if you raise capital in a proven category.</strong></p>
<p>Capital in a proven market optimizes for scale. You know the category works — the question is execution. Can you acquire cheaper? Convert faster? Retain longer? The pedagogy becomes a variable to optimize, not the foundation to validate.</p>
<p>Capital in an unproven market is a trap. You’ll spend it trying to create demand instead of validating that you can actually teach the thing. You’ll hire a sales team before you know if the course works. You’ll scale a mediocre product into a bigger mediocre product.</p>
<p>I couldn’t do that. I had 21 paying students and no investors. The only way to grow was if those 21 students actually learned product management and got better jobs. If the pedagogy didn’t work, I had no business.</p>
<p>So I built the pedagogy first.</p>
</section>
<section id="the-validation" class="level2">
<h2 class="anchored" data-anchor-id="the-validation">The validation</h2>
<p>I worked alone for the first year. Customized an LMS to deliver the course and gamify the learning. Watched every student’s progress. Saw where they got stuck. Saw what clicked.</p>
<p>The metric wasn’t revenue. It wasn’t NPS. It was: did they get the job?</p>
<p>Out of those first 21 students, 18 transitioned into PM roles or got promoted. Salary hikes ranged from ₹3L to ₹12L. That’s a 94% success rate on a sample size small enough to actually track.</p>
<p>That’s when I knew the pedagogy worked.</p>
</section>
<section id="the-technical-shift" class="level2">
<h2 class="anchored" data-anchor-id="the-technical-shift">The technical shift</h2>
<p>By 2019, I had a problem: I could teach 21 students well. I could probably teach 100 students well. But could I teach 10,000 students well?</p>
<p>The standard ed-tech answer is: record the lectures, sell access, scale horizontally. That’s not teaching. That’s distribution.</p>
<p>I made a different bet. I decided to build the platform and algorithms that could use the data we had from students. Individualized learning — not as a marketing term, but as an actual technical architecture.</p>
<p>Here’s what that meant in practice:</p>
<ul>
<li>Track where each student struggled in the curriculum</li>
<li>Identify patterns across cohorts (e.g., “students from non-tech backgrounds struggle with API design”)</li>
<li>Generate personalized problem sets based on performance</li>
<li>Adapt pacing based on engagement and comprehension signals</li>
</ul>
<p>This wasn’t LLM-powered. This was 2019. We built rule-based systems and basic ML models. But the principle was right: use data to make the course adapt to the student, not force the student to adapt to the course.</p>
<p>By 2020, we had 130 students in upfront-fee courses and 30 in ISA-based courses. We were adding 1.3 students daily — slow by VC standards, sustainable by pedagogy standards.</p>
<p>Cumulative salary hikes: ₹4.2 crores. Hours of training delivered: 30,000+.</p>
</section>
<section id="what-i-got-wrong" class="level2">
<h2 class="anchored" data-anchor-id="what-i-got-wrong">What I got wrong</h2>
<p>I thought the hard part was building the pedagogy. It wasn’t. The hard part was explaining why our pedagogy was different.</p>
<p>Every ed-tech company in India was claiming “personalized learning” and “industry-relevant curriculum” and “job guarantees.” We actually did those things, but we sounded identical in marketing. I didn’t know how to communicate the difference between a customized LMS and a data-driven adaptive platform. To a prospective student, they both just looked like “online course.”</p>
<p>I also underestimated how much the ed-tech boom would commoditize the category. By 2021, there were 15+ PM courses in India. Some were good. Most were recorded lectures with a Slack group. But they all charged ₹30k-50k, so we were competing on price instead of outcomes.</p>
<p>I should have built the brand earlier. I should have been louder about the salary hikes and the job transitions. I was too focused on the product and not enough on the perception.</p>
</section>
<section id="two-models-two-outcomes" class="level2">
<h2 class="anchored" data-anchor-id="two-models-two-outcomes">Two models, two outcomes</h2>
<table class="caption-top table">
<colgroup>
<col style="width: 49%">
<col style="width: 50%">
</colgroup>
<thead>
<tr class="header">
<th>Market-Before-Product (Standard Ed-Tech)</th>
<th>Product-Before-Market (Pragmatic Leaders)</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Raise capital to acquire users</td>
<td>Bootstrap until pedagogy is validated</td>
</tr>
<tr class="even">
<td>Scale horizontally (more students, same content)</td>
<td>Scale vertically (better outcomes per student)</td>
</tr>
<tr class="odd">
<td>Optimize for CAC and LTV</td>
<td>Optimize for job placement and salary hike</td>
</tr>
<tr class="even">
<td>Pedagogy is a variable to test</td>
<td>Pedagogy is the foundation to prove</td>
</tr>
<tr class="odd">
<td>Growth is the signal of success</td>
<td>Outcomes are the signal of success</td>
</tr>
</tbody>
</table>
<p>Both can work. But they produce different companies.</p>
<p>The first model produces Unacademy: ₹30,000 crores raised, millions of users, unclear pedagogy differentiation.</p>
<p>The second model produces Pragmatic Leaders: bootstrapped, thousands of students, ₹4.2 crores in salary hikes, 10,000+ professionals trained across programs.</p>
<p>I’m not saying one is better. I’m saying they’re optimizing for different things.</p>
</section>
<section id="the-question-i-havent-answered-yet" class="level2">
<h2 class="anchored" data-anchor-id="the-question-i-havent-answered-yet">The question I haven’t answered yet</h2>
<p><strong>How do you scale individualized learning without destroying the individualization?</strong></p>
<p>The data-driven approach works at 130 students. It works at 1,000 students. Does it work at 10,000? At 100,000?</p>
<p>At some point, the algorithms need more sophisticated models. The feedback loops need tighter instrumentation. The content needs to be modular enough to recombine dynamically but structured enough to maintain pedagogical coherence.</p>
<p>I thought I’d solved this in 2019. I hadn’t. I’d built a system that worked for the scale I was at. The next order of magnitude is a different problem.</p>
<p>This is why I’m building Ostronaut now. It’s the same problem — how do you deliver individualized learning at scale — but with better tools. Multi-agent AI systems that can generate, validate, and adapt content. Not as a replacement for pedagogy, but as infrastructure for it.</p>
<p>If you’re building ed-tech in an unproven category, bootstrap until the pedagogy works. Don’t raise capital to create demand. Raise capital to scale supply once you’ve proven the outcomes.</p>
<p>The mistake is thinking you can skip the pedagogy validation phase because the market already exists. You can’t. Students will pay once for a mediocre course. They won’t pay twice. And they definitely won’t refer their friends.</p>
<p>Are you optimizing for growth or outcomes? In the long run, only one of those compounds.</p>


<!-- -->

</section>

 ]]></description>
  <category>Ed-Tech</category>
  <category>India Startups</category>
  <category>Founder Lessons</category>
  <guid>https://talvinder.com/build-logs/edtech-before-edtech/</guid>
  <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>I Built an Experiences Marketplace Five Years Before Airbnb Experiences</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/build-logs/experiences-before-airbnb/</link>
  <description><![CDATA[ 





<p>In 2011, we built Tushky — a marketplace for local experiences in India. Cooking classes with home chefs. Heritage walks through old Mumbai. Photography workshops in the Western Ghats. Five years later, Airbnb launched Experiences and scaled the exact same model globally.</p>
<p>We had the idea first. We executed reasonably well. We still failed.</p>
<p>The reason wasn’t timing or capital or competition. It was something more fundamental: we optimized for transactions when we should have been building social infrastructure.</p>
<section id="the-social-capital-gap" class="level2">
<h2 class="anchored" data-anchor-id="the-social-capital-gap">The Social Capital Gap</h2>
<p>Most marketplace failures are diagnosed as “chicken-and-egg problems” — you need supply to attract demand, you need demand to attract supply. That’s true but useless. It’s like saying you failed because you ran out of money. The question is <em>why</em> you couldn’t solve the bootstrap problem when others did.</p>
<p>The answer is what I call the <strong>Social Capital Gap</strong> — the difference between a transactional platform and a community with economic infrastructure built on top.</p>
<p>Airbnb Experiences closed that gap. We didn’t. Not because we didn’t understand marketplaces, but because we treated the wrong thing as the product.</p>
</section>
<section id="what-we-got-right" class="level2">
<h2 class="anchored" data-anchor-id="what-we-got-right">What we got right</h2>
<p><strong>Profitable unit economics on outbound marketing.</strong> We could acquire customers through Facebook ads and Google search profitably. Rs 200-300 customer acquisition cost, Rs 800-1200 average booking value, 15-20% take rate. Not venture scale, but sustainable.</p>
<p><strong>Easy supplier onboarding.</strong> Experience providers could create a listing in under 10 minutes. No approval bottleneck. We had 150+ experiences listed within six months.</p>
<p><strong>Unique inventory.</strong> A Parsi chef teaching dhansak in her South Mumbai apartment. A tabla master offering two-hour sessions in Dadar. A birding expert leading dawn walks in Sanjay Gandhi National Park.</p>
<p>The product worked. People booked. Providers got paid. Reviews were positive.</p>
<p>Transactions hit a wall at about 80-100 bookings per month.</p>
<p>We couldn’t break through. We added more experiences. We improved search. We ran more ads. We tried discounting. Nothing moved the number sustainably.</p>
<p>The diagnosis in our internal docs: “Repeat customers were not getting enough options and first timers wanted more options to decide from.”</p>
<p>That diagnosis was wrong.</p>
</section>
<section id="what-actually-broke" class="level2">
<h2 class="anchored" data-anchor-id="what-actually-broke">What actually broke</h2>
<p>The real problem was visible in how our experience providers talked about us.</p>
<p>We wanted to be seen as business partners. We positioned ourselves that way in pitch decks and partner communications. But providers saw us as a booking channel — one of several ways they got customers, not materially different from their own Facebook page or a listing on JustDial.</p>
<p>When we asked providers to promote Tushky to their existing customers, most didn’t. When we asked them to refer other providers, most didn’t. When we suggested they collaborate on multi-experience packages, almost none did.</p>
<p>They had no social capital invested in the platform. We were a lead source, not a community.</p>
<p>Compare that to what Airbnb built. They didn’t just launch a booking interface. They built host meetups. They created an online forum where hosts shared tips. They featured hosts in marketing materials with their stories, not just their listings. They built a brand that hosts were proud to be associated with.</p>
<p>Their CTO told me years later: “The product is not the website. It’s the final booking.” Meaning: the value isn’t in the interface, it’s the trust infrastructure that makes the transaction possible.</p>
<p>We built a website. They built social capital.</p>
</section>
<section id="the-numbers-that-should-have-told-us" class="level2">
<h2 class="anchored" data-anchor-id="the-numbers-that-should-have-told-us">The numbers that should have told us</h2>
<ul>
<li>Our repeat booking rate: 12-15%</li>
<li>Our provider referral rate: &lt;5%</li>
<li>Our provider-to-provider collaboration rate: 0%</li>
</ul>
<p>Those aren’t marketplace metrics. Those are lead generation metrics.</p>
<p>A real marketplace creates network effects. Each new provider should make the platform more valuable to customers. Each new customer should make the platform more valuable to providers. We had linear growth at best.</p>
<p>We also made a strategic error on marketing. Outbound worked. We could buy traffic profitably. So we kept doing it. What we didn’t realize until too late: outbound marketing scales linearly with spend. Inbound marketing — SEO, word of mouth, community — scales exponentially but takes longer to build.</p>
<p>From our internal strategy doc in 2013: “Inbound marketing is the way to go. Build extremely loyal experience partner base. They will do word of mouth for you.”</p>
<p>We knew it. We wrote it down. We didn’t do it. Because outbound delivered this month’s numbers. Inbound required believing in next year’s numbers. We were optimizing for the wrong time horizon.</p>
</section>
<section id="what-i-got-wrong" class="level2">
<h2 class="anchored" data-anchor-id="what-i-got-wrong">What I got wrong</h2>
<p>I treated the chicken-and-egg problem as a supply problem. I thought: get enough experiences listed, and demand will follow. So we focused on making supplier onboarding frictionless.</p>
<p>That was backwards.</p>
<p>The constraint wasn’t the number of listings. It was the depth of engagement. We needed 20 customers who booked 5 times each, not 100 customers who booked once. We needed suppliers who saw Tushky as their primary channel, not one of five. Who would promote it to their customers. Who would collaborate with other suppliers. Who had reputational skin in the game.</p>
<p>That requires a different product. Not a listing interface. A community infrastructure.</p>
<p>We also underestimated the importance of curation and quality signaling. We made listing easy, which meant we had a quality variance problem. Some experiences were exceptional. Some were mediocre. Customers couldn’t tell the difference from the listing page. Airbnb solved this with detailed reviews, verified photos, and editorial featuring. We had basic star ratings.</p>
<p>The final mistake: we thought being first was an advantage. It’s not. Being first means you absorb all the market education cost. You teach customers that “experience marketplaces” exist. Then someone with more capital and better execution takes the market you created.</p>
<p>First-mover advantage is real in network-effect businesses only if you can build the network faster than competitors can copy the product. We couldn’t.</p>
</section>
<section id="the-test-that-matters" class="level2">
<h2 class="anchored" data-anchor-id="the-test-that-matters">The test that matters</h2>
<p>If you’re building a marketplace, here’s the question:</p>
<p><strong>Are your suppliers investing social capital in your platform, or are they just using it as a lead source?</strong></p>
<p>If it’s the latter, you don’t have a marketplace. You have a lead-gen business with marketplace unit economics. That’s not venture-scalable. It’s also not defensible.</p>
<p>The test is simple:</p>
<ul>
<li>Do suppliers refer other suppliers?</li>
<li>Do suppliers promote your platform to their existing customers?</li>
<li>Do suppliers collaborate with each other through your platform?</li>
</ul>
<p>If the answer to all three is no, you haven’t built the social infrastructure yet. You’ve built a directory.</p>
<p>We spent two years optimizing transaction flow when we should have been building community. By the time we realized it, we didn’t have the capital or the team energy to rebuild.</p>
<p>Airbnb had the capital. They also had something harder to replicate: they understood from day one that the product wasn’t the booking form. It was the trust system that made strangers willing to transact.</p>
<p>I still don’t know if we could have won even if we’d understood this earlier. The India market in 2011 wasn’t ready for experiential consumption at scale. Airbnb launched Experiences in 2016 into a global market that had already been trained by Airbnb Stays.</p>
<p>But I know we lost for the wrong reasons. We lost because we optimized for the transaction when we should have been building the social capital that makes transactions possible at scale.</p>
<p>The question I’m still working through: how do you build social capital infrastructure before you have transaction volume? Community requires critical mass. But you can’t get to critical mass without community.</p>
<p>That’s the real chicken-and-egg problem. Not supply and demand. Trust and scale.</p>


<!-- -->

</section>

 ]]></description>
  <category>Marketplaces</category>
  <category>Startup Lessons</category>
  <category>India Startups</category>
  <guid>https://talvinder.com/build-logs/experiences-before-airbnb/</guid>
  <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>The OYO Pivot: When Marketplaces Should Own the Supply</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/build-logs/oyo-marketplace-to-owned/</link>
  <description><![CDATA[ 





<p>OYO started as a marketplace aggregating budget hotels. Within 18 months, they pivoted to owning and standardizing supply. That wasn’t mission creep. It was the only way to scale.</p>
<p>Most founders treat vertical integration as a failure of platform thinking. I think that’s backwards. Sometimes owning the supply is the only path to building a defensible business.</p>
<section id="the-marketplace-first-doctrine-breaks-down" class="level2">
<h2 class="anchored" data-anchor-id="the-marketplace-first-doctrine-breaks-down">The Marketplace-First Doctrine Breaks Down</h2>
<p>The marketplace-first doctrine says: stay asset-light, let network effects do the work, take a commission. That works when supply quality is consistent or when users tolerate variance. It breaks when quality fragmentation prevents the marketplace from scaling at all.</p>
<p>I’m calling this the <strong>Supply Control Threshold</strong>: the point where a marketplace’s growth is bottlenecked not by demand, not by discovery, but by the unreliability of what it’s connecting you to.</p>
<p>Below that threshold, you’re a platform. Above it, you need to own the rails.</p>
<p>A marketplace hits the Supply Control Threshold when user retention drops faster than new user acquisition can compensate, and the drop is caused by supply-side inconsistency, not product-market fit.</p>
<p>At that point, three things happen.</p>
<p><strong>Dual accountability systems stop working.</strong> Airbnb’s model (hosts and guests rate each other) works because the median host quality is high enough that bad experiences are outliers. In budget hospitality, the median is terrible. Rating systems don’t fix structural supply problems. They just document them.</p>
<p><strong>Unit economics invert.</strong> A 15-20% marketplace commission can’t fund the quality improvement needed to retain users. But if you control the supply, standardize the rooms, train the staff, enforce SOPs, your margin per room goes up even though your capital requirements do too. OYO’s model wasn’t cheaper. It was more profitable per retained customer.</p>
<p><strong>Data becomes an actual moat.</strong> A marketplace collects transaction data. A supply owner collects operational data: which amenities drive repeat bookings, which service gaps cause churn, which staff behaviors correlate with ratings. That’s the “product knowledge base” that lets you optimize. You can’t get it from aggregating independent operators who don’t share your incentive to standardize.</p>
<p>Network effects alone don’t guarantee a sustainable business model. Skype had massive network effects and still couldn’t build a business Microsoft wanted to keep funding. OYO’s bet was that controlling supply would create better unit economics than pure platform power ever could.</p>
</section>
<section id="indias-budget-hotel-problem-was-a-product-problem" class="level2">
<h2 class="anchored" data-anchor-id="indias-budget-hotel-problem-was-a-product-problem">India’s Budget Hotel Problem Was a Product Problem</h2>
<p>Pre-OYO, booking a ₹1,500/night room was a gamble. Photos didn’t match reality. AC didn’t work. Checkout was a negotiation. Aggregating those hotels into a marketplace didn’t solve the problem. It just gave you a prettier interface to a bad experience.</p>
<p>India had roughly 50,000 budget hotels in the sub-₹2,000 segment when OYO launched. Almost none of them had standardized amenities, consistent check-in processes, or reliable room quality. The fragmentation wasn’t a distribution problem. It was a product problem. MakeMyTrip and Goibibo listed these hotels, but listing a bad product doesn’t make it good. Travelers who got burned once didn’t come back. They went back to asking friends for recommendations or staying at known chains at 3x the price.</p>
<p>OYO’s move: lease the rooms, rebrand them, enforce standards, own the customer relationship. Revenue share with hotel owners, but control of operations. That let them deliver consistency. Consistency drove retention. Retention justified customer acquisition cost.</p>
</section>
<section id="the-data-feedback-loop-and-the-commission-trap" class="level2">
<h2 class="anchored" data-anchor-id="the-data-feedback-loop-and-the-commission-trap">The Data Feedback Loop and the Commission Trap</h2>
<p>When you’re a marketplace, you know what users book. When you own supply, you know <em>why</em> they rebook or don’t. OYO could see that free breakfast didn’t move the needle but working WiFi did. They could test pricing strategies across properties without negotiating with franchisees. They could deploy capital to the highest-ROI improvements because they had ground truth, not survey data.</p>
<p>This is the same advantage that Zara has over department stores, or that Amazon Basics has over third-party sellers. When you control the supply, you control the feedback loop. When you control the feedback loop, you compound learning faster than anyone else in the market.</p>
<p>A pure marketplace in budget hospitality would need to take 25-30% to fund quality audits, customer service, and fraud prevention. But hotel owners operating on thin margins can’t give up that much. So you either take a smaller cut and can’t invest in quality, or you take a larger cut and lose supply. OYO sidestepped this by becoming the operator.</p>
<p>Consider the numbers. A budget hotel owner in a tier-2 city makes ₹800-1,200 per room per night at 40-50% occupancy. After staff, utilities, and maintenance, the margin is 15-20%. A marketplace taking 20% of revenue leaves the owner with almost nothing. A managed model where OYO guarantees higher occupancy (70-80%) and charges a management fee changes the math entirely. The owner makes more money. OYO makes more money. The customer gets a reliable room. The economics work because ownership aligned the incentives.</p>
<p><strong>Contrast with Airbnb:</strong> Airbnb works as a marketplace because hosts are individuals with reputational skin in the game and properties that reflect personal taste. Variance is a feature, not a bug. Budget hotels are commercial operations with misaligned incentives. Variance is a retention killer.</p>
</section>
<section id="what-i-got-wrong" class="level2">
<h2 class="anchored" data-anchor-id="what-i-got-wrong">What I Got Wrong</h2>
<p>I initially thought OYO’s model was just capital inefficiency dressed up as innovation. I assumed marketplace dynamics would eventually force quality improvements through competition. That was wrong.</p>
<p>The budget hotel market in India wasn’t competitive on quality. It was competitive on price, which drove a race to the bottom. No individual hotel had the capital or incentive to standardize. The <a href="../../frameworks/biggest-challenge-indian-startups/">market failure was real</a>, and a pure platform couldn’t fix it.</p>
<p>What I still don’t know: where exactly the Supply Control Threshold sits for other verticals. Food delivery? Probably below it, because Swiggy and Zomato work as marketplaces (though cloud kitchens are an interesting test case). Ride-hailing? Uber’s experimenting with owned fleets in some markets, which suggests they’re testing whether they’ve crossed it. Healthcare? Probably above it, which is why most telehealth companies are moving toward owned clinical networks.</p>
<p>The pattern I’d watch: if a marketplace’s customer complaints are about the product itself rather than the transaction, that’s the signal. Swiggy users complain about delivery times (transaction). OYO users complained about room quality (product). That distinction tells you whether you need better logistics or whether you need to own the supply.</p>
</section>
<section id="the-retention-curve-tells-you-everything" class="level2">
<h2 class="anchored" data-anchor-id="the-retention-curve-tells-you-everything">The Retention Curve Tells You Everything</h2>
<p>If you’re building a marketplace and user retention is your problem, ask this: Is the variance in supply quality something users tolerate, or is it why they’re leaving?</p>
<p>If it’s the latter, you’ve crossed the Supply Control Threshold. At that point, “stay asset-light” is advice that keeps you stuck. Owning supply isn’t a pivot away from your model. It’s the only way to make the model work.</p>
<p>The question isn’t whether vertical integration is elegant. It’s whether your unit economics improve when you control what you’re selling. If they do, the capital intensity is a feature, not a bug. It’s what keeps competitors from copying you.</p>
<p>OYO didn’t abandon the marketplace playbook because they failed at it. They abandoned it because the economics of the problem required a different solution. The doctrine that platforms should never own supply is just that, doctrine. The actual question is: what does the retention curve tell you?</p>


<!-- -->

</section>

 ]]></description>
  <category>India Tech</category>
  <category>Marketplace Strategy</category>
  <category>Vertical Integration</category>
  <guid>https://talvinder.com/build-logs/oyo-marketplace-to-owned/</guid>
  <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Point-of-Need Learning: Why Application Beats Credentials</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/build-logs/upskilling-before-covid/</link>
  <description><![CDATA[ 





<p>We started building Pragmatic Leaders in 2018 because traditional education was selling credentials, not competence. You could finish a Udemy course on React and still not be able to build a working app for the deli downstairs. The gap was not knowledge. It was application.</p>
<p>COVID did not create the problem. It just made everyone else notice.</p>
<section id="the-bet-we-made-early" class="level2">
<h2 class="anchored" data-anchor-id="the-bet-we-made-early">The Bet We Made Early</h2>
<p>I call this <strong>Point-of-Need Learning</strong>: the shift from abstract, front-loaded education to skills delivered exactly when you need to use them. Not “learn React,” but “learn React while building this specific feature for this specific user problem.”</p>
<p>The traditional model assumes you learn first, then apply later. That is backwards. Application comes first. Learning happens in service of getting something real done.</p>
<p>Pre-COVID, this was a contrarian bet. Post-COVID, it is the only model that works at scale.</p>
<p>The specific bet: <strong>by 2025, the majority of corporate training budgets will shift from certification-based programs to embedded, outcome-verified skill development.</strong> Not courses completed. Not certificates issued. Measurable ability to execute specific tasks.</p>
<p>We saw this coming because we were watching the wrong metric. Everyone tracked course completion rates. We tracked the gap between “certified” and “capable.”</p>
</section>
<section id="the-indian-education-arithmetic" class="level2">
<h2 class="anchored" data-anchor-id="the-indian-education-arithmetic">The Indian Education Arithmetic</h2>
<p>In India, the salary difference between Tier 1 college graduates and everyone else was 300%+. That gap was not about intelligence. It was about practical application. Tier 1 students got hands-on projects, mentorship, and real feedback loops. Everyone else got pre-recorded lectures and multiple-choice tests.</p>
<p>The numbers told a brutal story. Average graduates from non-Tier-1 colleges made 3-6 lakhs annually. Courses worth 1-2 lakhs were out of reach. There was no ramp between free YouTube tutorials and expensive postgraduate programs. The people who needed upskilling most could afford it least, and the affordable options were the worst at delivering actual competence.</p>
<p>The edtech boom of 2015-2020 scaled the wrong thing. It scaled content delivery. More videos. More courses. More certificates. But content was never the constraint. Application was. Poor completion rates, poor success rates, poor certificate value. The entire industry optimized for enrollment numbers and certificate issuance, not for whether graduates could actually do the job.</p>
<p>McKinsey projected 375 million workers globally would need to completely change their skill sets by 2030. In India alone, 400 million needed reskilling, with 100 million in managerial and professional domains. The gap between the problem and the existing solutions was not a crack. It was a canyon.</p>
</section>
<section id="three-technical-bets-that-created-the-moat" class="level2">
<h2 class="anchored" data-anchor-id="three-technical-bets-that-created-the-moat">Three Technical Bets That Created the Moat</h2>
<p>We started with 21 paying students across 3 countries. Bootstrapped. The validation was not “do people want to learn?” It was “will people pay to learn skills they can immediately use?”</p>
<p>The answer was yes, but only if we changed the architecture.</p>
<p>The traditional edtech model sells course access, measures completion rates, issues a certificate, and hopes graduates apply it somewhere. Our model identified skill gaps in real work context, delivered learning at the moment of need, verified application rather than recall, and credentialed based on demonstrated competence.</p>
<p>We built three things that did not exist in most platforms.</p>
<p><strong>Automated skill gap identification.</strong> Not “what course do you want?” but “what can you not do right now that is blocking you?” We mapped learning paths to actual job requirements, not arbitrary curriculum structures. Each course was divided into learning objectives, competencies, and complexity levels across sub-domains. The platform created individualized learning routes for each student based on their past competency and their target destination.</p>
<p><strong>Recognition of Prior Learning.</strong> We borrowed from traditional university models but applied them to working professionals. Past experience and knowledge were quantified, requisite credits awarded, and skill gaps identified automatically. This meant a developer with five years of backend experience did not sit through the same curriculum as a fresh graduate. Their learning path started where their competence ended.</p>
<p><strong>Tokenized credit and applied gamification.</strong> Not badges for watching videos. Credits for solving real problems, helping peers, shipping working code. Complete a module, earn credits. Contribute to community, earn credits. Mentor someone, earn credits. The currency was not time spent but value created. Every positive interaction fed the learning algorithm.</p>
<p>The pedagogy was case-based, modeled on how business, medicine, and law have trained professionals for decades. Harvard’s case method, digitized and made accessible. Students did not watch someone talk for 20 hours. They solved cases, applied theory to practical scenarios, built demonstrable projects. We paired students with in-house development teams to build and ship real products.</p>
</section>
<section id="the-platform-decision-that-cost-us-three-months" class="level2">
<h2 class="anchored" data-anchor-id="the-platform-decision-that-cost-us-three-months">The Platform Decision That Cost Us Three Months</h2>
<p>The hardest technical decision: moving from a customized LMS to building proprietary platform infrastructure. We lost 3 months of velocity. But a customized LMS could not use the data we were collecting. Patterns of where people got stuck. Which learning paths actually led to competence. Which credentials correlated with job performance.</p>
<p>We had a working LMS, a Stack Overflow-inspired forum, and a job board. That was enough to validate the pedagogy. But it was not enough to scale individualized learning to millions of learners across domains. The data from those first 35 students across 5 countries (paying an average of $1,200 per person) proved the model worked. 70% came from Ivy League-equivalent colleges. Graduates from Product School and UpGrad joined because of our pedagogy, not our brand.</p>
<p>That data became the moat. Not the content. Not the platform features. The data about how people actually learn and where they actually fail.</p>
</section>
<section id="who-actually-pays-for-competence" class="level2">
<h2 class="anchored" data-anchor-id="who-actually-pays-for-competence">Who Actually Pays for Competence</h2>
<p>By early 2020, we had validation across three verticals: corporate training, university partnerships, and individual upskilling. Corporate training drove the most revenue. Companies paid for verified competence in ways individuals would not.</p>
<p>We initially assumed individuals would be the primary buyers. They were not. Corporations were. Individuals optimize for credentials because that is what the hiring market rewards. They need the certificate they can show on LinkedIn. Corporations optimize for outcomes because they see the gap between the certificate and the work that gets done.</p>
<p>This distinction shaped everything. Our live classes converted at 20% to bootcamp courses. 500 registered, 150 attended with 88% retention, 60% paid for extended access. The numbers validated that the case-based approach held attention in ways pre-recorded content never could.</p>
<p>The 80% success rate for job outcomes happened irrespective of pedigree. Students who would never have been considered for product management roles at top companies got in, and 100% attributed it to the case-based learning and the network they built while doing it.</p>
</section>
<section id="then-covid-hit" class="level2">
<h2 class="anchored" data-anchor-id="then-covid-hit">Then COVID Hit</h2>
<p>Suddenly, everyone needed what we had been building. Remote work made skills gaps impossible to hide. Managers could not rely on proximity as a proxy for productivity. “Can this person actually do the job?” became the only question that mattered.</p>
<p>The market went from “interesting idea” to “urgent need” in 8 weeks.</p>
</section>
<section id="what-i-got-wrong" class="level2">
<h2 class="anchored" data-anchor-id="what-i-got-wrong">What I Got Wrong</h2>
<p>We underestimated how much infrastructure we needed to verify competence at scale. It is easy to check if someone watched a video. It is hard to verify if they can apply what they learned in a novel context. We built rule-based scoring (this was 2018, before LLMs). The scoring was brittle. We spent 6 months refining it.</p>
<p>The biggest miss: we did not move fast enough on international expansion. We had validation in India, the US, and Southeast Asia by 2019. We should have scaled globally before COVID. By the time we were ready, the market was crowded.</p>
</section>
<section id="the-competence-measurement-problem" class="level2">
<h2 class="anchored" data-anchor-id="the-competence-measurement-problem">The Competence Measurement Problem</h2>
<p>Pragmatic Leaders now trains 10,000+ professionals annually. The model works. But the model only works if you measure the right thing: not what people know, but what they can do.</p>
<p>The question I am still working through: how do you scale verified competence without turning it into another credential game? The moment you standardize assessment, people optimize for the assessment instead of the skill. The moment you issue a certificate, employers use it as a filter rather than a signal. The system that was built to prove competence becomes another gatekeeping mechanism.</p>
<p>We are not there yet. But the direction is clear. The companies that win in education are not the ones with the most content. They are the ones with the tightest feedback loop between learning and application.</p>


<!-- -->

</section>

 ]]></description>
  <category>Edtech</category>
  <category>India Tech</category>
  <category>Build Logs</category>
  <guid>https://talvinder.com/build-logs/upskilling-before-covid/</guid>
  <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>The IRL Growth Bet: Why I Started an Offline-First Music Community in the Age of Algorithms</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/field-notes/irl-growth-side-b/</link>
  <description><![CDATA[ 





<p>I’m building a music community that starts offline. Not “offline-friendly.” Not “hybrid with offline touchpoints.” Offline-first, with digital as documentation.</p>
<p>This is the opposite of what you’re supposed to do in 2025. Every growth playbook says: build digital, scale algorithmically, add IRL later if you hit product-market fit. I’m doing the reverse. Physical space first. Events first. Venue ownership as the moat.</p>
<p>The reason is simple: digital music communities have a 90%+ churn problem that no one talks about. They get traffic. They don’t get retention. I’ve watched this pattern play out across TastemakerX, Splice community features, even parts of Bandcamp’s social layer. People come, people scroll, people leave.</p>
<p>The offline bet is that context beats content. A 200-person room with the right sound system and the right curation creates more lasting connection than 200,000 algorithm-fed playlist adds.</p>
<section id="the-context-density-problem" class="level2">
<h2 class="anchored" data-anchor-id="the-context-density-problem">The Context Density Problem</h2>
<p>Digital platforms optimize for content distribution. More reach, more impressions, more shares. But music discovery — real discovery, the kind that changes what you listen to for years — doesn’t scale through distribution. It scales through density of context.</p>
<p>Context density is the ratio of environmental signal to content signal. High context density: you’re in a room, the artist is 10 feet away, the sound system is tuned for that genre, everyone around you is there for the same reason, the lighting matches the mood. Low context density: you’re scrolling Instagram, the audio is compressed, you’re half-watching, the algorithm served it between a reel about productivity hacks and an ad for protein powder.</p>
<p>Digital platforms have infinite distribution and near-zero context density. Offline spaces have limited distribution and near-infinite context density.</p>
<p>The entire music industry has been optimizing the wrong variable.</p>
</section>
<section id="the-math-behind-the-bet" class="level2">
<h2 class="anchored" data-anchor-id="the-math-behind-the-bet">The math behind the bet</h2>
<p>Put a number on it: <strong>an offline-first music community with 500 deeply engaged members will have higher 12-month retention and higher lifetime value than a digital-first music community with 50,000 casual users.</strong></p>
<p>The mechanism is economic, not emotional.</p>
<p>Digital music communities fail because they confuse traffic with commitment. You can build a Discord with 10,000 members. You can rack up playlist followers. But if the user’s relationship is with the algorithm, not the community, they churn the moment the algorithm changes or a competitor offers a better feed.</p>
<p>I’ve seen this at Pragmatic Leaders. We train 10,000+ people a year. The ones who show up to in-person workshops have 4x the completion rate and 6x the referral rate of the ones who take the same content online. It’s not the content. It’s the context.</p>
<p>Offline creates three things digital can’t replicate:</p>
<p><strong>Sunk cost through physical presence.</strong> You drove across town. You paid for parking. You cleared your calendar. That investment makes you more likely to stay, engage, and return. Digital has no sunk cost. Leaving a Zoom call or closing a tab costs nothing.</p>
<p><strong>Unplanned discovery through spatial adjacency.</strong> In a venue, you hear the opener while getting a drink. You overhear a conversation about a band. You see someone’s T-shirt and ask about it. Digital platforms serve you what the algorithm thinks you want. Physical spaces serve you what’s spatially adjacent. Adjacency creates serendipity. Algorithms create filter bubbles.</p>
<p><strong>Social proof through observable behavior.</strong> In a room, you see 200 people nodding to the same beat. That’s immediate, visceral validation that this music matters to people like you. Online, social proof is a number. Numbers are easy to fake and hard to feel.</p>
</section>
<section id="the-business-model" class="level2">
<h2 class="anchored" data-anchor-id="the-business-model">The business model</h2>
<p>The business model follows from the physics of context density:</p>
<p><strong>Venue ownership or long-term lease</strong> — not renting by the night. The Malaysia offline education model is the template: physical infrastructure as a strategic asset, not a cost center. Own the space, control the experience, capture the upside.</p>
<p><strong>Dual revenue: tickets + bar/merch</strong> — the McDonald’s real estate model applied to music. You make money on the event. You make money on the ancillary spend. Digital platforms have one revenue stream (ads or subscriptions). Physical spaces have two.</p>
<p><strong>Curation as the moat</strong> — not recommendation algorithms. Hand-picked lineups. Genre-specific nights. Invites, not open signups. The TastemakerX model (hand-picked contributors, exclusive access) was right about curation. It was wrong about doing it digitally.</p>
<p>The failure mode of digital music communities is feature launch fallacy. You build a new discovery tool, a new social layer, a new playlist format. You get a flood of initial users. Then nothing. Because the users came for the feature, not the community.</p>
<p>Offline doesn’t have this problem. People don’t come to a venue for a feature. They come for an experience. Experiences are harder to replicate, harder to commoditize, and harder to churn from.</p>
</section>
<section id="evidence-from-adjacent-models" class="level2">
<h2 class="anchored" data-anchor-id="evidence-from-adjacent-models">Evidence from adjacent models</h2>
<p><strong>Kommune</strong> built one of India’s largest creator communities by focusing on “context, culture, and connections” — not just content distribution. Their events are immersive, narrative-rich, and built around specific cultural moments. That’s high context density. Their digital presence documents the offline experience; it doesn’t replace it.</p>
<p><strong>The craftspeople marketplace pattern</strong>: start with exactly one group, go deep, then expand. For a music community, that means one genre, one city, one venue. Not “music lovers everywhere.”</p>
<p><strong>The Gmail vs.&nbsp;Google Wave lesson</strong>: exclusivity works when the product is good. Gmail’s invite-only model created demand because the product was 100x better than Hotmail. Google Wave’s exclusivity failed because the product was confusing. The offline bet only works if the experience is genuinely better than staying home and streaming.</p>
<p>At Zopdev, I’ve watched companies optimize infrastructure for scale before they have retention. They build for 100,000 users when they have 1,000. The music version of this is building a streaming platform before you have a single venue that people return to every week.</p>
</section>
<section id="what-ive-gotten-wrong-so-far" class="level2">
<h2 class="anchored" data-anchor-id="what-ive-gotten-wrong-so-far">What I’ve gotten wrong so far</h2>
<p>I initially thought the digital layer would be the primary discovery surface, with offline as a “premium tier” for superfans. That was backwards. The offline experience has to be the core product. Digital is the documentation layer — the way people remember, share, and recruit others into the offline experience.</p>
<p>I also underestimated the operational complexity. Running a venue is harder than running a SaaS product. Sound engineers, alcohol licenses, neighbors who complain about noise, artists who cancel last-minute. The unit economics are harder to model because every night is different.</p>
<p>The question I’m still working through: how do you scale context density? You can’t franchise a vibe. You can’t template curation. The moment you try to systematize the magic, it stops being magic.</p>
<p>Maybe the answer is you don’t scale it. Maybe the answer is you build 10 venues in 10 cities, each with its own identity, and you accept that this will never be a billion-dollar exit. Maybe the offline bet is also a bet against venture-scale returns.</p>
<p>I don’t know yet. But I know the digital-first playbook is broken for music. And I’d rather build something that 500 people love than something that 500,000 people scroll past.</p>
<p>If context density is the real driver of retention, what other industries are optimizing for distribution when they should be optimizing for density?</p>


</section>

 ]]></description>
  <category>Community Building</category>
  <category>Growth</category>
  <category>Founder Lessons</category>
  <guid>https://talvinder.com/field-notes/irl-growth-side-b/</guid>
  <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Framework Lag: Why the Winners of 2010-2015 Could Explain Network Effects Before VCs Had Words For It</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/field-notes/network-effects-before-nfx/</link>
  <description><![CDATA[ 





<p>In 2011, I was trying to explain why Airbnb and Uber were fundamentally different from every other marketplace, and I didn’t have the words for it. Neither did anyone else.</p>
<p>The pattern was clear. These companies were replacing institutional trust with peer-to-peer trust. They were creating long tails in markets that shouldn’t have had long tails. They were democratizing supply in industries built on scarcity.</p>
<p>But when you pitched this to investors, they’d nod politely and ask about unit economics.</p>
<section id="framework-lag-costs-you-capital" class="level2">
<h2 class="anchored" data-anchor-id="framework-lag-costs-you-capital">Framework Lag costs you capital</h2>
<p>I’m calling this <strong>Framework Lag</strong>: the gap between when a pattern becomes visible and when the industry develops shared language to describe it.</p>
<p>Framework Lag is expensive. It means you can see something working, you can even articulate why it’s working, but you can’t raise capital for it because the thesis doesn’t fit existing mental models. You end up in meetings where a GP says “I don’t see what’s defensible here” because the word “defensible” at that point meant patents, brand, or regulatory capture. Not demand-side scale economies. Not trust graphs. Those concepts weren’t available yet.</p>
<p>By 2016, “network effects” was standard VC vocabulary. NFX had published their taxonomy. a16z had their playbook. Every deck had a slide on “defensibility through network effects.”</p>
<p>But in 2011-2013, you were on your own.</p>
</section>
<section id="winners-taught-vcs-the-framework-while-raising" class="level2">
<h2 class="anchored" data-anchor-id="winners-taught-vcs-the-framework-while-raising">Winners taught VCs the framework while raising</h2>
<p><strong>The companies that won in the 2010-2015 cohort weren’t the ones with the strongest network effects. They were the ones whose founders could articulate network effects before VCs had a framework for it.</strong></p>
<p>Airbnb raised at a $2.5B valuation in 2011. Uber raised at $330M in 2011, $3.5B by 2013. These weren’t post-framework raises. These were raises where founders had to teach investors the mental model in the room.</p>
<p>Travis Kalanick didn’t say “we have strong cross-side network effects.” He said something closer to: every driver we add makes wait times shorter, which makes more riders sign up, which attracts more drivers. He had to walk investors through the loop because the loop didn’t have a name yet.</p>
<p>The companies that waited until the framework was established, until “marketplace dynamics” and “two-sided networks” were standard pitch language, were already late. By then the pattern was priced in.</p>
<p>I spent four years developing what I called a “Social Capital investment thesis.” The core mechanisms I identified:</p>
<ul>
<li>Democratizing the tools of production and distribution</li>
<li>Connecting supply and demand through peer-to-peer networks</li>
<li>Filtering efficiency of social network reviews</li>
<li>Dual accountability systems (both sides rate each other)</li>
</ul>
<p>This wasn’t network effects theory yet. It was an attempt to explain why Airbnb worked when Couchsurfing didn’t. Why Uber scaled when taxi apps didn’t.</p>
<p>The breakthrough came during a physical journey: staying in Airbnbs, taking Ubers, experiencing the products as a user. I’d been developing the thesis intellectually for years, but it was using the product in New York that made the mechanisms click. You can’t theorize trust infrastructure. You have to feel the moment when you hand your apartment keys to a stranger because 47 five-star reviews told you it was safe.</p>
</section>
<section id="network-effects-are-necessary-but-not-sufficient" class="level2">
<h2 class="anchored" data-anchor-id="network-effects-are-necessary-but-not-sufficient">Network effects are necessary but not sufficient</h2>
<p>Here’s what I got wrong: I thought network effects alone were sufficient. They’re not.</p>
<p>Microsoft bought Skype for $8.5B in 2011. Skype had massive network effects with 663 million registered users. It was also unprofitable and buried in debt. Network effects didn’t guarantee a sustainable business model.</p>
<p>Groupon hit a $16B valuation at IPO in November 2011. It had what looked like network effects: more merchants attracted more buyers, more buyers attracted more merchants. Within 18 months the stock had lost 80% of its value. The “network effects” were actually a subsidy treadmill. Merchants weren’t retained by network density. They were retained by discount margins that Groupon couldn’t sustain.</p>
<p>What separated Airbnb and Uber from Skype and Groupon wasn’t just network effects. It was the trust infrastructure they built on top of those effects. Reviews, ratings, verified identities, insurance programs, dispute resolution. The network effect got people onto the platform. The trust infrastructure kept them there and made the transactions possible.</p>
<p>This distinction matters because most Framework Lag discussions focus on recognizing patterns. The harder question is recognizing which patterns have the additional infrastructure to become durable.</p>
</section>
<section id="the-language-i-was-using-looks-primitive-now" class="level2">
<h2 class="anchored" data-anchor-id="the-language-i-was-using-looks-primitive-now">The language I was using looks primitive now</h2>
<p>The vocabulary I was using in 2013-2014 reads like a rough draft of what became standard:</p>
<p>“Airbnb and Uber create long tails in travel by replacing artificial institutional trust with peer-to-peer trust mechanisms.”</p>
<p>That’s not how you’d pitch it today. Today you’d say: “Two-sided marketplace with strong same-side and cross-side network effects, defensible through supply density and trust infrastructure.”</p>
<p>But in 2013, that language didn’t exist yet.</p>
<p>I can track the Framework Lag by looking at when specific terms entered standard VC vocabulary:</p>
<ul>
<li>“Marketplace dynamics” as a pitch category: ~2014</li>
<li>“Cold start problem” as a named challenge: ~2015</li>
<li>“Network effects” as defensibility moat: ~2016</li>
<li>NFX’s network effects map (13 types): 2018</li>
</ul>
<p>Before that, you were working from first principles every time.</p>
</section>
<section id="the-companies-i-was-watching" class="level2">
<h2 class="anchored" data-anchor-id="the-companies-i-was-watching">The companies I was watching</h2>
<p><strong>Airbnb</strong> listed 10,000 properties in 2009. 50,000 by mid-2011. The growth curve was obvious. The explanation wasn’t. Investors kept comparing it to VRBO and HomeAway, missing the peer-to-peer trust mechanism entirely. VRBO was a listing service. Airbnb was building a trust graph. That distinction is obvious now. In 2011, it was invisible to most investors because “trust graph” wasn’t a phrase anyone used.</p>
<p><strong>Uber</strong> launched in SF in 2010. By 2013, they were in 35 cities. The pattern was clear: once you hit density in one market, the playbook was repeatable. But VCs kept asking about taxi medallion regulations, not about supply-side liquidity. They were evaluating Uber against the taxi industry’s rules instead of recognizing that Uber was making those rules irrelevant.</p>
<p>The thesis I was developing focused on what I called “Social Capital,” the value created when you replace institutional intermediaries with peer networks. That framing was clunky. It mixed trust mechanisms with network effects with platform dynamics. But it was the best available framework at the time, and it let me see things that the standard VC frameworks of 2011 couldn’t explain.</p>
</section>
<section id="framework-lag-still-exists" class="level2">
<h2 class="anchored" data-anchor-id="framework-lag-still-exists">Framework Lag still exists</h2>
<p>Right now, in 2026, there are patterns that are visible but not yet named.</p>
<p><a href="../../frameworks/agentware/">AI agents coordinating with other AI agents</a> to complete tasks. Inference-time compute as a moat. Synthetic data loops that improve model performance faster than human-labeled data. Multi-agent systems where the coordination layer, not any individual model, is the <a href="../../frameworks/ai-runtime-infrastructure-play/">source of competitive advantage</a>.</p>
<p>These patterns are real. The companies building on them are <a href="../../frameworks/ai-evolution/">raising capital</a>. But the frameworks are still being developed in real-time.</p>
<p>If you’re building in a space where the framework doesn’t exist yet, you have two options:</p>
<ol type="1">
<li><p>Wait until the framework is established and the pattern is obvious. You’ll have better pitch materials. You’ll also be late.</p></li>
<li><p>Build the framework yourself. Articulate the pattern. Name the mechanisms. Teach investors the mental model.</p></li>
</ol>
<p>The second path is harder. It’s also where the asymmetric returns are.</p>
<p>The question I’m still working through: how do you know when you’re early to a real pattern versus early to a pattern that doesn’t matter?</p>
<p>In 2011, “peer-to-peer trust infrastructure” was early to a real pattern. “Social shopping” was early to a pattern that mostly didn’t matter. Groupon’s “local marketplace network effects” looked real until the trust layer turned out to be hollow.</p>
<p>One heuristic I’ve developed: real patterns create durable behavior change that persists even when the subsidy disappears. Airbnb users kept booking after the novelty wore off. Groupon users stopped buying when the deals got worse. The trust infrastructure test isn’t whether people use the product. It’s whether they trust it enough to keep using it when the economics normalize.</p>
<p>I don’t have a clean formula for spotting real patterns early. But I know the penalty for waiting until the framework exists: you arrive right on time and call it innovation.</p>


</section>

 ]]></description>
  <category>Startups</category>
  <category>Network Effects</category>
  <category>Venture Capital</category>
  <guid>https://talvinder.com/field-notes/network-effects-before-nfx/</guid>
  <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Device-Level Blocking Won’t Stop Digital Arrest Scams — The UI Is the Real Vulnerability</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/field-notes/digital-arrest-device-blocking-ui-problem/</link>
  <description><![CDATA[ 





<p>Last week, India’s Home Ministry issued a directive to WhatsApp: block the device IDs of accounts involved in digital arrest scams so perpetrators can’t open new accounts on the same hardware.</p>
<p>WhatsApp agreed. They have 30 days to submit a proposal.</p>
<p>It won’t work.</p>
<p>The reason it won’t work explains why digital arrest scams will keep growing regardless of how many technical controls we layer on top.</p>
<section id="device-ids-are-the-wrong-target" class="level2">
<h2 class="anchored" data-anchor-id="device-ids-are-the-wrong-target">Device IDs Are the Wrong Target</h2>
<p>A digital arrest scammer running their operation in India has access to hundreds of millions of cheap Android handsets. A factory reset costs nothing. A new SIM card costs under a hundred rupees. New device ID, new phone number, new WhatsApp account — in under an hour.</p>
<p>Device ID blocking is designed for a threat model where scammers are sophisticated actors with expensive hardware. Digital arrest scams run on volume. The operators behind them are not protecting expensive infrastructure. They burn devices and phone numbers the way spammers burn email addresses.</p>
<p>Blocking device IDs will inconvenience scammers for exactly as long as it takes them to buy a new phone. That’s not a security solution. That’s a speed bump.</p>
<p>The same directive also asked WhatsApp to expand logo detection — comparing profile photos against known law enforcement insignia and removing impersonators. That’s closer to the right solution. But device ID blocking is the headline, and it’s a distraction.</p>
</section>
<section id="the-verification-inversion" class="level2">
<h2 class="anchored" data-anchor-id="the-verification-inversion">The Verification Inversion</h2>
<p>Digital arrest scams succeed not because WhatsApp security is weak, but because the UI creates an environment where users willingly bypass every security control they have.</p>
<p>Here’s what actually happens. The victim receives a video call from someone in a police or CBI uniform. The caller’s profile photo shows an official badge. The video call shows an official-looking backdrop with case numbers, warrant references, and government seals. The caller creates artificial urgency: “Your Aadhaar is linked to a money laundering case. You are under digital arrest. Do not end this call or a physical warrant will be issued.”</p>
<p>The victim is terrified. They’re not thinking about security. They’re thinking about arrest.</p>
<p>The scammer then walks them through every action step by step — opening the banking app, transferring money to a “safe account,” sharing OTPs to “verify identity.” Every step is narrated as protective. Every security control the bank built becomes something the victim actively completes.</p>
<p>I’m calling this the <strong>Verification Inversion</strong> — when the interface layer flips the purpose of security controls from protecting the user to executing the attack. The OTP isn’t protecting you. The interface told you it is, so you hand it over.</p>
<p>The attack surface is not the device. It’s the visual trust layer on the screen.</p>
</section>
<section id="logo-detection-is-actually-the-right-instinct" class="level2">
<h2 class="anchored" data-anchor-id="logo-detection-is-actually-the-right-instinct">Logo Detection Is Actually the Right Instinct</h2>
<p>Buried in the same directive: WhatsApp has already deployed a logo detection and media matching system. It compares profile photos against law enforcement agency logos — CBI, ATS, state police forces — and removes accounts misusing official insignia.</p>
<p>That’s the correct direction. The scam works because the visual presentation looks authoritative. Break the authority signal and you break the scam’s opening move.</p>
<p>The problem is logo detection only catches the obvious impersonators. Scammers are already adapting — using AI-generated variations of official logos that match closely enough to fool users but differ enough to bypass pixel-level matching. The arms race between logo variations and detection systems is real, and the scammers are running faster than the platform.</p>
<p>Caller information display — showing users context about who’s calling them — is another step in the right direction. If every incoming video call from an unverified account shows a prominent “unverified caller” flag that persists through the call, it creates friction at exactly the right moment.</p>
</section>
<section id="what-would-actually-work" class="level2">
<h2 class="anchored" data-anchor-id="what-would-actually-work">What Would Actually Work</h2>
<p>The solutions that would reduce digital arrest scams all share one characteristic: they create friction in the interface at the moment of manipulation.</p>
<p><img src="https://talvinder.com/field-notes/digital-arrest-device-blocking-ui-problem/data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGRhdGEtZDItdmVyc2lvbj0idjAuNy4xIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0IiB2aWV3Qm94PSIwIDAgMzM4IDM5OSI+PHN2ZyBjbGFzcz0iZDItMTg3NzQ3NzUyMSBkMi1zdmciIHdpZHRoPSIzMzgiIGhlaWdodD0iMzk5IiB2aWV3Qm94PSItOSAtOSAzMzggMzk5Ij48cmVjdCB4PSItOS4wMDAwMDAiIHk9Ii05LjAwMDAwMCIgd2lkdGg9IjMzOC4wMDAwMDAiIGhlaWdodD0iMzk5LjAwMDAwMCIgcng9IjAuMDAwMDAwIiBmaWxsPSJ0cmFuc3BhcmVudCIgY2xhc3M9IiBmaWxsLU43IiBzdHJva2Utd2lkdGg9IjAiIC8+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKLmQyLTE4Nzc0Nzc1MjEgLnRleHQtYm9sZCB7Cglmb250LWZhbWlseTogImQyLTE4Nzc0Nzc1MjEtZm9udC1ib2xkIjsKfQpAZm9udC1mYWNlIHsKCWZvbnQtZmFtaWx5OiBkMi0xODc3NDc3NTIxLWZvbnQtYm9sZDsKCXNyYzogdXJsKCJkYXRhOmFwcGxpY2F0aW9uL2ZvbnQtd29mZjtiYXNlNjQsZDA5R1JnQUJBQUFBQUExZ0FBb0FBQUFBRkpRQUFndUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJQVXk4eUFBQUE5QUFBQUdBQUFBQmdYeEhYcm1OdFlYQUFBQUZVQUFBQWp3QUFBSzRDOWdOZVoyeDVaZ0FBQWVRQUFBYjdBQUFKVkw2WWtURm9aV0ZrQUFBSTRBQUFBRFlBQUFBMkczOGUxR2hvWldFQUFBa1lBQUFBSkFBQUFDUUtmd1hlYUcxMGVBQUFDVHdBQUFCOEFBQUFmRG5wQlYxc2IyTmhBQUFKdUFBQUFFQUFBQUJBSmVvb1FHMWhlSEFBQUFuNEFBQUFJQUFBQUNBQU53RDNibUZ0WlFBQUNoZ0FBQU1vQUFBSUtnandWa0Z3YjNOMEFBQU5RQUFBQUIwQUFBQWcvOUVBTWdBREFpb0N2QUFGQUFBQ2lnSllBQUFBU3dLS0FsZ0FBQUZlQURJQktRQUFBZ3NIQXdNRUF3SUNCR0FBQXZjQUFBQURBQUFBQUFBQUFBQkJSRUpQQUNBQUlQLy9BdTcvQmdBQUE5Z0JFU0FBQVo4QUFBQUFBZkFDbEFBQUFDQUFBM2ljYk15NWJjSUFHRURoejdIalhFN2lYTTVaWklFc0VkRzRoUWtzS2tTREtKQll4K0pZZ0pLQ1ZaaUFFWDZFYTE3NUZRK0pWSUpDcGtXbGxNcjkrdE5URzJpTVRNek1JK2o4WDYydk1UUTJQWG5zNHhDNzJNWW0xckdLWlN5aTdhN25Tdnk0a01wY3lsMjVkdVBXbmNLOUI0OUtUNTY5ZVBXbTh1N0RweS9mSEFFQUFQLy9BUUFBLy8vdnZoNUNBSGljWEZWYmJDTlhHZjdQOFczanpDWVozOGEzOFczc0dWOWlKL1o0UEVsc3IrUEVpVGVKblpzMzJhVE5aYnRhWUV1eTJTaWJaZE1WVlI5WWdTaFpyYWlEdENCQkVhSUNwSUpVVlVpbEtDQ1FFRVR0MjdiMEJkUWllT3ErUkZWVUllR00wY3c0MldRZjdQTXkrdjd2L3k3bmdBNm1BZkIxdkFjYWFJTk9NSUVWZ0NmOVpJam5PTVlnOHFMSVVCcVJRNlJoR3B1a3QzN09SYlNSaURicWUreTl2N3FLcWl0NDczajl4ZXIxNjErdVpyUFNUMzczdnZRUTNYa2ZRQU5WQUp6RHUwQ0NFd0l5SnAreTJhd1d2Y0dxSEhwR3c2Y3lRcHBsR0pKUEtXZjEwOUw2WUR5Y0dpNXRsVmRITXNsVWVyVDJTaTVmdzd2MGFDRlc2OVJlbkNnT1g0bWc3MFFaMWljdExNUkNBQWdTelNQY2l4K0RDMEFYWUZraG5jbndLUnRsWUZrbW9OZGJMVFkrbFJFcFBWcWVmYjAyOTNDMmNNTS82UkNaN3JIWS9PVnd3VDQ1UzFSK2NHdjloek44WUlXaVV5dEROemFEanFWcmdCWCtGYndMUmxXUkZuczl3L0dwak14Ykp2emVqVGRtcGg5ZGk3djdhb2xFcmMrTmQwdVBOamZmS044TEwwMU9Mb1pBNWxjRmdNL3dMbWdVRkxKYXg3dkgyeTM4R3Q2RkRxRE9xbU5tT01aS25raFRmVHF5VlNvSWUyKzlPbE1aeU9jSEtuZzN0REI1ZVptUy92ZjBLYnFXN08xbDVSbE04d2diOFdPSUtocHdvczJtQW5CY0FwOFh4R3F4VVpTNkNiSU12cGE2d3N5SEUzRStOdWZQc2RtWFMzMmIwUW5mSU1mRys2TlhzcU1ERzBSdjRpc2VOa0I3YVZPd28yZTBKN09RN280dU8xeGV0OGREQnV4WFJqSkxmWUFoMmp4Q0g2RUdPSUFCb0FLeUNhSXl6c0FwdzYwa3d6RjZ2WmpLaUlMaXlSOUswdy9xbUlsNEI0TkN6OXJBNmxkM2pGcHYrWUlqWko3TWVZbXJoY21GVGo5bnQ3NUVCemUycFAvd2JtYUxNbDgxeG1nN3BXZ2FiQjZoZmRRQTUvT2VxeHVxanV1UlkrUjI4ZkkzU29teWU0VHhDWVZDcnoxaEhnak5FL203czdYdHZJZGFwU3ZGd2FxMTg1clBCUUNBZ1dzZW9RYmVCelA0VHZaUWdEbUJQN1BCaVpCZkxOM09ycVlqZlE1OWZjZW9kWTVpTzJjeXh5eE1wb2Y0M2lzemR5KzU3WlZmSFE4bm5jeU94ZkdCcVdPNFBEWUNXT0grTDlRQU8zalBzVmZjOTh2T3lkdzFmRnFlZ3J6bHJhSGg5V3g1dVVlTHBVK01vMGtoazJSWGZ2UXUxeDNJRUplMloyZTJDNFcxa2puVWx1SDlpMDRQR29nSVBhQm9aQWRBMi9oQVBubVNFY1RuY21EbHJRejV3dEJRY0hyWW0rNXlYWFFTTHMvaUlucjFsczRsektjSi9icE81MmM5ZDZSdnlWME9OT1BZZ0JyUUExa1lWNVJoaGJRc2hHeTBjTElDeFZ1WlZra0NuT0tEYkwxRnI5ZW9hVlpFTTdlU0hXQ1ZUNzRZV09rcm0xMCt1ek15c0NKMCszODdaV2hMTDRpMDF4U0lUQys5VlBybU9NMXhOTTF4a2RRZ0YrSWRmc0tWZitMczY4NkZ0UmZEWGxlcVMyc3F4WEpUWVdLdFBXRHBIdzhhTzIxbVUzYVluMG1nZzJpRWk0VERrYWhVRHpxb0xvM0c3bkRUcWpaRjJXeThEeGFsZVZiRFNVaEpoYVdCTE5ZTjdvblV6RmlkOXJuRGRyei85cUlqdHJZc2ZZajhtYkNEa3Q2QlpoTkVBUGduZm9KWmtFRU40SUhYVDdFOWVCOEl0ZSs4eU11ZE5saUxqN1EvL3VsdmZ2L21aZ0h2U3h0LytWRDZ4NS9LOStYdm0wZkloUGVoVTAwY3laT25BZjViSlZzbjIzUUd2WWtJRVM5T1lPYjRFOHFFMEMyZFFaMmpvVkVEL01vY2lsZmRQYmVKNGZRc3l2MGFUUXBGczM4OE9UMVJwMzJoWHZtdkJ4ME9ldU94Y0NCNXNsNnY5RTdyT05FSk5WbzZ0V2FjMVduSHFQVlZUNFZDaHdWUC9KeE9hdDZWN0hRK2QwTXJ5ZURPSkFQWkNyZExwZHVGd2thcHRGR0lKeEx4UkR6ZTZtcCt1elo3TjMrdk9saXN5SldWY1l2Tnk5aUdHbUFHRHdEMWpKMFNQNWFqckVyU21JRDgzc2c4NlRIdWhadTUxWXd2NTlSTnNabjVXTlFTZmcvL011bGt2bnRuYnFmZ2NreDlId1ZISzkrT2YyRHFhUG1JSHFFR21NN3BxN1pIM2R4VllhMXVvLzJpbzh1ZHQ2RERxNm1rVHZlYVZodEpTWjhCQW12ekNMMkpHc0Fwdmo2N2sxbjFUajRGazI5a0Q3WmE5RStTWDJPSEFnV3YzME1ubko1cytPVzUvcXZlSVdmYTJkL1ArdktSbXdUclhYSzRLRE5wTXh1SllIOWtaSjZ6TDFoc25OM1IwYzcwSjRhWDFXeVR6U08wZ2JmbFYwVVhZQVdCRVVTUmw5dCs1bUtFcGFsU2hieC83eDVERXc0alpSYUpyODhmM05JL2VIRG5yOUdRWHJ1bUoxU3NYUE1JL1JjZHl2NmZ5eWJadWc3L1BqTlc5L2pjcksyKzA2N3hqaE5yeXlndGZTcEVuRFM2TEhXTmhMb0J5VDFBVFhRSUZ3RjREVS9aYkxLVW9zaHIzdjNGM3FEUmJOUzJtWTNGaHo5RGg1K0hxaHhYRFgwdWRTbXppZVlsZEl3TzVkUTgwMDhVejBGMDRCMmJ2OU5wTUYwSWhZMkdQKzZWMjAxRzdRV3lMZmZ3YmFwdjZzOTY3U2JTQldrbit2ZkhnZEVRVTJZK2x0b3Z6VVhWM1dKd2dQd29LYi9Mb3NCYlkxOGUzTHpaOGgwK1FvY243M1d4amc2bExrRE5YK04rcU9FbjBBNUFLaStER3JaUUloRUtKUks0UDhvd1Vma0gvd2NBQVAvL0FRQUEvLys2U3VLNUFBQUJBQUFBQWd1RlJzUVBXVjhQUFBVQUFRUG9BQUFBQU5oZG9JUUFBQUFBM1dZdk52NDMvc1FJYlFQeEFBRUFBd0FDQUFBQUFBQUFBQUVBQUFQWS91OEFBQWlZL2pmK053aHRBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQWZBcklBVUFESUFBQUNYUUJOQWtZQUxnSjdBRTBCTFFCTkFtVUFUUUlzQUNNQ0R3QXFBZE1BSkFJOUFDY0NCZ0FrQVZVQUdBSVdBQ0lDT3dCQkFSUUFOd0lrQUVFQkhnQkJBMWtBUVFJOEFFRUNLd0FrQWowQVFRR09BRUVCdXdBVkFYOEFFUUk0QUR3Q0N3QU1BZ2tBREFGTUFDc0JGQUJCQUFEL3JRQUFBQ3dBTEFCZ0FJd0FzQUM4QU9JQklnRmFBWVlCdUFIc0FoSUNlZ0tjQXFnQ3dBTGNBdzRETUFOY0E0d0RyQVBvQkE0RU1BUk1CSHdFaUFTVUJLb0FBUUFBQUI4QWtBQU1BR01BQndBQkFBQUFBQUFBQUFBQUFBQUFBQVFBQTNpY25KVFBiaHRWRk1aL1RtelRDc0VDUlZXNmllNkNSWkhvMkZSSjFUWXJoOVNLUlJRSGp3dENRa2dUei9pUE1wNFplU1lPNFFsWTh4YThSVmM4Qk0rQldLUDVmT3pZQmRFbWlwSjhkKzc1ODUxenZuT0JIZjVtbTByMUlmQkhQVEZjWWE5K2JuaUxCL1VUdzl1MDYxdUdxenlwL1dtNFJsaWJHNjd6ZWExbitDUGVWbjh6L0lEOTZrK0dIN0piYlJ2K21HZlZIY09mYkR2K012d3ArN3hkNEFxODRGZkRGWGJKREcreHc0K0d0M21FeGF4VWVVVFRjSTNQMkROY1p3L29NNkVnWmtMQ0NNZVFDU091bUJHUjR4TXhZOEtRaUJCSGh4WXhoYjRtQkVLTzBYOStEZkFwbUJFbzRwZ0NSNHhQVEVETzJDTCtJcStVYzJVYzZqU3p1eFlGWXdJdTVIRkpRSUlqWlVSS1FzU2w0aFFVWkx5aVFZT2NnZmhtRk9SNDVFeUk4VWlaTWFKQmx6YW45Qmt6SWNmUlZxU1NtVS9La0lKckF1VjNabEYyWmtCRVFtNnNya2dJeGRPSlh5VHZEcWM0dW1TeVhZOTh1aEhoU3h6Znlidmtsc3IyS3p6OXVqVm1tM21YYkFMbTZtZXNyc1M2dWRZRXg3b3Q4N2I0VnJqZ0ZlNWUvZGxrOHY0ZWhmcGZLUElGVjVwL3FFa2xZcExnM0M0dGZDbklkNDl4SE9uY3dWZEh2cWREbnhPNnZLR3ZjNHNlUFZxYzBhZkRhL2wyNmVING1pNW5ITXVqSTd5NGEwc3haL3lBNHhzNnNpbGpSOWFmeGNRaWZpWXpkZWZpT0ZNZFV6TDF2R1R1cWRaSUZkNTl3dVVPcFJ2cXlPVXowQjZWbGs3elM3Um5BU05UUlNhR1UvVnlxWTNjK2hlYUlxYXFwWnp0N1gyNURYUGJ2ZVVXMzVCcWgwdTFMamlWazFzd2V0OVV2WGMwYzYwZmo0Q1FsQXRaREVpWjBxRGdScnpQQ2JnaXhuR3M3cDFvU3dwYUs1OHl6NDFVRWpFVmd3Nko0c3pJOURjdzNmakdmYkNoZTJkdlNTai9rdW5scXFyN1pISHExZTJNM3FoN3l6dmZ1aHl0VGFCaFUwM1gxRFFRMThTMEgybW4xdm43OHMzMXVxVTg1WWlVbVBCZkw4QXpQSnJzYzhBaFkyVVk2R1p1cjBOVEwwU1RseHlxK2tzaVdRMmw1OGdpSE9EeG5BTU9lTW56ZC9xNFpPS01pMXR4V2MvZDRwZ2p1aHgrVUJVTCt5NUh2RjU5Ky8rc3Y0dHBVN1U0bnE1T0wrNDl4U2QzVU9zWDJyUGI5N0tuaVpXVG1GdTAyNjA0STJCYWNuRzc2elc1eDNqL0FBQUEvLzhCQUFELy8vUzNUMUY0bkdKZ1pnQ0QvK2NZakJpd0FBQUFBQUQvL3dFQUFQLy9Md0VDQXdBQUFBPT0iKTsKfQouZDItMTg3NzQ3NzUyMSAudGV4dC1pdGFsaWMgewoJZm9udC1mYW1pbHk6ICJkMi0xODc3NDc3NTIxLWZvbnQtaXRhbGljIjsKfQpAZm9udC1mYWNlIHsKCWZvbnQtZmFtaWx5OiBkMi0xODc3NDc3NTIxLWZvbnQtaXRhbGljOwoJc3JjOiB1cmwoImRhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2Jhc2U2NCxkMDlHUmdBQkFBQUFBQTEwQUFvQUFBQUFGU3dBQVJoUkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlBVeTh5QUFBQTlBQUFBR0FBQUFCZ1cxU1ZlR050WVhBQUFBRlVBQUFBandBQUFLNEM5Z05lWjJ4NVpnQUFBZVFBQUFjT0FBQUo1TUVPS0FOb1pXRmtBQUFJOUFBQUFEWUFBQUEyRzdVcjJtaG9aV0VBQUFrc0FBQUFKQUFBQUNRTGVBakRhRzEwZUFBQUNWQUFBQUI4QUFBQWZEVDFBN0pzYjJOaEFBQUp6QUFBQUVBQUFBQkFKNllxTUcxaGVIQUFBQW9NQUFBQUlBQUFBQ0FBTndEMmJtRnRaUUFBQ2l3QUFBTW1BQUFJTWdudFZ6TndiM04wQUFBTlZBQUFBQ0FBQUFBZy84WUFNZ0FEQWVFQmtBQUZBQUFDaWdKWS8vRUFTd0tLQWxnQVJBRmVBRElCSXdBQUFnc0ZBd01FQXdrQ0JDQUFBSGNBQUFBREFBQUFBQUFBQUFCQlJFSlBBQUVBSVAvL0F1Ny9CZ0FBQTlnQkVTQUFBWk1BQUFBQUFlWUNsQUFBQUNBQUEzaWNiTXk1YmNJQUdFRGh6N0hqWEU3aVhNNVpaSUVzRWRHNGhRa3NLa1NES0pCWXgrSllnSktDVlppQUVYNkVhMTc1RlErSlZJSkNwa1dsbE1yOSt0TlRHMmlNVE16TUkrajhYNjJ2TVRRMlBYbnM0eEM3Mk1ZbTFyR0taU3lpN2E3blN2eTRrTXBjeWwyNWR1UFduY0s5QjQ5S1Q1NjllUFdtOHU3RHB5L2ZIQUVBQVAvL0FRQUEvLy92dmg1Q0FIaWNmRlpiYkJ0WkdmN1BtY2xNTGs0YWUzeXBuZGpqZU1iajIvZzJZOC9FY1d6SGNSTG5ZcWROVW9mUTFHbXp2ZEJsU3dudHduWnBxNFZXV2k1aWx5QlZTS0NWRmdraExlb0RVbmRmZUFGcHhVTUVxZ1JTaFJZdFdnbVdUVkhMYXNHeUVMc2lZelIyR2p0NTRHVjhYdngvNS92TzkzM25RQmZ3QVBncXZnY0U5TUF4TUlFRlFHWkdDRUpXVmM1R3lENGZSOU9xajJGby9nN2F1Zk5qc25ENkkvOVBQaFZac3ZqTm55Lzg0OXg5ZkcvdkN2cEc5WlZYdFBWdlg3ejR1YWRQdFNENjQxTUFBQUk0QU96RzIyQUVoNzZXR1ZteVdzd1VSZFBXNWk5SHlKS1NUQWhjZThIZC9jWFpLNkVDaitTWjRxM0ZzWTJOMDlQejZ5OWMyN2hhbm5zUmI4OFh4U214bXpUa1IrZXFJdnBhVVExTGUwK21TMUpHeDBPUWF0UnhHTDhCTEVDWFJ4Q1NpU3lXSmF1TkZnVE9NNEF0WnF0VmxoVFZSbEhJczNCWmlaMitYUnBkT3E0d2lqQjJkcEwzektmOUJUZkhWdzJGRzR2bGV5OFYxV0RBN2N0Y3VER2VyaWJkUXhJYkJnRGM1S1RnYmVnQnBvTVI1NU1sNVJtRHIzL250Y3FiWDE1ZHJkd3FmT0c4Z3JlLzlmSkw3MXljT1BYRHplcnpyWDF5QUZESDIwQTBKeERjM2NXN2VIdHY2MkMrRDI5RFAxamI4Mm1HSXppQ2FZdjB6cG12WEYyNXZuTGxtanAxZnVQQ3d1dzV2RDJ6c243VnFIMklyTm9UVkZtZVVhSXRMRU9qampUOEJnUUJiQjdCcHpZMVNDWUVuMDhYU0ZFT0JLSW9pOWxxczdWTzVuRmh5NTl5VnRUeHBiQzNGRXduejZUVDUxalpQaFB4SnAxeHZoUk5wQzhaeHNaQ0lXbHFsSmVzRWNlY0tpMUxDWC9FRldCalEwTFVHaDR1cW1QckNjRGdhOVRSZjFBTnpEb3ptK2ZnVUdSVkpqaVZveWlmcEtqcXdRbTlQVkVTNXpka1g4WklNdG5OWERmSnJabUVFN3hva1liNVFwS05HOVlyTXkrZmtmMGpHYzB4NjQxT1JLSi9FanpCdWFxVTIvZUF0MUZIRDFBTmhnK2h0Um51TytDOUV4ZkU4bVpTSExlR0djRVpXMVZTWTI3RjZuR1VEWmVxVTljclVZODlack5NYlJVbVp4eEd5ZXlGNXRuNEduWHN3enRnMFZOemlNdi9Kek5tSWdhRjh2WSttMFh2VVRZKzk5bGY3WTBlcFlPYlhINk5hdUFBYnlkZTB4RWoxSUdiQ2JscFBaM2gzMWFmRHkrY2lhbDVsNkZMKzAyUHV4QjBwbXd1NTlLUEdwZ3dCYmpraHVHTG05TmJ5MkxrcERRc0QrUk9ldTFHMmNJaWI5L3gvdUU0V3dFRUlRRDBHbjRFTnQxOVhBNTNPb1NtWlpvalFwVmNYMzd3MkdMR0VUUU45UTRaUndMZHh1Y001eXZvclZUWDB2eEtmNTlLOTBxaGxheTJwbXVHR2p5cW9ScXdFT2wwb0twU0ZIZllEUlJGSEZMdmZueVY0NGVuL2RuNUFidHdLcG81R1pvN0V4ZXlSb0xKWFdLdXA3Z2xUOGdhSCtieXNpdjZaOEdadEhsS0U1Y0ZjYlZTZVBIemt1NFA0dXdsTkJJSy9sN3dCR2JXWXVsMHl4OHNBSG9QNzRDOW1TNmFscHNFTFdhYTRCaGRScDBtd2I1ZWpnMlNnV1V4bSt6T2xzWkpjblo0TmpLTmQ1NW11R2grbE9XMTN5TFJmTHgvSVJqUjNtbzA5Sm53R1g2QUJYQUNBQVd1MlRiV3gzZ0hESzJjNjNnTTU2TnA5dlh5T2Z6cDJydGZYYXh1T2ZDTzVrVG9kOXBISDErN0NRakVSaDArd3p0ZzB0VktKbFJHRjhaaTNqL3FMK1dwbStYYkNCa0ppa2E5VmtQT2FNY3Y3UDJBN2lGTUNLZEo4Z0FYUDBFMVBmTTZab3VpYlo4b2RZaHBKK25OSEUwS0s4Sll2Q3U2NXMwb0pKa3RaMGl5YUprVnAzVU5acXl6b1dtME84ZkhWYjhvNTBlTkxuT25EdTFWVzJkVWcrT2RlemdxczQ0WVdJNGNVcm1KY0ZUa2cveWg5MUVOanVrNnQvTmdNUTlnMzM3OXRrTCs2TVNHT0w4aG5UZ3JMbXdFdzB1eUl1a2Z3K1gxNmV1VlNPczdNYmsxTlZrc2JFMU56dWl6Ry85dXlPaWZxTmJLTnQyeDR3SE1lUVQ5Rm1Ta0xHNUI2UGRYNzNkekZPR3RSSm9SbDRSeEJwdlluL0dGcENzVzhDeHhFYlA4RUw4OXdZYjNBODVlZmhPaDRGeFZ6bWFDd3QrOUkyMS8zRUkxR096UXlFWUx6N1RwSTUybHNOMHlOT2pnUzJ3RzdWYkZUTTlVZHk2dFBRVFUrRytqam02akd2aU85dnJSV3RkYnZWWHFQNDFYN1RIYmhCRE1CRVlqS1hGT2pNd1BSeGg1Uklncjdtd2l0bXhJK0FYV0grRWNQdGFSRFlUeVh0N2xOenZDckVzd2VjYkY4SlJYMy9ONG80N1c4SldEZmxWVXZTWGtaak4wOU9zdkp4SWtTaFg3U254KzZLYmhkb29ZOWd3NCtveURVVU11Zk16UmoweXBybGRmeldwUFRDYVhxN2RMcFkvcHMwY2JkZlFKMnRXeitXeDIyLzNNZnNYZVAzRG1yTE1vVHBmMFM4Si95akNwR2xrR0tkb2p4cTViQnExcGpubE9idW1jQmtCL1FidlFENkNuMEdxMXlZbytFTjBwbG5pU0lra2p6M3kvck8yaFhlMHh0OER4Y3p5eWE0N21meHZ2TnFMb1E3UUxEZ0M2cVhPenZBNU5HY0JVcjN2QWJqSjU4M2JUU2tubzZpWklvOWYwdlpMMlYzdDY5ZzgwbmVySlNCeDZySDB5VXVhNGtnY1o5LzRWTFl2UDNnSWZvRjVrMTk4Q3FpclRuT0g5L2c4NnVnb2VvdDFuN3dSMnMvd2MybTF1REVFUkw4QUQvQUQ2QUppbVZxMXczMkJjbk0zczVQQ0N6V29mT1c2MXUvOEhBQUQvL3dFQUFQLy94Y3IraVFBQUFBRUFBQUFCR0ZGTGdUOVBYdzg4OVFBQkErZ0FBQUFBMkYyZ3pBQUFBQURkWmk4My9yMyszUWdkQThrQUFnQURBQUlBQUFBQUFBQUFBUUFBQTlqKzd3QUFDRUQrdmYyOENCMEQ2QURDLzlFQUFBQUFBQUFBQUFBQUFCOENkQUFrQU1nQUFBSkhBQ01DSmdBNUFsQUFJd0Q4QUNNQ0t3QWpBZm9BREFJWkFDY0Jzd0FsQWhjQUp3SGhBQ1VCR2dBckFoTUFBUUlMQUI4QTdRQWZBZHdBSHdENEFDd0RId0FmQWcwQUh3SURBQ2NDRi8vMkFWWUFId0dTLy93QlJRQThBaEFBT0FIQUFEc0J3UC9DQVNzQUl3RHRBQjhBQUFCSEFBQUFMZ0F1QUdZQW1BQzZBTWdBOEFFd0FXZ0JsZ0hPQWdnQ01BSjRBcUlDcmdMSUF1b0RMQU5XQTRRRHZnUGNCQmdFUmdSeUJKQUV3QVRPQk53RThnQUJBQUFBSHdDTUFBd0FaZ0FIQUFFQUFBQUFBQUFBQUFBQUFBQUFCQUFEZUp5Y2xOdE9HMWNVaGo4SDIyMTZ1cWhRUkc3UXZreWxaRXlqRUNYaHlwU2dqSXB3Nm5GNmtLcEtnejAraVBITXlET1lraWZvZGQraWI1R3JQa2Fmb3VwMXRYOHZneDFGUVNBRS9IdjJPdnhyclg5dFlKUC8yS0JXdnd2ODNad2JyckhkL05ud0hiNW9IaG5lWUwvNW1lRTZEeHYvR0c0d2FMdzEzT1JCbzJ2NEU5N1YvelQ4S1UvcXZ4bSt5MWI5MFBEblBLNXZHdjV5dy9HdjRhOTR3cnNGcnNFei9qQmNZNHZDOEIwMitkWHdCdmV3bUxVNjk5Z3gzT0JydGcwMzJRWjZUS2hJbVpBeHdqRmt3b2d6WmlTVVJDVE1tREFrWVlBanBFMUtwYThac1pCajlNR3ZNUkVWTTJKRkhGUGhTSWxJaVNrWlc4UzM4c3A1cll4RG5XWjIxNlppVE15SlBFNkp5WERrak1qSlNEaFZuSXFLZ2hlMGFGSFNGOStDaXBLQWtna3BBVGt6UnJUb2NNZ1JQY1pNS0hFY0twSm5GcEV6cE9LY1dQbWRXZmpPOUVuSUtJM1ZHUmtEOFhUaWw4Zzc1QWhIaDBLMnE1R1AxaUk4eFBHanZEMjNYTGJmRXVqWHJUQmJ6N3RrRXpOWFAxTjFKZFhOdVNZNDFxM1AyK1lINFlvWHVGdjFaNTNKOVQwYTZIK2x5Q2VjYWY0RFRTb1Rrd3pudG1nVFNVR1J1NDlqWCtlUVNCMzVpWkFlcitqd2hwN09iYnAwYVhOTWo1Q1g4dTNReGZFZEhZNDVrRWNvdkxnN2xHS08rUVhIOTRTeThiRVQ2ODlpWWdtL1U1aTZTM0djcVk0cGhYcnVtUWVxTlZHRk41K3czNkY4VFIybGZQcmFJMi9wTkw5TWV4WXpNbFVVWWpoVkw1ZmFLSzEvQTFQRVZMWDQyVjdkKzIyWTIrNHR0L2lDWER2czFicmc1Q2UzWUhUZFZJUDNOSE91bjRDWUFUa25zdWlUTTZWRnhZVjR2eWJtakJUSGdicjNTbHRTMGI3MDhYa3VwSktFcVJpRVpJb3pvOURmMkhRVEdmZittdTZkdlNVRCtYdW1wNWRWM1NhTFU2K3VadlJHM1Z2ZVJkYmxaR1VDTFp0cXZxS212cmhtcHYxRU83WEtQNUp2cWRjdDV4R2g0aTUyKzBPdndBN1AyV1dQc2JMMGRUTy92UE92aExmWVV3ZE9TV1ExbEtaOURZOEoyQ1hnS2J2czhweW43L1Z5eWNZWkg3ZkdaelYvbXdQMjZiQjNiVFVMMnc3N3ZGeUw5dkhNZjRudGp1cHhQTG84UGJ2MU5CL2NRTFhmYU4rdTNzMnVKdWVuTWJkb1Y5dHhUTXpVYzNGYnF6VzUrd1QvQXdBQS8vOEJBQUQvLzNLaFVVQUFBQUFEQUFELzlRQUEvODRBTWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIpOwp9XV0+PC9zdHlsZT48c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWy5zaGFwZSB7CiAgc2hhcGUtcmVuZGVyaW5nOiBnZW9tZXRyaWNQcmVjaXNpb247CiAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDsKfQouY29ubmVjdGlvbiB7CiAgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kOwogIHN0cm9rZS1saW5lam9pbjogcm91bmQ7Cn0KLmJsZW5kIHsKICBtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHk7CiAgb3BhY2l0eTogMC41Owp9CgoJCS5kMi0xODc3NDc3NTIxIC5maWxsLU4xe2ZpbGw6IzBBMEYyNTt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmZpbGwtTjJ7ZmlsbDojNjc2QzdFO30KCQkuZDItMTg3NzQ3NzUyMSAuZmlsbC1OM3tmaWxsOiM5NDk5QUI7fQoJCS5kMi0xODc3NDc3NTIxIC5maWxsLU40e2ZpbGw6I0NGRDJERDt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmZpbGwtTjV7ZmlsbDojREVFMUVCO30KCQkuZDItMTg3NzQ3NzUyMSAuZmlsbC1ONntmaWxsOiNFRUYxRjg7fQoJCS5kMi0xODc3NDc3NTIxIC5maWxsLU43e2ZpbGw6I0ZGRkZGRjt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmZpbGwtQjF7ZmlsbDojMEQzMkIyO30KCQkuZDItMTg3NzQ3NzUyMSAuZmlsbC1CMntmaWxsOiMwRDMyQjI7fQoJCS5kMi0xODc3NDc3NTIxIC5maWxsLUIze2ZpbGw6I0UzRTlGRDt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmZpbGwtQjR7ZmlsbDojRTNFOUZEO30KCQkuZDItMTg3NzQ3NzUyMSAuZmlsbC1CNXtmaWxsOiNFREYwRkQ7fQoJCS5kMi0xODc3NDc3NTIxIC5maWxsLUI2e2ZpbGw6I0Y3RjhGRTt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmZpbGwtQUEye2ZpbGw6IzRBNkZGMzt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmZpbGwtQUE0e2ZpbGw6I0VERjBGRDt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmZpbGwtQUE1e2ZpbGw6I0Y3RjhGRTt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmZpbGwtQUI0e2ZpbGw6I0VERjBGRDt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmZpbGwtQUI1e2ZpbGw6I0Y3RjhGRTt9CgkJLmQyLTE4Nzc0Nzc1MjEgLnN0cm9rZS1OMXtzdHJva2U6IzBBMEYyNTt9CgkJLmQyLTE4Nzc0Nzc1MjEgLnN0cm9rZS1OMntzdHJva2U6IzY3NkM3RTt9CgkJLmQyLTE4Nzc0Nzc1MjEgLnN0cm9rZS1OM3tzdHJva2U6Izk0OTlBQjt9CgkJLmQyLTE4Nzc0Nzc1MjEgLnN0cm9rZS1ONHtzdHJva2U6I0NGRDJERDt9CgkJLmQyLTE4Nzc0Nzc1MjEgLnN0cm9rZS1ONXtzdHJva2U6I0RFRTFFQjt9CgkJLmQyLTE4Nzc0Nzc1MjEgLnN0cm9rZS1ONntzdHJva2U6I0VFRjFGODt9CgkJLmQyLTE4Nzc0Nzc1MjEgLnN0cm9rZS1ON3tzdHJva2U6I0ZGRkZGRjt9CgkJLmQyLTE4Nzc0Nzc1MjEgLnN0cm9rZS1CMXtzdHJva2U6IzBEMzJCMjt9CgkJLmQyLTE4Nzc0Nzc1MjEgLnN0cm9rZS1CMntzdHJva2U6IzBEMzJCMjt9CgkJLmQyLTE4Nzc0Nzc1MjEgLnN0cm9rZS1CM3tzdHJva2U6I0UzRTlGRDt9CgkJLmQyLTE4Nzc0Nzc1MjEgLnN0cm9rZS1CNHtzdHJva2U6I0UzRTlGRDt9CgkJLmQyLTE4Nzc0Nzc1MjEgLnN0cm9rZS1CNXtzdHJva2U6I0VERjBGRDt9CgkJLmQyLTE4Nzc0Nzc1MjEgLnN0cm9rZS1CNntzdHJva2U6I0Y3RjhGRTt9CgkJLmQyLTE4Nzc0Nzc1MjEgLnN0cm9rZS1BQTJ7c3Ryb2tlOiM0QTZGRjM7fQoJCS5kMi0xODc3NDc3NTIxIC5zdHJva2UtQUE0e3N0cm9rZTojRURGMEZEO30KCQkuZDItMTg3NzQ3NzUyMSAuc3Ryb2tlLUFBNXtzdHJva2U6I0Y3RjhGRTt9CgkJLmQyLTE4Nzc0Nzc1MjEgLnN0cm9rZS1BQjR7c3Ryb2tlOiNFREYwRkQ7fQoJCS5kMi0xODc3NDc3NTIxIC5zdHJva2UtQUI1e3N0cm9rZTojRjdGOEZFO30KCQkuZDItMTg3NzQ3NzUyMSAuYmFja2dyb3VuZC1jb2xvci1OMXtiYWNrZ3JvdW5kLWNvbG9yOiMwQTBGMjU7fQoJCS5kMi0xODc3NDc3NTIxIC5iYWNrZ3JvdW5kLWNvbG9yLU4ye2JhY2tncm91bmQtY29sb3I6IzY3NkM3RTt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmJhY2tncm91bmQtY29sb3ItTjN7YmFja2dyb3VuZC1jb2xvcjojOTQ5OUFCO30KCQkuZDItMTg3NzQ3NzUyMSAuYmFja2dyb3VuZC1jb2xvci1ONHtiYWNrZ3JvdW5kLWNvbG9yOiNDRkQyREQ7fQoJCS5kMi0xODc3NDc3NTIxIC5iYWNrZ3JvdW5kLWNvbG9yLU41e2JhY2tncm91bmQtY29sb3I6I0RFRTFFQjt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmJhY2tncm91bmQtY29sb3ItTjZ7YmFja2dyb3VuZC1jb2xvcjojRUVGMUY4O30KCQkuZDItMTg3NzQ3NzUyMSAuYmFja2dyb3VuZC1jb2xvci1ON3tiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7fQoJCS5kMi0xODc3NDc3NTIxIC5iYWNrZ3JvdW5kLWNvbG9yLUIxe2JhY2tncm91bmQtY29sb3I6IzBEMzJCMjt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmJhY2tncm91bmQtY29sb3ItQjJ7YmFja2dyb3VuZC1jb2xvcjojMEQzMkIyO30KCQkuZDItMTg3NzQ3NzUyMSAuYmFja2dyb3VuZC1jb2xvci1CM3tiYWNrZ3JvdW5kLWNvbG9yOiNFM0U5RkQ7fQoJCS5kMi0xODc3NDc3NTIxIC5iYWNrZ3JvdW5kLWNvbG9yLUI0e2JhY2tncm91bmQtY29sb3I6I0UzRTlGRDt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmJhY2tncm91bmQtY29sb3ItQjV7YmFja2dyb3VuZC1jb2xvcjojRURGMEZEO30KCQkuZDItMTg3NzQ3NzUyMSAuYmFja2dyb3VuZC1jb2xvci1CNntiYWNrZ3JvdW5kLWNvbG9yOiNGN0Y4RkU7fQoJCS5kMi0xODc3NDc3NTIxIC5iYWNrZ3JvdW5kLWNvbG9yLUFBMntiYWNrZ3JvdW5kLWNvbG9yOiM0QTZGRjM7fQoJCS5kMi0xODc3NDc3NTIxIC5iYWNrZ3JvdW5kLWNvbG9yLUFBNHtiYWNrZ3JvdW5kLWNvbG9yOiNFREYwRkQ7fQoJCS5kMi0xODc3NDc3NTIxIC5iYWNrZ3JvdW5kLWNvbG9yLUFBNXtiYWNrZ3JvdW5kLWNvbG9yOiNGN0Y4RkU7fQoJCS5kMi0xODc3NDc3NTIxIC5iYWNrZ3JvdW5kLWNvbG9yLUFCNHtiYWNrZ3JvdW5kLWNvbG9yOiNFREYwRkQ7fQoJCS5kMi0xODc3NDc3NTIxIC5iYWNrZ3JvdW5kLWNvbG9yLUFCNXtiYWNrZ3JvdW5kLWNvbG9yOiNGN0Y4RkU7fQoJCS5kMi0xODc3NDc3NTIxIC5jb2xvci1OMXtjb2xvcjojMEEwRjI1O30KCQkuZDItMTg3NzQ3NzUyMSAuY29sb3ItTjJ7Y29sb3I6IzY3NkM3RTt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmNvbG9yLU4ze2NvbG9yOiM5NDk5QUI7fQoJCS5kMi0xODc3NDc3NTIxIC5jb2xvci1ONHtjb2xvcjojQ0ZEMkREO30KCQkuZDItMTg3NzQ3NzUyMSAuY29sb3ItTjV7Y29sb3I6I0RFRTFFQjt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmNvbG9yLU42e2NvbG9yOiNFRUYxRjg7fQoJCS5kMi0xODc3NDc3NTIxIC5jb2xvci1ON3tjb2xvcjojRkZGRkZGO30KCQkuZDItMTg3NzQ3NzUyMSAuY29sb3ItQjF7Y29sb3I6IzBEMzJCMjt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmNvbG9yLUIye2NvbG9yOiMwRDMyQjI7fQoJCS5kMi0xODc3NDc3NTIxIC5jb2xvci1CM3tjb2xvcjojRTNFOUZEO30KCQkuZDItMTg3NzQ3NzUyMSAuY29sb3ItQjR7Y29sb3I6I0UzRTlGRDt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmNvbG9yLUI1e2NvbG9yOiNFREYwRkQ7fQoJCS5kMi0xODc3NDc3NTIxIC5jb2xvci1CNntjb2xvcjojRjdGOEZFO30KCQkuZDItMTg3NzQ3NzUyMSAuY29sb3ItQUEye2NvbG9yOiM0QTZGRjM7fQoJCS5kMi0xODc3NDc3NTIxIC5jb2xvci1BQTR7Y29sb3I6I0VERjBGRDt9CgkJLmQyLTE4Nzc0Nzc1MjEgLmNvbG9yLUFBNXtjb2xvcjojRjdGOEZFO30KCQkuZDItMTg3NzQ3NzUyMSAuY29sb3ItQUI0e2NvbG9yOiNFREYwRkQ7fQoJCS5kMi0xODc3NDc3NTIxIC5jb2xvci1BQjV7Y29sb3I6I0Y3RjhGRTt9LmFwcGVuZGl4IHRleHQudGV4dHtmaWxsOiMwQTBGMjV9Lm1key0tY29sb3ItZmctZGVmYXVsdDojMEEwRjI1Oy0tY29sb3ItZmctbXV0ZWQ6IzY3NkM3RTstLWNvbG9yLWZnLXN1YnRsZTojOTQ5OUFCOy0tY29sb3ItY2FudmFzLWRlZmF1bHQ6I0ZGRkZGRjstLWNvbG9yLWNhbnZhcy1zdWJ0bGU6I0VFRjFGODstLWNvbG9yLWJvcmRlci1kZWZhdWx0OiMwRDMyQjI7LS1jb2xvci1ib3JkZXItbXV0ZWQ6IzBEMzJCMjstLWNvbG9yLW5ldXRyYWwtbXV0ZWQ6I0VFRjFGODstLWNvbG9yLWFjY2VudC1mZzojMEQzMkIyOy0tY29sb3ItYWNjZW50LWVtcGhhc2lzOiMwRDMyQjI7LS1jb2xvci1hdHRlbnRpb24tc3VidGxlOiM2NzZDN0U7LS1jb2xvci1kYW5nZXItZmc6cmVkO30uc2tldGNoLW92ZXJsYXktQjF7ZmlsbDp1cmwoI3N0cmVha3MtZGFya2VyLWQyLTE4Nzc0Nzc1MjEpO21peC1ibGVuZC1tb2RlOmxpZ2h0ZW59LnNrZXRjaC1vdmVybGF5LUIye2ZpbGw6dXJsKCNzdHJlYWtzLWRhcmtlci1kMi0xODc3NDc3NTIxKTttaXgtYmxlbmQtbW9kZTpsaWdodGVufS5za2V0Y2gtb3ZlcmxheS1CM3tmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItMTg3NzQ3NzUyMSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1CNHtmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItMTg3NzQ3NzUyMSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1CNXtmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItMTg3NzQ3NzUyMSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1CNntmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItMTg3NzQ3NzUyMSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1BQTJ7ZmlsbDp1cmwoI3N0cmVha3MtZGFyay1kMi0xODc3NDc3NTIxKTttaXgtYmxlbmQtbW9kZTpvdmVybGF5fS5za2V0Y2gtb3ZlcmxheS1BQTR7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTE4Nzc0Nzc1MjEpO21peC1ibGVuZC1tb2RlOmRhcmtlbn0uc2tldGNoLW92ZXJsYXktQUE1e2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi0xODc3NDc3NTIxKTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LUFCNHtmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItMTg3NzQ3NzUyMSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1BQjV7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTE4Nzc0Nzc1MjEpO21peC1ibGVuZC1tb2RlOmRhcmtlbn0uc2tldGNoLW92ZXJsYXktTjF7ZmlsbDp1cmwoI3N0cmVha3MtZGFya2VyLWQyLTE4Nzc0Nzc1MjEpO21peC1ibGVuZC1tb2RlOmxpZ2h0ZW59LnNrZXRjaC1vdmVybGF5LU4ye2ZpbGw6dXJsKCNzdHJlYWtzLWRhcmstZDItMTg3NzQ3NzUyMSk7bWl4LWJsZW5kLW1vZGU6b3ZlcmxheX0uc2tldGNoLW92ZXJsYXktTjN7ZmlsbDp1cmwoI3N0cmVha3Mtbm9ybWFsLWQyLTE4Nzc0Nzc1MjEpO21peC1ibGVuZC1tb2RlOmNvbG9yLWJ1cm59LnNrZXRjaC1vdmVybGF5LU40e2ZpbGw6dXJsKCNzdHJlYWtzLW5vcm1hbC1kMi0xODc3NDc3NTIxKTttaXgtYmxlbmQtbW9kZTpjb2xvci1idXJufS5za2V0Y2gtb3ZlcmxheS1ONXtmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItMTg3NzQ3NzUyMSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1ONntmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItMTg3NzQ3NzUyMSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1ON3tmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItMTg3NzQ3NzUyMSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5saWdodC1jb2Rle2Rpc3BsYXk6IGJsb2NrfS5kYXJrLWNvZGV7ZGlzcGxheTogbm9uZX1dXT48L3N0eWxlPjxnIGNsYXNzPSJkSEpoWkdsMGFXOXVZV3c9Ij48ZyBjbGFzcz0ic2hhcGUiID48cmVjdCB4PSI2Ni4wMDAwMDAiIHk9IjEyLjAwMDAwMCIgd2lkdGg9IjE4OC4wMDAwMDAiIGhlaWdodD0iOTguMDAwMDAwIiBzdHJva2U9IiMwRDMyQjIiIGZpbGw9IiNmZWUyZTIiIGNsYXNzPSIgc3Ryb2tlLUIxIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiAvPjwvZz48dGV4dCB4PSIxNjAuMDAwMDAwIiB5PSI1MC41MDAwMDAiIGZpbGw9IiMwQTBGMjUiIGNsYXNzPSJ0ZXh0LWJvbGQgZmlsbC1OMSIgc3R5bGU9InRleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MTZweCI+PHRzcGFuIHg9IjE2MC4wMDAwMDAiIGR5PSIwLjAwMDAwMCI+QmxvY2sgdGhlIGRldmljZTwvdHNwYW4+PHRzcGFuIHg9IjE2MC4wMDAwMDAiIGR5PSIxNy42NjY2NjciPlJlbW92ZSB0aGUgYWNjb3VudDwvdHNwYW4+PHRzcGFuIHg9IjE2MC4wMDAwMDAiIGR5PSIxNy42NjY2NjciPkRldGVjdCBhZnRlciB0aGUgZmFjdDwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0iWVdkbGJuUjNZWEpsIj48ZyBjbGFzcz0ic2hhcGUiID48cmVjdCB4PSIxMi4wMDAwMDAiIHk9IjI3MS4wMDAwMDAiIHdpZHRoPSIyOTYuMDAwMDAwIiBoZWlnaHQ9Ijk4LjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSIjZGNmY2U3IiBjbGFzcz0iIHN0cm9rZS1CMSIgc3R5bGU9InN0cm9rZS13aWR0aDoyOyIgLz48L2c+PHRleHQgeD0iMTYwLjAwMDAwMCIgeT0iMzA5LjUwMDAwMCIgZmlsbD0iIzBBMEYyNSIgY2xhc3M9InRleHQtYm9sZCBmaWxsLU4xIiBzdHlsZT0idGV4dC1hbmNob3I6bWlkZGxlO2ZvbnQtc2l6ZToxNnB4Ij48dHNwYW4geD0iMTYwLjAwMDAwMCIgZHk9IjAuMDAwMDAwIj5CcmVhayB0aGUgdHJ1c3Qgc2lnbmFsPC90c3Bhbj48dHNwYW4geD0iMTYwLjAwMDAwMCIgZHk9IjE3LjY2NjY2NyI+Q3JlYXRlIGZyaWN0aW9uIGR1cmluZyBtYW5pcHVsYXRpb248L3RzcGFuPjx0c3BhbiB4PSIxNjAuMDAwMDAwIiBkeT0iMTcuNjY2NjY3Ij5JbnRlcnZlbmUgaW4gcmVhbC10aW1lPC90c3Bhbj48L3RleHQ+PC9nPjxnIGNsYXNzPSJLSFJ5WVdScGRHbHZibUZzSUMwbVozUTdJR0ZuWlc1MGQyRnlaU2xiTUYwPSI+PG1hcmtlciBpZD0ibWstZDItMTg3NzQ3NzUyMS0zNDg4Mzc4MTM0IiBtYXJrZXJXaWR0aD0iMTAuMDAwMDAwIiBtYXJrZXJIZWlnaHQ9IjEyLjAwMDAwMCIgcmVmWD0iNy4wMDAwMDAiIHJlZlk9IjYuMDAwMDAwIiB2aWV3Qm94PSIwLjAwMDAwMCAwLjAwMDAwMCAxMC4wMDAwMDAgMTIuMDAwMDAwIiBvcmllbnQ9ImF1dG8iIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+IDxwb2x5Z29uIHBvaW50cz0iMC4wMDAwMDAsMC4wMDAwMDAgMTAuMDAwMDAwLDYuMDAwMDAwIDAuMDAwMDAwLDEyLjAwMDAwMCIgZmlsbD0iIzBEMzJCMiIgY2xhc3M9ImNvbm5lY3Rpb24gZmlsbC1CMSIgc3Ryb2tlLXdpZHRoPSIyIiAvPiA8L21hcmtlcj48cGF0aCBkPSJNIDE2MC4wMDAwMDAgMTEyLjAwMDAwMCBMIDE2MC4wMDAwMDAgMjY3LjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSJub25lIiBjbGFzcz0iY29ubmVjdGlvbiBzdHJva2UtQjEiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIG1hcmtlci1lbmQ9InVybCgjbWstZDItMTg3NzQ3NzUyMS0zNDg4Mzc4MTM0KSIgbWFzaz0idXJsKCNkMi0xODc3NDc3NTIxKSIgLz48dGV4dCB4PSIxNjAuNTAwMDAwIiB5PSIxOTYuMDAwMDAwIiBmaWxsPSIjNjc2QzdFIiBjbGFzcz0idGV4dC1pdGFsaWMgZmlsbC1OMiIgc3R5bGU9InRleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MTZweCI+U2hpZnQgdGhlIGRlZmVuc2UgbGF5ZXI8L3RleHQ+PC9nPjxtYXNrIGlkPSJkMi0xODc3NDc3NTIxIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSItOSIgeT0iLTkiIHdpZHRoPSIzMzgiIGhlaWdodD0iMzk5Ij4KPHJlY3QgeD0iLTkiIHk9Ii05IiB3aWR0aD0iMzM4IiBoZWlnaHQ9IjM5OSIgZmlsbD0idHJhbnNwYXJlbnQiPjwvcmVjdD4KPHJlY3QgeD0iODUuMDAwMDAwIiB5PSIxODAuMDAwMDAwIiB3aWR0aD0iMTUxIiBoZWlnaHQ9IjIxIiBmaWxsPSJibGFjayI+PC9yZWN0Pgo8L21hc2s+PC9zdmc+PC9zdmc+Cg==" class="img-fluid" style="width:100.0%"></p>
<p><strong>Mandatory unverified caller overlays.</strong> Any account without a verified identity calling via video should show a persistent banner that cannot be dismissed: “Unverified account. Government agencies do not contact citizens via WhatsApp video call.” Not a one-time popup. A persistent overlay visible for the entire call duration.</p>
<p><strong>Screen-share lockouts on government-branded calls.</strong> If an account impersonating a government agency initiates screen sharing — a common tactic for watching victims navigate their banking apps — the session should be terminated. Not warned. Terminated.</p>
<p><strong>Banking app friction triggers.</strong> When a user accesses a banking app while on an active video call, the banking app should show a high-friction warning: “You are on an active call. Fraud alerts frequently occur during video calls. Are you being asked to transfer money or share a code?” This requires coordination between WhatsApp and banks, but both the data and the intent exist.</p>
<p><strong>Timed lock-out on prolonged calls.</strong> Digital arrest scams often keep victims on calls for hours, maintaining the psychological pressure. Automatic warnings after 30 minutes of continuous video call — “You have been on this call for 30 minutes. If someone is asking you to take financial actions, this may be fraud” — break the trance.</p>
<p>None of these are technically complex. All of them require friction that product teams will resist because friction reduces engagement metrics. That’s the real barrier.</p>
</section>
<section id="the-measurement-problem" class="level2">
<h2 class="anchored" data-anchor-id="the-measurement-problem">The Measurement Problem</h2>
<p>The Home Ministry is measuring the wrong thing. Device ID blocks are measurable: accounts blocked, devices flagged, scammers inconvenienced. Logo detection is measurable: impersonator profiles removed, false positives reviewed.</p>
<p>What’s not being measured: how many users completed a video call with an unverified account and then opened their banking app within 10 minutes. How many users stayed on a video call for over 30 minutes while simultaneously accessing financial services. How many users shared their screen during a call with a government-branded profile.</p>
<p>These are the signals that predict a scam in progress. They’re also the signals that require real-time intervention, not post-facto account removal.</p>
<p>WhatsApp has the telemetry. Banks have the transaction data. The coordination layer doesn’t exist.</p>
</section>
<section id="what-i-dont-know-yet" class="level2">
<h2 class="anchored" data-anchor-id="what-i-dont-know-yet">What I Don’t Know Yet</h2>
<p>I don’t know how to build organizational trust in autonomous intervention systems that terminate calls or lock banking apps based on behavioral signals. The false positive rate for “user on video call + opens banking app” is probably high. Legitimate customer service calls exist. Remote financial assistance from family members exists.</p>
<p>The threshold between protective friction and user-hostile interference is real. I haven’t solved it. Neither has anyone else.</p>
<p>But I know this: device ID blocking is solving the wrong problem. The scam doesn’t live in the hardware. It lives in the 6-inch screen where a terrified user sees a uniform and hears the word “arrest” and does exactly what they’re told.</p>
<p>The question worth asking now is whether the platforms that control that screen are willing to break their own engagement metrics to intervene. Not in three years. This quarter.</p>
<p>Are we asking it? Mostly, no. We are still blocking device IDs.</p>


</section>

 ]]></description>
  <category>Product Security</category>
  <category>Interface Design</category>
  <category>India</category>
  <guid>https://talvinder.com/field-notes/digital-arrest-device-blocking-ui-problem/</guid>
  <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Model Routing Is the New Unit Economics</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/field-notes/small-model-arbitrage/</link>
  <description><![CDATA[ 





<p>Most teams are paying frontier model prices for commodity model work.</p>
<p>They default to GPT-4 or Claude Opus for tasks that a $0.10 per million token model could handle at 95% accuracy. The gap between what these models cost and what they’re actually needed for is the arbitrage opportunity of the next 18 months.</p>
<p>At Ostronaut, we generate training content at scale: presentations, quizzes, video scripts. We started with GPT-4 for everything. Cost per generation: $0.03. We moved structured extraction and template filling to GPT-4o-mini. Cost dropped to $0.015. Same user satisfaction scores. Half the cost.</p>
<p>The arbitrage isn’t about being cheap. It’s about understanding where model capability stops mattering to the outcome.</p>
<section id="inference-cac-compounds-like-customer-acquisition-cost" class="level2">
<h2 class="anchored" data-anchor-id="inference-cac-compounds-like-customer-acquisition-cost">Inference CAC Compounds Like Customer Acquisition Cost</h2>
<p>Call this <strong>Inference CAC</strong>: the cost to acquire value from each model call.</p>
<p>Just like customer acquisition cost, it’s a unit economic that compounds. If you’re running 10M inferences a month, a 50% reduction in per-call cost is $150K annual savings. That’s not rounding error. That’s headcount.</p>
<p>The shift happening now: AI products are moving from “can we do this?” to “can we do this profitably?” The companies that figure out model selection as a core competency will have better margins than competitors running everything through Opus.</p>
<p>This is not about performance. It’s about matching performance to the value threshold of the task.</p>
</section>
<section id="the-default-to-frontier-habit-is-a-margin-killer" class="level2">
<h2 class="anchored" data-anchor-id="the-default-to-frontier-habit-is-a-margin-killer">The Default-to-Frontier Habit Is a Margin Killer</h2>
<p>The default behavior in 2024-2025 was to use the best available model. GPT-4, Claude Opus, whatever scored highest on benchmarks. The logic made sense early: you’re prototyping, you want maximum capability, cost is secondary to learning if the feature works.</p>
<p>But that logic breaks once you’re in production. Once you’re processing thousands or millions of requests. Once the feature is validated and you’re optimizing for margin.</p>
<p>Here’s the pattern I see across teams: 80% of their AI tasks don’t need frontier model reasoning. They need reliable extraction, simple classification, template completion, or pattern matching. Tasks where a 90% accurate model and a 95% accurate model produce the same user outcome.</p>
<p>The performance plateau is real. If you’re extracting structured data from invoices, GPT-4’s reasoning capability is overkill. If you’re triaging support tickets into five categories, you don’t need multi-step reasoning. If you’re generating quiz questions from a content outline, you need consistency and format compliance, not creativity.</p>
<p>The companies that will win the next phase are the ones building <strong>model portfolios</strong>, not model lock-in. They route requests to the cheapest model that clears the quality bar for that specific task. Frontier models for complex reasoning. Mid-tier models for structured tasks. Small models for high-volume, low-complexity work.</p>
<p>This requires a different kind of product thinking. You need to know:</p>
<ul>
<li>What is the minimum acceptable quality for this feature?</li>
<li>What does quality mean here — accuracy, consistency, format compliance, creativity?</li>
<li>What’s the cost per request at different model tiers?</li>
<li>What’s the volume, and how does that change unit economics?</li>
</ul>
<p>Most teams can’t answer these questions. They pick a model, ship the feature, and never revisit the decision.</p>
<p>Here’s a claim: <strong>By 2027, any AI product doing more than 1M inferences/month that hasn’t implemented model routing will have 30-50% worse margins than competitors who have.</strong> The gap will be structural. It won’t be about better features. It will be about better cost discipline.</p>
</section>
<section id="the-math-is-already-visible" class="level2">
<h2 class="anchored" data-anchor-id="the-math-is-already-visible">The Math Is Already Visible</h2>
<p>Cursor’s pricing page tells you something: “Claude Opus is extremely expensive, so my recommendation not to use it, unless the company pays for it.” They’re already pushing users toward cost-aware model selection. The tool that’s supposed to make you more productive is teaching you to ration the expensive model.</p>
<p>That’s the canary. When dev tools start warning you about model costs, it means the unit economics are real enough to matter.</p>
<p>Look at SaaS unit economics. If your CAC is $1,800 and your annual contract value is $1,500, you’re underwater. You optimize CAC or increase ACV. Same logic applies to inference costs. If your cost per inference is $0.05 and your revenue per user per month is $20, you need to drive down inference cost or increase revenue.</p>
<p>Most teams will find it easier to optimize the cost side first.</p>
<p>The math is simple:</p>
<table class="caption-top table">
<colgroup>
<col style="width: 11%">
<col style="width: 30%">
<col style="width: 30%">
<col style="width: 27%">
</colgroup>
<thead>
<tr class="header">
<th>Volume</th>
<th>Frontier Model Cost</th>
<th>Mid-tier Model Cost</th>
<th>Annual Difference</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>1M requests/month</td>
<td>$50K/month</td>
<td>$20K/month</td>
<td>$360K/year</td>
</tr>
<tr class="even">
<td>5M requests/month</td>
<td>$250K/month</td>
<td>$100K/month</td>
<td>$1.8M/year</td>
</tr>
<tr class="odd">
<td>10M requests/month</td>
<td>$500K/month</td>
<td>$200K/month</td>
<td>$3.6M/year</td>
</tr>
</tbody>
</table>
<p>That’s the arbitrage. Find the 60-80% of your requests that don’t need frontier models. Route them to cheaper models. Bank the difference.</p>
</section>
<section id="model-selection-is-a-feature-level-decision" class="level2">
<h2 class="anchored" data-anchor-id="model-selection-is-a-feature-level-decision">Model Selection Is a Feature-Level Decision</h2>
<p>At Ostronaut, we built a multi-agent system for content generation. Initially, every agent used GPT-4. The cost per generation was $0.03. Acceptable for early customers, unsustainable at scale.</p>
<p>We audited every agent. Which tasks required reasoning? Which were template-filling? Which were format validation?</p>
<p>We moved structured extraction, template population, and rule-based validation to GPT-4o-mini. We kept GPT-4 for content composition and quality evaluation — the tasks where reasoning and creativity mattered.</p>
<p>Cost per generation dropped 50%. Quality scores stayed flat. We didn’t lose customers. We didn’t get more complaints. The cheaper model was good enough for those tasks.</p>
<p>The lesson: <strong>model selection is a feature-level decision, not a product-level decision.</strong> You don’t pick one model for your product. You pick the right model for each task within your product.</p>
<p><img src="https://talvinder.com/field-notes/small-model-arbitrage/data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGRhdGEtZDItdmVyc2lvbj0idjAuNy4xIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0IiB2aWV3Qm94PSIwIDAgNjE5IDUzOSI+PHN2ZyBjbGFzcz0iZDItNTgwNzU2NTU3IGQyLXN2ZyIgd2lkdGg9IjYxOSIgaGVpZ2h0PSI1MzkiIHZpZXdCb3g9Ii05IC05IDYxOSA1MzkiPjxyZWN0IHg9Ii05LjAwMDAwMCIgeT0iLTkuMDAwMDAwIiB3aWR0aD0iNjE5LjAwMDAwMCIgaGVpZ2h0PSI1MzkuMDAwMDAwIiByeD0iMC4wMDAwMDAiIGZpbGw9InRyYW5zcGFyZW50IiBjbGFzcz0iIGZpbGwtTjciIHN0cm9rZS13aWR0aD0iMCIgLz48c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWwouZDItNTgwNzU2NTU3IC50ZXh0LWJvbGQgewoJZm9udC1mYW1pbHk6ICJkMi01ODA3NTY1NTctZm9udC1ib2xkIjsKfQpAZm9udC1mYWNlIHsKCWZvbnQtZmFtaWx5OiBkMi01ODA3NTY1NTctZm9udC1ib2xkOwoJc3JjOiB1cmwoImRhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2Jhc2U2NCxkMDlHUmdBQkFBQUFBQTlVQUFvQUFBQUFGMHdBQWd1RkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlBVeTh5QUFBQTlBQUFBR0FBQUFCZ1h4SFhybU50WVhBQUFBRlVBQUFBcXdBQUFOZ0R2d1QxWjJ4NVpnQUFBZ0FBQUFpZkFBQUxyQ2lCY1VCb1pXRmtBQUFLb0FBQUFEWUFBQUEyRzM4ZTFHaG9aV0VBQUFyWUFBQUFKQUFBQUNRS2Z3WG5hRzEwZUFBQUN2d0FBQUNhQUFBQW9FNmNCelpzYjJOaEFBQUxtQUFBQUZJQUFBQlNQNTQ4NG0xaGVIQUFBQXZzQUFBQUlBQUFBQ0FBUUFEM2JtRnRaUUFBREF3QUFBTW9BQUFJS2dqd1ZrRndiM04wQUFBUE5BQUFBQjBBQUFBZy85RUFNZ0FEQWlvQ3ZBQUZBQUFDaWdKWUFBQUFTd0tLQWxnQUFBRmVBRElCS1FBQUFnc0hBd01FQXdJQ0JHQUFBdmNBQUFBREFBQUFBQUFBQUFCQlJFSlBBQ0FBSVAvL0F1Ny9CZ0FBQTlnQkVTQUFBWjhBQUFBQUFmQUNsQUFBQUNBQUEzaWNkTTA1U2dNQkdFRGhiNXh4SDNYY3QxSEhEUlMwOHdhQzJBZ2lYbUFRRWJFWGorUjJBQzFDTHBCTDVBQnBVd1gra09uejJxOTRTS1FTNURJZGxBcXBYT1hjcFN2WGJ0MTdWSHYyNnQxSEJDcG5MaHE5Y2VkQjdjbUx0NUZHTndiUmoxNjBveFgvOFJlLzhSUGY4UldmeldkOGlST25qaHc3TkNHVm1UUmwyb3haYytibEZpeGFVbGkyWXRXYWRSczJiZG0yWTFkcHo3NERGVU1BQUFELy93RUFBUC8vTWx3bW53QjRuSVJXYTJ6YjVoVzkzeWRhakJYR01VVlJsR1RyU1l2VXc1WnQwUlQ5akt4WThpT1IvRXJqdUt0c0owYmJQSnc0WHVLc1hwZTErNUVXV0tlc0xaeXV6b3ExM2JCaUQ2d0RpbXhBMTgwRE5tRFlndVpmaXVYUCtrU3hGUzNXZW9WUnRLdE5EUjhwTzA0MllEOUVBZ0o1N3JuM25uUDRRUldNQXVCWmZBVXNVQTE3d1E0OGdNSUcyYkFpeXlLdEtab21DaFpOUml3OWl1MzZTeitXbzFRMFNzVUNLLzZIWjJaUVlScGYyVHg5WDJGMjlyT1pyaTc5K2QrOHBsOUc1MThEUUpBb3IrTVd2QUoxQUZVaFNWTGJVaWtsNlJSb1NSSkRWaXZ2Y0NySmxDWlkwZFQ0RTRjT1h4NVAzeDhjZG10aTQxQjhZakNTZGcyUE0vbG56cHkrT3FhRXBnVnZjbnIvL1FzTjd1SlJRRkFBUUIvZ0VsUWJQUGtnci9BaVgwRFA2WisvOXg0dVhYejI0aWJBVnYwc1hnSC8vNnBmS2ErS3FzSmFyZWpNdlU4ZlB2TFVrWUVIQXdWM2V5eC90SGlmUTJKT2Z4ejZhb1ZFVzNEYTZWdVl2WC9CWmx0WTB0OElKa3dlK0RBdXdXN0NRK0VWVldGRlZtUUx5KzlldWZJdUxuMzU1ZVlpcXRYWERDN2syWmR4aVhCUldJVnpPZ1VsbGRJNGhSVUpMVTJrYVZHV1JSL20rY0lQVDlyc05zckcybzYvK0RoZGJhSFVxYkdwTm9yYVJlT1MvbGI5UHA5dlh6MEtiUzUrRWhnWjlULzN4UmZQK1VkSEFwOXMxY2pqRW5CbURVR1JKSlZ3c3NpaTA4bnpoV2QvM2t0Uk5TVnlxOXFEUy9ydm5tcjdWdWZmTnhkUjdydXBpNTMvQUFCc3pPd1J2QUo3NzlxYWszZFlyWEl5cGJaVmhvY21KaDg3ZVBDeFNmUGFOenpjMXpjOHpJeGZQVFgzek1qSTkwNmR1anIrNk9MczdQejg3T3dpd1NYY1duQUpHSEFZN0NxSW9zaXpTcEtBaW9WM0JpLzA5eS9teGdhWGVydXp1Q1FYUi9LenpXK2k4Uk5LREdBTDR4QXVRUTBJT3pCb1RwUU5sSlFKODFIdVhEYXRYbm5wbTJQNXpwNmV6and1aFNlSEI2Y0UvY3VQUGtKSFcxdGFKRElyc2J5T2JYZ0ZZa2FYc3VaMG1nQ3luTUQvSlJSQk1Oa2lSKytqeVh2RWlVaWlTWWtmRG5aTFhTZXo3UXV4ZzRGZVdXcnFpTjNUMWQ4NXo3UWtIdkJKSWEvZmEyK29hZTV2VGsyMk5jYW0zSFgrZXArUERibnV5YVdLN1lEQURZQTVYQUthZENLcVFWNWtiMXhELzc2R2F5OWUzRnd6KzQyVjE5RWJhQVBjSUFJSUliSUt6YUJFeXdaQm5oVmwwV3JWaUl3TlAvMCtPM3BwR1l0UmYyK0QyanpYT2ZQZ2tvM3lEK3h5aDduaGJqOXpKRDA4dVRjb3UvaGozb2I1Yy9yN1NyMTRUdUNPMk9KZWwyQm90S0c4amxiUkJuanU5c3R0dXdoV0szTG56bVlHdjVaTkROVG54SUNhVHJlNEVseG5lSUxwdVRCK2FMSEhKOHg0ODVuZUFyLzNhS0RPN0VNdXI2TU52QW9jQkxiNk1JQmxJczd0RHJhRy9XbnhiTmRNVzdUZGJWMWVzbEdlZnV5UzdWemNJYWFhbWU5OGZlekN2bnBYL21lYmZhMGVjY25oZnQxZTB6Y3dsQU5zY0g4WGJZRHJMcmNiQ2dtUzdSTHVGc1dRTC9JUG5OdmZkN3ByWUtxWnd2b3RXMytybW1xVnByOS9UVzRNcFpoOWkrTmppK24wWEpZTFY2ZVU0TDBlSCtxTXFzMmtGd3VFeWsyWVJodlFERjF3d09oR1V0c0llYkljZGF1c29QQmlSZUFoMlpnZFdaZkRhclhzY0JCWFVXeElNaDc1dEhPNmZZQ3JDN2c4MGM1cHRUSDQ2eEc2dW0xUzgvcnRvZWhvOFZqMjRnR3ZMSHU5c2h4TjlzcGh4UjFrNm5wdWV0b2J1eVBVbm9pL0xsbEwyYlB4N3BFSU03Yzc1T2c0MEdEYjYrVHNYWDNLV0FKZGowWGxhQ1FTamVuTERXNmgxbUp4dWV1OVprWm15SUx3YXNXVlBMMGxMTlpnU2JPWlpicitZSEpzYU5rYnFJKzQ4T292N25YSDU2YjBHeWlZaXJnRi9SVW9sMEVEZ0RmeFRTeUJCQUEweVBERU5yWVByd0pqWUxPS3BoQ3YwbnptU2VvSEwvN3l0eThzcFBHcVB2K25HL3JmL2pEd01IbSt2STdzZUJYMm1pcGhGWFpiZEgvSmR5MnoxVlcwMWM2RW1mc09Zbkh6bG1CSDZFd1ZiZGF4ZU5FR0JJMDZKRmlKdXU3b2hONitaNGduK2x2VkRCYzgwRHA2Y05rYkNMZVFTek5hNi9VM3hTT2gxcTMyV3ZSWEtyZXRPYUdOeXB3cU5YYk9hY2xHQlFyYmcwSnJhVi9USFhNeU5XcG81LzlucXpOOU5wczltMDdQWjdQejZhWkVvaW5SMUZUeFY4L2lvZkVMUFE4VmVqTjVZak9DbXlrUFlpZmFBQTU4QU1KdGRvYjhKRm5nRGFXSklacDNPZ2xQNzVEOGxSUGRNNmxBdDZkcVJFcE54R09PeUt2NHA2MGU4ZHZuRHkrbDY5d2pUNk9HL3Z6alRhL2JhMHovRHFJTkF6OEFVS1ZxQnV5V2lSVk5ZUzA3L1l0T1d0MzdRNmFKOTNrcDV2ejcyd1orOWRtOHkyK1kyQnRvM1p4RURiY2RYTkVMZWhKdGdQMk9QWm9wYkU2NExpL3g5VGJYSG5kdGZZOERyUjFKdGxaVlBVcFIwYVQrRGlEZ3krdm9CYlFCc3FHZjI1a3VtWm0rRFVZUzNZZDVoL1ZtNjNGcGZ5anREL3E4Q1krdkszTHljTWNSLzM1UG02ZWpRd3IwUkU4d2tyL29yaE00MXNuWm1JYU9hRzVDZGswNm5MTExYYk5iN0VqMFRaa2VZc3ZyYUI0dmtxOVNWVWhTVlZIVk5NVTRsTndPVFNpT1pQUHN3dzg5SkhvWnQwM2dOT2JVeFBVejFrdVh6djg1RnJaU2MxYkd4T291cjZQUDBSclIyUjBlWUN0UitkZXhvV1Zmb0Y1eUxpL3R0dmdQTUhOVHFFMS9XNDE2dkdoUXI4MkZHd0VSdjZFeVdvTTlBSXBGRVNwbkRVMnhYUHZKbFY0Ylo2T3FPVnZtOG8vUTJvZmhnaXdYd2gvcXRVYnRHZ0MwanRiSXQwbmg1QjB2MG9Jb1N4SXBUOU0xSzA4KzMyaHoycWhkOWwyaGxhZXVQdC9DQ0F4VjdhaVdFZjU0bEkvemZKd2ZMZjlybkcvaytiaHpuT2lIQTBDZjQyOUFOZW1LVTBoU0VpaE9EYW9jQ1IyUmYvSHhLa1F4bnBxay9zOFBmalUwaEhZZDk0LzVQS2s2Zlg3bEFmU0lmbmxoeFR6UDdVTUFMeE45Q0hJcUpZZENwZzVOcmVkOTdaMElVMWhNcGFSa1cvR1B3NDVNT0I2UkVnY3k0MHZtYk9Od0hRVlJLMWdBTkZYaDQ1OWRQM0dDL0Q5WUxxQUlmcHZNU3pDRFhEQStwOEtOZEM2WExtckpwSGJ0K0Z1WExyMTFYRHAyYSs3VXJWbEEwRkl1b05yS08zTEtPRGxvaHBGTHhmWmtzcjJZenVXdVNiTzNUczNkT2lZWjc1cjZoamZRR3FsUDhqQ3pqTmIwV2tEbGwzRUhITUkzeVRtUzNkRlFPSkVJaHhNSjNCRVR4Umo1d1g4QUFBRC8vd0VBQVAvL0NzNTlsZ0FBQVFBQUFBSUxoUlNBQ2RsZkR6ejFBQUVENkFBQUFBRFlYYUNFQUFBQUFOMW1MemIrTi83RUNHMEQ4UUFCQUFNQUFnQUFBQUFBQUFBQkFBQUQyUDd2QUFBSW1QNDMvamNJYlFBQkFBQUFBQUFBQUFBQUFBQUFBQUFBS0hpY0hNb3hqZ0ZoR01ieC8vdHNzczFPRmpFa0dnV1RTTXpraTQ3RUtONUdGTDVFb1JnSGNBMXVvTmVxYWJRdW9IY2JEYUgvNmNxS08yaE9VRUxVanFBVFVVK2lqa1NkQ1ZvVHRTV3FvSytDam1vTTdVR21HUVA5a3FsTlQxUGNVc2JLY092aVB4dGNKYTc4Ni94ajdZRGJqWmJ0YVdoQ3FUOFNpWC9WYVZwQnNDVzVWU3lzWW1RcERxL0xHd0FBLy84QkFBRC8vMmFlRmhNQUFBQUFBQ3dBTEFCWUFHd0FuQUN5QU9RQkJnRXlBVlFCZWdHNkFjd0NCQUl3QW1JQ2xnTCtBeUFETEFORUEyQURrZ08wQStBRUVBUkVCR1FFb0FUR0JPZ0ZCQVV3QlZRRmRBV0FCWm9GdEFYQUJkWUFBQUFCQUFBQUtBQ1FBQXdBWXdBSEFBRUFBQUFBQUFBQUFBQUFBQUFBQkFBRGVKeWNsTTl1RzFVVXhuOU9iTk1Ld1FKRlZicUo3b0pGa2VqWVZFblZOaXVIMUlwRkZBZVBDMEpDU0JQUCtJOHluaGw1Smc3aENWanpGcnhGVnp3RXo0RllvL2w4N05nRjBTYUtrbngzN3Zuem5YTytjNEVkL21hYlN2VWg4RWM5TVZ4aHIzNXVlSXNIOVJQRDI3VHJXNGFyUEtuOWFiaEdXSnNicnZONXJXZjRJOTVXZnpQOGdQM3FUNFlmc2x0dEcvNllaOVVkdzU5c08vNHkvQ243dkYzZ0NyemdWOE1WZHNrTWI3SERqNGEzZVlURnJGUjVSTk53amMvWU0xeG5EK2d6b1NCbVFzSUl4NUFKSTY2WUVaSGpFekZqd3BDSUVFZUhGakdGdmlZRVFvN1JmMzROOENtWUVTamltQUpIakU5TVFNN1lJdjRpcjVSelpSenFOTE83RmdWakFpN2tjVWxBZ2lObFJFcEN4S1hpRkJSa3ZLSkJnNXlCK0dZVTVIamtUSWp4U0preG9rR1hOcWYwR1RNaHg5RldwSktaVDhxUWdtc0M1WGRtVVhabVFFUkNicXl1U0FqRjA0bGZKTzhPcHppNlpMSmRqM3k2RWVGTEhOL0p1K1NXeXZZclBQMjZOV2FiZVpkc0F1YnFaNnl1eExxNTFnVEh1aTN6dHZoV3VPQVY3bDc5MldUeS9oNkYrbDhvOGdWWG1uK29TU1Zpa3VEY0xpMThLY2gzajNFYzZkekJWMGUrcDBPZkU3cThvYTl6aXg0OVdwelJwOE5yK1hicDRmaWFMbWNjeTZNanZMaHJTekZuL0lEakd6cXlLV05IMXAvRnhDSitKak4xNStJNFV4MVRNdlc4Wk82cDFrZ1YzbjNDNVE2bEcrckk1VFBRSHBXV1R2Tkx0R2NCSTFORkpvWlQ5WEtwamR6NkY1b2lwcXFsbk8zdGZia05jOXU5NVJiZmtHcUhTN1V1T0pXVFd6QjYzMVM5ZHpSenJSK1BnSkNVQzFrTVNKblNvT0JHdk04SnVDTEdjYXp1bldoTENsb3JuekxQalZRU01SV0REb25pek1qME56RGQrTVo5c0tGN1oyOUpLUCtTNmVXcXF2dGtjZXJWN1l6ZXFIdkxPOSs2SEsxTm9HRlRUZGZVTkJEWHhMUWZhYWZXK2Z2eXpmVzZwVHpsaUpTWThGOHZ3RE04bXV4endDRmpaUmpvWm02dlExTXZSSk9YSEtyNlN5SlpEYVhueUNJYzRQR2NBdzU0eWZOMytyaGs0b3lMVzNGWno5M2ltQ082SEg1UUZRdjdMa2U4WG4zNy82eS9pMmxUdFRpZXJrNHY3ajNGSjNkUTZ4ZmFzOXYzc3FlSmxaT1lXN1RiclRnallGcHljYnZyTmJuSGVQOEFBQUQvL3dFQUFQLy85TGRQVVhpY1ltQm1BSVAvNXhpTUdMQUFBQUFBQVAvL0FRQUEvLzh2QVFJREFBQUEiKTsKfQouZDItNTgwNzU2NTU3IC50ZXh0LWl0YWxpYyB7Cglmb250LWZhbWlseTogImQyLTU4MDc1NjU1Ny1mb250LWl0YWxpYyI7Cn0KQGZvbnQtZmFjZSB7Cglmb250LWZhbWlseTogZDItNTgwNzU2NTU3LWZvbnQtaXRhbGljOwoJc3JjOiB1cmwoImRhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2Jhc2U2NCxkMDlHUmdBQkFBQUFBQStRQUFvQUFBQUFHQ1FBQVJoUkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlBVeTh5QUFBQTlBQUFBR0FBQUFCZ1cxU1ZlR050WVhBQUFBRlVBQUFBcXdBQUFOZ0R2d1QxWjJ4NVpnQUFBZ0FBQUFqV0FBQU1mSzdNVGxSb1pXRmtBQUFLMkFBQUFEWUFBQUEyRzdVcjJtaG9aV0VBQUFzUUFBQUFKQUFBQUNRTGVBak1hRzEwZUFBQUN6UUFBQUNmQUFBQW9FZkdCTjFzYjJOaEFBQUwxQUFBQUZJQUFBQlNRNFpBcm0xaGVIQUFBQXdvQUFBQUlBQUFBQ0FBUUFEMmJtRnRaUUFBREVnQUFBTW1BQUFJTWdudFZ6TndiM04wQUFBUGNBQUFBQ0FBQUFBZy84WUFNZ0FEQWVFQmtBQUZBQUFDaWdKWS8vRUFTd0tLQWxnQVJBRmVBRElCSXdBQUFnc0ZBd01FQXdrQ0JDQUFBSGNBQUFBREFBQUFBQUFBQUFCQlJFSlBBQUVBSVAvL0F1Ny9CZ0FBQTlnQkVTQUFBWk1BQUFBQUFlWUNsQUFBQUNBQUEzaWNkTTA1U2dNQkdFRGhiNXh4SDNYY3QxSEhEUlMwOHdhQzJBZ2lYbUFRRWJFWGorUjJBQzFDTHBCTDVBQnBVd1gra09uejJxOTRTS1FTNURJZGxBcXBYT1hjcFN2WGJ0MTdWSHYyNnQxSEJDcG5MaHE5Y2VkQjdjbUx0NUZHTndiUmoxNjBveFgvOFJlLzhSUGY4UldmeldkOGlST25qaHc3TkNHVm1UUmwyb3haYytibEZpeGFVbGkyWXRXYWRSczJiZG0yWTFkcHo3NERGVU1BQUFELy93RUFBUC8vTWx3bW53QjRuSHhXYTJ3ajVkViszM2NtTTV1c2MvUFk0OWdiMjdIZjhZempqTzNFWTN2aU9IWXVUcHpFbDF3M0lSK0pzNXVGemJjYndpcmR4YkR0c3FVUWFiVkZLalZvMWFwb3kxYUZWcTM0ZzViMkI3MkFlcE5TMEZaVmhWcGFLaXJFRXRyZG9rS1VWb0NhY1RWangzRWl0WDlHOCtjOTUzbk9lYzV6RHFnQkhBRG9ITG9HQ0ZBTEdvRWVHQUdRR0FkQlNMS01UWVFrQ0ppbVpZRmhhTzRKdVBuRXMyVGkzdmZkMy9wVXRKTWpqMzgvL2ZlVEw2SnJ1MnZ3UzduSEhsTVdycDQrZmMvZHU0b0gvdjR1QUFCQUVDbnVJQys2RHV3QTFEaDVQaFNNSXluQW1taWV4ODRHWkRTd3JCUUl5eWFLZ3M3MG1YRG52WmN6M1ZNdFlTYk05NXdZNUp5cHFEdlJocm1jTG5GeFBIdnRrUkhaMDk0bXhPNi8yQnZOaGRxT0JleGVMUWNHQURXaEFxalZjTk1PV3FJeGdUZmdhcjN5bnZmaitvOTZVV0hnOXFEeWh6MDhVWFFkT0RVOC93V09qR1dKb0Nnb1BueTVjK0h4cWVpVVdXWmtkL3pVTUljemZWeUVjVjJ0LzAyRVc5STlmWEg4MmlQSkNxaWVwWEJMMHcvN2xkczJWd1hYV1ZRQVIxVmNFdUZnSkFJekRnSnZqSGREZDNkMlk3eFBlU3VPQ3NwZGFOeGRoOTNLWnZuTlQxQUJtTFUzakVtU3RWZmhzSXhwQWhNQ3BpaWF3QnU1Q0VzbWY1SGJTR2RxTFRweTRtZGlqQ1dwaGlNcFZGQ2V1M29WbnRwZGgrZkYxWTVubEJmZzRqUGlXVkY1cWh4N0JSVUFzeGM3SE5haVY2S09mODFEVWcxMXcrbU43TFVPa21xc1M2S0NzdmpscmdjbHVMaTdEcC8vaXJRYVVHNEFBQkRvTGU2Z0pYUWROSUcyNmtxeVJrTURFZ0p4RkFydVZSVGF6K1Y5Yy9sazZuVFFOL2RRSW5SUDNKa2FWNzlqdXE4L21pN2toNGN1emFTZnpnOG5lay9sSTh2NTZLbDh6OG1IdFJ3cVhxOVdQNE9HT01BYURSU0ZNY0ZJZ2JDYUFPT05WeGJQcHg0L2ZqWTRjT0wwYW1iME5DcWs1aWIvdjB2NUJJNU1Ua1FrVUlram9BS29CK3grSEpyQnhJRklQMWo4M0xtWkN6TnI1K1doKzVidVQ0K2VSSVhrek1LNVp1VTl5Q3AzNE94ME11d3ZhVnBYM0lFS3VnNDhBSmljdkNCcm9na0ZlVUZRQlI0T1Z4UkZVVVlEYXpLeEd1NFBFdXZ1aUhWVzdwM3l1aktlYUdneEdqMXBsOHhKbnl0azdlSXkvbUIwUmRmVDA5RVJHT3JtQXF6UE1pWUhwZ05CdDgvV2J1ODh4dnRaYit1STNMTVFCQkRrQUVBaFZBQzB5Z2JMRGhvVDM4Mi9XZy9mcUg4dGo3S0p4TzdMSmQ1Q2NRZCtBcmVCUWEyQWFWL3RraXdSV01ZVUphaGFyMGovNWY2TW1GcVNoRmd6eWNTWCs0NlFlRjdQVDNDaU1kREtKVUwyTHQzQ2JQTHppNUxiRVZNc295NS92OC8vUjk3cEdjc0YrbUtsdXJpS08vQW0zQWF0QjdMdFY2STg2VzlOM0M5bWwwTmlMK3RsZUd2blhEalMweFptblphc2JpVTNkR0hXN3pSM21veEQ2NG5CcEtVNVlIQlZ1Q0FCYlFLajZsWUh1UHh2TWoxNm9vblBGc3BzeGwySDJRaHRKMTdkN1Q1TUIybGNYb1Bid0FKYzFmazA1VGlvaW1zUlVsanR2TXJ3OXR4WmIzcXhVeDZ3NldxVVg5YTJKVHpXaU1sbW5mcEdFUkg2ZGh4YTBxMHVENjlQaTc3SlFLdlUwRGZwTWpkTFJqdDBIVzJwYisyeXp3SUVZSkdEMjNBYjJJR3ZXbG15VEZINFlQY29pampBOXNXdU9jeTFEcnZqcVFZemY5d2ZtK3dZVyt6aTQ4MEUwN2ZDWElqZ0tXY0gyOVdLQnlTYi84KzhOV1J5WnZyUDhPTGNiT0toL3d1by9TUk9yRUJIaCtlM3ZMTTlPZDhaalpiNmFRY0F2b1UyeTE1RTA1SW1iYU9CMWd3cEZNUk9paWJzVDJVN204ajJhVEVlT2hMUDlKTGthT3VvYnhodDNvMWgvMEMzblZOZWg2S2hwVDd0OFNuZkt4YlZtT0F6ZEJQeGdBY0FVRUFZM2MvMUlkb0V1cEpYcXZrWUxOQzAvYW5zU2ZUcC9NL3o0N2wxQzlwVXJCQytvYnovNGZsTEFBS3h1QU0rUTV0QXIxWXJGRlM5VE5WWnVUVVBEbENYc3BjaGJDWW9HdGF4dXI1bU0zcGc5Mm02bHRCREZDWEpTbDUwQjI2cnM2em1MRkUwbFlsU0I1aFdrMTd1bzBsK2h1L3BxdkhQdTJKaGtveG5ZeVE1WWh3Vmg5VWFKTm5Sam1HNE5jWjF5VzVSR3VodXRobXE2N0QvdDE5bnVBMWFxakVjTHJPYXNYM2FkNkRLV29iRFJkNmYvYmZoTm1nRTFtcjlsdXhaMDJ4NUtOK2NXQkpUUzRHSkUySjZ5ZU9ka3NJQjlhTTdzekI4WWRaWCt2WVByZzhOamlUV2h3YVRhdXppdjRvUy9BaHVsMmFScmtMY2dMQ1RWNjhGWm04RFVEVE5zblZQOWxHRWE5YW5qV1NBNzJXUTN2NGRMaEd5ZGJZN3A3RFBJTjFDTC9mYnZlV0J0Sis1QWFGbkxDZkZZeDcrcnk3SEhoOUo4ekl0WjQyc0R2eWhtVGc0RWREaHNDSFh2Sy9hMDU2OFVXMEF0MjQ4d3ZzcmxyYWJoZkNnb1pYNjhpamNCazFWZlRIUi9GNC9qcExXak5kc1BOWms0VEwyR056S2liSGFvU045VWVVV2dNVi9GM2ZnWmJnTmhNTTc0dkNLVURkRWFVRTgzNVV6ZDVyNmVVK3N2ZHNYRWNkRVg2clZ4MGdPdml2Y0ZnOTJUdXVDYnQ3dTltR0xZTGZFMnpzR1hKek5iYkI0N1RaZTcrd1Z2VU11RlhOdmNRZk9vN1dLQjRkbEJ2Y2hTVHVKcWp6NGxmNGdDU01qUnpQY3dMRkx1c3NSb3RYWllEbmEzT1RYOVhrYkxmVlFINm01Y2lXdTNOSHJiYmE2R3BsdVZHTjNGM2ZnUCtDVzZnZDdzZmNuamluYjhJdVZhUmkxam9qREdYV1J1SS9yQnVWbU93UER5cHVNV1pVcG5GY3NLU3lWWmpBS0FId1hib0Y2QU5USlo5bnlaUUtmR01sd0pFV1N6Unp6MWF5eUM3ZVVEM0FhYzJNY05Dc1c3VzN4VFFEZzcwcVlNQ05JcHZKaldhSk5XT0I1N2JLaHhUOHRqSHVPTk5Ca1kxdmo3TXptZlJQaWtlWTZzc25KTEVGMGU0MFZqSVoyNDlvL1B6N1ArbGhXTkYxUTlhWVN2b1crQ09yVTI4T0JaWWNNSlVLaXNVdVMxVnVNb21pWUhzWEszMnJoMHZISkdkMk1VdndWVCtscDB1QTJ2QlNFenlycjhmaFByUU9PMW1CTENlZTd4VVZRQUd1cWxtaEJqYUFWc09ReWhxUCtDSTFZRzdaYVd1OTl3YWZ2NVN5c1dlQnNZK3VnZkVlK0ErdWdHUkFBcU1Tdzd1MzZkL1k4ZXFBNENlOUJiNnQ0VFNWcHlTWktPMlJOWDJoeHlHZFMzdFcxV2tQRFMvM1BUK2QvL2VPYytZcnlsK2Q4S3lkNXJYYkZTWENuL0ZZSTY5VTlwZ3BWMVNMMHJqNVFxMjhNcUNGZXNseUJqbS82VjA3d1RQKzNwL092LzZnOEcrQVczRkl4cVg1dFg4NmVnbHRhVXlBWVFXbHdFOTFVNzE2bWl1WkZ4b1pOQml0R2FSTnJkclN3NXJiL0FBQUEvLzhCQUFELy8xQU5uVDhBQUFBQkFBQUFBUmhSRVA2bzcxOFBQUFVBQVFQb0FBQUFBTmhkb013QUFBQUEzV1l2Ti82OS90MElIUVBKQUFJQUF3QUNBQUFBQUFBQUFBRUFBQVBZL3U4QUFBaEEvcjM5dkFnZEErZ0F3di9SQUFBQUFBQUFBQUFBQUFBb2VKd2N6VEVPd1dBWWgvSG4vWGRFU0F5TjZScytiUWNPb05IRklCYXp6UWtrSm90cnVJZkpCZGdjb0l2RW9BZXdHRVJFZkZJSGVKNmZOdlE1ZzFKeXUrQTFKOWNhcnhOZUs3eTJGRXJ4R3VEdFRkTytMTlVqc3dPSllqS3JTTlRGMU1CeHg5a1Z4NHRoNUhCcTRSU1JLUTdQZjdQQTJTNThiRXFoRGlNN01yWjlLTzFHbTBlb3JEWThFMHRDV2IrQTJROEFBUC8vQVFBQS8vL3VMaURRQUFBQUFDNEFMZ0JnQUhZQXJBREdBUFFCR2dGTUFYQUJtQUhZQWV3Q0pBSlNBb29DeEFNTUF6WURRZ05jQTM0RHdBUHFCQmdFVWdTTUJLb0U1Z1VVQlVBRlhnV0tCYklGMEFYZUJmd0dHZ1lvQmo0QUFBQUJBQUFBS0FDTUFBd0FaZ0FIQUFFQUFBQUFBQUFBQUFBQUFBQUFCQUFEZUp5Y2xOdE9HMWNVaGo4SDIyMTZ1cWhRUkc3UXZreWxaRXlqRUNYaHlwU2dqSXB3Nm5GNmtLcEtnejAraVBITXlET1lraWZvZGQraWI1R3JQa2Fmb3VwMXRYOHZneDFGUVNBRS9IdjJPdnhyclg5dFlKUC8yS0JXdnd2ODNad2JyckhkL05ud0hiNW9IaG5lWUwvNW1lRTZEeHYvR0c0d2FMdzEzT1JCbzJ2NEU5N1YvelQ4S1UvcXZ4bSt5MWI5MFBEblBLNXZHdjV5dy9HdjRhOTR3cnNGcnNFei9qQmNZNHZDOEIwMitkWHdCdmV3bUxVNjk5Z3gzT0JydGcwMzJRWjZUS2hJbVpBeHdqRmt3b2d6WmlTVVJDVE1tREFrWVlBanBFMUtwYThac1pCajlNR3ZNUkVWTTJKRkhGUGhTSWxJaVNrWlc4UzM4c3A1cll4RG5XWjIxNlppVE15SlBFNkp5WERrak1qSlNEaFZuSXFLZ2hlMGFGSFNGOStDaXBLQWtna3BBVGt6UnJUb2NNZ1JQY1pNS0hFY0twSm5GcEV6cE9LY1dQbWRXZmpPOUVuSUtJM1ZHUmtEOFhUaWw4Zzc1QWhIaDBLMnE1R1AxaUk4eFBHanZEMjNYTGJmRXVqWHJUQmJ6N3RrRXpOWFAxTjFKZFhOdVNZNDFxM1AyK1lINFlvWHVGdjFaNTNKOVQwYTZIK2x5Q2VjYWY0RFRTb1Rrd3pudG1nVFNVR1J1NDlqWCtlUVNCMzVpWkFlcitqd2hwN09iYnAwYVhOTWo1Q1g4dTNReGZFZEhZNDVrRWNvdkxnN2xHS08rUVhIOTRTeThiRVQ2ODlpWWdtL1U1aTZTM0djcVk0cGhYcnVtUWVxTlZHRk41K3czNkY4VFIybGZQcmFJMi9wTkw5TWV4WXpNbFVVWWpoVkw1ZmFLSzEvQTFQRVZMWDQyVjdkKzIyWTIrNHR0L2lDWER2czFicmc1Q2UzWUhUZFZJUDNOSE91bjRDWUFUa25zdWlUTTZWRnhZVjR2eWJtakJUSGdicjNTbHRTMGI3MDhYa3VwSktFcVJpRVpJb3pvOURmMkhRVEdmZittdTZkdlNVRCtYdW1wNWRWM1NhTFU2K3VadlJHM1Z2ZVJkYmxaR1VDTFp0cXZxS212cmhtcHYxRU83WEtQNUp2cWRjdDV4R2g0aTUyKzBPdndBN1AyV1dQc2JMMGRUTy92UE92aExmWVV3ZE9TV1ExbEtaOURZOEoyQ1hnS2J2czhweW43L1Z5eWNZWkg3ZkdaelYvbXdQMjZiQjNiVFVMMnc3N3ZGeUw5dkhNZjRudGp1cHhQTG84UGJ2MU5CL2NRTFhmYU4rdTNzMnVKdWVuTWJkb1Y5dHhUTXpVYzNGYnF6VzUrd1QvQXdBQS8vOEJBQUQvLzNLaFVVQUFBQUFEQUFELzlRQUEvODRBTWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSIpOwp9XV0+PC9zdHlsZT48c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWy5zaGFwZSB7CiAgc2hhcGUtcmVuZGVyaW5nOiBnZW9tZXRyaWNQcmVjaXNpb247CiAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDsKfQouY29ubmVjdGlvbiB7CiAgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kOwogIHN0cm9rZS1saW5lam9pbjogcm91bmQ7Cn0KLmJsZW5kIHsKICBtaXgtYmxlbmQtbW9kZTogbXVsdGlwbHk7CiAgb3BhY2l0eTogMC41Owp9CgoJCS5kMi01ODA3NTY1NTcgLmZpbGwtTjF7ZmlsbDojMEEwRjI1O30KCQkuZDItNTgwNzU2NTU3IC5maWxsLU4ye2ZpbGw6IzY3NkM3RTt9CgkJLmQyLTU4MDc1NjU1NyAuZmlsbC1OM3tmaWxsOiM5NDk5QUI7fQoJCS5kMi01ODA3NTY1NTcgLmZpbGwtTjR7ZmlsbDojQ0ZEMkREO30KCQkuZDItNTgwNzU2NTU3IC5maWxsLU41e2ZpbGw6I0RFRTFFQjt9CgkJLmQyLTU4MDc1NjU1NyAuZmlsbC1ONntmaWxsOiNFRUYxRjg7fQoJCS5kMi01ODA3NTY1NTcgLmZpbGwtTjd7ZmlsbDojRkZGRkZGO30KCQkuZDItNTgwNzU2NTU3IC5maWxsLUIxe2ZpbGw6IzBEMzJCMjt9CgkJLmQyLTU4MDc1NjU1NyAuZmlsbC1CMntmaWxsOiMwRDMyQjI7fQoJCS5kMi01ODA3NTY1NTcgLmZpbGwtQjN7ZmlsbDojRTNFOUZEO30KCQkuZDItNTgwNzU2NTU3IC5maWxsLUI0e2ZpbGw6I0UzRTlGRDt9CgkJLmQyLTU4MDc1NjU1NyAuZmlsbC1CNXtmaWxsOiNFREYwRkQ7fQoJCS5kMi01ODA3NTY1NTcgLmZpbGwtQjZ7ZmlsbDojRjdGOEZFO30KCQkuZDItNTgwNzU2NTU3IC5maWxsLUFBMntmaWxsOiM0QTZGRjM7fQoJCS5kMi01ODA3NTY1NTcgLmZpbGwtQUE0e2ZpbGw6I0VERjBGRDt9CgkJLmQyLTU4MDc1NjU1NyAuZmlsbC1BQTV7ZmlsbDojRjdGOEZFO30KCQkuZDItNTgwNzU2NTU3IC5maWxsLUFCNHtmaWxsOiNFREYwRkQ7fQoJCS5kMi01ODA3NTY1NTcgLmZpbGwtQUI1e2ZpbGw6I0Y3RjhGRTt9CgkJLmQyLTU4MDc1NjU1NyAuc3Ryb2tlLU4xe3N0cm9rZTojMEEwRjI1O30KCQkuZDItNTgwNzU2NTU3IC5zdHJva2UtTjJ7c3Ryb2tlOiM2NzZDN0U7fQoJCS5kMi01ODA3NTY1NTcgLnN0cm9rZS1OM3tzdHJva2U6Izk0OTlBQjt9CgkJLmQyLTU4MDc1NjU1NyAuc3Ryb2tlLU40e3N0cm9rZTojQ0ZEMkREO30KCQkuZDItNTgwNzU2NTU3IC5zdHJva2UtTjV7c3Ryb2tlOiNERUUxRUI7fQoJCS5kMi01ODA3NTY1NTcgLnN0cm9rZS1ONntzdHJva2U6I0VFRjFGODt9CgkJLmQyLTU4MDc1NjU1NyAuc3Ryb2tlLU43e3N0cm9rZTojRkZGRkZGO30KCQkuZDItNTgwNzU2NTU3IC5zdHJva2UtQjF7c3Ryb2tlOiMwRDMyQjI7fQoJCS5kMi01ODA3NTY1NTcgLnN0cm9rZS1CMntzdHJva2U6IzBEMzJCMjt9CgkJLmQyLTU4MDc1NjU1NyAuc3Ryb2tlLUIze3N0cm9rZTojRTNFOUZEO30KCQkuZDItNTgwNzU2NTU3IC5zdHJva2UtQjR7c3Ryb2tlOiNFM0U5RkQ7fQoJCS5kMi01ODA3NTY1NTcgLnN0cm9rZS1CNXtzdHJva2U6I0VERjBGRDt9CgkJLmQyLTU4MDc1NjU1NyAuc3Ryb2tlLUI2e3N0cm9rZTojRjdGOEZFO30KCQkuZDItNTgwNzU2NTU3IC5zdHJva2UtQUEye3N0cm9rZTojNEE2RkYzO30KCQkuZDItNTgwNzU2NTU3IC5zdHJva2UtQUE0e3N0cm9rZTojRURGMEZEO30KCQkuZDItNTgwNzU2NTU3IC5zdHJva2UtQUE1e3N0cm9rZTojRjdGOEZFO30KCQkuZDItNTgwNzU2NTU3IC5zdHJva2UtQUI0e3N0cm9rZTojRURGMEZEO30KCQkuZDItNTgwNzU2NTU3IC5zdHJva2UtQUI1e3N0cm9rZTojRjdGOEZFO30KCQkuZDItNTgwNzU2NTU3IC5iYWNrZ3JvdW5kLWNvbG9yLU4xe2JhY2tncm91bmQtY29sb3I6IzBBMEYyNTt9CgkJLmQyLTU4MDc1NjU1NyAuYmFja2dyb3VuZC1jb2xvci1OMntiYWNrZ3JvdW5kLWNvbG9yOiM2NzZDN0U7fQoJCS5kMi01ODA3NTY1NTcgLmJhY2tncm91bmQtY29sb3ItTjN7YmFja2dyb3VuZC1jb2xvcjojOTQ5OUFCO30KCQkuZDItNTgwNzU2NTU3IC5iYWNrZ3JvdW5kLWNvbG9yLU40e2JhY2tncm91bmQtY29sb3I6I0NGRDJERDt9CgkJLmQyLTU4MDc1NjU1NyAuYmFja2dyb3VuZC1jb2xvci1ONXtiYWNrZ3JvdW5kLWNvbG9yOiNERUUxRUI7fQoJCS5kMi01ODA3NTY1NTcgLmJhY2tncm91bmQtY29sb3ItTjZ7YmFja2dyb3VuZC1jb2xvcjojRUVGMUY4O30KCQkuZDItNTgwNzU2NTU3IC5iYWNrZ3JvdW5kLWNvbG9yLU43e2JhY2tncm91bmQtY29sb3I6I0ZGRkZGRjt9CgkJLmQyLTU4MDc1NjU1NyAuYmFja2dyb3VuZC1jb2xvci1CMXtiYWNrZ3JvdW5kLWNvbG9yOiMwRDMyQjI7fQoJCS5kMi01ODA3NTY1NTcgLmJhY2tncm91bmQtY29sb3ItQjJ7YmFja2dyb3VuZC1jb2xvcjojMEQzMkIyO30KCQkuZDItNTgwNzU2NTU3IC5iYWNrZ3JvdW5kLWNvbG9yLUIze2JhY2tncm91bmQtY29sb3I6I0UzRTlGRDt9CgkJLmQyLTU4MDc1NjU1NyAuYmFja2dyb3VuZC1jb2xvci1CNHtiYWNrZ3JvdW5kLWNvbG9yOiNFM0U5RkQ7fQoJCS5kMi01ODA3NTY1NTcgLmJhY2tncm91bmQtY29sb3ItQjV7YmFja2dyb3VuZC1jb2xvcjojRURGMEZEO30KCQkuZDItNTgwNzU2NTU3IC5iYWNrZ3JvdW5kLWNvbG9yLUI2e2JhY2tncm91bmQtY29sb3I6I0Y3RjhGRTt9CgkJLmQyLTU4MDc1NjU1NyAuYmFja2dyb3VuZC1jb2xvci1BQTJ7YmFja2dyb3VuZC1jb2xvcjojNEE2RkYzO30KCQkuZDItNTgwNzU2NTU3IC5iYWNrZ3JvdW5kLWNvbG9yLUFBNHtiYWNrZ3JvdW5kLWNvbG9yOiNFREYwRkQ7fQoJCS5kMi01ODA3NTY1NTcgLmJhY2tncm91bmQtY29sb3ItQUE1e2JhY2tncm91bmQtY29sb3I6I0Y3RjhGRTt9CgkJLmQyLTU4MDc1NjU1NyAuYmFja2dyb3VuZC1jb2xvci1BQjR7YmFja2dyb3VuZC1jb2xvcjojRURGMEZEO30KCQkuZDItNTgwNzU2NTU3IC5iYWNrZ3JvdW5kLWNvbG9yLUFCNXtiYWNrZ3JvdW5kLWNvbG9yOiNGN0Y4RkU7fQoJCS5kMi01ODA3NTY1NTcgLmNvbG9yLU4xe2NvbG9yOiMwQTBGMjU7fQoJCS5kMi01ODA3NTY1NTcgLmNvbG9yLU4ye2NvbG9yOiM2NzZDN0U7fQoJCS5kMi01ODA3NTY1NTcgLmNvbG9yLU4ze2NvbG9yOiM5NDk5QUI7fQoJCS5kMi01ODA3NTY1NTcgLmNvbG9yLU40e2NvbG9yOiNDRkQyREQ7fQoJCS5kMi01ODA3NTY1NTcgLmNvbG9yLU41e2NvbG9yOiNERUUxRUI7fQoJCS5kMi01ODA3NTY1NTcgLmNvbG9yLU42e2NvbG9yOiNFRUYxRjg7fQoJCS5kMi01ODA3NTY1NTcgLmNvbG9yLU43e2NvbG9yOiNGRkZGRkY7fQoJCS5kMi01ODA3NTY1NTcgLmNvbG9yLUIxe2NvbG9yOiMwRDMyQjI7fQoJCS5kMi01ODA3NTY1NTcgLmNvbG9yLUIye2NvbG9yOiMwRDMyQjI7fQoJCS5kMi01ODA3NTY1NTcgLmNvbG9yLUIze2NvbG9yOiNFM0U5RkQ7fQoJCS5kMi01ODA3NTY1NTcgLmNvbG9yLUI0e2NvbG9yOiNFM0U5RkQ7fQoJCS5kMi01ODA3NTY1NTcgLmNvbG9yLUI1e2NvbG9yOiNFREYwRkQ7fQoJCS5kMi01ODA3NTY1NTcgLmNvbG9yLUI2e2NvbG9yOiNGN0Y4RkU7fQoJCS5kMi01ODA3NTY1NTcgLmNvbG9yLUFBMntjb2xvcjojNEE2RkYzO30KCQkuZDItNTgwNzU2NTU3IC5jb2xvci1BQTR7Y29sb3I6I0VERjBGRDt9CgkJLmQyLTU4MDc1NjU1NyAuY29sb3ItQUE1e2NvbG9yOiNGN0Y4RkU7fQoJCS5kMi01ODA3NTY1NTcgLmNvbG9yLUFCNHtjb2xvcjojRURGMEZEO30KCQkuZDItNTgwNzU2NTU3IC5jb2xvci1BQjV7Y29sb3I6I0Y3RjhGRTt9LmFwcGVuZGl4IHRleHQudGV4dHtmaWxsOiMwQTBGMjV9Lm1key0tY29sb3ItZmctZGVmYXVsdDojMEEwRjI1Oy0tY29sb3ItZmctbXV0ZWQ6IzY3NkM3RTstLWNvbG9yLWZnLXN1YnRsZTojOTQ5OUFCOy0tY29sb3ItY2FudmFzLWRlZmF1bHQ6I0ZGRkZGRjstLWNvbG9yLWNhbnZhcy1zdWJ0bGU6I0VFRjFGODstLWNvbG9yLWJvcmRlci1kZWZhdWx0OiMwRDMyQjI7LS1jb2xvci1ib3JkZXItbXV0ZWQ6IzBEMzJCMjstLWNvbG9yLW5ldXRyYWwtbXV0ZWQ6I0VFRjFGODstLWNvbG9yLWFjY2VudC1mZzojMEQzMkIyOy0tY29sb3ItYWNjZW50LWVtcGhhc2lzOiMwRDMyQjI7LS1jb2xvci1hdHRlbnRpb24tc3VidGxlOiM2NzZDN0U7LS1jb2xvci1kYW5nZXItZmc6cmVkO30uc2tldGNoLW92ZXJsYXktQjF7ZmlsbDp1cmwoI3N0cmVha3MtZGFya2VyLWQyLTU4MDc1NjU1Nyk7bWl4LWJsZW5kLW1vZGU6bGlnaHRlbn0uc2tldGNoLW92ZXJsYXktQjJ7ZmlsbDp1cmwoI3N0cmVha3MtZGFya2VyLWQyLTU4MDc1NjU1Nyk7bWl4LWJsZW5kLW1vZGU6bGlnaHRlbn0uc2tldGNoLW92ZXJsYXktQjN7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTU4MDc1NjU1Nyk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1CNHtmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItNTgwNzU2NTU3KTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LUI1e2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi01ODA3NTY1NTcpO21peC1ibGVuZC1tb2RlOmRhcmtlbn0uc2tldGNoLW92ZXJsYXktQjZ7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTU4MDc1NjU1Nyk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1BQTJ7ZmlsbDp1cmwoI3N0cmVha3MtZGFyay1kMi01ODA3NTY1NTcpO21peC1ibGVuZC1tb2RlOm92ZXJsYXl9LnNrZXRjaC1vdmVybGF5LUFBNHtmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItNTgwNzU2NTU3KTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LUFBNXtmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItNTgwNzU2NTU3KTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LUFCNHtmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItNTgwNzU2NTU3KTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LUFCNXtmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItNTgwNzU2NTU3KTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LU4xe2ZpbGw6dXJsKCNzdHJlYWtzLWRhcmtlci1kMi01ODA3NTY1NTcpO21peC1ibGVuZC1tb2RlOmxpZ2h0ZW59LnNrZXRjaC1vdmVybGF5LU4ye2ZpbGw6dXJsKCNzdHJlYWtzLWRhcmstZDItNTgwNzU2NTU3KTttaXgtYmxlbmQtbW9kZTpvdmVybGF5fS5za2V0Y2gtb3ZlcmxheS1OM3tmaWxsOnVybCgjc3RyZWFrcy1ub3JtYWwtZDItNTgwNzU2NTU3KTttaXgtYmxlbmQtbW9kZTpjb2xvci1idXJufS5za2V0Y2gtb3ZlcmxheS1ONHtmaWxsOnVybCgjc3RyZWFrcy1ub3JtYWwtZDItNTgwNzU2NTU3KTttaXgtYmxlbmQtbW9kZTpjb2xvci1idXJufS5za2V0Y2gtb3ZlcmxheS1ONXtmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItNTgwNzU2NTU3KTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LU42e2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi01ODA3NTY1NTcpO21peC1ibGVuZC1tb2RlOmRhcmtlbn0uc2tldGNoLW92ZXJsYXktTjd7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTU4MDc1NjU1Nyk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5saWdodC1jb2Rle2Rpc3BsYXk6IGJsb2NrfS5kYXJrLWNvZGV7ZGlzcGxheTogbm9uZX1dXT48L3N0eWxlPjxnIGNsYXNzPSJkR0Z6YXc9PSI+PGcgY2xhc3M9InNoYXBlIiA+PHBhdGggZD0iTSAyMjUgMTIgTCAzOTEgMTIgTCAzNjUgNzggTCAxOTkgNzggTCAxOTkgNzggWiIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSIjREVFMUVCIiBjbGFzcz0iIHN0cm9rZS1CMSBmaWxsLU41IiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiAvPjwvZz48dGV4dCB4PSIyOTUuMDAwMDAwIiB5PSI1MC41MDAwMDAiIGZpbGw9IiMwQTBGMjUiIGNsYXNzPSJ0ZXh0LWJvbGQgZmlsbC1OMSIgc3R5bGU9InRleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MTZweCI+VGFzayBSZXF1ZXN0PC90ZXh0PjwvZz48ZyBjbGFzcz0iY205MWRHVnkiPjxnIGNsYXNzPSJzaGFwZSIgPjxwYXRoIGQ9Ik0gMjk1IDI0MCBDIDI5NCAyNDAgMjk0IDI0MCAyOTMgMjQwIEwgMTg2IDE5NSBDIDE4NSAxOTUgMTg1IDE5NCAxODYgMTkzIEwgMjkzIDE0OCBDIDI5NCAxNDggMjk2IDE0OCAyOTcgMTQ4IEwgNDA0IDE5MyBDIDQwNSAxOTMgNDA1IDE5NCA0MDQgMTk1IEwgMjk3IDI0MCBDIDI5NiAyNDAgMjk2IDI0MCAyOTUgMjQwIFoiIHN0cm9rZT0iIzBEMzJCMiIgZmlsbD0iI0NGRDJERCIgY2xhc3M9IiBzdHJva2UtQjEgZmlsbC1ONCIgc3R5bGU9InN0cm9rZS13aWR0aDoyOyIgLz48L2c+PHRleHQgeD0iMjk1LjAwMDAwMCIgeT0iMTk5LjUwMDAwMCIgZmlsbD0iIzBBMEYyNSIgY2xhc3M9InRleHQtYm9sZCBmaWxsLU4xIiBzdHlsZT0idGV4dC1hbmNob3I6bWlkZGxlO2ZvbnQtc2l6ZToxNnB4Ij5Nb2RlbCBSb3V0ZXI8L3RleHQ+PC9nPjxnIGNsYXNzPSJabkp2Ym5ScFpYST0iPjxnIGNsYXNzPSJzaGFwZSIgPjxyZWN0IHg9IjEyLjAwMDAwMCIgeT0iNDExLjAwMDAwMCIgd2lkdGg9IjE4Mi4wMDAwMDAiIGhlaWdodD0iOTguMDAwMDAwIiBzdHJva2U9IiMwRDMyQjIiIGZpbGw9IiNmZWUyZTIiIGNsYXNzPSIgc3Ryb2tlLUIxIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiAvPjwvZz48dGV4dCB4PSIxMDMuMDAwMDAwIiB5PSI0NDkuNTAwMDAwIiBmaWxsPSIjMEEwRjI1IiBjbGFzcz0idGV4dC1ib2xkIGZpbGwtTjEiIHN0eWxlPSJ0ZXh0LWFuY2hvcjptaWRkbGU7Zm9udC1zaXplOjE2cHgiPjx0c3BhbiB4PSIxMDMuMDAwMDAwIiBkeT0iMC4wMDAwMDAiPkZyb250aWVyIE1vZGVsPC90c3Bhbj48dHNwYW4geD0iMTAzLjAwMDAwMCIgZHk9IjE3LjY2NjY2NyI+KEdQVC00LCBPcHVzKTwvdHNwYW4+PHRzcGFuIHg9IjEwMy4wMDAwMDAiIGR5PSIxNy42NjY2NjciPkNvbXBsZXggcmVhc29uaW5nPC90c3Bhbj48L3RleHQ+PC9nPjxnIGNsYXNzPSJiV2xrZEdsbGNnPT0iPjxnIGNsYXNzPSJzaGFwZSIgPjxyZWN0IHg9IjIxNC4wMDAwMDAiIHk9IjQxMS4wMDAwMDAiIHdpZHRoPSIxNjMuMDAwMDAwIiBoZWlnaHQ9Ijk4LjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSIjZmVmOWMzIiBjbGFzcz0iIHN0cm9rZS1CMSIgc3R5bGU9InN0cm9rZS13aWR0aDoyOyIgLz48L2c+PHRleHQgeD0iMjk1LjUwMDAwMCIgeT0iNDQ5LjUwMDAwMCIgZmlsbD0iIzBBMEYyNSIgY2xhc3M9InRleHQtYm9sZCBmaWxsLU4xIiBzdHlsZT0idGV4dC1hbmNob3I6bWlkZGxlO2ZvbnQtc2l6ZToxNnB4Ij48dHNwYW4geD0iMjk1LjUwMDAwMCIgZHk9IjAuMDAwMDAwIj5NaWQtdGllciBNb2RlbDwvdHNwYW4+PHRzcGFuIHg9IjI5NS41MDAwMDAiIGR5PSIxNy42NjY2NjciPihHUFQtNG8tbWluaSk8L3RzcGFuPjx0c3BhbiB4PSIyOTUuNTAwMDAwIiBkeT0iMTcuNjY2NjY3Ij5TdHJ1Y3R1cmVkIHRhc2tzPC90c3Bhbj48L3RleHQ+PC9nPjxnIGNsYXNzPSJjMjFoYkd3PSI+PGcgY2xhc3M9InNoYXBlIiA+PHJlY3QgeD0iMzk3LjAwMDAwMCIgeT0iNDExLjAwMDAwMCIgd2lkdGg9IjE5Mi4wMDAwMDAiIGhlaWdodD0iODIuMDAwMDAwIiBzdHJva2U9IiMwRDMyQjIiIGZpbGw9IiNkY2ZjZTciIGNsYXNzPSIgc3Ryb2tlLUIxIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiAvPjwvZz48dGV4dCB4PSI0OTMuMDAwMDAwIiB5PSI0NDkuNTAwMDAwIiBmaWxsPSIjMEEwRjI1IiBjbGFzcz0idGV4dC1ib2xkIGZpbGwtTjEiIHN0eWxlPSJ0ZXh0LWFuY2hvcjptaWRkbGU7Zm9udC1zaXplOjE2cHgiPjx0c3BhbiB4PSI0OTMuMDAwMDAwIiBkeT0iMC4wMDAwMDAiPlNtYWxsIE1vZGVsPC90c3Bhbj48dHNwYW4geD0iNDkzLjAwMDAwMCIgZHk9IjE4LjUwMDAwMCI+SGlnaC12b2x1bWUsIHNpbXBsZTwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0iS0hSaGMyc2dMU1puZERzZ2NtOTFkR1Z5S1Zzd1hRPT0iPjxtYXJrZXIgaWQ9Im1rLWQyLTU4MDc1NjU1Ny0zNDg4Mzc4MTM0IiBtYXJrZXJXaWR0aD0iMTAuMDAwMDAwIiBtYXJrZXJIZWlnaHQ9IjEyLjAwMDAwMCIgcmVmWD0iNy4wMDAwMDAiIHJlZlk9IjYuMDAwMDAwIiB2aWV3Qm94PSIwLjAwMDAwMCAwLjAwMDAwMCAxMC4wMDAwMDAgMTIuMDAwMDAwIiBvcmllbnQ9ImF1dG8iIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+IDxwb2x5Z29uIHBvaW50cz0iMC4wMDAwMDAsMC4wMDAwMDAgMTAuMDAwMDAwLDYuMDAwMDAwIDAuMDAwMDAwLDEyLjAwMDAwMCIgZmlsbD0iIzBEMzJCMiIgY2xhc3M9ImNvbm5lY3Rpb24gZmlsbC1CMSIgc3Ryb2tlLXdpZHRoPSIyIiAvPiA8L21hcmtlcj48cGF0aCBkPSJNIDI5NS4wMjg1NjkgNzkuOTk5Nzk2IEwgMjk1Ljk0Mjg2MyAxNDQuMDAwNDA4IiBzdHJva2U9IiMwRDMyQjIiIGZpbGw9Im5vbmUiIGNsYXNzPSJjb25uZWN0aW9uIHN0cm9rZS1CMSIgc3R5bGU9InN0cm9rZS13aWR0aDoyOyIgbWFya2VyLWVuZD0idXJsKCNtay1kMi01ODA3NTY1NTctMzQ4ODM3ODEzNCkiIG1hc2s9InVybCgjZDItNTgwNzU2NTU3KSIgLz48L2c+PGcgY2xhc3M9IktISnZkWFJsY2lBdEptZDBPeUJtY205dWRHbGxjaWxiTUYwPSI+PHBhdGggZD0iTSAyNDAuMDE2MTI5IDIxOS45OTk5MzUgTCAyNDAuNDE5MzU3IDI3MC4wMDAzMjUgUyAyNDAuNTAwMDAwIDI4MC4wMDAwMDAgMjMwLjUwMDAwMCAyODAuMDAwMDAwIEwgMTEzLjAwMDAwMCAyODAuMDAwMDAwIFMgMTAzLjAwMDAwMCAyODAuMDAwMDAwIDEwMy4wMDAwMDAgMjkwLjAwMDAwMCBMIDEwMy4wMDAwMDAgNDA3LjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSJub25lIiBjbGFzcz0iY29ubmVjdGlvbiBzdHJva2UtQjEiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIG1hcmtlci1lbmQ9InVybCgjbWstZDItNTgwNzU2NTU3LTM0ODgzNzgxMzQpIiBtYXNrPSJ1cmwoI2QyLTU4MDc1NjU1NykiIC8+PHRleHQgeD0iMTM3LjUwMDAwMCIgeT0iMjg2LjAwMDAwMCIgZmlsbD0iIzY3NkM3RSIgY2xhc3M9InRleHQtaXRhbGljIGZpbGwtTjIiIHN0eWxlPSJ0ZXh0LWFuY2hvcjptaWRkbGU7Zm9udC1zaXplOjE2cHgiPk5lZWRzIHJlYXNvbmluZzwvdGV4dD48L2c+PGcgY2xhc3M9IktISnZkWFJsY2lBdEptZDBPeUJ0YVdSMGFXVnlLVnN3WFE9PSI+PHBhdGggZD0iTSAyOTUuOTg4MzA0IDI0MS45OTk5NjYgTCAyOTUuMDIzMzkxIDQwNy4wMDAwNjgiIHN0cm9rZT0iIzBEMzJCMiIgZmlsbD0ibm9uZSIgY2xhc3M9ImNvbm5lY3Rpb24gc3Ryb2tlLUIxIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiBtYXJrZXItZW5kPSJ1cmwoI21rLWQyLTU4MDc1NjU1Ny0zNDg4Mzc4MTM0KSIgbWFzaz0idXJsKCNkMi01ODA3NTY1NTcpIiAvPjx0ZXh0IHg9IjI5Ni4wMDAwMDAiIHk9IjMzMS4wMDAwMDAiIGZpbGw9IiM2NzZDN0UiIGNsYXNzPSJ0ZXh0LWl0YWxpYyBmaWxsLU4yIiBzdHlsZT0idGV4dC1hbmNob3I6bWlkZGxlO2ZvbnQtc2l6ZToxNnB4Ij5OZWVkcyBzdHJ1Y3R1cmU8L3RleHQ+PC9nPjxnIGNsYXNzPSJLSEp2ZFhSbGNpQXRKbWQwT3lCemJXRnNiQ2xiTUYwPSI+PHBhdGggZD0iTSAzNTAuMDE2MTI5IDIxOS45OTk5MzUgTCAzNTAuNDE5MzU3IDI3MC4wMDAzMjUgUyAzNTAuNTAwMDAwIDI4MC4wMDAwMDAgMzYwLjUwMDAwMCAyODAuMDAwMDAwIEwgNDgzLjAwMDAwMCAyODAuMDAwMDAwIFMgNDkzLjAwMDAwMCAyODAuMDAwMDAwIDQ5My4wMDAwMDAgMjkwLjAwMDAwMCBMIDQ5My4wMDAwMDAgNDA3LjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSJub25lIiBjbGFzcz0iY29ubmVjdGlvbiBzdHJva2UtQjEiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIG1hcmtlci1lbmQ9InVybCgjbWstZDItNTgwNzU2NTU3LTM0ODgzNzgxMzQpIiBtYXNrPSJ1cmwoI2QyLTU4MDc1NjU1NykiIC8+PHRleHQgeD0iNDU2LjUwMDAwMCIgeT0iMjg2LjAwMDAwMCIgZmlsbD0iIzY3NkM3RSIgY2xhc3M9InRleHQtaXRhbGljIGZpbGwtTjIiIHN0eWxlPSJ0ZXh0LWFuY2hvcjptaWRkbGU7Zm9udC1zaXplOjE2cHgiPk5lZWRzIHNwZWVkPC90ZXh0PjwvZz48bWFzayBpZD0iZDItNTgwNzU2NTU3IiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSItOSIgeT0iLTkiIHdpZHRoPSI2MTkiIGhlaWdodD0iNTM5Ij4KPHJlY3QgeD0iLTkiIHk9Ii05IiB3aWR0aD0iNjE5IiBoZWlnaHQ9IjUzOSIgZmlsbD0idHJhbnNwYXJlbnQiPjwvcmVjdD4KPHJlY3QgeD0iODEuMDAwMDAwIiB5PSIyNzAuMDAwMDAwIiB3aWR0aD0iMTEzIiBoZWlnaHQ9IjIxIiBmaWxsPSJibGFjayI+PC9yZWN0Pgo8cmVjdCB4PSIyNDIuMDAwMDAwIiB5PSIzMTUuMDAwMDAwIiB3aWR0aD0iMTA4IiBoZWlnaHQ9IjIxIiBmaWxsPSJibGFjayI+PC9yZWN0Pgo8cmVjdCB4PSI0MTMuMDAwMDAwIiB5PSIyNzAuMDAwMDAwIiB3aWR0aD0iODciIGhlaWdodD0iMjEiIGZpbGw9ImJsYWNrIj48L3JlY3Q+CjwvbWFzaz48L3N2Zz48L3N2Zz4K" class="img-fluid" style="width:100.0%"></p>
</section>
<section id="india-needs-this-more-than-anyone" class="level2">
<h2 class="anchored" data-anchor-id="india-needs-this-more-than-anyone">India Needs This More Than Anyone</h2>
<p>This matters disproportionately for Indian AI product companies.</p>
<p>The ARPU constraints are real. When your customers are paying Rs 500-1,500/month, not Rs 5,000-20,000/month, your inference cost per user eats a bigger share of revenue. You can’t afford to run everything through Opus. You need to be surgical about where you spend on model capability.</p>
<p>The arbitrage is bigger here. Indian engineering teams are already good at cost optimization. Cloud cost management, infrastructure efficiency, resource utilization — these are native skills. Model routing is the same discipline applied to AI.</p>
<p>The companies building AI products in India that figure out model portfolios early will have a structural advantage. Not because they’re smarter. Because their margin constraints forced them to solve the problem first.</p>
</section>
<section id="what-i-dont-know-yet" class="level2">
<h2 class="anchored" data-anchor-id="what-i-dont-know-yet">What I Don’t Know Yet</h2>
<p>I don’t have a clean answer for how to build the routing logic itself. Do you hardcode rules? Do you train a classifier? Do you use an LLM to route to other LLMs? Each approach has tradeoffs.</p>
<p>Hardcoded rules are brittle but predictable. A classifier adds complexity but scales better. Using an LLM as a router adds latency and cost but might handle edge cases better.</p>
<p>We’re still experimenting. The right answer probably depends on your volume, your task diversity, and how much you’re willing to invest in routing infrastructure.</p>
<p>The other open question: how do you measure quality degradation when you switch models? User complaints are a lagging indicator. You need leading indicators — accuracy on test sets, consistency scores, format compliance rates. Building that instrumentation is non-trivial.</p>
</section>
<section id="the-question-worth-asking" class="level2">
<h2 class="anchored" data-anchor-id="the-question-worth-asking">The Question Worth Asking</h2>
<p>The companies that win the next phase of AI products won’t be the ones with the best models. They’ll be the ones with the best model selection strategy.</p>
<p>The question isn’t “which model should we use?” The question is “which model should we use for this specific task, at this volume, at this quality threshold?”</p>
<p>Most teams aren’t asking that question yet. They will be.</p>


</section>

 ]]></description>
  <category>Agentic Systems</category>
  <category>Product Economics</category>
  <category>AI Infrastructure</category>
  <guid>https://talvinder.com/field-notes/small-model-arbitrage/</guid>
  <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>We Were Running AI Agents Before ‘Agentic’ Became a Buzzword</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/build-logs/multi-agent-before-agentic/</link>
  <description><![CDATA[ 





<p>In early 2024, we deployed a multi-agent system for Ostronaut before anyone called it “agentic AI.” We called it “the pipeline.” By late 2024, every vendor deck had “agentic” in the title. The architecture didn’t change. The vocabulary did.</p>
<p>Here’s the pattern that experience revealed: <strong>Agent Debt</strong>. The hidden complexity that accumulates when you treat agents as black boxes instead of understanding their failure modes. It isn’t technical debt. It’s operational blindness. You don’t see it until an agent hallucinates in production, burns through your API budget, or produces output so confidently wrong that users trust it.</p>
<p>Building without frameworks meant hitting every orchestration failure, every context bleed, every runaway cost directly. That’s what taught us what actually matters.</p>
<section id="the-architecture-we-built" class="level2">
<h2 class="anchored" data-anchor-id="the-architecture-we-built">The Architecture We Built</h2>
<p>Ostronaut generates corporate training content — presentations, videos, quizzes, games — from unstructured input. A client uploads a PDF. The system outputs interactive learning formats.</p>
<p>We built agents in four functional groups because the problem naturally decomposed that way:</p>
<table class="caption-top table">
<colgroup>
<col style="width: 42%">
<col style="width: 57%">
</colgroup>
<thead>
<tr class="header">
<th>Agent Type</th>
<th>Responsibility</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Planner agents</td>
<td>Break input into learning objectives, decide format mix</td>
</tr>
<tr class="even">
<td>Structure agents</td>
<td>Design slide sequences, video scripts, quiz flows</td>
</tr>
<tr class="odd">
<td>Content agents</td>
<td>Generate text, voiceovers, visual descriptions</td>
</tr>
<tr class="even">
<td>Validation agents</td>
<td>Check quality gates, flag hallucinations, verify completeness</td>
</tr>
</tbody>
</table>
<p>The planner-worker pattern: one planner agent analyzes the input and creates a generation plan. Worker agents execute tasks from that plan. Validation agents run post-generation checks.</p>
<p>This wasn’t novel architecture. It was obvious once you tried to build the thing. But in early 2024, there was no CrewAI to handle orchestration. No LangGraph to manage state. We wrote the coordination logic ourselves.</p>
<p><strong>What that meant in practice:</strong></p>
<p>Context management was manual. Each agent needed the right slice of information: not too much (cost), not too little (hallucination). We built a context router that decided what each agent could see based on its task. It broke constantly. An agent would reference information from a previous step that wasn’t in its context window. Output would be incoherent.</p>
<p>Tool-calling was brittle. Agents needed to invoke APIs for image generation, video rendering, database writes. Early LLM tool-calling was unreliable. An agent would call the wrong API, pass malformed parameters, or retry indefinitely on failure. We added a validation layer that parsed tool calls before execution. That caught 30% of bad calls.</p>
<p>Cost control was reactive. We didn’t know what “normal” token usage looked like for a multi-agent pipeline. First month in production, we burned through our OpenAI budget in 2 weeks. The problem: redundant context. Multiple agents were processing the same source material because we hadn’t optimized context sharing. We added a caching layer. Cost dropped 40%.</p>
</section>
<section id="the-quality-crisis" class="level2">
<h2 class="anchored" data-anchor-id="the-quality-crisis">The Quality Crisis</h2>
<p>Month 4, we hit the ceiling.</p>
<p>A healthcare client used Ostronaut to generate training for a clinical health program. The system produced a quiz. One question asked: “What is the recommended daily caloric deficit for healthy weight loss?” The agent-generated answer: “1000-1200 calories.”</p>
<p>That’s dangerously high for most people. The correct range is 500-750 calories.</p>
<p>The agent didn’t hallucinate randomly. It pulled from a source document that mentioned 1000-1200 as an <em>upper bound</em> for specific cases. The agent extracted the number without the qualifier. The validation agent didn’t flag it because it checked for factual consistency with the source, not medical safety.</p>
<p>We caught it in QA. But it revealed the core problem: <strong>agents optimize for coherence, not correctness</strong>. They will confidently generate plausible-but-wrong output if your validation layer doesn’t encode domain constraints.</p>
<p>This is the failure mode that no prompt tuning fixes. You can instruct the model to “be accurate” as many times as you want. It will still extract numbers from context and strip their qualifiers, because that’s what extracting the salient point looks like to the model.</p>
<p><strong>What we changed:</strong></p>
<p>Built domain-specific validation gates. For healthcare content, we added rules: flag any caloric recommendation above X, flag any medication dosage, flag any symptom-diagnosis claim. Not LLM-based validation. Rule-based checks that ran before content went to the client.</p>
<p>Added confidence scoring. Each agent outputs a confidence score for its generation. Low-confidence outputs go to human review. The scoring isn’t sophisticated (token probability and context match), but it works. 15% of generations now route to human QA. That’s acceptable.</p>
<p>Switched to template + generative hybrid. For high-risk content types (medical, financial, legal), we don’t generate from scratch. We use templates with generative fill-ins. Reduces creative output, increases safety. Clients accepted the trade-off.</p>
</section>
<section id="what-we-got-wrong" class="level2">
<h2 class="anchored" data-anchor-id="what-we-got-wrong">What We Got Wrong</h2>
<p><strong>Universal reasoning engine.</strong> We initially tried to build one planner agent that could handle all content types. A presentation has different structural constraints than a video. A quiz has different validation rules than a game. We split the planner into format-specific planners. That added agents but improved output quality significantly.</p>
<p><strong>LLM-as-judge for validation.</strong> Early on, we used an LLM to validate other LLMs’ output. “Does this quiz question make sense? Is this slide coherent?” That’s circular. The validator had the same failure modes as the generator. We moved to rule-based validation for anything safety-critical. LLMs still validate style and tone. They don’t validate facts. This failure mode is documented in more detail in <a href="../../build-logs/llm-judge-india-failure/index.html">why LLM-as-judge stacks fail for Indian markets</a> — the underlying issue is the same regardless of geography.</p>
<p><strong>Centralized orchestration.</strong> We built one orchestrator that managed all agents. It became a bottleneck. Every new feature required changing the orchestrator. We should have built federated orchestration, where each agent cluster (planner, worker, validator) manages its own coordination. We haven’t refactored this yet. It’s still painful.</p>
</section>
<section id="then-vs.-now" class="level2">
<h2 class="anchored" data-anchor-id="then-vs.-now">Then vs.&nbsp;Now</h2>
<p>If we built Ostronaut today with 2025 tooling, here’s what would be easier:</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>What We Built by Hand</th>
<th>What Exists Now</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Context routing logic</td>
<td>LangGraph state management</td>
</tr>
<tr class="even">
<td>Tool-call validation layer</td>
<td>Built-in tool schemas in GPT-4</td>
</tr>
<tr class="odd">
<td>Agent orchestration</td>
<td>CrewAI, n8n workflows</td>
</tr>
<tr class="even">
<td>Retry and error handling</td>
<td>Framework-level retry policies</td>
</tr>
</tbody>
</table>
<p><strong>What’s still hard:</strong></p>
<p>Domain-specific validation. No framework gives you medical safety checks or financial compliance rules. You build that yourself.</p>
<p>Cost optimization. Frameworks don’t tell you which agents are burning tokens unnecessarily. You need observability and profiling. This is the same problem <a href="../../field-notes/indian-saas-agent-reliability/index.html">Indian SaaS companies are well-positioned to solve</a> — twenty years of optimizing for constrained infrastructure builds exactly this instinct.</p>
<p>Failure mode discovery. Agents fail in creative ways. A framework might handle retries, but it won’t tell you <em>why</em> an agent is producing inconsistent output. You learn that by watching production traffic.</p>
<p><strong>The real difference:</strong> In 2024, we had to understand agent internals to build anything reliable. In 2025, you can deploy agents without understanding them. That’s progress. But it creates Agent Debt.</p>
</section>
<section id="the-falsifiable-claim" class="level2">
<h2 class="anchored" data-anchor-id="the-falsifiable-claim">The Falsifiable Claim</h2>
<p>Teams that deploy agent systems without understanding planner-worker coordination, context boundaries, and validation layers will hit a quality ceiling within 3-6 months that no amount of prompt tuning will fix.</p>
<p>The ceiling shows up as:</p>
<ul>
<li>Inconsistent output quality (works 80% of the time, fails unpredictably)</li>
<li>Cost spirals (agents making redundant API calls, over-generating)</li>
<li>User trust erosion (one bad generation destroys confidence in 10 good ones)</li>
</ul>
<p>This isn’t a prediction. It’s a pattern I’ve watched repeat across every team that reached out after deploying agents without validation gates. The vendors selling “agentic platforms” are solving orchestration and deployment. They’re not solving validation, cost control, or failure mode discovery. Those are still your problem.</p>
<p>This dynamic connects to something broader happening in <a href="../../frameworks/agentware/index.html">the shift from software to agentware</a> — as the abstraction layer rises, the hidden complexity doesn’t disappear. It concentrates at the failure modes the frameworks don’t cover.</p>
</section>
<section id="the-question-worth-asking" class="level2">
<h2 class="anchored" data-anchor-id="the-question-worth-asking">The Question Worth Asking</h2>
<p>If you’re deploying agents today, ask this: <strong>Can you explain why an agent made a specific decision?</strong></p>
<p>Not “what did it output?” but “why did it choose this approach over alternatives?”</p>
<p>If the answer is “the LLM decided,” you have Agent Debt. You’re trusting a black box. That works until it doesn’t.</p>
<p>The teams that will build reliable agent systems aren’t the ones using the fanciest frameworks. They’re the ones who understand what happens when context bleeds between agents, when a planner makes a bad decomposition, when a validator misses a hallucination.</p>
<p>We learned that by building without frameworks. You can learn it faster now — but only if you look under the hood.</p>


<!-- -->

</section>

 ]]></description>
  <category>AI Engineering</category>
  <category>Agentic Systems</category>
  <category>Build Logs</category>
  <guid>https://talvinder.com/build-logs/multi-agent-before-agentic/</guid>
  <pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>The Pass@k Trap: Why Running Your AI Agent 3 Times Makes Answers Worse</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/field-notes/consensus-is-not-verification/</link>
  <description><![CDATA[ 





<p>Pass@k is the most popular reliability pattern in production agent systems right now. Run the same task k times, take a majority vote on the output, ship the consensus answer. It works beautifully for code generation — a function either passes the test suite or it doesn’t. The objective verification is external to the agents.</p>
<p>For factual accuracy, the pattern collapses. And most teams deploying it haven’t figured out why yet.</p>
<p>The failure is structural, not probabilistic. Consensus voting assumes that errors are independent and randomly distributed. If Agent A hallucinates, Agent B probably won’t hallucinate the same thing. With enough agents, truth wins by majority. This assumption holds for coding tasks because the test suite is the arbiter. It does not hold for factual claims because there is no test suite for truth.</p>
<section id="three-failure-modes" class="level2">
<h2 class="anchored" data-anchor-id="three-failure-modes">Three failure modes</h2>
<p><strong>Correlated hallucination.</strong> LLMs trained on similar data hallucinate in similar ways. Ask three instances of GPT-4o whether a specific paper exists, and if the title sounds plausible, all three will confidently confirm it. The errors aren’t independent — they’re correlated by training distribution. Majority vote amplifies the shared bias instead of cancelling it.</p>
<p>This is not a theoretical concern. Research from MIT and Google DeepMind has shown that Pass@k reliability for factual tasks degrades rather than improves as k increases, precisely because the error correlation exceeds the independence assumption. According to a 2024 study by Huang et al., LLM hallucination rates on factual recall tasks remain at 15-25% even with state-of-the-art models — and those errors are correlated across model families sharing similar training distributions. More agents, worse answers.</p>
<p><strong>The popularity trap.</strong> Consensus selects for the most common answer, not the most accurate one. In domains where the popular understanding is wrong — emerging science, contrarian market analysis, novel technical approaches — consensus voting systematically suppresses correct minority positions.</p>
<p>Three agents asked whether a particular drug interaction is dangerous will converge on whatever the training data’s majority position is. If the latest research contradicts the common understanding, the consensus will be confidently, democratically wrong.</p>
<p><strong>Strategic ambiguity.</strong> When agents are optimized for agreement (as many multi-agent debate frameworks encourage), they learn to hedge toward safe, middle-ground positions. Not because the middle ground is true, but because it minimizes disagreement. The agents aren’t lying — they’re conflict-averse. The output reads as measured and reasonable. It’s also systematically biased toward conventional wisdom.</p>
</section>
<section id="why-this-matters-now" class="level2">
<h2 class="anchored" data-anchor-id="why-this-matters-now">Why this matters now</h2>
<p>The “just run it three times” pattern is spreading fast. Every agentic framework has a retry-and-vote mechanism. LangChain, CrewAI, AutoGen — all support multi-agent voting as a reliability strategy. The assumption that consensus equals reliability is baked into the tooling. As of 2025, over 70% of multi-agent frameworks include a voting or consensus mechanism as a default reliability pattern.</p>
<p>Production systems using this pattern for anything beyond code generation are carrying unquantified risk. Customer-facing chatbots, research assistants, medical information systems, financial analysis tools — all domains where correlated hallucination is more dangerous than a single wrong answer, because the consensus gives the appearance of validation.</p>
<table class="caption-top table">
<colgroup>
<col style="width: 35%">
<col style="width: 18%">
<col style="width: 18%">
<col style="width: 28%">
</colgroup>
<thead>
<tr class="header">
<th>Reliability strategy</th>
<th>Works for</th>
<th>Fails for</th>
<th>Cost multiplier</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Pass@k consensus</td>
<td>Code generation (test suite verifies)</td>
<td>Factual claims, reasoning</td>
<td>3-5x compute</td>
</tr>
<tr class="even">
<td>Adversarial debate</td>
<td>Reasoning chains, logic errors</td>
<td>Shared knowledge gaps</td>
<td>2-3x compute</td>
</tr>
<tr class="odd">
<td>External anchoring (RAG verification)</td>
<td>Factual claims with source corpus</td>
<td>Novel analysis, opinion</td>
<td>1.5x compute + corpus maintenance</td>
</tr>
<tr class="even">
<td>Confidence-weighted routing</td>
<td>Domain-specific accuracy</td>
<td>Cold-start domains</td>
<td>1x compute + calibration data</td>
</tr>
</tbody>
</table>
</section>
<section id="what-actually-works" class="level2">
<h2 class="anchored" data-anchor-id="what-actually-works">What actually works</h2>
<p>The fix is not more agents or better prompts. It’s structural.</p>
<p><strong>Separate generation from verification.</strong> The agent that produces the answer must not be the same agent (or same architecture) that verifies it. Verification requires a different model, different training data, or — ideally — a non-LLM check against a ground-truth source. At Ostronaut, our validation agents use rule-based scoring with deterministic rubrics, not LLM-as-judge. The quality gate is independent of the generation pipeline.</p>
<p><strong>Adversarial framing over cooperative framing.</strong> Multi-agent debate works better when agents are explicitly tasked with finding flaws in each other’s outputs rather than converging on agreement. The incentive must be to disprove, not to confirm. This is the opposite of how most consensus systems are designed.</p>
<p><strong>Confidence-weighted routing.</strong> Instead of majority vote, weight each agent’s contribution by its calibrated confidence on that specific task type. An agent that is well-calibrated on medical queries but poorly calibrated on legal queries should have different voting weights in each domain. This requires per-domain calibration data, which most teams don’t collect.</p>
<p><strong>External anchoring.</strong> For factual claims, the gold standard is retrieval-augmented verification — check the claim against a curated, trustworthy source. Not RAG for generation (which has its own problems), but RAG specifically for post-generation verification. The verification retrieval corpus should be smaller and higher-quality than the generation corpus.</p>
</section>
<section id="the-pattern-that-misled-us" class="level2">
<h2 class="anchored" data-anchor-id="the-pattern-that-misled-us">The pattern that misled us</h2>
<p>The success of ensemble methods in machine learning created an intuition that more models = more reliability. In classical ML, this is largely true — bagging and boosting work because the base models have uncorrelated errors on well-defined features.</p>
<p>LLMs break this assumption. The base models share training data, architecture families, and optimization objectives. Their errors are correlated by construction. Treating them as independent voters is a category error borrowed from a domain where the independence assumption actually held.</p>
<p>I made this mistake early. When we built the multi-agent system, I assumed that running the content generation through multiple agents and selecting the best output would improve reliability. It didn’t. The agents agreed on the wrong things more often than they disagreed on the right things. We got reliability only after we separated the generation and verification functions entirely and made the verification independent of the generation architecture.</p>
</section>
<section id="the-open-question" class="level2">
<h2 class="anchored" data-anchor-id="the-open-question">The open question</h2>
<p>If consensus doesn’t work for truthfulness, what’s the right reliability primitive for multi-agent systems operating on factual domains?</p>
<p>Adversarial verification is better than consensus, but it’s expensive — you’re paying for agents whose job is to destroy, not create. External anchoring works but requires maintaining a ground-truth corpus, which is itself a maintenance burden that scales with domain breadth.</p>
<p>The field is converging on hybrid approaches — consensus for subjective quality, external verification for factual claims, adversarial debate for reasoning chains. But nobody has a clean, general-purpose pattern yet.</p>
<p>The teams that figure this out first will have a genuine architectural advantage. Not because their models are better, but because their reliability infrastructure is honest about what consensus can and cannot verify.</p>
<div class="schema-faq" style="display:none;">
<p>[{“q”:“Does running an AI agent multiple times improve accuracy?”,“a”:“For code generation with test suites, yes — Pass@k improves reliability because verification is external. For factual accuracy, no — LLM errors are correlated by training data, so consensus voting amplifies shared hallucinations rather than cancelling them.”},{“q”:“What is the Pass@k pattern in multi-agent AI systems?”,“a”:“Pass@k runs the same task k times across multiple agents and selects the majority answer. It works well for code generation but degrades factual accuracy because LLM hallucination errors are correlated, not independent.”},{“q”:“How do you verify AI agent output for factual accuracy?”,“a”:“Separate generation from verification: use a different model or architecture for checking, use retrieval-augmented verification against a curated source corpus, or use adversarial framing where agents are tasked with finding flaws rather than agreeing.”}]</p>
</div>


</section>

 ]]></description>
  <category>Agentic Systems</category>
  <category>Production AI</category>
  <category>Agentic Architecture</category>
  <guid>https://talvinder.com/field-notes/consensus-is-not-verification/</guid>
  <pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>AI Is Making Your Team Slower — The Math Your CEO Won’t Show You</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/build-logs/ai-speed-lie-team-velocity/</link>
  <description><![CDATA[ 





<p>Every company measuring AI productivity is counting the wrong thing.</p>
<p>They’re measuring output volume: PRs merged, lines written, tickets closed. They’re not measuring the cost of what ships: the review burden, the debugging time, the incidents caused by code nobody understood before it hit production.</p>
<p>When you count both sides, the math doesn’t work the way your CEO’s slide deck says it does.</p>
<section id="the-evidence-is-piling-up" class="level2">
<h2 class="anchored" data-anchor-id="the-evidence-is-piling-up">The Evidence Is Piling Up</h2>
<p>This week, The Pragmatic Engineer <a href="https://newsletter.pragmaticengineer.com/p/are-ai-agents-actually-slowing-us">catalogued what’s actually happening</a> inside companies that went all-in on AI coding agents. The findings aren’t theoretical.</p>
<p>Amazon’s retail engineering team saw a leap in outages caused directly by AI agents. The fix? Requiring senior engineer sign-off on all AI-assisted changes from junior developers. That’s not a productivity gain. That’s adding a bottleneck to compensate for unreliable output.</p>
<p>Anthropic — the company that builds Claude — ships over 80% of its production code with AI. Their flagship website degraded so badly that paying customers noticed before anyone internally did. The irony writes itself.</p>
<p>Meta and Uber are tracking AI token usage in performance reviews. Engineers who don’t use AI tools enough look unproductive. Engineers who use them indiscriminately look great on paper — until the bugs ship.</p>
</section>
<section id="the-three-taxes-youre-not-counting" class="level2">
<h2 class="anchored" data-anchor-id="the-three-taxes-youre-not-counting">The Three Taxes You’re Not Counting</h2>
<p>This is where the math breaks: <strong>teams that measure AI productivity only by output volume will see their incident rate and mean-time-to-resolve increase by 30% or more within 12 months</strong>, compared to teams that gate AI output with validation layers.</p>
<p>The mechanism has three parts.</p>
<section id="the-review-tax" class="level3">
<h3 class="anchored" data-anchor-id="the-review-tax">The Review Tax</h3>
<p>Every AI-generated PR still needs human review. But AI-generated code is harder to review than human-written code, because the reviewer can’t infer intent from the author’s history.</p>
<p>With human code, you know the developer’s context: what they were trying to solve, what trade-offs they considered, what they tested. With AI code, you’re reverse-engineering intent from output. That’s slower, not faster.</p>
<p>Amazon learned this the hard way. Junior engineers using AI agents shipped code that looked correct — clean formatting, reasonable variable names, passing tests — but had subtle logical errors that only surfaced in production. Reviewers couldn’t distinguish “AI wrote this well” from “AI wrote this plausibly.”</p>
</section>
<section id="the-refactoring-freeze" class="level3">
<h3 class="anchored" data-anchor-id="the-refactoring-freeze">The Refactoring Freeze</h3>
<p>Dax Reed, who built OpenCode, points out something every experienced engineer recognises: AI agents discourage refactoring. When code is cheap to generate, nobody wants to clean it up. Why spend an afternoon restructuring a module when the agent writes a new one in ten minutes?</p>
<p>The result is an expanding codebase where nothing gets simplified, patterns don’t converge, and cognitive load increases week over week.</p>
<p>This is the velocity trap. Short-term speed, long-term slowdown. Sentry’s CTO observed the same pattern: AI removes the barrier to getting started, which sounds great until you realise that “getting started” was never the bottleneck. The bottleneck was maintaining, debugging, and evolving what you built. AI makes the first part trivially easy and the second part measurably harder.</p>
</section>
<section id="the-incentive-poison" class="level3">
<h3 class="anchored" data-anchor-id="the-incentive-poison">The Incentive Poison</h3>
<p>When companies tie AI token usage to performance reviews, they’re telling engineers: “Use the tool, regardless of whether it helps.”</p>
<p>This is the corporate equivalent of measuring developer productivity by lines of code written. It rewards volume, punishes judgment, and guarantees that the engineers who are most careful about code quality look the least productive.</p>
<p>Engineers who know the AI output is mediocre ship it anyway, because slowing down to rewrite it makes their metrics look bad. The codebase degrades. The team slows down. The metrics still look great, because the metrics are measuring the wrong thing.</p>
</section>
</section>
<section id="what-this-looks-like-up-close" class="level2">
<h2 class="anchored" data-anchor-id="what-this-looks-like-up-close">What This Looks Like Up Close</h2>
<p>I’ve seen this pattern building multi-agent systems at Ostronaut. We generate training content — presentations, videos, quizzes. Early on, the agents were fast. They produced a complete training module in minutes. The output looked good. Formatting was clean. Structure was reasonable.</p>
<p>It was also wrong about 15-20% of the time. Not obviously wrong — subtly wrong. A slide deck where the concept progression didn’t build properly. A quiz where the distractors were too close to the correct answer. A video script that repeated a key point in slightly different words, creating confusion instead of reinforcement.</p>
<p>We didn’t fix this with better prompts. We fixed it by building a validation layer — automated checks that ran after every generation step, before anything reached a human reviewer. Content validation caught conceptual errors. Design validation caught structural problems. Integration validation caught mismatches between components.</p>
<p>That validation layer was harder to build than the generation layer. It took longer. It required more engineering judgment. And it’s the only reason the system works reliably.</p>
<p>The companies in Gergely’s article skipped this step. They deployed AI agents without validation gates, measured the output volume, and declared victory. Then the incidents started.</p>
</section>
<section id="why-better-models-wont-save-you" class="level2">
<h2 class="anchored" data-anchor-id="why-better-models-wont-save-you">Why Better Models Won’t Save You</h2>
<p>I used to think the answer was better models. If GPT-4 produces code that’s 80% reliable, GPT-5 will be 95% reliable, and eventually you won’t need validation.</p>
<p>That was wrong for two reasons.</p>
<p>First, the remaining failures are the expensive ones. The bugs that survive better models are the subtle, context-dependent bugs that cause production incidents. Better models don’t make validation cheaper — they make it more necessary, because what gets through is harder to catch.</p>
<p>Second, the validation layer isn’t just catching bugs. It’s encoding team knowledge. Our quality checks embed years of domain expertise — what makes a good slide progression, what makes a quiz effective, what makes a video script clear. That knowledge doesn’t exist in the model. It exists in the team. The validation layer is how you transfer institutional knowledge into the AI pipeline.</p>
<p>Companies that skip this aren’t just accepting more bugs. They’re disconnecting their AI pipeline from their institutional knowledge.</p>
</section>
<section id="what-to-measure-instead" class="level2">
<h2 class="anchored" data-anchor-id="what-to-measure-instead">What to Measure Instead</h2>
<table class="caption-top table">
<thead>
<tr class="header">
<th>What Leadership Measures</th>
<th>What Actually Happens</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>PRs merged per week (+52%)</td>
<td>Review time per PR (+40%)</td>
</tr>
<tr class="even">
<td>Lines of code written (3x)</td>
<td>Lines nobody understands (3x)</td>
</tr>
<tr class="odd">
<td>Time to first commit (-60%)</td>
<td>Time to resolve incidents (+35%)</td>
</tr>
<tr class="even">
<td>Token usage per engineer</td>
<td>Refactoring frequency (-70%)</td>
</tr>
</tbody>
</table>
<p>If you’re measuring AI impact, stop counting PRs. Start counting:</p>
<ol type="1">
<li><strong>Incident rate per AI-assisted commit</strong> versus human-only commits</li>
<li><strong>Review time per PR</strong> — is it actually decreasing, or are reviewers rubber-stamping?</li>
<li><strong>Refactoring frequency</strong> — is your team still simplifying code, or just adding to it?</li>
<li><strong>Mean-time-to-resolve</strong> for bugs in AI-generated code versus human-written</li>
</ol>
<p>The companies that will win with AI coding agents are not the ones that deploy them fastest. They’re the ones that build the validation layer first and measure what matters — not how fast code is written, but how fast <em>correct</em> code ships and stays correct in production.</p>
<p>Speed without verification isn’t velocity. It’s technical debt with a marketing budget.</p>
<div class="schema-faq" style="display:none;">
<p>[{“q”:“Does AI coding actually make development teams slower?”,“a”:“Yes, if you measure both sides. Teams that count only output volume — PRs merged, lines written, tickets closed — miss the downstream costs: longer review times, higher incident rates, and refactoring paralysis. Amazon’s retail engineering saw increased outages from AI agents and added senior sign-off requirements. Teams that gate AI output with validation layers avoid this productivity trap.”},{“q”:“What is the review tax in AI-assisted coding?”,“a”:“The review tax is the hidden cost of reviewing AI-generated code. Unlike human-written code where reviewers can infer intent from the author’s context and history, AI code requires reverse-engineering intent from output. Amazon engineers found they couldn’t distinguish ‘AI wrote this correctly’ from ‘AI wrote this plausibly’ — leading to subtle production bugs that only surfaced after deployment.”},{“q”:“How should engineering leaders measure AI coding productivity?”,“a”:“Measure incident rate per AI-assisted commit versus human-only commits, review time per PR, refactoring frequency, and mean-time-to-resolve for bugs in AI-generated code. Stop counting PRs merged or lines written. The engineering teams winning with AI coding agents build validation layers first and measure whether correct code ships and stays correct in production.”},{“q”:“Why don’t better AI models solve the production reliability problem?”,“a”:“Better models still fail on the hardest cases — and those are the expensive production incidents. More importantly, the validation layer isn’t just catching bugs. It encodes team knowledge: what makes a good architectural decision, what trade-offs matter, what patterns to avoid. That institutional knowledge doesn’t exist in any model. It exists in your team.”}]</p>
</div>


<!-- -->

</section>

 ]]></description>
  <category>AI Engineering</category>
  <category>Software Engineering</category>
  <category>Engineering Leadership</category>
  <guid>https://talvinder.com/build-logs/ai-speed-lie-team-velocity/</guid>
  <pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Chain-of-Thought Has an Efficiency Tax</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/field-notes/cot-efficiency-tax/</link>
  <description><![CDATA[ 





<p>Your AI agent now “thinks through” problems step-by-step. Your token costs just tripled. Did anyone on your team notice?</p>
<p>Chain-of-thought prompting is the default recommendation for improving LLM output quality. Every tutorial says it. Every framework enables it. And the advice is correct — CoT does improve reasoning on complex tasks. What nobody mentions is the cost.</p>
<p>Every major model provider now ships a reasoning mode — extended thinking, chain-of-thought, “deep research.” These modes generate 3x to 10x more tokens than their standard equivalents for the same task. Those tokens cost money. They add latency. And in most production systems, nobody is measuring whether the quality improvement justifies the spend.</p>
<section id="the-numbers" class="level2">
<h2 class="anchored" data-anchor-id="the-numbers">The numbers</h2>
<p>Here’s what the efficiency tax looks like in practice.</p>
<p>A content generation agent running a standard frontier model averages 1,200 input tokens and 800 output tokens per query. That’s roughly $0.036 per call at current pricing. Switch to the same provider’s reasoning mode, and the same task burns 1,200 input tokens plus 4,000-8,000 thinking tokens plus 1,200 output tokens. Cost per call: $0.12 to $0.22. A 3x to 6x increase.</p>
<p>At 10 queries a day, nobody cares. At 10,000 queries a day, you’ve added $840 to $1,840 in daily costs for a quality improvement you probably haven’t measured.</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>Approach</th>
<th>Tokens per call</th>
<th>Cost per call</th>
<th>Monthly cost at 10K/day</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Direct prompting (standard mode)</td>
<td>~2,000</td>
<td>~$0.036</td>
<td>~$10,800</td>
</tr>
<tr class="even">
<td>Chain-of-thought (standard mode)</td>
<td>~3,500</td>
<td>~$0.055</td>
<td>~$16,500</td>
</tr>
<tr class="odd">
<td>Reasoning mode (extended thinking)</td>
<td>~8,000</td>
<td>~$0.18</td>
<td>~$54,000</td>
</tr>
</tbody>
</table>
<p>That last row is 5x the first row. For many tasks, the output quality difference between row one and row three is negligible.</p>
</section>
<section id="why-teams-dont-measure-this" class="level2">
<h2 class="anchored" data-anchor-id="why-teams-dont-measure-this">Why teams don’t measure this</h2>
<p>Three reasons, all predictable.</p>
<p><strong>Accuracy bias.</strong> Teams optimizing AI systems measure quality metrics — accuracy, coherence, task completion rate. Token efficiency rarely appears on the dashboard. When the reasoning model produces a slightly better answer, that’s visible. The 5x cost increase lives in a billing page nobody checks until month-end.</p>
<p><strong>Scale hiding the problem.</strong> At low volumes, the tax is invisible. A startup running 500 queries a day doesn’t feel the difference between $18 and $90. But costs scale linearly with volume, and the moment you hit product-market fit, the tax becomes your second-largest line item after engineering salaries.</p>
<p><strong>The “just optimize later” fallacy.</strong> This is the same mistake teams make with database queries. Ship first, optimize later. Except “later” usually means “after we’ve built the entire pipeline around the expensive approach and switching costs are enormous.”</p>
</section>
<section id="when-the-tax-is-worth-paying" class="level2">
<h2 class="anchored" data-anchor-id="when-the-tax-is-worth-paying">When the tax is worth paying</h2>
<p>CoT and reasoning models earn their cost in specific situations.</p>
<p><strong>Multi-step logical reasoning.</strong> Tax-return calculations, legal document analysis, complex debugging. Tasks where the intermediate steps actually matter for correctness. The tax is justified because direct prompting fails outright.</p>
<p><strong>Low-volume, high-stakes decisions.</strong> Medical triage recommendations, financial risk assessments, safety-critical systems. When a single wrong answer costs more than a thousand correct ones, pay the tax.</p>
<p><strong>Tasks where you can measure the delta.</strong> If you can run both approaches on the same inputs and quantify the accuracy improvement, you can calculate the break-even. Most teams skip this step.</p>
<p>Where the tax is almost never worth it: classification tasks, structured data extraction, template-based generation, summarization, entity recognition. These tasks work well with direct prompting. CoT adds cost without proportional benefit.</p>
</section>
<section id="the-metric-that-matters" class="level2">
<h2 class="anchored" data-anchor-id="the-metric-that-matters">The metric that matters</h2>
<p>Cost per unit of quality. Not just cost per query, and not just quality per query — the ratio.</p>
<p>Define a quality metric for each task type. Run both approaches on a held-out sample. Calculate cost-per-quality-point for each. If reasoning-mode costs 5x more but only improves quality by 8%, that’s a bad trade. If it costs 3x more and improves quality by 40%, that might be worth it.</p>
<p>This is basic FinOps thinking applied to LLM inference. Cloud cost optimization is a mature discipline — rightsizing instances, reserved capacity, spot pricing. LLM cost optimization is in its infancy. Most teams are running the equivalent of on-demand instances at maximum size for every workload.</p>
</section>
<section id="a-practical-approach" class="level2">
<h2 class="anchored" data-anchor-id="a-practical-approach">A practical approach</h2>
<p>Route by task complexity. Not every request needs to go through the reasoning model. Build a classifier — a cheap, fast one — that scores incoming tasks on complexity. Simple tasks go to the direct model. Complex tasks go to the reasoning model. This is the same pattern as CDN edge routing: serve what you can cheaply at the edge, send the rest to origin.</p>
<p>At Ostronaut, we found that roughly 70% of content generation tasks hit a template fast path — no reasoning needed. The remaining 30% benefit from deeper processing. Routing saves more than optimizing any single model call.</p>
<p>The irony is that the routing classifier itself is a trivial LLM call. A $0.001 classification that saves $0.15 on the main call pays for itself in a single interaction.</p>
</section>
<section id="what-i-dont-track-yet" class="level2">
<h2 class="anchored" data-anchor-id="what-i-dont-track-yet">What I don’t track yet</h2>
<p>Latency cost. The efficiency tax isn’t just financial — reasoning models are slower. Time-to-first-token increases. Total response time increases. For interactive applications, the user experience degradation has a cost that doesn’t show up on any invoice.</p>
<p>I don’t have a clean way to quantify the latency tax in dollar terms. The financial tax is measurable today. The latency tax needs better tooling. If you’re building internal AI platforms, this is the metric to add next.</p>
<p>The teams that measure both — cost efficiency and latency efficiency, per task type — will have a significant operational advantage over the teams that just pick the most powerful model and hope for the best.</p>


</section>

 ]]></description>
  <category>AI Operations</category>
  <category>Production AI</category>
  <category>Cost Optimization</category>
  <guid>https://talvinder.com/field-notes/cot-efficiency-tax/</guid>
  <pubDate>Wed, 18 Mar 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>AI-Generated Code Is Flooding GitHub — Here’s What It Costs You</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/field-notes/github-slopocalypse-trust-tax/</link>
  <description><![CDATA[ 





<p>GitHub’s value was never storage. It was legible history.</p>
<p>Every commit told you who made a decision, why they made it, and what changed. That’s what made open source work at scale—you could trace a bug to a specific human judgment, review the reasoning, fix it. GitHub’s 2025 Octoverse report shows that AI-assisted commits now account for over 40% of new code on the platform. Copilot alone generates 46% of code in files where it’s enabled, according to GitHub’s own metrics.</p>
<p>Now that history is being flooded with AI-generated code, and the entire trust infrastructure is collapsing.</p>
<section id="the-trust-tax" class="level2">
<h2 class="anchored" data-anchor-id="the-trust-tax">The Trust Tax</h2>
<p>The Trust Tax is the additional cognitive and temporal cost developers now pay to verify code provenance before they can use it. Every AI-generated commit adds verification overhead — and that cost is growing faster than AI’s productivity gains.</p>
<p>When GitHub launched, the excitement wasn’t about free hosting. It was about confidence. Git’s original value proposition was perfect historical records. You could pinpoint a commit in space and time and feel confident in the record of code changes in a way that you rarely feel confident about anything in software.</p>
<p>The system assumed human intentionality in every commit. When you saw a change, you knew a human had made a deliberate decision. Maybe it was wrong, but it was <em>legible</em>—you could understand the reasoning, challenge it, fix it.</p>
<p>AI code generation breaks this assumption.</p>
<p>A commit that says “optimized database queries” might mean: a developer profiled the code, identified N+1 queries, rewrote them, and tested the result. Or it might mean: an LLM generated plausible-looking SQL based on a vague prompt, and no one verified it works.</p>
<p>You can’t tell from the commit. You can’t tell from the diff. You have to read the code, understand the context, and verify the claims. Every single time.</p>
</section>
<section id="the-mechanism" class="level2">
<h2 class="anchored" data-anchor-id="the-mechanism">The Mechanism</h2>
<p><strong>Within 18 months, the median time-to-trust for evaluating a new GitHub repository will double for experienced developers, and the variance will increase by an order of magnitude.</strong></p>
<p>Before: You evaluated a repo by checking commit frequency, reading a few key commits, scanning the contributors, maybe looking at issue resolution patterns. Total time: 10-15 minutes for a mid-sized library.</p>
<p>Now: You do all of that, plus: scan for AI-generated patterns (repetitive structure, suspiciously perfect formatting, generic variable names), check if tests actually run, verify that documentation matches implementation, look for signs of copy-paste from LLM output. And even after all that, you’re less confident than you used to be.</p>
<p>The variance increase is worse than the median shift. Some repos will be obviously human (active maintainers, clear decision history, coherent architecture). Some will be obviously slop (generated README, no tests, commit messages that read like ChatGPT). But most will be in the middle—partially AI-assisted, unclear provenance, uncertain quality.</p>
<p>That’s where the tax gets expensive.</p>
</section>
<section id="where-this-is-already-happening" class="level2">
<h2 class="anchored" data-anchor-id="where-this-is-already-happening">Where This Is Already Happening</h2>
<p>JavaScript got hit first. Every hard-fought factoid about framework internals gets buried under LLM-generated tutorials that are 70% correct and 30% hallucinated. The slopocalypse is now accelerating across all languages.</p>
<p>At Zopdev, we’ve started seeing this in infrastructure-as-code repos. Terraform modules that look reasonable at first glance but have subtle bugs—wrong IAM permissions, missing tags, inefficient resource allocation. The modules are clearly AI-generated (the structure is too uniform, the variable names too generic), but someone committed them with a human-sounding message.</p>
<p>The Trust Tax here is expensive: you have to audit every resource definition before you can use it.</p>
<p>The pattern is consistent across domains. AI-generated commits don’t carry human intent. The commit message that says “refactored for clarity” might be hallucinated. The code that looks clean might be untested slop copied from three different StackOverflow answers. The diff that claims to fix a race condition might introduce two new ones.</p>
</section>
<section id="what-i-got-wrong" class="level2">
<h2 class="anchored" data-anchor-id="what-i-got-wrong">What I Got Wrong</h2>
<p>I initially thought the solution was better tooling—automated detection of AI-generated code, reputation systems for contributors, verification badges for human-reviewed repos.</p>
<p>That’s not wrong, but it misses the deeper problem.</p>
<p>The Trust Tax isn’t a tooling problem. It’s an epistemological problem. GitHub’s value was that you could reconstruct intent from history. AI-generated code has no intent. It has a prompt and a probability distribution. You can’t reconstruct reasoning that never happened.</p>
<p>Better tools can reduce the tax, but they can’t eliminate it. You’re always going to pay more to verify machine-generated code than human-written code, because the verification burden shifts from “did this human make a good decision?” to “is this code even coherent?”</p>
</section>
<section id="the-adaptation-pattern" class="level2">
<h2 class="anchored" data-anchor-id="the-adaptation-pattern">The Adaptation Pattern</h2>
<p><img src="https://talvinder.com/field-notes/github-slopocalypse-trust-tax/data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIGRhdGEtZDItdmVyc2lvbj0idjAuNy4xIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0IiB2aWV3Qm94PSIwIDAgOTM4IDU4MyI+PHN2ZyBjbGFzcz0iZDItNDc0MjI5MzE1IGQyLXN2ZyIgd2lkdGg9IjkzOCIgaGVpZ2h0PSI1ODMiIHZpZXdCb3g9Ii05IC05IDkzOCA1ODMiPjxyZWN0IHg9Ii05LjAwMDAwMCIgeT0iLTkuMDAwMDAwIiB3aWR0aD0iOTM4LjAwMDAwMCIgaGVpZ2h0PSI1ODMuMDAwMDAwIiByeD0iMC4wMDAwMDAiIGZpbGw9InRyYW5zcGFyZW50IiBjbGFzcz0iIGZpbGwtTjciIHN0cm9rZS13aWR0aD0iMCIgLz48c3R5bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWwouZDItNDc0MjI5MzE1IC50ZXh0IHsKCWZvbnQtZmFtaWx5OiAiZDItNDc0MjI5MzE1LWZvbnQtcmVndWxhciI7Cn0KQGZvbnQtZmFjZSB7Cglmb250LWZhbWlseTogZDItNDc0MjI5MzE1LWZvbnQtcmVndWxhcjsKCXNyYzogdXJsKCJkYXRhOmFwcGxpY2F0aW9uL2ZvbnQtd29mZjtiYXNlNjQsZDA5R1JnQUJBQUFBQUE1SUFBb0FBQUFBRmN3QUFndUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJQVXk4eUFBQUE5QUFBQUdBQUFBQmdYZC9WbzJOdFlYQUFBQUZVQUFBQWt3QUFBTFlESkFONVoyeDVaZ0FBQWVnQUFBZkZBQUFLZkk5MkxhZG9aV0ZrQUFBSnNBQUFBRFlBQUFBMkc0VWUzMmhvWldFQUFBbm9BQUFBSkFBQUFDUUtoQVhtYUcxMGVBQUFDZ3dBQUFDS0FBQUFrRUl1QjFsc2IyTmhBQUFLbUFBQUFFb0FBQUJLTWxZdi9HMWhlSEFBQUFya0FBQUFJQUFBQUNBQVBBRDJibUZ0WlFBQUN3UUFBQU1qQUFBSUZBYkRWVTF3YjNOMEFBQU9LQUFBQUIwQUFBQWcvOUVBTWdBREFna0JrQUFGQUFBQ2lnSllBQUFBU3dLS0FsZ0FBQUZlQURJQkl3QUFBZ3NGQXdNRUF3SUNCR0FBQXZjQUFBQURBQUFBQUFBQUFBQkJSRUpQQUVBQUlQLy9BdTcvQmdBQUE5Z0JFU0FBQVo4QUFBQUFBZVlDbEFBQUFDQUFBM2ljYk13N1RzSUFISUR4WDIydHI2cjFWZC9haXpnWVhacm9CZ2RnSkdFbWNDRUl6RXlFQVk1Q09NaWZoRER5amQvd1F5S1ZvSkNab2xKSzVXcGZ2djFxL0d2cjZodEdzUDgvR245YU9ub0dFYkdPVGF4aUdZdVl4eXdtTVk3UlRqMVVvbllrbFRtV08zSHF6TGtMaFV0WHJwVnUzTHB6NzBIbDBaTm5MMTY5ZWZmaGt5MEFBQUQvL3dFQUFQLy95QmdlaXdCNG5HeFdiMmdiOS9sL3ZsK2RkWEVrMlQ1THA1TnN5ZExkMlhlV1pFdTJUbmRuUi9JcGxpWEg4VDg1a3YxTDdDVE9MNGtiSi9HU0pRNGtCTnlHa3Y0SmpERkJFeFpZMjVVdGJ3TE51bEpJQjMwek10cDU2NTlRS09zNlJnbDc0UVZhMktwNVk5RDVOTzRrdVRiczFWY2N1dWY1UEo4L3ovZWdBZVlCc0l4dmd3VWFvUmxhZ1FhUUtKYnFZa1dSSjFWSlZYbkdvb3FJSXVmUm4vVVNRZ2NUaEtJUS9abXZNdGR2M0VCSG5zTzN0NzYzNzRYbDVmY1hyMTNUZjdqeFZJK2pUNTRDQmdzQTl1TVNOQUlGNENRbFVSQkUzbXExT0NVbkwvTGtoNEgzQTYzQkZxSTUrS2N2RjcrYzEvNldSdDlmV2xJdkRBNWUwQmR3YWV2Uytqb0FBSUpFWlJPMzQxZkJEOURBQ1lLY1VCUXA3bVpJUWVBNXE1VjJ1ZDFTWEZFWnF4VVZDczlQVEw1UVRCM3o5Ylpsd3RweEtYNVVpNDBIb3VJcCs2RzdLK2Z2RnZxRGlvOGJ2bG9vWE05MGM0bmVPQUJnV0FEQUNWeUNQUVpPaVpMaWJ0cGw1VVVwcnNnSmdlY1g3dDE5L2JVN2N4TlhybHk1TW9GTDkxOTk3UmZaSDZ5dHZXaGlXd0NBQjdoa3pDcFJFclZRTklCWG42T1BjQWthcXM5WmVxR0lBcmkwOWU0QnFMK0huOFVsWXlhSmtweHVOeU1waXVxVUtKNUtLQ3BQV25pTHlMdmROTFd3OUp5ZHNSTjIycjcyelBRZUM1RllVOWNTaElYRUpmMW5YSTdqY2h4YTNMcUV6dldzUk83b2I2TFpPNUdWSHYzSFpnOGZBUG9QTGdGcDlPQmxsdWFwdjN5QW5ueUF4MGRIdHg1V2NSeXViT0lvTGhtYW05eFNFbFhsVXpGL1dxMW9aR1JGSzRaeWtaN1IwSXgyM3E2c25VUFA2OC9tandyQzBUeTZxZDg0dDZZQU5qUkNiNk15dEVFbkFNTVpJcWtKVXlCU05PV2lLZDRRWDR3cnFteUs5bWpvMEk5K1FrVzZ3K1ArSUhkNjMveE1sclJ3aDl5OHhsOC9HYmNmSEo2Wm93SURmTkExNkE1ZE9Lci9ZWjh2bk9FQ0x6ZW5ZcUV1d0ZDb2JLSnY4VG80SVdnaUYzbVNweVNhclBaeW1ZME05VGdyU2J2ZEtNUWRERnJJVEFHeitlNFRwNUluUmxQNVpDNndudyttN2F3L2p0Y2ZIZkdMTDEwdVh0Vnl5d3N6cDdsZ3hjZFUrWWxXTnRGYnFHeHcrYis5VjdkZTYvNnpxZUVWclMvbkRkTXhmMDlPTEk1dys5eWQ3SXc5dFRwVFdFMXhqT0wweE9ZR2lzdCtsK3BuRGQvRktwdm9pL29NVmM3TTRxSXMxY2xTNWUxRy96NTZNWGxTRFd0Qm9wZ2xMYjVKNy81VVlMQkRUQXVqOWhldjU2OW9IVzNGOTdZR0JuMmgzSWp1WTJMRmdjT25BWnY0ZjQvSzRJSEFyZ2xvbDVWa3Q0TmpZVTJxRUROOFhrc3ZxY2VmUVZqL1ZjUGhVVDdaN2cva1AwUkVlbEE2WkI5YXpjK3NhbXRuSGQ3R3FXTTBwYmc2a0RBK2xUZDU2Z0JBYWZ4WmRYZndzaW9uYWp6eEhFMUxORS85ZnlhVE84aUVXMXJiZmRubFpmUnpyV0ZxL0hBam1iWXZUbzNveHdIQUFyMlZJUG9hbGFFZmhtQnEyMFd5c09Nd2kwcTBrUXlYMWNwellsV0RtdWFXdXVhMHkrMnNwWmNUcXYvNTEvd2xnVzMxY2s2UEdKL3RkM1U2N2k5UlROOU1YT1FjclYzOWkzTnpxWXVUNGFGVUpKSWFVa1pucGRoc0U5dlM1cGw0a2swSEJ0MkVyZHNYaURvSVZ6WWlUNGZKaG5TTEhFaE1oaWhidTR2cFVJZDZKMlBvN2JRc3AxS3luTlp2RFFsY0cwRTR3N1FZTmJrcEFLRFA4VHE0ekt6WFBXb2szZlFuVlNoWStLbjQxSUZDVDE5WHNndXZQMXBpWXllUDZ4K2hVRllUdXZRM29GS0JIQUM4Z3g5aUFWZ0FzQUszVnZWbm9iSUpmOFRyMEZ6bHk0eHZUZFQ3MFZDaHFaRWdTZHNldDMxUXhtZTJianNwaERTQ3FHTEMzNkN5VVUyaUpHUDVHTXp1UWtadW40VXNhUWxPUmdiU3pjSjB6OFRCUWs5VXlSWjZZa29XYll6eXNmNmVVS0lPZDBKL28zYlU1MGJsMnR5MUhqdm56cElXZm5wN2NMUFlycmxyL3YwN0trTXp0Ty95Nys2TTB5NDNhazR1cDlQTHlkU1pkUHBNS2owMWxkYW1wMnZaUzYwV1psWlQyZVhpN05tenM4VmxNUGVIaEw1RjVWcjJ2a05udWtvUUdkcTVjMzhZU05sOFpQRlU4c1FBTjhMaGErYjZTSGV5MnNmNG5RRmY5OHVYQzFlMWpyYTVlOGk2YTM4WUdaZlFGL1UrRGJKcWx0ODJzaXBSbHAwWlJ5OFIvb2x3TmVqN1did244M2c3NUI4L09PTHJOb1B1OTBlM3BwRDF1NVRYUGJhSXlyVWJyRHBOYlV0VmlmYU9oZnhNaTkzVkhCanhvbzBqVVdYdkdFSEVOYjEyeC9vcW0rZ21La1BZOUpHb21xdEJUZ2lDR01YYldhNVI3V1k2c0VIVXA0bEZQaFRNUnZyNldLbWR5NFRuODczVHZtNnZFb3hHT3ZyYStXeHZLRzhYZmFxWDdRMTRPV2F2ZzVWRHlYeVFTVGc5WVIvanAyME9WbzJLbVc2enY2ZXlpWEw0SWpBMUgvT3lxa3JtNHRqMjgxZlRRMk9UZTNNM2I3SmhSNGU5eFJXekw0d2hoOVp3NjlhSVh1N3RieVEwMG1iV21xaHNvay9RaHVHN1habWdhbXYxeWRSWU1kSW5KRG1ERjI3U2Z2STRTdWlmWnpVeGd1YjF0c251UGtCZ0IwQy9SUnZnQUpBc08rNW55M3R2elIyek1UYkN4dXc5ZHVoTnRLRi8zVG5HODJPZHlLVzNBWUltQVBSTHRBRmVBRWtWSmFiMm9pcVJERi83L2lISnBwKytNajlzOHpnSW05dVcvTDlYWHA4LzRHaHJJaHdlZTBaL3V1SU11MXhoNThvMy83enM3cUhwQ0hQWm5NbGVpWmw0Mm5mcW82cTdvRFhoaFJhL3ZXV1BxekdrTk50K00zZmE1clVSTnRmZXd6UHZVckhjcDFaaUdEY2tlenZSWC9WL0JNWTRkaXlJSEZ2bHZzbGVZNzl3OEd2MEdIMkdCZUJoQmF6QXc1MjZyK0FlMnFoLzN4UUthTU9Zcy9JN1BBNHFmZ2cyQU1vMGREVThua0RBNHdrRThMamY2K25vOEhqOVJnME9SZEJqZE02bzRaUlpta01QVUVUVEFPQy9BQUFBLy84QkFBRC8veklYTFV3QUFBQUFBUUFBQUFJTGhZSG92clZmRHp6MUFBTUQ2QUFBQUFEWVhhQ2hBQUFBQU4xbUx6YitPdjdiQ0c4RHlBQUFBQU1BQWdBQUFBQUFBQUFCQUFBRDJQN3ZBQUFJbVA0Ni9qb0lid0FCQUFBQUFBQUFBQUFBQUFBQUFBQUFKSGljSE1vaERzSkFGQWJoZVg4RmhxQXJtbVlER0VJb3BvNGdVYmhuQ01zQk9BbVNVM0FQZE5FSWJvQUcwOVF0WWRXTStIVGxTQWNLRk5yUTZreTBFZEhlUkwySUtxbDA0V0FEclJhNGRUUmFzcllQamMycGJXQ2xnTk96SStIRkZ0Y01WNTJkWjN2QzdVWmxUcW5BM3A2TTdjNGs5OHVVSG9mMCtQOFBBQUQvL3dFQUFQLy9VTHNidGdBQUFBQUFMQUFzQUZBQWdBQ2VBS29BdWdEc0FQNEJJZ0ZhQVk0QnZBSHVBaUlDUkFLd0F0SUMzZ0w2QXl3RFRnTjZBNjRENGdRQ0JFSUVhQVNLQktZRTBnVUNCUTRGR2dVd0JUNEFBQUFCQUFBQUpBQ01BQXdBWmdBSEFBRUFBQUFBQUFBQUFBQUFBQUFBQkFBRGVKeWNsTjFPRzFjVWhUOEgyMjFVTlJjVmlzZ05PcGR0bFl6ZENLSUVya3dKaWxXRVU0L1RINm1xTkhqR1AySThNL0lNVUtvK1FLLzdGbjJMWFBVNStoQlZyNnV6dkEwMnFoU0JFTERPbkwzM1dXZXZ0USt3eWI5c1VLcy9CUDVxL21DNHhuWnp6L0FESGpXZkd0N2d1UEczNGZwS1RJTzQ4WnZoSmw4MitvWS80bjM5RDhNZnMxUC8yZkJEdHVwSGhqL2hlWDNUOEtjYmpuOE1QMktIOXd0Y2c1ZjhicmpHRm9YaEIyenlrK0VOSG1NMWEzVWUwemJjNERPMkRUZlpCZ1pNcVVpWmtqSEdNV0xLbUhQbUpKU0VKTXlaTWlJaHh0R2xRMHFscnhtUmtHUDh2MThqUWlybVJLbzRvY0tSRXBJU1VUS3hpcjhxSytldFRoeHBOYmU5RGhVVElrNlZjVVpFaGlOblRFNUd3cG5xVkZRVTdOR2lSY2xRZkFzcVNnSktwcVFFNU13WjA2TEhFY2NNbURDbHhIR2tTcDVaU002SWlrc2luZThzd25kbVNFSkdhYXpPeVlqRjA0bGZvdXd1eHpoNkZJcGRyWHk4VnVFcGp1K1U3Ym5saXYyS1FMOXVoZG42dVVzMkVSZnFaNnF1cE5xNWxJSVQ3ZnB6TzN3clhMR0h1MWQvMXBsOHVFZXgvbGVxZk1xNTlJK2xWQ1ltR2M1dDBTR1VnMEwzQk1lQjFsMUNkZVI3dWd4NFE0OTNETFR1MEtkUGh4TUdkSG10M0I1OUhGL1Q0NFJEWlhTRkYzdEhjc3dKUCtMNGhxNWlmTzNFK3JOUUxPRVhDbk4zS1k1ejNXTkdvWjU3NW9IdW11aUdkMWZZejFDKzVvNVNPVVBOa1k5MDBpL1RuRVdNelJXRkdNN1V5NlUzU3V0ZmJJNlk2UzVlMjV0OVB3MFhObnZMS2I0aTF3eDd0eTQ0ZWVVV2pENmthbkRMTTVmNkNZaUl5VGxWeEpDY0dTMHFyc1Q3TFJIbnBEZ08xYjAzbXBLS3puV09QK2RLTGttWWlVR1hUSFhtRlBvYm1XOUM0ejVjODcyenR5Uld2bWQ2ZG4ycis1emkxS3NiamQ2cGU4dTkwTHFjckNqUU1sWHpGVGNOeFRVejd5ZWFxVlgrb1hKTHZXNDV6K2lUU1BWVU43ajlEandub00wT3Urd3owVGxEN1Z6WUc5SFdPOUhtRmZ2cXdSbUpva1p5ZFdJVmRnbDR3UzY3dk9MRldzME9oeHpRWS84T0hCZFpQUTU0Zld0blhhZGxGV2QxL2hTYnR2ZzZubDJ2WHQ1YnI4L3Y0TXN2TkZFM0wyTmYydmh1WDFpMUcvK2ZFREh6WE56VzZwM2NFNEwvQUFBQS8vOEJBQUQvL3dkYlREQUFlSnhpWUdZQWcvL25HSXdZc0FBQUFBQUEvLzhCQUFELy95OEJBZ01BQUFBPSIpOwp9Ci5kMi00NzQyMjkzMTUgLnRleHQtYm9sZCB7Cglmb250LWZhbWlseTogImQyLTQ3NDIyOTMxNS1mb250LWJvbGQiOwp9CkBmb250LWZhY2UgewoJZm9udC1mYW1pbHk6IGQyLTQ3NDIyOTMxNS1mb250LWJvbGQ7CglzcmM6IHVybCgiZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7YmFzZTY0LGQwOUdSZ0FCQUFBQUFBNUlBQW9BQUFBQUZjUUFBZ3VGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUFV5OHlBQUFBOUFBQUFHQUFBQUJnWHhIWHJtTnRZWEFBQUFGVUFBQUFrd0FBQUxZREpBTjVaMng1WmdBQUFlZ0FBQWU5QUFBS1hJRDNtM3hvWldGa0FBQUpxQUFBQURZQUFBQTJHMzhlMUdob1pXRUFBQW5nQUFBQUpBQUFBQ1FLZndYamFHMTBlQUFBQ2dRQUFBQ1BBQUFBa0VZcUJlUnNiMk5oQUFBS2xBQUFBRW9BQUFCS01jQXZjbTFoZUhBQUFBcmdBQUFBSUFBQUFDQUFQQUQzYm1GdFpRQUFDd0FBQUFNb0FBQUlLZ2p3VmtGd2IzTjBBQUFPS0FBQUFCMEFBQUFnLzlFQU1nQURBaW9DdkFBRkFBQUNpZ0pZQUFBQVN3S0tBbGdBQUFGZUFESUJLUUFBQWdzSEF3TUVBd0lDQkdBQUF2Y0FBQUFEQUFBQUFBQUFBQUJCUkVKUEFDQUFJUC8vQXU3L0JnQUFBOWdCRVNBQUFaOEFBQUFBQWZBQ2xBQUFBQ0FBQTNpY2JNdzdUc0lBSElEeFgyMnRyNnIxVmQvYWl6Z1lYWnJvQmdkZ0pHRW1jQ0VJekV5RUFZNUNPTWlmaEREeWpkL3dReUtWb0pDWm9sSks1V3BmdnYxcS9HdnI2aHRHc1A4L0duOWFPbm9HRWJHT1RheGlHWXVZeHl3bU1ZN1JUajFVb25Za2xUbVdPM0hxekxrTGhVdFhycFZ1M0xwejcwSGwwWk5uTDE2OWVmZmhreTBBQUFELy93RUFBUC8veUJnZWl3QjRuRnhXV1d6Yjlobi8vbjlSb2kzVEIwV1IxSDJRRmluNWtHTlJGSDNJbGc4NWpoM0pKK0k0clk4MENOWmtqcE1zY1JhM3lOYUhaZ0hXS3N0V1pWMjZETmtXWk5nR3BBOUJNQ0FyNEEzWVN4YzBiMm5YcDIzZFZ1eWhENmtXQ01NYXlOSkFTbzdqUGtna0tQSDdmdC92K0Vnd3d3d0FQb2F2Z3ducW9SbHN3QUlvZEpBT0tiSXNrcHFpYVNKdjBtUkVrelBZVnY3VkhUbENSQ0pFVytDRy8vWFZWWlJkd2RlM1Q3MmNQWGJzdjZ2OS9lVmJ2LytnZkJXZC93QUFWNTRCNEZHY2czcWdBUmhTa1NWSkZpMFdFNk13b2l5Uy8yNTV1N25SM1VoUXptZVA3ajM2V2ZqRE1KcE1KcnRQSy9IMTh2ZHdibnZqNWswQUFBVFJTaEh2d3pmQURXQVdKRW1OSnhKS2pPTkpTUklGaTRXMWMwb3NvZkVXdER6MzF2eWhxM09wNDhFcHB5WjJUTFF2SEFpbkhGTnpWT2JINjZmZW0xV0VGZDRiV3hrNWZyYlZ1WFFVTUdRQmNBYm53RnFkV0lseEhHdTNXRVJaaVNVU2FseVNSREg3NFBnN3N6UFhqblo2ZXVhajBma2VEODZscjUwOSs4NzR4ZkRTMU5TUmtJRXZDd0NmNFJ5WWpDcDBOcStEcjE1SC84UTVNRmV2Qjlsc0htR2MyeTVjZ3AzNzhQczRCMzdqZDRiamVDV1IwQmlGRnZVUk5aRWtSVmtXZlpobHM3ODhhYlZaQ1N0dGZmVVhWOGg2RTZFdXp5N0hDYUtPeExueTN6eURQdCtnQnduYkcxOEdwbWY4TjcvNjZxWi9aanJ3cGQ3RENZQVpuQU5TN3lHcVFWYWtIOTFIeis3amxrdVh0Z3RWSEJPVklwN0dPVjBsc3lDcHRFSWJsQm9uRmpUMXhwWHJmWnFXL01HYjFMdDMwRW81ZnpTVE9Zcld5N2Z2dkFzWTJpcEY5REVxZ1JORUFGN1F4ZEVNWFVqWlVJbWxSVjF6TFpiUVZFT3JQNlJuTHVleEdQRVB0YXBkYTMycjM5aTBFdjd4T21lSW1VcjZxY09wcWNYbW9PeGdYL0cybmo1WC9senhpT2Q0NXJDMTNldmdBUUREY0tXSU9id0ZkcDAxc3lESklpblNDa3NhelF6NTVGaENqWXNDeVhJY0dndU9lZ25xZko3d3BvWGtZbGR5ZFZGS0xIUkU3R0VxR0ZEeDF0Mk15enY0cmN5aDExS2Irek5YT2oreU5SbDh0RmFLYUF1VndQVjF2NG5DcnRzc3lEbDJadmpBdDlQUmNjK1lHRkJUcVgyT0tOTVhXcUFHTHN6TmJ3ejQrRlZ2Wm5nb3l6WWZEYmpCd0M1WGlxaUV0NENCd0E1WFJtRlpWVjVnU2FxMWVicDBwbjgxSHVseFd2S2JWc0sxSHp0a0c5TnVGeE5kMU51dnpWNFk5RGd5djkwZTdYYUptM2JuUjdhbTBmR0pNY0FHOW4rZ0VqaHEvT3cwMGFraGd4eW54SFRzSmlXdWQwSCs4WE1qbzZmNng1ZTdDRnorMUxxL1cwMTBTeXMvdlM5M0NBbHFjR051ZGlPVldrc3pvZnFFRWp6aThxRytpTnBWOVl3REFHM2doL3BSOTVXMk41UXNxN0FpL2RMSVNPdk1xRC9lNG01MFVXN2ZrU1BvTyt0bXQ3b1FweXluek9hZzVEdGZmaFBBQkVLbEU1T29CRjNRRDVNR001SWExNG5RemFUdWpNQXJyRmdMcUNBYk91ajJzbHNzSmwzd0dtbE05VndVSk9NdlQvdFdlc1laZDhEaGl2U3RxQjNCMzAyVDlmRkZ6ZXUzQ1pHWnBWZlNseWE5c3V6MXluSWtOaVNIRkdlUWNnODhkdlYwSk1ORVk5anZqclVRdG5SN2NqcE1yVFVJOXQ3SlZtc3p4OWo2UjVYWktIcllGcEVqNFhDa3JaeHZkZkl0SnBQRDZmRld1Um5XeFRZOHF1ZTY1azJXRm1rREpVa1A1MG5Qd2Rqc1JONGI4SVFkZU92dUVXZjcybkw1RVFvbXdrNitmQThxRmRBQTRLLzRNWllnQ0FBa0NQQld0WGFsaUd4NEM1cXJEdHJKcWk3cW56UDllYnJlVEZwc1ZJaDYrU0FXdHovbGJRaXRtOGtxSnBNWGxmUnFDcTNvaTBaWGF3OHk4dmx4V00vay9tNTFtQWxPZHM4Y3pIc0RvWDM2VnhjcURQazcyOE5DOXc3Y2ZlVjd0Y1BPM0toVW03dlc0OFc1TjYxRUlQdDhjRlJJK1RyM3pGMzFyK0dGNXE5dCs5MW8xNVJHWE9wTU9uMG1sVHFkVHA5T2RVYWpuZEhPemxyMkJqYm01eTRNWE13T0RXZjBDRmIzeGdITW9SSXc0QVBnZDlFWmRwSmtubVYyMTRhTzB6c2h2M1FpdVpvSUpGM21hU214ME41bUR6L0F2K2wyaWQ4L2YyZ3o1WFpPL3dpMVBsOGFlcllQb0pKUlB3QmdWaldqN0U0b0ZFMmhUUzltRzUyME9FZUVhc0FIOVEzMStmTndQL2hKeHVFM0F1NE5kRzh2b3RiZGROZThoYTZoRXRqMjZGaE5YWlZoZDBaaVBWWkhvN1BGTTJCSGhjT3hiclA1RFlLSXhNcWZBUUsyVWtRL1J5V1FEZi9JR21kcytyZ2t5VkdzeG5lTHNYYU85MkhXYm5uYy9hbzBJcVQ4UVo4MzZ2TDFoMDhlNmozc0gzSEZYYjI5VW1BZ2NvS1MvRXRPTjgvUUhHT2xXbnNqWXd1eVk5SE95UTVuVTRQWUd4MWRybWFDcmhUUmFid0JmUFVabzRxcXBpbjZsbmhob2NMU2REcER2Mzd4b3VpbG5GYWUwYWh2TGp4Y3QxeStmUDdEdHBDRldMTlExVnJKU2hIOUR4VjBuKzNKQUYxYm8zK1puY2o3QWg2SnkyODJtUHlUMU5veWlwZi9ya1pjWG5TZzNESVc2Z0FFRkFDcW9BSTBBaWdtaGE4OWV6WEZkUC9YMTRlc2pKV29aNnpEVjIrandoZWhyQ3huUTErVVc0emVUUUNvaUFyNmMxVmg1QmR1SkhteDluNURrazAzcnQzcXNISldvczVXSjl6NDRYdTM5bEU4UmRUYjYyV0VuOHl3N1N6YnpzNVUvalBIZHJCc096ZW4xNlVxZzJnYkZYVFg3K3FpYVh1Z05lRk5MdGpzSW0xMW9iQ1YvT1AxOFFhYmxhaWo2NU5YNy9JOTAzK3lFR2VSdWRYclF2LzZSTmdmRXNmRlQ4b05nNGZhQVBSOUlzQnQ5QVE5eFJLSXNBRVdFQ0czNHlmNEdCVjIzbDJHODZoUWJnRlVlUi8zd2p4K0RBMEF0R0hrYWxoQzBXZ29GSTNpM2paUmJOTS9lZzBCY2VnSitxNWVnMUdEcklBZUllN0VDUUQ0UHdBQUFQLy9BUUFBLy8rZXV5QVJBQUFBQUFFQUFBQUNDNFdSY2VIM1h3ODg5UUFCQStnQUFBQUEyRjJnaEFBQUFBRGRaaTgyL2pmK3hBaHRBL0VBQVFBREFBSUFBQUFBQUFBQUFRQUFBOWorN3dBQUNKaitOLzQzQ0cwQUFRQUFBQUFBQUFBQUFBQUFBQUFBQUNSNG5Cektxd3JDWUJqSDRkLzdGd2JpOEFCVHRCakdRUEJVRmR3WDNpSVlQckFZdkJhRGQyRDNJaXhXYjhEdTNheE10dmFFUjIvT2ZFR2hyblJrcXh2Uk5rUWxSRlZFclpucHlVa0RsZ3E0L1NnVVdDaWhzQXRUVGNoMXdDMWpaM084YzhWVjRscTF6NXRyRDl3K2pPM09TSHRLOVVnbCt1cVNha2h1R1E3MXEvRWZBQUQvL3dFQUFQLy9qbW9VUndBQUFBQXNBQ3dBVUFCOEFLQUFyQUM4QU80QkFBRWVBVllCaUFHMEFlWUNHZ0pBQXFnQ3lnTFdBdklESkFOR0EzSURvZ1BXQS9ZRU1nUllCSG9FbGdUQ0JQSUUvZ1VLQlNBRkxnQUFBQUVBQUFBa0FKQUFEQUJqQUFjQUFRQUFBQUFBQUFBQUFBQUFBQUFFQUFONG5KeVV6MjRiVlJUR2YwNXMwd3JCQWtWVnVvbnVna1dSNk5oVVNkVTJLNGZVaWtVVUI0OExRa0pJRTgvNGp6S2VHWGttRHVFSldQTVd2RVZYUEFUUGdWaWorWHpzMkFYUkpvcVNmSGZ1K2ZPZGM3NXpnUjMrWnB0SzlTSHdSejB4WEdHdmZtNTRpd2YxRThQYnRPdGJocXM4cWYxcHVFWllteHV1ODNtdFovZ2ozbFovTS95QS9lcFBoaCt5VzIwYi9waG4xUjNEbjJ3Ny9qTDhLZnU4WGVBS3ZPQlh3eFYyeVF4dnNjT1BocmQ1aE1Xc1ZIbEUwM0NOejlnelhHY1A2RE9oSUdaQ3dnakhrQWtqcnBnUmtlTVRNV1BDa0lnUVI0Y1dNWVcrSmdSQ2p0Ri9mZzN3S1pnUktPS1lBa2VNVDB4QXp0Z2kvaUt2bEhObEhPbzBzN3NXQldNQ0x1UnhTVUNDSTJWRVNrTEVwZUlVRkdTOG9rR0RuSUg0WmhUa2VPUk1pUEZJbVRHaVFaYzJwL1FaTXlISDBWYWtrcGxQeXBDQ2F3TGxkMlpSZG1aQVJFSnVySzVJQ01YVGlWOGs3dzZuT0xwa3NsMlBmTG9SNFVzYzM4bTc1SmJLOWlzOC9ibzFacHQ1bDJ3QzV1cG5ySzdFdXJuV0JNZTZMZk8yK0ZhNDRCWHVYdjNaWlBMK0hvWDZYeWp5QlZlYWY2aEpKV0tTNE53dUxYd3B5SGVQY1J6cDNNRlhSNzZuUTU4VHVyeWhyM09MSGoxYW5OR253MnY1ZHVuaCtKb3VaeHpMb3lPOHVHdExNV2Y4Z09NYk9ySXBZMGZXbjhYRUluNG1NM1huNGpoVEhWTXk5YnhrN3FuV1NCWGVmY0xsRHFVYjZzamxNOUFlbFpaTzgwdTBad0VqVTBVbWhsUDFjcW1OM1BvWG1pS21xcVdjN2UxOXVRMXoyNzNsRnQrUWFvZEx0UzQ0bFpOYk1IcmZWTDEzTkhPdEg0K0FrSlFMV1F4SW1kS2c0RWE4endtNElzWnhyTzZkYUVzS1dpdWZNcytOVkJJeEZZTU9pZUxNeVBRM01OMzR4bjJ3b1h0bmIwa28vNUxwNWFxcSsyUng2dFh0ak42b2U4czczN29jclUyZ1lWTk4xOVEwRU5mRXRCOXBwOWI1Ky9MTjlicWxQT1dJbEpqd1h5L0FNenlhN0hQQUlXTmxHT2htYnE5RFV5OUVrNWNjcXZwTElsa05wZWZJSWh6Zzhad0REbmpKODNmNnVHVGlqSXRiY1ZuUDNlS1lJN29jZmxBVkMvc3VSN3hlZmZ2L3JMK0xhVk8xT0o2dVRpL3VQY1VuZDFEckY5cXoyL2V5cDRtVms1aGJ0TnV0T0NOZ1duSnh1K3MxdWNkNC93QUFBUC8vQVFBQS8vLzB0MDlSZUp4aVlHWUFnLy9uR0l3WXNBQUFBQUFBLy84QkFBRC8veThCQWdNQUFBQT0iKTsKfQouZDItNDc0MjI5MzE1IC50ZXh0LWl0YWxpYyB7Cglmb250LWZhbWlseTogImQyLTQ3NDIyOTMxNS1mb250LWl0YWxpYyI7Cn0KQGZvbnQtZmFjZSB7Cglmb250LWZhbWlseTogZDItNDc0MjI5MzE1LWZvbnQtaXRhbGljOwoJc3JjOiB1cmwoImRhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2Jhc2U2NCxkMDlHUmdBQkFBQUFBQTVZQUFvQUFBQUFGbkFBQVJoUkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlBVeTh5QUFBQTlBQUFBR0FBQUFCZ1cxU1ZlR050WVhBQUFBRlVBQUFBa3dBQUFMWURKQU41WjJ4NVpnQUFBZWdBQUFmTkFBQUxBSXQ4Tjlab1pXRmtBQUFKdUFBQUFEWUFBQUEyRzdVcjJtaG9aV0VBQUFud0FBQUFKQUFBQUNRTGVBaklhRzEwZUFBQUNoUUFBQUNRQUFBQWtFQVZCRlZzYjJOaEFBQUtwQUFBQUVvQUFBQktOSW94OW0xaGVIQUFBQXJ3QUFBQUlBQUFBQ0FBUEFEMmJtRnRaUUFBQ3hBQUFBTW1BQUFJTWdudFZ6TndiM04wQUFBT09BQUFBQ0FBQUFBZy84WUFNZ0FEQWVFQmtBQUZBQUFDaWdKWS8vRUFTd0tLQWxnQVJBRmVBRElCSXdBQUFnc0ZBd01FQXdrQ0JDQUFBSGNBQUFBREFBQUFBQUFBQUFCQlJFSlBBQUVBSVAvL0F1Ny9CZ0FBQTlnQkVTQUFBWk1BQUFBQUFlWUNsQUFBQUNBQUEzaWNiTXc3VHNJQUhJRHhYMjJ0cjZyMVZkL2FpemdZWFpyb0JnZGdKR0VtY0NFSXpFeUVBWTVDT01pZmhERHlqZC93UXlLVm9KQ1pvbEpLNVdwZnZ2MXEvR3ZyNmh0R3NQOC9HbjlhT25vR0ViR09UYXhpR1l1WXh5d21NWTdSVGoxVW9uWWtsVG1XTzNIcXpMa0xoVXRYcnBWdTNMcHo3MEhsMFpObkwxNjllZmZoa3kwQUFBRC8vd0VBQVAvL3lCZ2Vpd0I0bkh4V1dXd2I1OVc5OTV2UmpCWnFJWWNjbXJSRWl2eklHWWthTHVLSUhORVNTVW5VTGxLS2JFdS9mdHVVbzNoZjJncHhVOXROakxRV2tEcEI0NnFHVzZCQlVSZm9naFIrcy90U29IRFF1ZytDVXdGTjRSYnA4dEltbFFPN1FCSkJMZHFnR2hZemxHVEtEMzBaRFBCaDdqM24zSHZPTjFBRkFRRHllWElUR0tpQlJyQ0JBMEFWZkF5amFocDFNcW9zVTU3WFpFSGdBMWR4NWVwYmJPN1EzOXErLzIvRnk0NTg5U2NUZjMvK05ybTVlUjYvVW56MVZmM3d0Uk1uL3UvSkV6MkV2MzhDQUVCSzd3TGc3OGd5MUlBVlFPQlZXWkpreW5HSXFrQmx5bit3NzM0dFc4dXlibFgvTlI0L2xKKzJmWFFHTHk4dWRwM3RUcDNTcDhueTV1THFLZ0JDcXJSQnd1Uzc0QVdvOGt0U29pdEQxTGpvNUNXSitodUl3eTZLYWp5cE9Ua08vUk9uazdGRFYvTGQwM3VTUWxMYWQzUWc0Qi92YWN1MTBrRFJrcnMwV2JoNWNVUUx0YmZLNmVPWGVudUtpZGE5Y1cvWXdBb1VnQ1JOcklLaGdCb1hIWGFPbzdJYVR5WVRYUktsZE9uTHI3ODVjK3NMczdNenIrUk9IVXVTNWE5ZHZ2alRFMzBIdjcxUVBHUHdSYU1HYkpCbFlNd0tERjJhWERKSWJKL2hEYklNVmVVekgwK1hKcitFOW5xeXZIbG5vSHhPZms2V3dXV2VDMDVWTXlvSXlhUkdlWVl5aG00OFE1ZUtLWkVkdmw5Y21zalh1QzNzMUMrVXRNaHlEZFhqWkZuLzNyVnIrTUxtSXI2b25PMjRvZjhRajl4UXppajZkVUFvQXBBRVdRYmVxRTAxSDArWkg3OTByeDdmclgvbkpWTEk1VGJ2bHZGUGxUYklTYklNb3Fsem9pdHBZT0FjZGxOZTQ1VkR6L0Z6SERzK09WSFROOVI5eURHZDM5OTgxWExtcENQcXdrWDk5YkIvdUhEa0hON1F6MTIvYkdncWx6YndYN2dPZG9PZDA3OHpPRlZUR2FwUmpwUGpTVTNibWVMZHZyd3lQcS9LYVNzclpCYXkxU3lkczBsVEFjVVJidzdrRXQ1T3krR1o0Y3RIMURaZlduZVBCcU45a2VnZkpIOW9yQmpQcHMxOUEyOXBBejhoSytBd3R0cnBsMlRLVTBIbGVUV1pOT2ZaUU9SNGhoalQ5SE04TDRxUDViU1ZzV2V2RjJTUkJBNkd6ZmFKUUM3aGliWDdwMm5FcmxyYWZHbXljdS81bG81RHMwYnJ2dEJZVWMya1E4RkhraDhRZ3FVTnZJUHIwTHlMbmJtVzNMWnNUbzU3ZitxNFVsaElLTDFpV0pCYVlyUEoxTDdXcE9oM0Z5d25pNE1YWnFKK1Y4enBHRnpNRFF5N3JYRjdzTXhGTG0wUXVZTExVKzMrdDNqN2JFeVRWRmplVW04eStLeDZjdXZSZTV2ZHo4cEhUQzd2NERxNElWalp6M0FCNytOMkhNYW9waDBNaGgvT25nbFBISWxwL1I1TGxmNnJtdFpjcUNYbDlMUk1mNmRFR0ZzN1RjeGJ6aTRNTGU1WElzL0ZtOVdHN0hOQmwxVjFlREZZdDZlK3VkTTdBd2dkQVBnbWVRaE9jeSt6eEJ6VGxuNDhyL0tVNlpqSjF2VTNOVTZtM1NIYjN0cTlWbDk3dGZVRnk3RVpmRHRWTlQxK29MNU80MnZqSFFjeStweWhHWllDdUk3cjRJVkllZjVhR2JmR2NYVDM5bkVjczB1OTI1MnpOTkE4MUpZWmIzQkpCNlBwNXpyR2puUktHU3NqWkU4S0YxSjAydDhoZGpiVGZ0VVQvYlBVa25ENjgzMm5KV1YySnZmRi80OGIrOGdjUFltK2p0QnZKSC83OEZ5c3A2ZnNKeThBdms5V3RqejlkQTk1MDlpSkxvTW00NzFlaURXeDdmdVZUS0k2ays5bDJkSG0wY2dRV1htU3B0SCtibTlBZjRDS2ZVLzlSQ2lpdjEwcUdUWGhNM0tIU09BREFBNzhvK1ZlU21rRFBpTXJZRE9ZSjdyS2RuWFl0OGIydVg3dTVjSVZSQ3ZEOFZncldySldGem0zK1UyK2hyRWg2V0haSGJ6a01hNURxSXkzRE5lNUJacmJoYnFTd0VLV1o2VUQwcjdPcXVoY01KMWsyVXdoemJJampsRmx5T0F6TEk1MkRPSGFXS0JUYTFQVS9tNnJ4MTdKNmVuYlU4MXdIZlpVWW5oV01xTmorLzdJTHNYTURzOEt0dU1sL0JPdVF5TzBWTzUyT1JESzhWNDI3TU9wZVdWOFBqNTFWSm1ZRDRXbjFXVGNlRmhPSHg2Nk1CTXBQL3NHRmdjSFJuS0xnd1BENWgzM3o1S0tuK0I2MmFkOEJlSUdRczBFNG9WZG1WUDdScFpqZ2pNUjA2NXhxVmNnTnUrUEtqTm5sZHp0ODRhM3pPbzlmUXR4SzNTa2o0SytiVDZxbWF0bXp5ck5DSU5uOW52M2RxUFA1eUhCdVVobHZyNXhxekljVm05ZGxLSTc4YnBaUU53ZHJ1VzV2SUxyMEZReEZ5Y3ZiYytqam0zSmgxMk92VTN1UU42YnhyV2lrcTRack03MjZLdUFwZitVTnZBS3JvTmM2Y3BFbHlRYmQzbWw2UjEyMFdsR0R2ZUR6cUlyNXV5VFF1bjI3a2hLR1ZNaTQ4MFJRZlZKbmNuV1RGZHN2NldyVGZLMlJhaGI5cm96N1IzOXdZQ256ZTRPZXoyU3pkK3JoQWVEQnViZTBnYk9rZk03K1p6VWpKUlJ6V1NweU9lZjlYV3htQnFweXdmNjk3NXN1WkppbXYwTjdqcHJVOVNTRFRlNjY5R1dxbnJ0dFl6KzJHYnplR3FyTkw3UnFOMWQyc0NQY2Mzd3R2UHBYYm5sT0dFcm9tL3Z1R0cwWlVRWnlodVhXdHRCeTRCbTlRcVkxQjhLTG1OTmNVNTNqMU8xN01FZUFQd0xya0U5Z01xb2dpZzYxYVJSRUsrTzVBTXN4N0xXZ1BDTmdyNkphL29qT2tFRFl3RjA2Vzd6MjlKREFQeHRHUk1WWk5XNTliR204azY2OWUvRjg4b2ZEMCtHcWh0NHRyRzFjZWJBeXJFcHBkcGF5emI1aFhra0g1NFhaWWU5M1hIK0g1KytLRVpFVVhGZU1PcitzaFRGRDNBTjNBQzhPVDh6VkhlaGF5QmNiV3VEeTJZTDlydHNCL0pTVlRYRFdvTzJyK2YxdjdwNlJ0L2orVlJOT2s3eGtmNnhyMEJwM28vV3pVK2pCUVVBU2lXSXdYMThnTzhSQ1NpY0JRNG9mR3Q3NTJBVjE3Yi9wN3dMaFJkd3pTU0xNRUltNEE2NUEzVUFncWwvT2FRdUNSN3F0TGRRTXVFVVhiNDlvcXNWRUdJWXdRZDR5cWdqSkh5T0dMNkZrVlFLQVA0TEFBRC8vd0VBQVAvLyszdEFmUUFBQUFBQkFBQUFBUmhSaGpjRTNWOFBQUFVBQVFQb0FBQUFBTmhkb013QUFBQUEzV1l2Ti82OS90MElIUVBKQUFJQUF3QUNBQUFBQUFBQUFBRUFBQVBZL3U4QUFBaEEvcjM5dkFnZEErZ0F3di9SQUFBQUFBQUFBQUFBQUFBa0FuUUFKQURJQUFBQi92L0xBaVlBT1FKUUFDTUEvQUFqQWM0QUl3TEJBQ01CL2dCZEFtZ0FUd0laQUNjQ0dBQWZBYk1BSlFJWEFDY0I0UUFsQVJvQUt3SVRBQUVDQ3dBZkFPMEFId0Q0QUN3REh3QWZBZzBBSHdJREFDY0NGLy8yQWhrQUp3RldBQjhCa3YvOEFVVUFQQUlRQURnQndBQTdBYTMvMUFIQS84SUI0QUF3QU8wQUh3QUFBRWNCNEFBd0FBQUFMZ0F1QUZJQWhBQ21BTFFBeEFEeUFRWUJMZ0ZtQVo0QnpBSUVBajRDWmdLdUF0Z0M1QU1HQTBnRGNnT2dBOW9FRkFReUJHNEVuQVRJQk9ZRkVnVkNCVTRGWEFWeUJZQUFBQUFCQUFBQUpBQ01BQXdBWmdBSEFBRUFBQUFBQUFBQUFBQUFBQUFBQkFBRGVKeWNsTnRPRzFjVWhqOEgyMjE2dXFoUVJHN1F2a3lsWkV5akVDWGh5cFNnaklwdzZuRjZrS3BLZ3owK2lQSE15RE9Za2lmb2RkK2liNUdyUGthZm91cDF0WDh2Z3gxRlFTQUUvSHYyT3Z4cnJYOXRZSlAvMktCV3Z3djgzWndicnJIZC9ObndIYjVvSGhuZVlMLzVtZUU2RHh2L0dHNHdhTHcxM09SQm8ydjRFOTdWL3pUOEtVL3F2eG0reTFiOTBQRG5QSzV2R3Y1eXcvR3Y0YTk0d3JzRnJzRXovakJjWTR2QzhCMDIrZFh3QnZld21MVTY5OWd4M09CcnRnMDMyUVo2VEtoSW1aQXh3akZrd29nelppU1VSQ1RNbURBa1lZQWpwRTFLcGE4WnNaQmo5TUd2TVJFVk0ySkZIRlBoU0lsSWlTa1pXOFMzOHNwNXJZeERuV1oyMTZaaVRNeUpQRTZKeVhEa2pNakpTRGhWbklxS2doZTBhRkhTRjkrQ2lwS0FrZ2twQVRrelJyVG9jTWdSUGNaTUtIRWNLcEpuRnBFenBPS2NXUG1kV2ZqTzlFbklLSTNWR1JrRDhYVGlsOGc3NUFoSGgwSzJxNUdQMWlJOHhQR2p2RDIzWExiZkV1alhyVEJiejd0a0V6TlhQMU4xSmRYTnVTWTQxcTNQMitZSDRZb1h1RnYxWjUzSjlUMGE2SCtseUNlY2FmNERUU29Ua3d6bnRtZ1RTVUdSdTQ5algrZVFTQjM1aVpBZXIrandocDdPYmJwMGFYTk1qNUNYOHUzUXhmRWRIWTQ1a0Vjb3ZMZzdsR0tPK1FYSDk0U3k4YkVUNjg5aVlnbS9VNWk2UzNHY3FZNHBoWHJ1bVFlcU5WR0ZONSt3MzZGOFRSMmxmUHJhSTIvcE5MOU1leFl6TWxVVVlqaFZMNWZhS0sxL0ExUEVWTFg0MlY3ZCsyMlkyKzR0dC9pQ1hEdnMxYnJnNUNlM1lIVGRWSVAzTkhPdW40Q1lBVGtuc3VpVE02VkZ4WVY0dnlibWpCVEhnYnIzU2x0UzBiNzA4WGt1cEpLRXFSaUVaSW96bzlEZjJIUVRHZmYrbXU2ZHZTVUQrWHVtcDVkVjNTYUxVNit1WnZSRzNWdmVSZGJsWkdVQ0xadHF2cUttdnJobXB2MUVPN1hLUDVKdnFkY3Q1eEdoNGk1MiswT3Z3QTdQMldXUHNiTDBkVE8vdlBPdmhMZllVd2RPU1dRMWxLWjlEWThKMkNYZ0tidnM4cHluNy9WeXljWVpIN2ZHWnpWL213UDI2YkIzYlRVTDJ3Nzd2RnlMOXZITWY0bnRqdXB4UExvOFBidjFOQi9jUUxYZmFOK3UzczJ1SnVlbk1iZG9WOXR4VE16VWMzRmJxelc1K3dUL0F3QUEvLzhCQUFELy8zS2hVVUFBQUFBREFBRC85UUFBLzg0QU1nQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEiKTsKfV1dPjwvc3R5bGU+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsuc2hhcGUgewogIHNoYXBlLXJlbmRlcmluZzogZ2VvbWV0cmljUHJlY2lzaW9uOwogIHN0cm9rZS1saW5lam9pbjogcm91bmQ7Cn0KLmNvbm5lY3Rpb24gewogIHN0cm9rZS1saW5lY2FwOiByb3VuZDsKICBzdHJva2UtbGluZWpvaW46IHJvdW5kOwp9Ci5ibGVuZCB7CiAgbWl4LWJsZW5kLW1vZGU6IG11bHRpcGx5OwogIG9wYWNpdHk6IDAuNTsKfQoKCQkuZDItNDc0MjI5MzE1IC5maWxsLU4xe2ZpbGw6IzBBMEYyNTt9CgkJLmQyLTQ3NDIyOTMxNSAuZmlsbC1OMntmaWxsOiM2NzZDN0U7fQoJCS5kMi00NzQyMjkzMTUgLmZpbGwtTjN7ZmlsbDojOTQ5OUFCO30KCQkuZDItNDc0MjI5MzE1IC5maWxsLU40e2ZpbGw6I0NGRDJERDt9CgkJLmQyLTQ3NDIyOTMxNSAuZmlsbC1ONXtmaWxsOiNERUUxRUI7fQoJCS5kMi00NzQyMjkzMTUgLmZpbGwtTjZ7ZmlsbDojRUVGMUY4O30KCQkuZDItNDc0MjI5MzE1IC5maWxsLU43e2ZpbGw6I0ZGRkZGRjt9CgkJLmQyLTQ3NDIyOTMxNSAuZmlsbC1CMXtmaWxsOiMwRDMyQjI7fQoJCS5kMi00NzQyMjkzMTUgLmZpbGwtQjJ7ZmlsbDojMEQzMkIyO30KCQkuZDItNDc0MjI5MzE1IC5maWxsLUIze2ZpbGw6I0UzRTlGRDt9CgkJLmQyLTQ3NDIyOTMxNSAuZmlsbC1CNHtmaWxsOiNFM0U5RkQ7fQoJCS5kMi00NzQyMjkzMTUgLmZpbGwtQjV7ZmlsbDojRURGMEZEO30KCQkuZDItNDc0MjI5MzE1IC5maWxsLUI2e2ZpbGw6I0Y3RjhGRTt9CgkJLmQyLTQ3NDIyOTMxNSAuZmlsbC1BQTJ7ZmlsbDojNEE2RkYzO30KCQkuZDItNDc0MjI5MzE1IC5maWxsLUFBNHtmaWxsOiNFREYwRkQ7fQoJCS5kMi00NzQyMjkzMTUgLmZpbGwtQUE1e2ZpbGw6I0Y3RjhGRTt9CgkJLmQyLTQ3NDIyOTMxNSAuZmlsbC1BQjR7ZmlsbDojRURGMEZEO30KCQkuZDItNDc0MjI5MzE1IC5maWxsLUFCNXtmaWxsOiNGN0Y4RkU7fQoJCS5kMi00NzQyMjkzMTUgLnN0cm9rZS1OMXtzdHJva2U6IzBBMEYyNTt9CgkJLmQyLTQ3NDIyOTMxNSAuc3Ryb2tlLU4ye3N0cm9rZTojNjc2QzdFO30KCQkuZDItNDc0MjI5MzE1IC5zdHJva2UtTjN7c3Ryb2tlOiM5NDk5QUI7fQoJCS5kMi00NzQyMjkzMTUgLnN0cm9rZS1ONHtzdHJva2U6I0NGRDJERDt9CgkJLmQyLTQ3NDIyOTMxNSAuc3Ryb2tlLU41e3N0cm9rZTojREVFMUVCO30KCQkuZDItNDc0MjI5MzE1IC5zdHJva2UtTjZ7c3Ryb2tlOiNFRUYxRjg7fQoJCS5kMi00NzQyMjkzMTUgLnN0cm9rZS1ON3tzdHJva2U6I0ZGRkZGRjt9CgkJLmQyLTQ3NDIyOTMxNSAuc3Ryb2tlLUIxe3N0cm9rZTojMEQzMkIyO30KCQkuZDItNDc0MjI5MzE1IC5zdHJva2UtQjJ7c3Ryb2tlOiMwRDMyQjI7fQoJCS5kMi00NzQyMjkzMTUgLnN0cm9rZS1CM3tzdHJva2U6I0UzRTlGRDt9CgkJLmQyLTQ3NDIyOTMxNSAuc3Ryb2tlLUI0e3N0cm9rZTojRTNFOUZEO30KCQkuZDItNDc0MjI5MzE1IC5zdHJva2UtQjV7c3Ryb2tlOiNFREYwRkQ7fQoJCS5kMi00NzQyMjkzMTUgLnN0cm9rZS1CNntzdHJva2U6I0Y3RjhGRTt9CgkJLmQyLTQ3NDIyOTMxNSAuc3Ryb2tlLUFBMntzdHJva2U6IzRBNkZGMzt9CgkJLmQyLTQ3NDIyOTMxNSAuc3Ryb2tlLUFBNHtzdHJva2U6I0VERjBGRDt9CgkJLmQyLTQ3NDIyOTMxNSAuc3Ryb2tlLUFBNXtzdHJva2U6I0Y3RjhGRTt9CgkJLmQyLTQ3NDIyOTMxNSAuc3Ryb2tlLUFCNHtzdHJva2U6I0VERjBGRDt9CgkJLmQyLTQ3NDIyOTMxNSAuc3Ryb2tlLUFCNXtzdHJva2U6I0Y3RjhGRTt9CgkJLmQyLTQ3NDIyOTMxNSAuYmFja2dyb3VuZC1jb2xvci1OMXtiYWNrZ3JvdW5kLWNvbG9yOiMwQTBGMjU7fQoJCS5kMi00NzQyMjkzMTUgLmJhY2tncm91bmQtY29sb3ItTjJ7YmFja2dyb3VuZC1jb2xvcjojNjc2QzdFO30KCQkuZDItNDc0MjI5MzE1IC5iYWNrZ3JvdW5kLWNvbG9yLU4ze2JhY2tncm91bmQtY29sb3I6Izk0OTlBQjt9CgkJLmQyLTQ3NDIyOTMxNSAuYmFja2dyb3VuZC1jb2xvci1ONHtiYWNrZ3JvdW5kLWNvbG9yOiNDRkQyREQ7fQoJCS5kMi00NzQyMjkzMTUgLmJhY2tncm91bmQtY29sb3ItTjV7YmFja2dyb3VuZC1jb2xvcjojREVFMUVCO30KCQkuZDItNDc0MjI5MzE1IC5iYWNrZ3JvdW5kLWNvbG9yLU42e2JhY2tncm91bmQtY29sb3I6I0VFRjFGODt9CgkJLmQyLTQ3NDIyOTMxNSAuYmFja2dyb3VuZC1jb2xvci1ON3tiYWNrZ3JvdW5kLWNvbG9yOiNGRkZGRkY7fQoJCS5kMi00NzQyMjkzMTUgLmJhY2tncm91bmQtY29sb3ItQjF7YmFja2dyb3VuZC1jb2xvcjojMEQzMkIyO30KCQkuZDItNDc0MjI5MzE1IC5iYWNrZ3JvdW5kLWNvbG9yLUIye2JhY2tncm91bmQtY29sb3I6IzBEMzJCMjt9CgkJLmQyLTQ3NDIyOTMxNSAuYmFja2dyb3VuZC1jb2xvci1CM3tiYWNrZ3JvdW5kLWNvbG9yOiNFM0U5RkQ7fQoJCS5kMi00NzQyMjkzMTUgLmJhY2tncm91bmQtY29sb3ItQjR7YmFja2dyb3VuZC1jb2xvcjojRTNFOUZEO30KCQkuZDItNDc0MjI5MzE1IC5iYWNrZ3JvdW5kLWNvbG9yLUI1e2JhY2tncm91bmQtY29sb3I6I0VERjBGRDt9CgkJLmQyLTQ3NDIyOTMxNSAuYmFja2dyb3VuZC1jb2xvci1CNntiYWNrZ3JvdW5kLWNvbG9yOiNGN0Y4RkU7fQoJCS5kMi00NzQyMjkzMTUgLmJhY2tncm91bmQtY29sb3ItQUEye2JhY2tncm91bmQtY29sb3I6IzRBNkZGMzt9CgkJLmQyLTQ3NDIyOTMxNSAuYmFja2dyb3VuZC1jb2xvci1BQTR7YmFja2dyb3VuZC1jb2xvcjojRURGMEZEO30KCQkuZDItNDc0MjI5MzE1IC5iYWNrZ3JvdW5kLWNvbG9yLUFBNXtiYWNrZ3JvdW5kLWNvbG9yOiNGN0Y4RkU7fQoJCS5kMi00NzQyMjkzMTUgLmJhY2tncm91bmQtY29sb3ItQUI0e2JhY2tncm91bmQtY29sb3I6I0VERjBGRDt9CgkJLmQyLTQ3NDIyOTMxNSAuYmFja2dyb3VuZC1jb2xvci1BQjV7YmFja2dyb3VuZC1jb2xvcjojRjdGOEZFO30KCQkuZDItNDc0MjI5MzE1IC5jb2xvci1OMXtjb2xvcjojMEEwRjI1O30KCQkuZDItNDc0MjI5MzE1IC5jb2xvci1OMntjb2xvcjojNjc2QzdFO30KCQkuZDItNDc0MjI5MzE1IC5jb2xvci1OM3tjb2xvcjojOTQ5OUFCO30KCQkuZDItNDc0MjI5MzE1IC5jb2xvci1ONHtjb2xvcjojQ0ZEMkREO30KCQkuZDItNDc0MjI5MzE1IC5jb2xvci1ONXtjb2xvcjojREVFMUVCO30KCQkuZDItNDc0MjI5MzE1IC5jb2xvci1ONntjb2xvcjojRUVGMUY4O30KCQkuZDItNDc0MjI5MzE1IC5jb2xvci1ON3tjb2xvcjojRkZGRkZGO30KCQkuZDItNDc0MjI5MzE1IC5jb2xvci1CMXtjb2xvcjojMEQzMkIyO30KCQkuZDItNDc0MjI5MzE1IC5jb2xvci1CMntjb2xvcjojMEQzMkIyO30KCQkuZDItNDc0MjI5MzE1IC5jb2xvci1CM3tjb2xvcjojRTNFOUZEO30KCQkuZDItNDc0MjI5MzE1IC5jb2xvci1CNHtjb2xvcjojRTNFOUZEO30KCQkuZDItNDc0MjI5MzE1IC5jb2xvci1CNXtjb2xvcjojRURGMEZEO30KCQkuZDItNDc0MjI5MzE1IC5jb2xvci1CNntjb2xvcjojRjdGOEZFO30KCQkuZDItNDc0MjI5MzE1IC5jb2xvci1BQTJ7Y29sb3I6IzRBNkZGMzt9CgkJLmQyLTQ3NDIyOTMxNSAuY29sb3ItQUE0e2NvbG9yOiNFREYwRkQ7fQoJCS5kMi00NzQyMjkzMTUgLmNvbG9yLUFBNXtjb2xvcjojRjdGOEZFO30KCQkuZDItNDc0MjI5MzE1IC5jb2xvci1BQjR7Y29sb3I6I0VERjBGRDt9CgkJLmQyLTQ3NDIyOTMxNSAuY29sb3ItQUI1e2NvbG9yOiNGN0Y4RkU7fS5hcHBlbmRpeCB0ZXh0LnRleHR7ZmlsbDojMEEwRjI1fS5tZHstLWNvbG9yLWZnLWRlZmF1bHQ6IzBBMEYyNTstLWNvbG9yLWZnLW11dGVkOiM2NzZDN0U7LS1jb2xvci1mZy1zdWJ0bGU6Izk0OTlBQjstLWNvbG9yLWNhbnZhcy1kZWZhdWx0OiNGRkZGRkY7LS1jb2xvci1jYW52YXMtc3VidGxlOiNFRUYxRjg7LS1jb2xvci1ib3JkZXItZGVmYXVsdDojMEQzMkIyOy0tY29sb3ItYm9yZGVyLW11dGVkOiMwRDMyQjI7LS1jb2xvci1uZXV0cmFsLW11dGVkOiNFRUYxRjg7LS1jb2xvci1hY2NlbnQtZmc6IzBEMzJCMjstLWNvbG9yLWFjY2VudC1lbXBoYXNpczojMEQzMkIyOy0tY29sb3ItYXR0ZW50aW9uLXN1YnRsZTojNjc2QzdFOy0tY29sb3ItZGFuZ2VyLWZnOnJlZDt9LnNrZXRjaC1vdmVybGF5LUIxe2ZpbGw6dXJsKCNzdHJlYWtzLWRhcmtlci1kMi00NzQyMjkzMTUpO21peC1ibGVuZC1tb2RlOmxpZ2h0ZW59LnNrZXRjaC1vdmVybGF5LUIye2ZpbGw6dXJsKCNzdHJlYWtzLWRhcmtlci1kMi00NzQyMjkzMTUpO21peC1ibGVuZC1tb2RlOmxpZ2h0ZW59LnNrZXRjaC1vdmVybGF5LUIze2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi00NzQyMjkzMTUpO21peC1ibGVuZC1tb2RlOmRhcmtlbn0uc2tldGNoLW92ZXJsYXktQjR7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTQ3NDIyOTMxNSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1CNXtmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItNDc0MjI5MzE1KTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LUI2e2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi00NzQyMjkzMTUpO21peC1ibGVuZC1tb2RlOmRhcmtlbn0uc2tldGNoLW92ZXJsYXktQUEye2ZpbGw6dXJsKCNzdHJlYWtzLWRhcmstZDItNDc0MjI5MzE1KTttaXgtYmxlbmQtbW9kZTpvdmVybGF5fS5za2V0Y2gtb3ZlcmxheS1BQTR7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTQ3NDIyOTMxNSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1BQTV7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTQ3NDIyOTMxNSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1BQjR7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTQ3NDIyOTMxNSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1BQjV7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTQ3NDIyOTMxNSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1OMXtmaWxsOnVybCgjc3RyZWFrcy1kYXJrZXItZDItNDc0MjI5MzE1KTttaXgtYmxlbmQtbW9kZTpsaWdodGVufS5za2V0Y2gtb3ZlcmxheS1OMntmaWxsOnVybCgjc3RyZWFrcy1kYXJrLWQyLTQ3NDIyOTMxNSk7bWl4LWJsZW5kLW1vZGU6b3ZlcmxheX0uc2tldGNoLW92ZXJsYXktTjN7ZmlsbDp1cmwoI3N0cmVha3Mtbm9ybWFsLWQyLTQ3NDIyOTMxNSk7bWl4LWJsZW5kLW1vZGU6Y29sb3ItYnVybn0uc2tldGNoLW92ZXJsYXktTjR7ZmlsbDp1cmwoI3N0cmVha3Mtbm9ybWFsLWQyLTQ3NDIyOTMxNSk7bWl4LWJsZW5kLW1vZGU6Y29sb3ItYnVybn0uc2tldGNoLW92ZXJsYXktTjV7ZmlsbDp1cmwoI3N0cmVha3MtYnJpZ2h0LWQyLTQ3NDIyOTMxNSk7bWl4LWJsZW5kLW1vZGU6ZGFya2VufS5za2V0Y2gtb3ZlcmxheS1ONntmaWxsOnVybCgjc3RyZWFrcy1icmlnaHQtZDItNDc0MjI5MzE1KTttaXgtYmxlbmQtbW9kZTpkYXJrZW59LnNrZXRjaC1vdmVybGF5LU43e2ZpbGw6dXJsKCNzdHJlYWtzLWJyaWdodC1kMi00NzQyMjkzMTUpO21peC1ibGVuZC1tb2RlOmRhcmtlbn0ubGlnaHQtY29kZXtkaXNwbGF5OiBibG9ja30uZGFyay1jb2Rle2Rpc3BsYXk6IG5vbmV9XV0+PC9zdHlsZT48ZyBjbGFzcz0iWW1WbWIzSmwiPjxnIGNsYXNzPSJzaGFwZSIgPjxyZWN0IHg9IjEyLjAwMDAwMCIgeT0iMTIuMDAwMDAwIiB3aWR0aD0iODk2LjAwMDAwMCIgaGVpZ2h0PSIxODIuMDAwMDAwIiBzdHJva2U9IiMwRDMyQjIiIGZpbGw9IiNkY2ZjZTciIGNsYXNzPSIgc3Ryb2tlLUIxIiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiAvPjwvZz48dGV4dCB4PSI0NjAuMDAwMDAwIiB5PSI0NS4wMDAwMDAiIGZpbGw9IiMwQTBGMjUiIGNsYXNzPSJ0ZXh0IGZpbGwtTjEiIHN0eWxlPSJ0ZXh0LWFuY2hvcjptaWRkbGU7Zm9udC1zaXplOjI4cHgiPlRydXN0IEluZnJhc3RydWN0dXJlPC90ZXh0PjwvZz48ZyBjbGFzcz0iWVdaMFpYST0iPjxnIGNsYXNzPSJzaGFwZSIgPjxyZWN0IHg9IjI5LjAwMDAwMCIgeT0iMzcxLjAwMDAwMCIgd2lkdGg9Ijg2MS4wMDAwMDAiIGhlaWdodD0iMTgyLjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSIjZmVlMmUyIiBjbGFzcz0iIHN0cm9rZS1CMSIgc3R5bGU9InN0cm9rZS13aWR0aDoyOyIgLz48L2c+PHRleHQgeD0iNDU5LjUwMDAwMCIgeT0iNDA0LjAwMDAwMCIgZmlsbD0iIzBBMEYyNSIgY2xhc3M9InRleHQgZmlsbC1OMSIgc3R5bGU9InRleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MjhweCI+VHJ1c3QgVGF4PC90ZXh0PjwvZz48ZyBjbGFzcz0iWW1WbWIzSmxMbU52YlcxcGRGOW9hWE4wYjNKNSI+PGcgY2xhc3M9InNoYXBlIiA+PHJlY3QgeD0iNjIuMDAwMDAwIiB5PSI2Mi4wMDAwMDAiIHdpZHRoPSIxNjYuMDAwMDAwIiBoZWlnaHQ9IjgyLjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSIjRURGMEZEIiBjbGFzcz0iIHN0cm9rZS1CMSBmaWxsLUI1IiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiAvPjwvZz48dGV4dCB4PSIxNDUuMDAwMDAwIiB5PSIxMDAuNTAwMDAwIiBmaWxsPSIjMEEwRjI1IiBjbGFzcz0idGV4dC1ib2xkIGZpbGwtTjEiIHN0eWxlPSJ0ZXh0LWFuY2hvcjptaWRkbGU7Zm9udC1zaXplOjE2cHgiPjx0c3BhbiB4PSIxNDUuMDAwMDAwIiBkeT0iMC4wMDAwMDAiPkNvbW1pdCBoaXN0b3J5ID08L3RzcGFuPjx0c3BhbiB4PSIxNDUuMDAwMDAwIiBkeT0iMTguNTAwMDAwIj5kZWNpc2lvbiByZWNvcmQ8L3RzcGFuPjwvdGV4dD48L2c+PGcgY2xhc3M9IlltVm1iM0psTG1ScFptWT0iPjxnIGNsYXNzPSJzaGFwZSIgPjxyZWN0IHg9IjI0OC4wMDAwMDAiIHk9IjYyLjAwMDAwMCIgd2lkdGg9IjIwMi4wMDAwMDAiIGhlaWdodD0iODIuMDAwMDAwIiBzdHJva2U9IiMwRDMyQjIiIGZpbGw9IiNFREYwRkQiIGNsYXNzPSIgc3Ryb2tlLUIxIGZpbGwtQjUiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIC8+PC9nPjx0ZXh0IHg9IjM0OS4wMDAwMDAiIHk9IjEwMC41MDAwMDAiIGZpbGw9IiMwQTBGMjUiIGNsYXNzPSJ0ZXh0LWJvbGQgZmlsbC1OMSIgc3R5bGU9InRleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MTZweCI+PHRzcGFuIHg9IjM0OS4wMDAwMDAiIGR5PSIwLjAwMDAwMCI+RGlmZiA9PC90c3Bhbj48dHNwYW4geD0iMzQ5LjAwMDAwMCIgZHk9IjE4LjUwMDAwMCI+ZXhwbGFuYXRpb24gb2YgY2hhbmdlPC90c3Bhbj48L3RleHQ+PC9nPjxnIGNsYXNzPSJZbVZtYjNKbExtTnZiblJ5YVdKMWRHOXkiPjxnIGNsYXNzPSJzaGFwZSIgPjxyZWN0IHg9IjQ3MC4wMDAwMDAiIHk9IjYyLjAwMDAwMCIgd2lkdGg9IjE4NS4wMDAwMDAiIGhlaWdodD0iODIuMDAwMDAwIiBzdHJva2U9IiMwRDMyQjIiIGZpbGw9IiNFREYwRkQiIGNsYXNzPSIgc3Ryb2tlLUIxIGZpbGwtQjUiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIC8+PC9nPjx0ZXh0IHg9IjU2Mi41MDAwMDAiIHk9IjEwMC41MDAwMDAiIGZpbGw9IiMwQTBGMjUiIGNsYXNzPSJ0ZXh0LWJvbGQgZmlsbC1OMSIgc3R5bGU9InRleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MTZweCI+PHRzcGFuIHg9IjU2Mi41MDAwMDAiIGR5PSIwLjAwMDAwMCI+Q29udHJpYnV0b3IgPTwvdHNwYW4+PHRzcGFuIHg9IjU2Mi41MDAwMDAiIGR5PSIxOC41MDAwMDAiPmFjY291bnRhYmxlIGh1bWFuPC90c3Bhbj48L3RleHQ+PC9nPjxnIGNsYXNzPSJZbVZtYjNKbExtOTFkR052YldVPSI+PGcgY2xhc3M9InNoYXBlIiA+PHJlY3QgeD0iNjc1LjAwMDAwMCIgeT0iNjIuMDAwMDAwIiB3aWR0aD0iMTgzLjAwMDAwMCIgaGVpZ2h0PSI4Mi4wMDAwMDAiIHN0cm9rZT0iIzBEMzJCMiIgZmlsbD0iI0VERjBGRCIgY2xhc3M9IiBzdHJva2UtQjEgZmlsbC1CNSIgc3R5bGU9InN0cm9rZS13aWR0aDoyOyIgLz48L2c+PHRleHQgeD0iNzY2LjUwMDAwMCIgeT0iMTAwLjUwMDAwMCIgZmlsbD0iIzBBMEYyNSIgY2xhc3M9InRleHQtYm9sZCBmaWxsLU4xIiBzdHlsZT0idGV4dC1hbmNob3I6bWlkZGxlO2ZvbnQtc2l6ZToxNnB4Ij48dHNwYW4geD0iNzY2LjUwMDAwMCIgZHk9IjAuMDAwMDAwIj5Db25maWRlbmNlIGVuYWJsZXM8L3RzcGFuPjx0c3BhbiB4PSI3NjYuNTAwMDAwIiBkeT0iMTguNTAwMDAwIj5hdXRvbWF0aW9uPC90c3Bhbj48L3RleHQ+PC9nPjxnIGNsYXNzPSJZV1owWlhJdVkyOXRiV2wwWDJocGMzUnZjbms9Ij48ZyBjbGFzcz0ic2hhcGUiID48cmVjdCB4PSI3OS4wMDAwMDAiIHk9IjQyMS4wMDAwMDAiIHdpZHRoPSIxNjYuMDAwMDAwIiBoZWlnaHQ9IjgyLjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSIjRURGMEZEIiBjbGFzcz0iIHN0cm9rZS1CMSBmaWxsLUI1IiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiAvPjwvZz48dGV4dCB4PSIxNjIuMDAwMDAwIiB5PSI0NTkuNTAwMDAwIiBmaWxsPSIjMEEwRjI1IiBjbGFzcz0idGV4dC1ib2xkIGZpbGwtTjEiIHN0eWxlPSJ0ZXh0LWFuY2hvcjptaWRkbGU7Zm9udC1zaXplOjE2cHgiPjx0c3BhbiB4PSIxNjIuMDAwMDAwIiBkeT0iMC4wMDAwMDAiPkNvbW1pdCBoaXN0b3J5ID08L3RzcGFuPjx0c3BhbiB4PSIxNjIuMDAwMDAwIiBkeT0iMTguNTAwMDAwIj5nZW5lcmF0aW9uIGxvZzwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0iWVdaMFpYSXVaR2xtWmc9PSI+PGcgY2xhc3M9InNoYXBlIiA+PHJlY3QgeD0iMjY1LjAwMDAwMCIgeT0iNDIxLjAwMDAwMCIgd2lkdGg9IjE3OS4wMDAwMDAiIGhlaWdodD0iODIuMDAwMDAwIiBzdHJva2U9IiMwRDMyQjIiIGZpbGw9IiNFREYwRkQiIGNsYXNzPSIgc3Ryb2tlLUIxIGZpbGwtQjUiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIC8+PC9nPjx0ZXh0IHg9IjM1NC41MDAwMDAiIHk9IjQ1OS41MDAwMDAiIGZpbGw9IiMwQTBGMjUiIGNsYXNzPSJ0ZXh0LWJvbGQgZmlsbC1OMSIgc3R5bGU9InRleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MTZweCI+PHRzcGFuIHg9IjM1NC41MDAwMDAiIGR5PSIwLjAwMDAwMCI+RGlmZiA9PC90c3Bhbj48dHNwYW4geD0iMzU0LjUwMDAwMCIgZHk9IjE4LjUwMDAwMCI+TExNIG91dHB1dCBzYW1wbGU8L3RzcGFuPjwvdGV4dD48L2c+PGcgY2xhc3M9IllXWjBaWEl1WTI5dWRISnBZblYwYjNJPSI+PGcgY2xhc3M9InNoYXBlIiA+PHJlY3QgeD0iNDY0LjAwMDAwMCIgeT0iNDIxLjAwMDAwMCIgd2lkdGg9IjE2NS4wMDAwMDAiIGhlaWdodD0iODIuMDAwMDAwIiBzdHJva2U9IiMwRDMyQjIiIGZpbGw9IiNFREYwRkQiIGNsYXNzPSIgc3Ryb2tlLUIxIGZpbGwtQjUiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIC8+PC9nPjx0ZXh0IHg9IjU0Ni41MDAwMDAiIHk9IjQ1OS41MDAwMDAiIGZpbGw9IiMwQTBGMjUiIGNsYXNzPSJ0ZXh0LWJvbGQgZmlsbC1OMSIgc3R5bGU9InRleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MTZweCI+PHRzcGFuIHg9IjU0Ni41MDAwMDAiIGR5PSIwLjAwMDAwMCI+Q29udHJpYnV0b3IgPTwvdHNwYW4+PHRzcGFuIHg9IjU0Ni41MDAwMDAiIGR5PSIxOC41MDAwMDAiPnByb21wdCBlbmdpbmVlcjwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0iWVdaMFpYSXViM1YwWTI5dFpRPT0iPjxnIGNsYXNzPSJzaGFwZSIgPjxyZWN0IHg9IjY0OS4wMDAwMDAiIHk9IjQyMS4wMDAwMDAiIHdpZHRoPSIxOTEuMDAwMDAwIiBoZWlnaHQ9IjgyLjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSIjRURGMEZEIiBjbGFzcz0iIHN0cm9rZS1CMSBmaWxsLUI1IiBzdHlsZT0ic3Ryb2tlLXdpZHRoOjI7IiAvPjwvZz48dGV4dCB4PSI3NDQuNTAwMDAwIiB5PSI0NTkuNTAwMDAwIiBmaWxsPSIjMEEwRjI1IiBjbGFzcz0idGV4dC1ib2xkIGZpbGwtTjEiIHN0eWxlPSJ0ZXh0LWFuY2hvcjptaWRkbGU7Zm9udC1zaXplOjE2cHgiPjx0c3BhbiB4PSI3NDQuNTAwMDAwIiBkeT0iMC4wMDAwMDAiPlVuY2VydGFpbnR5IHJlcXVpcmVzPC90c3Bhbj48dHNwYW4geD0iNzQ0LjUwMDAwMCIgZHk9IjE4LjUwMDAwMCI+bWFudWFsIHZlcmlmaWNhdGlvbjwvdHNwYW4+PC90ZXh0PjwvZz48ZyBjbGFzcz0iS0dKbFptOXlaU0F0Sm1kME95QmhablJsY2lsYk1GMD0iPjxtYXJrZXIgaWQ9Im1rLWQyLTQ3NDIyOTMxNS0zNDg4Mzc4MTM0IiBtYXJrZXJXaWR0aD0iMTAuMDAwMDAwIiBtYXJrZXJIZWlnaHQ9IjEyLjAwMDAwMCIgcmVmWD0iNy4wMDAwMDAiIHJlZlk9IjYuMDAwMDAwIiB2aWV3Qm94PSIwLjAwMDAwMCAwLjAwMDAwMCAxMC4wMDAwMDAgMTIuMDAwMDAwIiBvcmllbnQ9ImF1dG8iIG1hcmtlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+IDxwb2x5Z29uIHBvaW50cz0iMC4wMDAwMDAsMC4wMDAwMDAgMTAuMDAwMDAwLDYuMDAwMDAwIDAuMDAwMDAwLDEyLjAwMDAwMCIgZmlsbD0iIzBEMzJCMiIgY2xhc3M9ImNvbm5lY3Rpb24gZmlsbC1CMSIgc3Ryb2tlLXdpZHRoPSIyIiAvPiA8L21hcmtlcj48cGF0aCBkPSJNIDQ2MC4wMDAwMDAgMTk2LjAwMDAwMCBMIDQ2MC4wMDAwMDAgMzY3LjAwMDAwMCIgc3Ryb2tlPSIjMEQzMkIyIiBmaWxsPSJub25lIiBjbGFzcz0iY29ubmVjdGlvbiBzdHJva2UtQjEiIHN0eWxlPSJzdHJva2Utd2lkdGg6MjsiIG1hcmtlci1lbmQ9InVybCgjbWstZDItNDc0MjI5MzE1LTM0ODgzNzgxMzQpIiBtYXNrPSJ1cmwoI2QyLTQ3NDIyOTMxNSkiIC8+PHRleHQgeD0iNDYwLjUwMDAwMCIgeT0iMjgwLjAwMDAwMCIgZmlsbD0iIzY3NkM3RSIgY2xhc3M9InRleHQtaXRhbGljIGZpbGwtTjIiIHN0eWxlPSJ0ZXh0LWFuY2hvcjptaWRkbGU7Zm9udC1zaXplOjE2cHgiPjx0c3BhbiB4PSI0NjAuNTAwMDAwIiBkeT0iMC4wMDAwMDAiPkFJIGNvZGUgZ2VuZXJhdGlvbjwvdHNwYW4+PHRzcGFuIHg9IjQ2MC41MDAwMDAiIGR5PSIxOC41MDAwMDAiPmZsb29kcyB0aGUgc3lzdGVtPC90c3Bhbj48L3RleHQ+PC9nPjxtYXNrIGlkPSJkMi00NzQyMjkzMTUiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9Ii05IiB5PSItOSIgd2lkdGg9IjkzOCIgaGVpZ2h0PSI1ODMiPgo8cmVjdCB4PSItOSIgeT0iLTkiIHdpZHRoPSI5MzgiIGhlaWdodD0iNTgzIiBmaWxsPSJ0cmFuc3BhcmVudCI+PC9yZWN0Pgo8cmVjdCB4PSIzOTcuMDAwMDAwIiB5PSIyNjQuMDAwMDAwIiB3aWR0aD0iMTI3IiBoZWlnaHQ9IjM3IiBmaWxsPSJibGFjayI+PC9yZWN0Pgo8L21hc2s+PC9zdmc+PC9zdmc+Cg==" class="img-fluid" style="width:100.0%"></p>
<p>The companies that understand this are already adapting. They’re building internal forks of critical dependencies. They’re paying for human code review even on open source contributions. They’re treating GitHub as untrusted by default.</p>
<p>The companies that don’t understand this are accumulating technical debt they can’t see. They’re pulling in dependencies that look fine, pass tests, and ship—until six months later when the subtle bug surfaces and no one can trace it to a human decision.</p>
</section>
<section id="the-civilisational-question" class="level2">
<h2 class="anchored" data-anchor-id="the-civilisational-question">The Civilisational Question</h2>
<p>Git was designed for a world where every commit represented a human judgment. That world is ending. The question worth asking now is: what does open source collaboration look like when you can’t trust the historical record?</p>
<p>The standard response is: “We’ll build better verification tools.” That’s necessary but insufficient. Verification tools can tell you <em>what</em> changed. They can’t tell you <em>why</em> it changed, because the “why” never existed.</p>
<p>The deeper adaptation is cultural. We’re moving from a trust-by-default model (assume human intent, verify when suspicious) to a verify-by-default model (assume machine generation, trust only after audit). That’s a fundamental shift in how open source works.</p>
<p>Are we ready for it? Mostly, no. We’re still treating AI-generated code as a productivity enhancement, not a trust infrastructure collapse. We’re still measuring success by lines of code written, not by verification burden imposed on downstream users.</p>
<p>The Trust Tax is coming. The only question is whether we pay it consciously or discover it six months after the bug ships.</p>
<div class="schema-faq" style="display:none;">
<p>[{“q”:“What is the GitHub Slopocalypse?”,“a”:“The rapid flooding of GitHub repositories with AI-generated code that lacks human intent or reasoning. GitHub’s 2025 data shows AI-assisted commits exceed 40% of new code, and Copilot generates 46% of code in enabled files. This is eroding the trust infrastructure that made open source work.”},{“q”:“What is the Trust Tax in software development?”,“a”:“The additional cognitive and temporal cost developers pay to verify code provenance before they can use it. When AI generates code, you can no longer reconstruct intent from commit history — every dependency must be audited manually, doubling evaluation time for experienced developers.”},{“q”:“How do you verify AI-generated code on GitHub?”,“a”:“Moving from trust-by-default to verify-by-default: assume machine generation, audit before trusting. Companies are building internal forks of critical dependencies, paying for human code review on open source contributions, and treating GitHub as untrusted by default.”}]</p>
</div>


</section>

 ]]></description>
  <category>Agentic Systems</category>
  <category>Software Engineering</category>
  <category>Open Source</category>
  <guid>https://talvinder.com/field-notes/github-slopocalypse-trust-tax/</guid>
  <pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>What Zari-Zardozi Teaches Us About Agent Coordination</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/field-notes/home-based-craft-vs-agent-work/</link>
  <description><![CDATA[ 





<p>In a Zari-Zardozi workshop in Old Delhi, six artisans work on a single bridal dupatta. One creates the base pattern. Another applies the metallic thread. A third adds sequins. A fourth handles the edge work. They don’t talk much. They don’t pass the fabric in strict sequence. Yet the final piece is coherent—every motif aligned, every border continuous, every layer building on the last.</p>
<p>This is not romantic craft nostalgia. This is a coordination architecture that’s been production-tested for 400 years.</p>
<p>I’m calling this pattern <strong>Layered Autonomy</strong>—not because the world needs another framework, but because most multi-agent AI systems fail at exactly what Zari-Zardozi solves: how to give workers genuine autonomy while maintaining system-level coherence.</p>
<section id="were-building-agent-systems-wrong" class="level2">
<h2 class="anchored" data-anchor-id="were-building-agent-systems-wrong">We’re Building Agent Systems Wrong</h2>
<p>The dominant pattern is the command-and-control planner: a central orchestrator that assigns tasks, waits for results, then decides the next step. It’s sequential. It’s brittle. It doesn’t scale.</p>
<p>At Ostronaut, we initially built exactly this architecture. A central planner that coordinated a fleet of specialist agents to generate training content—slides, videos, quizzes. The planner would call one agent, wait for output, call the next, wait again, then call the quality checker. Linear dependency chains everywhere.</p>
<p>It worked for simple cases. It collapsed under complexity.</p>
<p>The problem wasn’t the agents. The problem was the coordination model. We were building assembly lines when we needed something closer to a Zari workshop.</p>
<p>Layered Autonomy is the alternative: agents work in parallel on shared context, with loose coupling and tight coherence. Not through constant communication. Through shared understanding of the end state.</p>
</section>
<section id="four-lessons-from-the-embroidery-floor" class="level2">
<h2 class="anchored" data-anchor-id="four-lessons-from-the-embroidery-floor">Four Lessons from the Embroidery Floor</h2>
<p><strong>Agent systems that implement layered autonomy—where workers operate on shared context with clear role boundaries but loose temporal coupling—will outperform planner-orchestrated systems on tasks requiring iterative refinement by at least 40% in both speed and quality.</strong></p>
<p>The Zari-Zardozi model teaches four specific lessons:</p>
<section id="specialization-without-silos" class="level3">
<h3 class="anchored" data-anchor-id="specialization-without-silos">1. Specialization Without Silos</h3>
<p>In a Zari workshop, the nakshi maker creates patterns. The zari worker applies metallic thread. The sequin specialist adds embellishments. Each role is distinct. But they’re not isolated—every artisan understands the full design.</p>
<p>Most agent architectures get this wrong. They create specialists (a content agent, a research agent, a quality agent) but treat them as black boxes. The planner knows what each agent does. The agents don’t know about each other.</p>
<p>This creates artificial dependencies. The content agent can’t start until research is “done.” The quality agent can’t run until content is “complete.” You’ve built specialists, but you’ve also built a bottleneck.</p>
<p>The Zari model is different. The zari worker doesn’t wait for the nakshi maker to finish the entire pattern. They work on completed sections while new sections are still being drawn. Parallel execution on shared context.</p>
</section>
<section id="shared-context-as-infrastructure" class="level3">
<h3 class="anchored" data-anchor-id="shared-context-as-infrastructure">2. Shared Context as Infrastructure</h3>
<p>The critical insight: Zari artisans don’t coordinate through constant communication. They coordinate through shared access to the evolving artifact.</p>
<p>The fabric is the coordination layer. Every artisan can see what others have done. Every artisan can see what’s left to do. The pattern itself carries the context.</p>
<p>In agent systems, this means: stop passing messages. Start sharing state.</p>
<p>We rebuilt Ostronaut’s coordination layer around this principle. Instead of agents calling each other sequentially, they all operate on a shared representation of the content being generated. One agent writes structure. Another reads that structure and writes content. A third reads and annotates quality issues. A fourth reads and generates media assets.</p>
<p>No agent waits for another agent to “finish.” They work on whatever parts of the shared state are ready for their contribution.</p>
<p>The result: generation time dropped by more than half. Not because the agents got faster. Because they stopped waiting.</p>
</section>
<section id="iterative-refinement-over-perfect-planning" class="level3">
<h3 class="anchored" data-anchor-id="iterative-refinement-over-perfect-planning">3. Iterative Refinement Over Perfect Planning</h3>
<p>Zari-Zardozi work proceeds in layers. Base stitch first. Then zari. Then sequins. Then finishing touches. Each layer builds on the last. Each layer can be evaluated independently.</p>
<p>The master craftsperson doesn’t plan every stitch upfront. They plan the overall design, then let each layer emerge.</p>
<p>Most agent planners do the opposite. They try to decompose the entire task upfront into a perfect sequence of subtasks. This fails for two reasons:</p>
<p>First, you can’t know what subtasks you’ll need until you see the results of earlier work. If the structure agent generates a complex nested outline, the content agent might need to split its work differently than if the outline is flat.</p>
<p>Second, perfect planning is expensive. You spend tokens and time trying to predict every edge case, when you could just execute and adapt.</p>
<p>The Zari model: plan the layers, not the stitches. In agent terms: define the phases (structure → content → quality → assets), but let agents decide how to execute within their phase.</p>
</section>
<section id="the-master-as-orchestrator-not-micromanager" class="level3">
<h3 class="anchored" data-anchor-id="the-master-as-orchestrator-not-micromanager">4. The Master as Orchestrator, Not Micromanager</h3>
<p>The ustad (master craftsperson) in a Zari workshop doesn’t do the embroidery. They ensure coherence. They check alignment. They decide when a layer is ready for the next phase.</p>
<p>This is not a planner in the traditional sense. The ustad doesn’t assign every task. They maintain the quality bar and the overall vision.</p>
<p>In agent architectures, this means: the orchestrator’s job is to manage transitions between layers, not to micromanage within layers.</p>
<p>Our current Ostronaut orchestrator does three things:</p>
<ul>
<li>Validates that each layer meets quality gates before the next layer starts</li>
<li>Handles failures by deciding whether to retry or skip</li>
<li>Maintains the audit trail of what happened and why</li>
</ul>
<p>It doesn’t decide which specific content to generate or which specific assets to create. That’s the workers’ job.</p>
</section>
</section>
<section id="the-performance-difference" class="level2">
<h2 class="anchored" data-anchor-id="the-performance-difference">The Performance Difference</h2>
<p><strong>Old architecture (planner-orchestrated):</strong></p>
<ul>
<li>Fully sequential—zero parallelization</li>
<li>Frequent timeouts from long dependency chains</li>
<li>Every new content type required rewriting the planner’s logic</li>
</ul>
<p><strong>New architecture (layered autonomy):</strong></p>
<ul>
<li>Agents overlap—structure and content generation run concurrently where possible</li>
<li>Failures are isolated to individual layers instead of cascading</li>
<li>New content types require a new specialist agent and a validation gate—the orchestrator doesn’t change</li>
</ul>
<p>The speed improvement matters. But the bigger win is adaptability. When we added a new content type (interactive games), the old architecture required rewriting the planner’s task decomposition logic. The new architecture required adding a new worker agent that knows how to operate on the shared state. The orchestrator didn’t change.</p>
<p>This is the Zari-Zardozi lesson: when you add a new type of embellishment to the craft, you don’t retrain every artisan. You bring in a specialist who understands the shared language of the fabric.</p>
</section>
<section id="the-pattern" class="level2">
<h2 class="anchored" data-anchor-id="the-pattern">The Pattern</h2>
<p>Most teams building multi-agent systems are building assembly lines. Sequential. Rigid. Optimized for predictability.</p>
<p>The Zari-Zardozi model suggests a different architecture: shared context, layered execution, loose coupling, tight coherence.</p>
<p>This isn’t a metaphor. It’s a specific architectural pattern:</p>
<table class="caption-top table">
<colgroup>
<col style="width: 53%">
<col style="width: 46%">
</colgroup>
<thead>
<tr class="header">
<th>Planner-Orchestrated</th>
<th>Layered Autonomy</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Agents call each other sequentially</td>
<td>Agents operate on shared state in parallel</td>
</tr>
<tr class="even">
<td>Planner decides all subtasks upfront</td>
<td>Orchestrator manages phase transitions only</td>
</tr>
<tr class="odd">
<td>Failure in one agent blocks the chain</td>
<td>Failure in one agent is isolated to its layer</td>
</tr>
<tr class="even">
<td>Adding new capabilities requires replanning logic</td>
<td>Adding new capabilities requires new worker + validation gate</td>
</tr>
</tbody>
</table>
<p>The hard part isn’t building the agents. The hard part is building the coordination layer—the equivalent of the fabric that Zari artisans work on.</p>
<p>For us, it’s a structured representation of the content being generated. For other systems, it might be a knowledge graph, a vector store, or a shared document. The specific technology matters less than the principle: give agents shared context, clear boundaries, and the autonomy to execute within their layer.</p>
<p>What I don’t know yet: how to build trust in systems where no single agent “owns” the output. When something goes wrong, users want to know which agent failed. In a layered system, failure is often emergent—the output is coherent at each layer but incoherent overall.</p>
<p>The Zari workshop solves this through the master craftsperson’s eye. They can see when the overall composition is off, even if each individual element is well-executed.</p>
<p>We don’t have a good equivalent yet. Validation gates catch obvious failures. But subtle incoherence—content that’s technically correct but doesn’t serve the learning objective—still slips through.</p>
<p>More on this as I work through it.</p>


</section>

 ]]></description>
  <category>Agentic Systems</category>
  <category>AI Architecture</category>
  <category>India</category>
  <guid>https://talvinder.com/field-notes/home-based-craft-vs-agent-work/</guid>
  <pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Zimbo Meetings and the Ghost Work Tax</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/field-notes/zimbo-meetings-ghost-work/</link>
  <description><![CDATA[ 





<p>A 30-minute meeting costs 2.5 hours of actual work. That’s not a metaphor. That’s the math when you account for prep, context switching, and follow-up. Most organizations track the 30 minutes. None track the 2 hours of ghost work that surrounds it.</p>
<p>I’m calling these Zimbo meetings—not zombie meetings, because they’re not dead. They’re worse. They’re undead. They shamble forward, consuming resources, generating more meetings, but producing no decisions and no clarity.</p>
<section id="the-ghost-work-tax" class="level2">
<h2 class="anchored" data-anchor-id="the-ghost-work-tax">The Ghost Work Tax</h2>
<p>The Ghost Work Tax is the hidden labor that meetings extract from teams: calendar coordination, pre-reads, note-taking, summary distribution, action item tracking, and the mental overhead of managing all of it. It doesn’t show up in calendars. It doesn’t show up in time tracking. But it shows up in missed deadlines and burnt-out teams.</p>
<p>At Pragmatic Leaders, I ask PMs to track their actual meeting preparation time for one week. The median ratio is 1:3. For every hour in meetings, they spend three hours on ghost work. Senior PMs hit 1:4 because they’re expected to “come prepared” to everything.</p>
<p>The tax compounds with team size. A 30-minute meeting with 8 people isn’t 4 person-hours. It’s 20 person-hours when you include the ghost work. Most companies would require VP approval for a 20-hour project. They let anyone schedule a 30-minute meeting.</p>
</section>
<section id="where-the-ghost-work-hides" class="level2">
<h2 class="anchored" data-anchor-id="where-the-ghost-work-hides">Where the Ghost Work Hides</h2>
<p><strong>If you eliminate meetings with no pre-defined decision or deliverable, you reduce total coordination overhead by 40-60%, not 20-30%.</strong></p>
<p>The standard advice is “have better meetings.” That’s useless. The problem isn’t meeting quality. It’s meeting existence.</p>
<p>Zimbo meetings have three characteristics:</p>
<ol type="1">
<li><strong>No exit condition.</strong> The meeting ends when the calendar says it ends, not when a decision is made.</li>
<li><strong>Recursive ghost work.</strong> The meeting generates action items that require more meetings to resolve.</li>
<li><strong>Ambient participants.</strong> Half the attendees are there “just in case” or “for visibility.”</li>
</ol>
<p>The ghost work tax hits hardest in three places:</p>
<p><strong>Pre-meeting:</strong> Reading the deck someone sent 10 minutes before the call. Digging up the context from three Slack threads. Finding the doc that was “shared last week.” The calendar says the meeting starts at 2pm. The actual work starts at 1:30pm.</p>
<p><strong>During-meeting:</strong> One person talks. Three people take notes in three different tools. Two people are on mute doing other work. One person is “capturing action items” in a format no one will read. The official output is a 30-minute meeting. The actual output is 90 minutes of fragmented attention.</p>
<p><strong>Post-meeting:</strong> Writing the summary email. Clarifying what was actually decided in the back-channel Slack thread. Scheduling the follow-up meeting because this one ran out of time. Updating the three places where meeting notes live. The meeting ended at 2:30pm. The ghost work ends at 4pm.</p>
<p>I’ve seen teams where 60% of “execution time” is actually meeting overhead. They’re not slow because they can’t build. They’re slow because they can’t stop coordinating.</p>
</section>
<section id="what-we-measured" class="level2">
<h2 class="anchored" data-anchor-id="what-we-measured">What We Measured</h2>
<p>We tracked this at Zopdev for one quarter. Every meeting required a one-line purpose statement and a binary decision: “Is this to make a decision or share information?” If information, it defaulted to async unless someone could articulate why it needed to be synchronous.</p>
<p>Meeting count dropped 40%. Ghost work dropped 55%. The delta—that extra 15%—came from eliminating the recursive meetings. The meetings that existed to clarify the meetings that came before them.</p>
<p>Here’s what we learned:</p>
<p><strong>Most “syncs” are status theater.</strong> The information being shared already exists in Slack, Linear, or Notion. The meeting exists because someone doesn’t trust the async system or because “we’ve always done it this way.”</p>
<p><strong>Most “brainstorms” are pre-cooked.</strong> One person has already decided. The meeting exists to build consensus or distribute blame. The actual decision-making happened in a 1:1 three days earlier.</p>
<p><strong>Most “check-ins” are anxiety management.</strong> The manager feels out of the loop. The meeting exists to make them feel better, not to unblock the team.</p>
<p>The pattern I see across thousands of PMs: junior PMs schedule meetings because they don’t know how to make decisions. Senior PMs schedule meetings because they know exactly what decision they want and need organizational buy-in to de-risk it.</p>
<p>Neither is wrong. But only one is honest about what the meeting is for.</p>
</section>
<section id="the-framework-decide-deliver-or-die" class="level2">
<h2 class="anchored" data-anchor-id="the-framework-decide-deliver-or-die">The Framework: Decide, Deliver, or Die</h2>
<p>Every meeting should have a decision, a deliverable, or die.</p>
<p><strong>Decision meetings</strong> need: a clear choice to be made, pre-circulated options with tradeoffs, and a DRI who owns the call. If you can’t name the decision, it’s not a decision meeting.</p>
<p><strong>Deliverable meetings</strong> need: a thing that will exist at the end that didn’t exist at the beginning. A design, a plan, a document. If the output is “alignment,” it’s not a deliverable meeting.</p>
<p><strong>Everything else is async.</strong> Updates go in Slack. Brainstorms start in docs. Status lives in project management tools.</p>
<p>The Ghost Work Tax doesn’t show up in your P&amp;L. It shows up in your execution speed. In your team’s ability to do deep work. In the gap between your roadmap and your delivery.</p>
<p>Track it for one week. For every meeting on your calendar, log the prep time, the meeting time, and the follow-up time. Add it up. Then ask: what could we have built with those hours?</p>
<p>Most organizations won’t do this. They’ll keep scheduling 30-minute meetings and wondering why quarters take six months.</p>
<p>The ones that do will discover something uncomfortable: half their meetings exist to compensate for broken async communication. Fix the async system, kill the meetings, reclaim the ghost work hours.</p>
<p>What I don’t know yet: how to build organizational trust in async-first decision-making when the executive layer still equates “presence in meetings” with “doing the work.” The ghost work tax is a technical problem with a political solution.</p>
<p>More on this as I work through it.</p>


</section>

 ]]></description>
  <category>Leadership</category>
  <category>Operations</category>
  <category>Remote Work</category>
  <guid>https://talvinder.com/field-notes/zimbo-meetings-ghost-work/</guid>
  <pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate>
</item>
<item>
  <title>Why LLM-as-Judge Fails in India: The $0.03 Evaluation That Costs You Customers</title>
  <dc:creator>B. Talvinder</dc:creator>
  <link>https://talvinder.com/build-logs/llm-judge-india-failure/</link>
  <description><![CDATA[ 





<p>Galileo raised $45 million in October 2024 to build AI evaluation tools. Revenue grew 834% that year. Six Fortune 50 companies signed up. Snorkel AI raised $100 million in May 2025 at a $1.3 billion valuation, with Snorkel Evaluate as a core product. Confident AI came out of YC W25.</p>
<p>These companies are now pitching Indian edtech buyers. Beautiful decks. Impressive demos. Per-evaluation API pricing that will bankrupt every Indian buyer who signs.</p>
<p>I keep watching this happen. The demo works. The pricing model is imported from a market where course fees are $500-2,000/seat. The Indian buyer is selling at ₹200-800/learner/month. Nobody does the math until after the contract is signed.</p>
<section id="the-number-that-kills-you" class="level2">
<h2 class="anchored" data-anchor-id="the-number-that-kills-you">The number that kills you</h2>
<p>Take a corporate training product. 10,000 active learners, 4 evaluations per month. 40,000 evaluation events.</p>
<p>LLM-as-judge at GPT-4o-mini rates: $0.15 per million input tokens, $0.60 per million output tokens. A basic evaluation prompt with rubric and response runs roughly 1,500 tokens in, 500 out. That’s about $0.0005 per evaluation. At 40,000 evaluations: $20/month. Sounds fine.</p>
<p>Now make the evaluation useful. Detailed feedback, multi-criteria scoring, follow-up questions. You’re using 4,000 tokens in, 2,000 out. Per-eval cost jumps to $0.0018. Still small. But you want GPT-4o quality for nuanced judgment, $2.50/$10 per million tokens. Now you’re at $0.03 per evaluation. $1,200/month. $1.20 per learner per month.</p>
<p>Your Indian enterprise client is paying ₹200/learner/month. That’s roughly $2.40.</p>
<p><strong>Evaluation Cost Ratio = evaluation spend / per-learner revenue.</strong></p>
<p>At $0.03/eval with GPT-4o: 50%. Half your revenue on evaluation alone.</p>
<table class="caption-top table">
<thead>
<tr class="header">
<th>Market</th>
<th>Monthly ARPU</th>
<th>Eval cost/learner/month</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>US enterprise training</td>
<td>$500</td>
<td>$1.20</td>
</tr>
<tr class="even">
<td>US mid-market</td>
<td>$50</td>
<td>$1.20</td>
</tr>
<tr class="odd">
<td>Indian corporate training</td>
<td>$2.40</td>
<td>$1.20</td>
</tr>
</tbody>
</table>
<p>The evaluation startups aren’t lying. Their product works. It works in markets where the ECR is under 3%. In Indian markets, the same product eats half your revenue. The engineering is impressive. The product-market fit is nonexistent.</p>
</section>
<section id="india-already-solved-this-problem" class="level2">
<h2 class="anchored" data-anchor-id="india-already-solved-this-problem">India already solved this problem</h2>
<p>JEE Main evaluates 1.3 million candidates annually. GATE 2025 had 7.37 lakh candidates appear across all papers. No LLM. No army of graders. Structured assessment at Indian scale, Indian price points.</p>
<p>The GMAT removed its Analytical Writing Assessment entirely when it launched the Focus Edition in 2023, making the exam an hour shorter by cutting the essay. Then brought it back in July 2024 as an optional “Business Writing Assessment” after business schools complained they couldn’t tell if applicants or ChatGPT wrote the essays. The lesson: subjective evaluation keeps getting harder and more expensive. Structured evaluation keeps scaling.</p>
<p>Physics Wallah scaled to 4.46 million paid users in FY25, up from 1.76 million in FY23. Revenue crossed ₹3,000 crore. Online ACPU was ₹3,682. Their bottleneck was never evaluation — it was content production and offline expansion. They solved the right scaling problem.</p>
<p>The insight isn’t new. Structure the assessment so it’s objective AND scalable. India cracked this decades ago for science and math. The product opportunity is applying the same principle to judgment skills (leadership decisions, case analyses, strategic thinking) that the exam tradition doesn’t handle well.</p>
</section>
<section id="what-i-actually-built" class="level2">
<h2 class="anchored" data-anchor-id="what-i-actually-built">What I actually built</h2>
<p>I ran into this wall building Ostronaut’s training platform. We generate learning content with AI: slides, games, interactive scenarios. The generation pipeline uses LLMs heavily. Expensive per content piece, but it’s a one-time cost amortized across all learners who consume it.</p>
<p>The evaluation architecture is completely different. For game-based scenarios — card games and turn-based simulations that teach decision-making — scoring is rule-based. The system defines optimal play. Scores against it. Runs in milliseconds. Costs nothing at the margin. Same input, same score, every time.</p>
<p>LLM creates the scenario. Rules judge every move within it.</p>
<p>I use LLM judgment in exactly one place: validating generated content before it reaches learners. One validation pass per content piece. That cost scales with production volume, not learner volume. The difference matters.</p>
<table class="caption-top table">
<colgroup>
<col style="width: 33%">
<col style="width: 33%">
<col style="width: 33%">
</colgroup>
<thead>
<tr class="header">
<th></th>
<th>Content creation</th>
<th>Learner evaluation</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Method</td>
<td>LLM generation + LLM validation</td>
<td>Rule-based scoring</td>
</tr>
<tr class="even">
<td>Cost structure</td>
<td>One-time per piece</td>
<td>Per-interaction</td>
</tr>
<tr class="odd">
<td>Scales with</td>
<td>Content volume (manageable)</td>
<td>Learner volume (must approach zero)</td>
</tr>
</tbody>
</table>
<p>Get this split wrong and you bleed money from day one.</p>
</section>
<section id="manufacturing-figured-this-out-fifty-years-ago" class="level2">
<h2 class="anchored" data-anchor-id="manufacturing-figured-this-out-fifty-years-ago">Manufacturing figured this out fifty years ago</h2>
<p>You can inspect every widget coming off the line, or you can design the production process so widgets come out right. Inspection scales linearly with output. Built-in quality is expensive upfront and free at scale.</p>
<p>LLM-as-judge is inspection. Structured rubrics with rule-based scoring is built-in quality.</p>
<p>I watch smart founders import the inspection model from Western markets, build their entire evaluation architecture around it, and then discover nine months later that their unit economics don’t work. It’s the same mistake as <a href="../../field-notes/federated-learning-healthcare-failure/">importing federated learning into Indian healthcare</a> — the architecture assumes conditions that don’t exist here. By then they’ve raised on metrics that assumed evaluation costs would decrease. They won’t. They scale linearly with learner volume.</p>
</section>
<section id="what-im-not-sure-about" class="level2">
<h2 class="anchored" data-anchor-id="what-im-not-sure-about">What I’m not sure about</h2>
<p>The ECR math is clear at current model prices. But model prices are dropping fast. GPT-4o-mini already costs 60% less than GPT-3.5 Turbo did at launch. If evaluation costs fall another 10x in two years, does the ECR problem solve itself?</p>
<p>Maybe. If GPT-5-equivalent evaluation costs $0.003/eval, the Indian ECR drops to about 5%. Livable. But I’ve watched this movie before with cloud storage, with compute, with bandwidth. Prices drop, but usage grows faster. You build assuming the cost decrease, then discover you’re evaluating 10x more often because you can. The ECR stays broken.</p>
<p>The other question: are there domains where LLM-as-judge is the only option? Creative writing feedback, strategic case analysis, nuanced communication skills — these don’t reduce cleanly to rules. Maybe the answer is tiered: rule-based evaluation for 80% of learners, LLM evaluation for the premium 20% who pay 5x more. I haven’t seen anyone execute this successfully yet.</p>
<p>The pattern I keep seeing is founders who treat evaluation as a feature, not a cost center — a <a href="../../frameworks/india-pm-revolution/">judgment failure</a> that no amount of AI tooling can fix. They assume it’ll be cheap because the demo was cheap. Then they scale to 50,000 learners and the AWS bill is suddenly larger than payroll. It’s the same <a href="../../frameworks/biggest-challenge-indian-startups/">Indian startup scaling wall</a> applied to AI economics — the structural constraints are different, but the pattern is identical.</p>
<p>The evaluation startups are solving a real problem. Just not for Indian markets. Not at these price points. Not yet.</p>
<p>This is a specific instance of a broader pattern: the <a href="../../field-notes/indian-saas-agent-reliability/">reliability expectations in Indian SaaS</a> demand cost structures that Western tooling doesn’t accommodate. The companies that get the <a href="../../frameworks/ai-runtime-infrastructure-play/">infrastructure economics</a> right will have a structural advantage that well-funded but wasteful competitors can’t replicate.</p>


<!-- -->

</section>

 ]]></description>
  <category>Agentic Systems</category>
  <category>India Market</category>
  <category>Product Economics</category>
  <guid>https://talvinder.com/build-logs/llm-judge-india-failure/</guid>
  <pubDate>Thu, 05 Mar 2026 00:00:00 GMT</pubDate>
  <media:content url="https://talvinder.com/build-logs/llm-judge-india-failure/assets/og-image.png" medium="image" type="image/png" height="76" width="144"/>
</item>
</channel>
</rss>
