<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Runbear Blog]]></title><description><![CDATA[Practical guides on building shared AI teammates in Slack and Microsoft Teams, connecting company knowledge, and automating workflows across 2,000+ tools.]]></description><link>https://runbear.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6a7587cd3a69bb8c0d400136/86a9902f-8cd5-4ff4-873f-b6059fcff0a1.png</url><title>Runbear Blog</title><link>https://runbear.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 23:53:09 GMT</lastBuildDate><atom:link href="https://runbear.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[We Won $1,000 in AI Credits at a Hackathon. Then Lost Them to Trial Abuse]]></title><description><![CDATA[A few days after our team placed third in a hackathon and received roughly $1,000 in Anthropic credits, we had a good problem: more budget to let teams evaluate Runbear.
By the end of the weekend, mos]]></description><link>https://runbear.hashnode.dev/we-lost-1000-in-hackathon-ai-credits-to-trial-abuse</link><guid isPermaLink="true">https://runbear.hashnode.dev/we-lost-1000-in-hackathon-ai-credits-to-trial-abuse</guid><category><![CDATA[SaaS]]></category><category><![CDATA[Security]]></category><category><![CDATA[startup]]></category><category><![CDATA[automation]]></category><category><![CDATA[incident response]]></category><dc:creator><![CDATA[Runbear]]></dc:creator><pubDate>Sun, 09 Aug 2026 12:17:29 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a7587cd3a69bb8c0d400136/ff722119-f88e-46d1-a529-5a8237f5cdde.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few days after our team placed third in a hackathon and received roughly $1,000 in Anthropic credits, we had a good problem: more budget to let teams evaluate Runbear.</p>
<p>By the end of the weekend, most of it was gone. Coordinated free-trial abuse had burned through the credits.</p>
<p>The painful part was that our internal guardrail bot had noticed the pattern. It could gather the evidence and tell us that something looked wrong. It simply did not have a safe path to act.</p>
<p>I am Bobb Kim, co-founder of Runbear. This is our account of the incident and the gap we found in our internal guardrail workflow.</p>
<h2>The signup graph looked like growth</h2>
<p>A few days earlier, we had made our trial easier to start. We removed the upfront credit-card requirement and reduced the number of steps between signup and a working product.</p>
<p>That was intentional. We wanted legitimate teams to reach a working evaluation quickly, without adding a card or extra verification up front.</p>
<p>Then signups jumped to about 30 times their normal level.</p>
<p>For a few minutes, the dashboard looked great. Signups were up. Usage was up. The trial appeared to be working.</p>
<p>Then we looked at the accounts more closely.</p>
<p>This was not growth. It was farming.</p>
<h2>A promotion had become an abuse playbook</h2>
<p>A Runbear trial link had been shared in an online community. It was not presented as a product to evaluate. It was presented as a way to farm access to paid AI models.</p>
<img src="https://cdn.sanity.io/images/m2meuu3u/production/9792fc1da8d41363fc5697a06f3d1a087bd6179c-927x1010.png?fit=max&amp;auto=format" alt="Screenshot of a community post promoting Runbear trial credits" style="display:block;margin:0 auto" />

<p><em>The trial was being shared as a source of credits rather than as a product evaluation.</em></p>
<p>Some people created fake business identities, worked around basic checks, and submitted prompts that were clearly outside the spirit of the trial. Once the instructions spread, new accounts arrived in waves.</p>
<img src="https://cdn.sanity.io/images/m2meuu3u/production/52f7bb3470edf695556e587d51eb57b0dedb8572-1392x800.png?fit=max&amp;auto=format" alt="A stream showing a burst of Runbear subscription events during the abuse incident" style="display:block;margin:0 auto" />

<p><em>A stream of subscription events initially resembled a successful acquisition spike.</em></p>
<p>We did not want to make the trial painful again for every legitimate team. The useful problem was narrower: keep the happy path open for real evaluators while making coordinated farming difficult to scale.</p>
<h2>Our guardrail bot had already noticed</h2>
<p>We were not starting from zero. An internal guardrail bot was already watching for suspicious new organizations and usage patterns.</p>
<p>It could:</p>
<ul>
<li><p>identify odd signup patterns,</p>
</li>
<li><p>collect the relevant evidence,</p>
</li>
<li><p>summarize why new users looked suspicious, and</p>
</li>
<li><p>put that evidence in front of the team.</p>
</li>
</ul>
<p>That saved time. A person did not have to begin with raw logs and reconstruct the incident manually.</p>
<p>But the bot stopped at detection.</p>
<img src="https://cdn.sanity.io/images/m2meuu3u/production/bdebfb1a71de3eca4370b782e69ea8acc052fac3-1202x626.png?fit=max&amp;auto=format" alt="Internal Runbear guardrail report listing suspicious organizations for review" style="display:block;margin:0 auto" />

<p><em>The internal report reduced the investigation work, but it did not yet provide a complete response workflow.</em></p>
<p>It could say, "These new users look suspicious." It could not apply a response rule, block a high-confidence case, escalate an ambiguous one, or leave a report trail for the decision.</p>
<p>So it waited for a human to wake up.</p>
<p>Credit farmers did not.</p>
<p>By the time we paused trials and banned the obvious farming accounts, they had consumed around $1,000 in credits. That was almost exactly the amount of Anthropic credits we had just received for placing third in the hackathon.</p>
<p>Winning credits and then immediately losing them was not the launch story we had planned.</p>
<h2>Detection and response are different systems</h2>
<p>The incident exposed a distinction that dashboards tend to hide.</p>
<table>
<thead>
<tr>
<th>Stage</th>
<th>What we had</th>
<th>What was missing</th>
</tr>
</thead>
<tbody><tr>
<td>Detect</td>
<td>Notice unusual signup and usage patterns</td>
<td>A defined threshold for action</td>
</tr>
<tr>
<td>Investigate</td>
<td>Collect and summarize evidence</td>
<td>Consistent verification against policy</td>
</tr>
<tr>
<td>Decide</td>
<td>Put the case in front of a person</td>
<td>A conservative rule for clear cases</td>
</tr>
<tr>
<td>Act</td>
<td>Manually pause trials and ban obvious farming accounts</td>
<td>A scoped, repeatable response path</td>
</tr>
<tr>
<td>Review</td>
<td>Read messages and logs after the fact</td>
<td>A durable report of evidence and actions</td>
</tr>
</tbody></table>
<p>Time to detection mattered, but time to action was the expensive metric. In an abuse incident, every minute between those two stages can have a dollar value.</p>
<p>That does not mean every anomaly detector should be allowed to ban users. A false positive can block a real buyer and damage trust. The system needed two paths:</p>
<ol>
<li><p>High-confidence cases could follow a narrowly defined response rule.</p>
</li>
<li><p>Ambiguous cases had to be escalated with enough context for a person to decide quickly.</p>
</li>
</ol>
<p>The automation boundary was not "let the bot decide everything." It was "do not make a human repeat work that the system can perform safely and explain."</p>
<h2>The response workflow we added</h2>
<p>We used Runbear to convert the guardrail from a reporting step into a scoped response workflow:</p>
<ol>
<li><p>Detect suspicious organizations and usage patterns.</p>
</li>
<li><p>Gather and summarize the supporting evidence.</p>
</li>
<li><p>Apply the current response rule.</p>
</li>
<li><p>Block high-confidence abuse.</p>
</li>
<li><p>Escalate uncertain cases to the team.</p>
</li>
<li><p>Leave a report trail showing what happened.</p>
</li>
</ol>
<p>The useful change was operational, not magical: a rule the team already understood became a workflow with clear actions, escalation, and review.</p>
<p>When the farming pattern changes, we can update the response rule without changing the broader detect, escalate, act, and review loop.</p>
<p>After the blocks started working, we saw messages in abuse channels saying that the method no longer worked overnight.</p>
<img src="https://cdn.sanity.io/images/m2meuu3u/production/3dd0b60d4fade243290387978bb1f18cb04780a6-612x1361.png?fit=max&amp;auto=format" alt="Community messages indicating that the trial abuse path had been blocked" style="display:block;margin:0 auto" />

<p><em>The response was visible from the other side: the farming path had stopped working.</em></p>
<p>Someone even joked that because the community had promoted us, we should pay them. I respected the audacity. I did not respect the invoice.</p>
<h2>What we would do differently</h2>
<p>The credits were already gone, but the incident changed how we think about operational agents.</p>
<h3>1. Treat response latency as part of the threat model</h3>
<p>A detector that produces a good summary overnight is helpful. If nobody can safely act on it until morning, the delay is still part of the system.</p>
<h3>2. Define the automation boundary before the incident</h3>
<p>The middle of an abuse spike is a bad time to decide which evidence is sufficient for a block, which action is reversible, and which cases require a person. Those rules should exist before the alert fires.</p>
<h3>3. Preserve the evidence and the action</h3>
<p>A response needs more than a final account status. The team should be able to see what signals were used, which rule applied, what action occurred, and which cases were escalated.</p>
<h3>4. Do not punish legitimate users for the easiest control</h3>
<p>Adding friction everywhere would have reduced abuse. It also would have made the trial worse for every real team. The better control targeted coordinated farming while keeping the intended evaluation path open.</p>
<h2>The lesson we kept</h2>
<p>If a product offers free trials, usage credits, or access to expensive AI models, abuse prevention cannot be only a dashboard someone checks later.</p>
<p>Detection matters. But detection without a path to action is still a delay, and that delay has a cost.</p>
<p>I do not think every bot should be free to swing a ban hammer. I do think a carefully scoped operator can verify known signals, execute conservative rules, escalate edge cases, and preserve an audit trail while the team sleeps.</p>
<p>That incident is now part of how we design Runbear. The goal is not to replace judgment. It is to turn clear operational rules into fast, reviewable action while reserving ambiguous cases for people.</p>
<p>Losing our hackathon credits was an expensive way to learn that lesson.</p>
<p><em>Originally published on the</em> <a href="https://runbear.io/posts/we-won-1000-ai-credits-lost-it-to-trial-abuse"><em>Runbear blog</em></a><em>.</em></p>
]]></content:encoded></item></channel></rss>