<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Riya Maurya</title>
    <description>The latest articles on DEV Community by Riya Maurya (@riya_maurya_07).</description>
    <link>https://dev.to/riya_maurya_07</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4167012%2F62fbcdd5-4a35-47a8-a521-a9d487e0697e.png</url>
      <title>DEV Community: Riya Maurya</title>
      <link>https://dev.to/riya_maurya_07</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/riya_maurya_07"/>
    <language>en</language>
    <item>
      <title>SlothAudit: Finding the Subscriptions You Forgot You Pay For</title>
      <dc:creator>Riya Maurya</dc:creator>
      <pubDate>Sat, 24 Oct 2026 15:27:49 +0000</pubDate>
      <link>https://dev.to/riya_maurya_07/slothaudit-finding-the-subscriptions-you-forgot-you-pay-for-4g2n</link>
      <guid>https://dev.to/riya_maurya_07/slothaudit-finding-the-subscriptions-you-forgot-you-pay-for-4g2n</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge — Week 3: Slow and Steady&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SlothAudit turns a bank-statement CSV into a short list of recurring charges, price increases, and possible duplicate subscriptions worth reviewing.&lt;/strong&gt; It is designed to reduce repetitive manual checking, not to make financial decisions for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  The slow leak
&lt;/h2&gt;

&lt;p&gt;Subscription renewals are easy to forget. A small monthly charge can continue for months, and a price increase can slip by unnoticed. Manually scanning a long statement to find these patterns is tedious.&lt;/p&gt;

&lt;p&gt;I built SlothAudit to make that review less repetitive: upload a CSV, run an audit, and inspect the findings instead of starting from every transaction.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live demo:&lt;/strong&gt; &lt;a href="https://slothaudit-frontend.onrender.com/" rel="noopener noreferrer"&gt;https://slothaudit-frontend.onrender.com/&lt;/a&gt; (free hosting, so the first load can take a minute)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source code:&lt;/strong&gt; &lt;a href="https://github.com/riyaax07/slothaudit" rel="noopener noreferrer"&gt;https://github.com/riyaax07/slothaudit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sample CSV:&lt;/strong&gt; &lt;a href="https://raw.githubusercontent.com/riyaax07/slothaudit/main/data/demo_transactions.csv" rel="noopener noreferrer"&gt;demo_transactions.csv&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fblau94s27rg1wfhov25h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fblau94s27rg1wfhov25h.png" alt="SlothAudit dashboard showing a ₹5,015.92 monthly recurring commitment, ₹60,191 annual commitment, ₹2,388 hypothetical annual savings, and 10 findings" width="800" height="537"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The lazy payoff
&lt;/h2&gt;

&lt;p&gt;Using the bundled &lt;strong&gt;synthetic demo dataset&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;83 transaction rows&lt;/strong&gt; become &lt;strong&gt;10 audit findings&lt;/strong&gt; to review.&lt;/li&gt;
&lt;li&gt;The audit estimates approximately &lt;strong&gt;₹5,015.92 in monthly recurring commitments&lt;/strong&gt; (₹60,191 a year). This includes a variable utility bill and one overlapping plan, so it's "commitments", not just subscriptions.&lt;/li&gt;
&lt;li&gt;The hypothetical annual savings estimate is &lt;strong&gt;₹2,388&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The 10 findings are 7 active recurring charges, 1 inactive/churned subscription, 1 overlapping-plan candidate, and 1 price-increase alert. The alert is linked to an active subscription and isn't double-counted in the totals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example 1, a price increase.&lt;/strong&gt; The synthetic data shows DevToolbox going from &lt;strong&gt;₹499 to ₹699 per month&lt;/strong&gt; (about a 40% increase) on 2024-06-10. SlothAudit flags it and suggests verifying with your statements whether the change was authorized.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example 2, an overlapping plan.&lt;/strong&gt; The ₹2,388/year estimate comes from one candidate: a ₹199/month StreamFlix charge running alongside the primary ₹649 plan, annualized over 12 months. It's only a potential saving if that second plan is genuinely unwanted. SlothAudit can't know whether two plans serve different people or purposes without your confirmation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5sbarcwtxfejfzd2e8g2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5sbarcwtxfejfzd2e8g2.png" alt="Price-increase and overlapping-plan findings with evidence and considerations" width="800" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are results from synthetic data, not measured savings from real customers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Recurring-payment detection:&lt;/strong&gt; identifies likely monthly and annual payment patterns, including variable utility bills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Price-increase alerts:&lt;/strong&gt; highlights a clear step-up from an established billing amount.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Duplicate candidates:&lt;/strong&gt; flags overlapping recurring streams for review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inactive subscriptions:&lt;/strong&gt; notes charges that stopped, so you can confirm autopay was actually terminated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Savings estimates:&lt;/strong&gt; calculates hypothetical savings where the findings support them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evidence references:&lt;/strong&gt; every finding includes a summary and linked transaction IDs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JSON export:&lt;/strong&gt; lets you save the audit report for further review.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SlothAudit does not cancel subscriptions, contact merchants, or label a transaction as fraud. Findings are prompts for human review, not final financial decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;CSV upload → parsing and validation → merchant normalization → deterministic audit rules → findings → dashboard → JSON export&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The parser validates the uploaded CSV and normalizes transaction descriptions into canonical merchant names. The audit engine then applies explicit rules to identify recurring patterns, possible price increases, and overlapping charges. The frontend displays the findings and lets you export the report.&lt;/p&gt;

&lt;h3&gt;
  
  
  A deliberate choice: the detector is deterministic
&lt;/h3&gt;

&lt;p&gt;The audit engine, not a language model, decides which patterns to flag and calculates the associated amounts. That keeps the core results reproducible and makes it easier to inspect why a finding was produced.&lt;/p&gt;

&lt;p&gt;The optional explanation layer is separate. Its role is to describe an existing finding in plain language, not to invent findings or change the audit calculations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Built with
&lt;/h2&gt;

&lt;p&gt;React + Vite, Python + FastAPI, a deterministic rules engine, pytest, and Render for hosting. SlothAudit's code is released under the &lt;strong&gt;MIT license&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where open models fit, and what is verified today
&lt;/h2&gt;

&lt;p&gt;SlothAudit includes an optional explanation provider configured for &lt;code&gt;google/gemma-2-2b-it&lt;/code&gt; through Hugging Face's inference router. It validates the generated response and falls back to deterministic explanations if the provider fails or returns invalid output.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important limitation:&lt;/strong&gt; I have not verified a successful live Gemma response end-to-end. The hosted inference attempts hit provider/credit errors. The integration code and automated fallback tests exist, but I am not presenting the model as a demonstrated live feature. In the live demo, the "Explain Finding" button returns a deterministic, template-based explanation.&lt;/p&gt;

&lt;p&gt;The model card lists the &lt;code&gt;gemma&lt;/code&gt; license, governed by Google's Gemma terms. That is separate from SlothAudit's MIT license, and Gemma is an open-weight model, not an OSI-style open-source one. I don't bundle or redistribute any model weights. Anyone deploying the optional model should review the applicable terms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why open innovation matters
&lt;/h2&gt;

&lt;p&gt;An auditable rules engine makes the core financial calculations inspectable instead of hiding them behind a model call. An open-weight model adds flexibility: developers can swap the explanation model and, with a suitable local runtime, potentially run explanations on-device so statement data doesn't need to leave the user's machine for that step.&lt;/p&gt;

&lt;p&gt;That local explanation workflow is a direction for the project, not a claim about the deployed demo.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy: what is true today
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Uploaded CSV data is processed &lt;strong&gt;in memory&lt;/strong&gt;. SlothAudit has no database and doesn't save uploads to disk.&lt;/li&gt;
&lt;li&gt;The core audit doesn't need an external AI service to calculate findings.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;public demo is hosted on Render&lt;/strong&gt;, so an uploaded file is sent to that hosted backend for processing. Please use the synthetic sample dataset on the public demo, and don't upload a real bank statement unless you're comfortable sending it to that service.&lt;/li&gt;
&lt;li&gt;When you run the project locally, the core audit runs on your own machine. If you enable a hosted explanation provider, the finding context sent to it is subject to that provider's terms.&lt;/li&gt;
&lt;li&gt;In-memory processing is not a blanket security guarantee.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The bundled example is synthetic; results don't establish accuracy on real bank statements.&lt;/li&gt;
&lt;li&gt;The rule-based detector can miss patterns (for example, irregular billing) or flag candidates that need human review.&lt;/li&gt;
&lt;li&gt;Savings figures are hypothetical, not guaranteed outcomes.&lt;/li&gt;
&lt;li&gt;Hosted Gemma inference has not been verified end-to-end.&lt;/li&gt;
&lt;li&gt;Precision and recall have not been measured against a labeled real-world dataset.&lt;/li&gt;
&lt;li&gt;SlothAudit is a review aid, not financial advice.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Download the &lt;a href="https://raw.githubusercontent.com/riyaax07/slothaudit/main/data/demo_transactions.csv" rel="noopener noreferrer"&gt;sample CSV&lt;/a&gt; (synthetic, safe to use).&lt;/li&gt;
&lt;li&gt;Open the &lt;a href="https://slothaudit-frontend.onrender.com/" rel="noopener noreferrer"&gt;live demo&lt;/a&gt; and upload the file.&lt;/li&gt;
&lt;li&gt;Run the audit and expand a few findings to see their transaction IDs.&lt;/li&gt;
&lt;li&gt;Export the JSON report.&lt;/li&gt;
&lt;li&gt;Explore or run it locally from the &lt;a href="https://github.com/riyaax07/slothaudit" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Next steps: verify the model path end-to-end (ideally with a local runtime), evaluate against a labeled dataset, support more bank CSV formats, add a one-click sample loader, and show the underlying transactions inside each finding.&lt;/p&gt;

&lt;p&gt;The goal is simple: make recurring-payment review a smaller, more inspectable task, one slow, steady improvement at a time.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
      <category>hacktoberfest</category>
      <category>opensource</category>
    </item>
    <item>
      <title>What Does AI Forget First?</title>
      <dc:creator>Riya Maurya</dc:creator>
      <pubDate>Sun, 11 Oct 2026 07:41:06 +0000</pubDate>
      <link>https://dev.to/riya_maurya_07/what-does-ai-forget-first-1aad</link>
      <guid>https://dev.to/riya_maurya_07/what-does-ai-forget-first-1aad</guid>
      <description>&lt;h2&gt;
  
  
  Does AI Forget Your Requirements When the Context Gets Longer? I Tested It.
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/kaggle-2026-09-23"&gt;Kaggle Benchmarking Challenge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What I Benchmarked&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;When a coding chat gets crowded, does an AI model still follow the rules you set earlier?&lt;/p&gt;

&lt;p&gt;I wanted to measure this instead of just assuming that AI “forgets” things in long chats.&lt;/p&gt;

&lt;p&gt;My experiment, &lt;strong&gt;PriorityDecay&lt;/strong&gt;, tests &lt;strong&gt;constraint adherence under context load&lt;/strong&gt;: whether generated code still respects requirements stated earlier in a conversation.&lt;/p&gt;

&lt;p&gt;I used a fictional student internship platform with five constraints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Python FastAPI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database:&lt;/strong&gt; PostgreSQL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upload limit:&lt;/strong&gt; Maximum 5 MB&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security:&lt;/strong&gt; Never hardcode or expose API keys or secrets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JavaScript:&lt;/strong&gt; Use &lt;code&gt;snake_case&lt;/code&gt; variable names&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I then added unrelated topics before asking the model to implement a resume-upload endpoint and a small upload widget.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Experiment Setup&lt;/strong&gt;
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Condition&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Unrelated distractors&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Runs&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SHORT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MEDIUM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LONG&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TOTAL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;15&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The final task required a resume-upload endpoint and a UI that displays the selected filename and upload status, and disables the button during upload.&lt;/p&gt;

&lt;p&gt;I evaluated the responses using &lt;strong&gt;Python regex and string-based checks&lt;/strong&gt;, not an LLM judge. The scorer used eight checks: the five stated constraints, two UI requirements, and an additional check for credentials embedded in a default database URL.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Model Tested&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I ran the benchmark on &lt;strong&gt;&lt;code&gt;google/gemini-3.7-flash&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is a &lt;strong&gt;one-model pilot with 15 runs&lt;/strong&gt;, not a comprehensive evaluation of coding models.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Results&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The mean score was calculated out of eight checks.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Condition&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Distractors&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Mean Score&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SHORT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7.0/8&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MEDIUM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;6.8/8&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;LONG&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;6.6/8&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The scores decreased slightly as unrelated context increased. However, the aggregate score alone does not tell us whether the model actually violated a requirement.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Constraint-Level Results&lt;/strong&gt;
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Constraint&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;SHORT&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;MEDIUM&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;LONG&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FastAPI&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5 MB upload limit&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No hardcoded API key detected&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JavaScript &lt;code&gt;snake_case&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PostgreSQL evidence detected&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;td&gt;2/5&lt;/td&gt;
&lt;td&gt;3/5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The most important caveat:&lt;/strong&gt; a regex check detecting the word “PostgreSQL” is not the same as verifying an actual PostgreSQL connection.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  &lt;strong&gt;1. PostgreSQL checks did not tell the whole story&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Some outputs used &lt;code&gt;DATABASE_URL&lt;/code&gt; without explicitly naming PostgreSQL. That left the database configuration unresolved from the source alone.&lt;/p&gt;

&lt;p&gt;There are three distinct outcomes to track:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;PostgreSQL use demonstrated&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Another database used&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuration unresolved&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Treating unresolved configuration as either a definite violation or a confirmed pass would overstate the evidence.&lt;/p&gt;

&lt;p&gt;A comment mentioning PostgreSQL should not count as proof of database behavior, either.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Two LONG outputs did not demonstrate database writes&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;In two of the five LONG runs, the endpoint validated the file and returned a response without writing a record to a database.&lt;/p&gt;

&lt;p&gt;This is worth investigating, but the final task did not explicitly require persistence. Therefore, I cannot call it a proven violation of the stated constraints.&lt;/p&gt;

&lt;p&gt;A follow-up benchmark should make persistence an explicit acceptance criterion if that behavior is what we want to measure.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. The credential check told a different story&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The additional check flagged default database URLs containing embedded credentials in:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Condition&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Flagged outputs&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;SHORT&lt;/td&gt;
&lt;td&gt;5/5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MEDIUM&lt;/td&gt;
&lt;td&gt;2/5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LONG&lt;/td&gt;
&lt;td&gt;2/5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The explicit API-key check passed in all 15 runs, but the database-URL check flagged embedded credentials in 9 of 15 outputs.&lt;/p&gt;

&lt;p&gt;These are different checks. Passing the API-key check does &lt;strong&gt;not&lt;/strong&gt; prove that the generated code is secure.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. My evaluator was wrong sometimes&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The filename-and-status UI check failed in one MEDIUM output and three LONG outputs. After manually inspecting those four outputs, I found that they displayed the filename and status message—the check simply did not recognize the element IDs used.&lt;/p&gt;

&lt;p&gt;That means the apparent UI decline was a &lt;strong&gt;measurement artifact&lt;/strong&gt;, not a demonstrated model failure.&lt;/p&gt;

&lt;p&gt;If I had trusted the aggregate score without inspecting the outputs, I would have drawn the wrong conclusion.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What I Would Measure Next&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;My next experiment would improve the evaluation rather than simply add more distractors.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use a fixed PostgreSQL connection:&lt;/strong&gt; Provide the same known connection in every condition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verify actual behavior:&lt;/strong&gt; Run the generated endpoint, inspect the database connection, and check whether the expected record was stored.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separate evaluator uncertainty from implementation failure:&lt;/strong&gt; An unresolved configuration should not be automatically classified as a violation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Increase repetitions and test more models:&lt;/strong&gt; Five runs per condition are not enough to establish a reliable trend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test longer contexts and conflicting instructions:&lt;/strong&gt; Real development conversations can be much more complex than this pilot.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Limitations&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This experiment used one model, one task, 15 runs, and string-based checks. The context was short compared with a real coding session, and the evaluator could miss valid implementations or accept code that merely mentioned a required technology.&lt;/p&gt;

&lt;p&gt;There was also no controlled no-constraint baseline in the reported results.&lt;/p&gt;

&lt;p&gt;My Benchmark&lt;/p&gt;

&lt;p&gt;Kaggle notebook: [&lt;a href="https://www.kaggle.com/code/riyaax07/new-benchmark-task-7112f" rel="noopener noreferrer"&gt;https://www.kaggle.com/code/riyaax07/new-benchmark-task-7112f&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;PriorityDecay is a small experiment, but it highlights an important lesson: benchmark scores are only as trustworthy as the checks behind them.&lt;/p&gt;

&lt;p&gt;The next step is to test actual behavior—not just search generated code for familiar words.&lt;/p&gt;

&lt;p&gt;What would you test first: longer context, conflicting instructions, or execution-based verification?&lt;/p&gt;

&lt;h1&gt;
  
  
  kagglechallenge
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>kagglechallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
