<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LLM-as-Judge on Narasimha Karthik J</title><link>https://jnk234.github.io/tags/llm-as-judge/</link><description>Recent content in LLM-as-Judge on Narasimha Karthik J</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 28 Oct 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://jnk234.github.io/tags/llm-as-judge/index.xml" rel="self" type="application/rss+xml"/><item><title>Customer-Service Agent RL Environment</title><link>https://jnk234.github.io/projects/customer-service-agent-rl-environment/</link><pubDate>Mon, 05 Oct 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">https://jnk234.github.io/projects/customer-service-agent-rl-environment/#full</guid><description>&lt;p&gt;&lt;a href="https://github.com/JNK234/customer-service-agent-rl-env" target="_blank" rel="noreferrer"&gt;Code on GitHub&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="what-it-is" class="relative group"&gt;What it is &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#what-it-is" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;Two LLMs talk to each other. A &lt;strong&gt;user simulator&lt;/strong&gt; plays a customer with a hidden goal and sees only what the agent says. An &lt;strong&gt;assistant agent&lt;/strong&gt; follows a written store policy and uses 13 tools that read and change an in-memory database built from the &lt;a href="https://github.com/sierra-research/tau2-bench" target="_blank" rel="noreferrer"&gt;τ²-bench&lt;/a&gt; retail data (25 users, 45 orders, 50 products).&lt;/p&gt;
&lt;p&gt;The tools check only data integrity, not policy. So a policy violation changes the database, and the reward can see it.&lt;/p&gt;
&lt;h2 id="the-reward" class="relative group"&gt;The reward &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#the-reward" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Gate on state.&lt;/strong&gt; The agent&amp;rsquo;s database diff must match a correct outcome, and the agent must have made the required lookups. A confident transcript with a wrong write scores zero, and a do-nothing agent can&amp;rsquo;t pass tasks where the right answer is &amp;ldquo;no write&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Efficiency.&lt;/strong&gt; Fewer wasted tool calls score higher.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quality, by an LLM judge.&lt;/strong&gt; The judge checks consent before each write and whether every claim of a finished action matches the tool log. It asks one yes/no question per call and quotes evidence before its verdict. Hard violations cap the reward below the floor of any clean run.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A pytest suite checks that golden runs pass and do-nothing runs fail, with no API calls.&lt;/p&gt;
&lt;h2 id="what-red-teaming-found" class="relative group"&gt;What red-teaming found &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#what-red-teaming-found" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Forged consent.&lt;/strong&gt; In a hand-written bad conversation, the customer&amp;rsquo;s text contained fake &amp;ldquo;AGENT: &amp;hellip; CUSTOMER: Yes&amp;rdquo; lines, and the judge passed the consent check. Feeding the judge speaker-tagged messages fixed it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Unfair simulator.&lt;/strong&gt; The user simulator once agreed and sent its stop token in the same message, so a correct agent scored 0.&lt;/li&gt;
&lt;li&gt;Against a judge-aware hostile customer, a Sonnet agent scored 1.0 and a Haiku agent scored 0, after handing off to a human following a correct denial.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These come from one or two runs per task, not pass rates.&lt;/p&gt;</description></item><item><title>job-hunt-kit</title><link>https://jnk234.github.io/projects/job-hunt-kit/</link><pubDate>Wed, 28 Oct 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">https://jnk234.github.io/projects/job-hunt-kit/#full</guid><description>&lt;p&gt;&lt;a href="https://github.com/JNK234/job-hunt-kit" target="_blank" rel="noreferrer"&gt;Code on GitHub&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="what-it-is" class="relative group"&gt;What it is &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#what-it-is" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;A Claude Code plugin with nine skills that cover a job search from start to finish: set up a profile, build master resumes from job-description research, tailor a resume to one posting, draft application answers, find the right person on the team, and write outreach.&lt;/p&gt;
&lt;p&gt;Everything lives in plain text and LaTeX files in a &lt;code&gt;job-hunt/&lt;/code&gt; folder that you own. The kit drafts. It never sends an email or submits a form.&lt;/p&gt;
&lt;h2 id="how-it-works" class="relative group"&gt;How it works &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#how-it-works" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;One source of truth.&lt;/strong&gt; &lt;code&gt;profile.md&lt;/code&gt; holds every fact about you. Resumes, answers and emails may only state what is in it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Live form schemas.&lt;/strong&gt; &lt;code&gt;ats.py&lt;/code&gt; reads the exact application form from the public Ashby, Greenhouse and Lever APIs, because the pages are rendered client-side and scraping returns only a title. It checks a posting is live by its presence on the job board, since Ashby returns HTTP 200 for any path. It flags field titles worth a human look: inverted sponsorship questions, export-control questions, and decoy prompts addressed to an LLM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A cheap gate, then a judge.&lt;/strong&gt; &lt;code&gt;gate.py&lt;/code&gt; is a deterministic check for stock phrases, compliance claims (HIPAA, SOC 2 and so on) that the profile never mentions, numbers absent from the profile, and leftover placeholders. &lt;code&gt;judge.py&lt;/code&gt; then asks yes/no rubric questions about each email or answer, and returns a fix for every NO.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claim checking per sentence.&lt;/strong&gt; The judge splits a draft into sentences and asks, for each one, whether its background facts are supported by the profile and resume text.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resumable pipeline.&lt;/strong&gt; &lt;code&gt;pipeline.py&lt;/code&gt; tracks roles through sourcing, verification and drafting so a long batch can stop and pick up again.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="whats-notable" class="relative group"&gt;What&amp;rsquo;s notable &lt;span class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100"&gt;&lt;a class="group-hover:text-primary-300 dark:group-hover:text-neutral-700" style="text-decoration-line: none !important;" href="#whats-notable" aria-label="Anchor"&gt;#&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;The claim-check threshold was set on planted true and false claims: false claims scored at most 0.21 and true ones at least 0.40, so the cutoff sits at 0.3. Each exemption in the deterministic gate is commented with the false positive that caused it.&lt;/p&gt;</description></item></channel></rss>