<?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: kurumi</title>
    <description>The latest articles on DEV Community by kurumi (@kurumi_82661ed12516efd1f7).</description>
    <link>https://dev.to/kurumi_82661ed12516efd1f7</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%2F4048368%2Fa5614e53-8b67-4f82-8845-5accfbee27a4.jpg</url>
      <title>DEV Community: kurumi</title>
      <link>https://dev.to/kurumi_82661ed12516efd1f7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kurumi_82661ed12516efd1f7"/>
    <language>en</language>
    <item>
      <title>Four ways to resolve a freelance dispute, and what each one actually accepts as evidence</title>
      <dc:creator>kurumi</dc:creator>
      <pubDate>Sat, 31 Oct 2026 08:20:32 +0000</pubDate>
      <link>https://dev.to/kurumi_82661ed12516efd1f7/four-ways-to-resolve-a-freelance-dispute-and-what-each-one-actually-accepts-as-evidence-ioc</link>
      <guid>https://dev.to/kurumi_82661ed12516efd1f7/four-ways-to-resolve-a-freelance-dispute-and-what-each-one-actually-accepts-as-evidence-ioc</guid>
      <description>&lt;p&gt;Every freelancer knows the sequence. The work is delivered, the client goes quiet for two days, and then: &lt;em&gt;"this isn't what I asked for."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Sometimes they're right. Often they mean "this isn't what I imagined." Either way the money is now stuck between two people who disagree about a document neither of them wrote down properly.&lt;/p&gt;

&lt;p&gt;I've been reading the actual mechanics of four dispute systems, because the interesting question isn't who wins. It's &lt;strong&gt;what each system treats as evidence&lt;/strong&gt;, how long you wait for a decision, and — the part I had wrong before I started reading — &lt;strong&gt;who carries the risk while you wait&lt;/strong&gt;. Four systems, four different answers.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Upwork fixed-price: a 14-day clock you don't control
&lt;/h2&gt;

&lt;p&gt;The client funds a milestone, you deliver, the client releases. If they go quiet, the important detail is that the clock is already running: delivering through the "Submit Work for Payment" button &lt;strong&gt;starts a 14-day countdown to automatic payment&lt;/strong&gt;. Approving early just ends it sooner. After 14 days the money moves unless the client has actively asked for changes.&lt;/p&gt;

&lt;p&gt;If they do dispute it, the fixed-price path runs in stages. There's free dispute assistance (or mediation assistance, depending on whether funds were deposited), then &lt;strong&gt;binding arbitration&lt;/strong&gt; run by an independent third-party company — currently Brief — rather than Upwork itself. You get seven calendar days to agree to arbitration and pay your share of the fee; in most cases the freelancer and client split it evenly, and Upwork contributes only on contracts over $20,000.&lt;/p&gt;

&lt;p&gt;The detail that matters most is what happens if one side doesn't engage. If both parties decline arbitration, the funds go &lt;strong&gt;to the client&lt;/strong&gt;. If one party pursues and pays and the other declines, the funds go to whoever participated. Declining isn't neutral — it's a forfeit.&lt;/p&gt;

&lt;p&gt;And there's a harder deadline underneath, which the docs tie specifically to the refund-request case: once a client ends a contract with a deposited balance and asks for a refund, you have &lt;strong&gt;seven calendar days&lt;/strong&gt; to review the payment details and file a dispute. Miss it, and the remaining funds go back to the client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it accepts as evidence:&lt;/strong&gt; the brief, the message history, the delivered files, read by a human with context. That is genuinely the right instrument for scope creep, which is a narrative disagreement rather than a factual one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it costs:&lt;/strong&gt; the arbitration fee when you need it, plus a service fee. And the outcome depends on which person reads your file and how well you wrote it up.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Fiverr: a 3-day auto-complete, wrapped in a tool that doesn't adjudicate
&lt;/h2&gt;

&lt;p&gt;Fiverr's version is faster and blunter. Requests raised in the Resolution Center go &lt;strong&gt;directly to the other party&lt;/strong&gt; — Customer Support is explicitly not notified during that exchange. Each side has 48 hours to accept or decline, and if nobody responds within 48 hours the system &lt;strong&gt;auto-accepts&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Two mechanics matter more than the Resolution Center itself. First, &lt;strong&gt;delivery auto-completes the order&lt;/strong&gt;: if the buyer takes no action within three days of delivery — no acceptance, no revision request, no extension — Fiverr completes the order and starts the clearance clock. Two caveats keep "3 days" from being the whole story: gigs that require physical shipping auto-complete after 14 days rather than 3, and completing an order is not the same as cash in hand — Fiverr holds earnings through a safety clearance period before they can be withdrawn. Fiverr does offer an Early Payout option, but only to Top Rated and Seller Plus Premium freelancers, at a 1% fee, and auto-completed orders qualify only for Top Rated sellers. Second, the Resolution Center is unavailable once an order is complete or cancelled, so that door closes exactly when disputes usually start; for completed orders the documented path is Customer Support. Separately, an order 24 hours past its delivery date can be &lt;strong&gt;cancelled by the client without the freelancer's approval&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Fiverr's commission is also reported as a flat fifth of the order with no tiers or volume discount — Fiverr's own payments terms sit behind a bot wall, so I'm relying on consistent secondary reporting there rather than the primary document. Either way, the dispute mechanism isn't the only thing taking a cut.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it accepts as evidence:&lt;/strong&gt; very little inside the Resolution Center itself. It's a mutual-agreement tool, not an adjudication tool; its real enforcement mechanism is the cancellation button and the effect a cancellation has on your metrics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it costs:&lt;/strong&gt; cheap and fast when both sides want out. When they don't, the Resolution Center itself can't decide anything — you're escalated to support, which is a human with a queue rather than an independent arbitrator. Its strongest feature is actually the three-day auto-complete, and its weakest is that the tool built for disputes doesn't adjudicate.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. PayPal: 180 days of hindsight
&lt;/h2&gt;

&lt;p&gt;PayPal inverts the whole problem. There's no milestone and no escrow: the money lands in your account when the client pays, so a client who goes quiet has already paid you. What PayPal adds instead is a second, much longer window in which that payment can be taken back — which is why the risk here isn't ghosting, it's reversal. A buyer can open an "item not received" dispute &lt;strong&gt;up to 180 days&lt;/strong&gt; from the payment date. For "significantly not as described" the window is tighter — 30 days from delivery, or 180 days from payment, whichever comes first — which is actually the more relevant clock for service work, since that's the claim most likely to be filed.&lt;/p&gt;

&lt;p&gt;Then there's a second clock almost nobody mentions: an unescalated dispute &lt;strong&gt;closes automatically after 20 days&lt;/strong&gt;. If the buyer does nothing, the dispute evaporates; if they escalate it to a claim, PayPal adjudicates.&lt;/p&gt;

&lt;p&gt;Here's where the two things get conflated, including in how most freelancers talk about it. Seller Protection for intangible work does exist, and PayPal's terms spell out the conditions: the transaction must be marked eligible, and you must supply proof of shipment or delivery — for intangible goods, &lt;em&gt;"compelling evidence to show the item was delivered or the purchase order was fulfilled,"&lt;/em&gt; such as a system of record showing the date and the recipient's address. But Seller Protection is a defence against &lt;strong&gt;item-not-received&lt;/strong&gt; and unauthorised-transaction claims. It is not a defence against "significantly not as described" — and for service work that's the claim you'll actually face. On SNAD the question isn't whether you delivered, it's whether what you delivered matched the description, which is precisely the dispute a record of delivery can't settle.&lt;/p&gt;

&lt;p&gt;Which is the practical point: &lt;strong&gt;a screenshot of a friendly chat is not that.&lt;/strong&gt; A chat log is evidence you talked, not evidence you delivered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it accepts as evidence:&lt;/strong&gt; delivery records and the buyer's claim, decided by PayPal under its own programme policies at its discretion. "Significantly not as described" exists as a category precisely because description is subjective — and that's the category a delivery receipt does nothing for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it costs:&lt;/strong&gt; time, and a buyer-weighted default. The upsides are real though — fiat, fast, and a genuine consumer-protection rail that most crypto rails simply don't have.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Verdikta: pay against a published rubric, not a mood
&lt;/h2&gt;

&lt;p&gt;A different primitive, and the one I've spent most time reading. Verdikta moves the criteria to &lt;em&gt;before&lt;/em&gt; the work: the creator locks ETH in a Base escrow contract and publishes success criteria plus a pass threshold. A jury of AI models on the Verdikta network grades each submission against those criteria and reports a 0–100 score with written justifications.&lt;/p&gt;

&lt;p&gt;The properties that actually differ from the three above:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The criteria, threshold and deadline are fixed at funding.&lt;/strong&gt; The contract has no cancel and no edit function, so the goalposts cannot move mid-task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Passing work is paid without the creator's consent.&lt;/strong&gt; A qualifying submission settles automatically; the creator cannot simply refuse to release.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No platform cut.&lt;/strong&gt; The escrow contract has no owner and takes nothing from the payout or the refund. The creator pays the reward plus gas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The verdict is final.&lt;/strong&gt; As the project's own FAQ puts it: &lt;em&gt;"Can I appeal a verdict? No."&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The hunter pays per attempt.&lt;/strong&gt; Each evaluation needs a prepay of about 0.00024 ETH at default settings, covering the jury's operators, and it is not returned if the submission fails. At recent ETH prices that's under a dollar, but it's a cost per attempt, not a cost per payout.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Earliest pass wins, not best pass.&lt;/strong&gt; Payout follows submission order. Once a submission clears the threshold, a later and possibly better one is recorded as passed-but-unpaid.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The four side by side
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Upwork fixed-price&lt;/th&gt;
&lt;th&gt;Fiverr&lt;/th&gt;
&lt;th&gt;PayPal dispute&lt;/th&gt;
&lt;th&gt;Verdikta&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Who decides&lt;/td&gt;
&lt;td&gt;Human arbitrator (Brief)&lt;/td&gt;
&lt;td&gt;The two parties, then support&lt;/td&gt;
&lt;td&gt;PayPal, at its discretion&lt;/td&gt;
&lt;td&gt;AI model jury&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time to decision&lt;/td&gt;
&lt;td&gt;14 days to auto-release&lt;/td&gt;
&lt;td&gt;3 days to auto-complete (14 if shipped)&lt;/td&gt;
&lt;td&gt;Up to 180 days to open, 20 to escalate&lt;/td&gt;
&lt;td&gt;Minutes (up to ~10)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost to the freelancer&lt;/td&gt;
&lt;td&gt;Arbitration fee + service fee&lt;/td&gt;
&lt;td&gt;~20% commission&lt;/td&gt;
&lt;td&gt;Dispute window, chargeback risk&lt;/td&gt;
&lt;td&gt;Oracle prepay per attempt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Evidence accepted&lt;/td&gt;
&lt;td&gt;Brief, messages, files, context&lt;/td&gt;
&lt;td&gt;Mutual agreement&lt;/td&gt;
&lt;td&gt;Delivery records&lt;/td&gt;
&lt;td&gt;Conformance to published criteria&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can the client refuse passing work&lt;/td&gt;
&lt;td&gt;Yes, by disputing&lt;/td&gt;
&lt;td&gt;Yes, by cancelling&lt;/td&gt;
&lt;td&gt;Yes, by charging back&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Appeal&lt;/td&gt;
&lt;td&gt;Yes, via arbitration&lt;/td&gt;
&lt;td&gt;Escalate to support&lt;/td&gt;
&lt;td&gt;Yes, escalate to claim&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Client goes quiet&lt;/td&gt;
&lt;td&gt;Pays after 14-day clock&lt;/td&gt;
&lt;td&gt;Order auto-completes in 3 days&lt;/td&gt;
&lt;td&gt;Irrelevant — already paid&lt;/td&gt;
&lt;td&gt;Pays on passing score&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reversal risk to freelancer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low (arbitration required)&lt;/td&gt;
&lt;td&gt;Medium (clearance delay; funds can be held longer during disputes or suspected fraud)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;High&lt;/strong&gt; (up to 180 days)&lt;/td&gt;
&lt;td&gt;None after verdict&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Where the Verdikta model genuinely breaks
&lt;/h2&gt;

&lt;p&gt;A comparison that only lists strengths is advertising. Eight real weaknesses:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The rubric is the whole product, and writing one is hard.&lt;/strong&gt; Most freelance disputes aren't about checkable criteria — they're about scope: "I assumed revisions were included." A criteria-first system has no answer to ambiguity that was never resolved before funding. If the deliverable can't be expressed as testable statements, this model doesn't apply, and pretending otherwise just relocates the argument to the start of the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No human appeal.&lt;/strong&gt; The verdict is final by design. For a function, a dataset or a checklist, fine — correctness is checkable. For brand voice, design direction or long-form writing, a model can misread intent and there's no escalation path. That's a real cost, not a rounding error.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It's an onboarding problem before it's a dispute problem.&lt;/strong&gt; To take on the work at all, the freelancer needs a crypto wallet, ETH on Base, and enough comfort with a block explorer to confirm that funding actually landed. That excludes a large share of the people who most need dispute protection, and it does it silently — the exclusion doesn't show up as a rejection, it shows up as never applying. Filing a PayPal dispute needs an account you already have; posting to Verdikta needs a wallet you probably don't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A model jury is an attack surface.&lt;/strong&gt; The judge reads the submission, and the submission is attacker-controlled text. Anyone who has watched an LLM get talked out of its own instructions knows a rubric is not a sandbox. Publishing the criteria makes this worse, not better: it tells a bad-faith submitter exactly which phrases the scorer rewards. Human arbitration has bias too, but a human is at least awkward to manipulate at scale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Earliest passing submission wins.&lt;/strong&gt; Payout follows submission order rather than quality — defensible against queue-jumping by copying, but it rewards whoever reads the rubric fastest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;All-or-nothing.&lt;/strong&gt; No partial payment for partial work. Traditional escrow does milestones; this does one deliverable and one verdict.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Every submission is public.&lt;/strong&gt; Verdikta's own FAQ answers "Is my submission public?" with "Yes, treat it as public" — submissions are stored on IPFS with identifiers recorded on-chain, so anyone can read them. That rules out client work under NDA, unreleased code, internal data, anything commercially sensitive. It also means a failed submission stays readable forever, which is a strange property for work you'd rather not have on a permanent public record. Most of the fiat systems here keep a dispute private between the parties and the platform; this one publishes the work by design.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No chargeback in either direction.&lt;/strong&gt; Great for the freelancer whose client gets buyer's remorse. But the buyer's only lever is rubric design: a criterion rejecting copied or derivative work has to be written in before funding, because once a verdict lands there's no chargeback and no appeal. Consumer protection is replaced by up-front discipline, and the assumption that the creator gets the rubric right on the first attempt is doing a lot of work.&lt;/p&gt;

&lt;h2&gt;
  
  
  So which one should you actually use
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Short, checkable, single-deliverable work&lt;/strong&gt; — a function, a dataset, a transcript, a checklist: Verdikta's model wins on speed and cost, provided everyone involved already has a wallet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clients who go quiet&lt;/strong&gt; — two of these systems already handle it, and don't need a blockchain to do it: Upwork releases after 14 days, Fiverr completes the order 3 days after delivery. If ghosting is your specific fear, the platform you're already on has probably solved it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope-heavy or taste-driven work&lt;/strong&gt; — brand, design direction, long-form editorial: human mediation still wins, because the disagreement is about interpretation, not verification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High fraud risk in either direction&lt;/strong&gt;: you still want the fiat rails and their chargeback machinery, flaws included.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The honest summary: this isn't a better Upwork, and the ghosting problem it's usually sold on is already handled by auto-complete clocks on both of the big platforms. What Verdikta actually changes is &lt;em&gt;who holds the judgement&lt;/em&gt; — a published rubric and a model jury instead of a support queue — and it trades a human queue for a wallet requirement plus a judge that can be argued with. For narrow, checkable work that's a good trade. For everything else, the older systems are worse in ways that are at least legible.&lt;/p&gt;

&lt;p&gt;Genuine question for anyone who has run work through a rubric-based escrow: did writing the criteria up front change what you actually delivered, or only how you described it afterwards?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Mechanics above are from Upwork's Fixed-Price Protection, arbitration and dispute help articles; Fiverr's order-process, Resolution Center and earnings documentation; PayPal's seller protection, dispute-timeframe and escalation pages; and Verdikta's published FAQ documentation, all read this week. The Fiverr commission figure is the one number here I could not verify against Fiverr's own legal pages, so I've marked it as reported rather than quoted. Where a platform's own docs and its marketing disagree, I've used the docs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>freelance</category>
      <category>webdev</category>
      <category>career</category>
      <category>discuss</category>
    </item>
    <item>
      <title>İş teslim edildikten sonra "olmamış" cevabını almak üzerine</title>
      <dc:creator>kurumi</dc:creator>
      <pubDate>Mon, 26 Oct 2026 05:19:38 +0000</pubDate>
      <link>https://dev.to/kurumi_82661ed12516efd1f7/is-teslim-edildikten-sonra-olmamis-cevabini-almak-uzerine-2jdm</link>
      <guid>https://dev.to/kurumi_82661ed12516efd1f7/is-teslim-edildikten-sonra-olmamis-cevabini-almak-uzerine-2jdm</guid>
      <description>&lt;p&gt;Geçen ay küçük bir çeviri işi aldım, üç sayfalıktı. Teslim etmeden önce sordum: "Bu işin iyi olduğunu nereden anlayacağız?" Cevap şuydu: "Profesyonelce olsun, gerisi önemli değil."&lt;/p&gt;

&lt;p&gt;Üç gün çalıştım, teslim ettim. Gelen cevap tek satırdı: "Beklediğim gibi olmamış." Neyin beklediği gibi olmadığını sorduğumda net bir şey çıkmadı. Sonunda iş iptal oldu. Ben üç günümü kaybettim, karşı taraf da yeni birini arama süresini. Kimse kötü niyetli değildi; sadece işin başında "iyi"nin ne demek olduğunu hiç konuşmamıştık.&lt;/p&gt;

&lt;p&gt;Bir süredir bunun sadece benim başıma gelmediğini sanmıyorum. Sorun genelde işin kalitesi değil, ölçütün iş bitmeden önce yazılmamış olması.&lt;/p&gt;

&lt;p&gt;Geçenlerde bir arkadaşım Base ağında Verdikta diye bir protokolden bahsetti. İlk duyduğumda "yine bir kripto projesi" dedim, ama işin mantığı beni durdurdu.&lt;/p&gt;

&lt;p&gt;Verdikta'da olan şu: işi veren kişi parayı baştan bir akıllı sözleşmeye kilitliyor. Yani para ortada duruyor, iş bitmeden kimseye geçmiyor. Yanına bir de değerlendirme listesi ekliyor: bu işte neyin zorunlu olduğu, neyin sadece puan getirdiği ve kaç puanın "yeterli" sayıldığı. Liste işe başlamadan IPFS'te yayınlanıyor. Ardından Base zincirine yazılıyor, yani sonradan değiştirilemiyor, geri alınamıyor.&lt;/p&gt;

&lt;p&gt;Sonra bağımsız yapay zekâ düğümlerinden oluşan bir jüri bu listeye göre değerlendiriyor. Önemli olan kısım şu: sadece "geçti" ya da "kaldı" demiyorlar, her maddeye ayrı puan veriyorlar ve bu puanlar herkesin görebileceği şekilde açık. Yani işi yapan kişi nerede kaç puan kaybettiğini görebiliyor.&lt;/p&gt;

&lt;p&gt;Bir de şu var: eşiği ilk geçen teslimat bütün parayı alıyor. Son güne kadar bekleyip "en güzelini" seçme durumu yok. Platform herhangi bir komisyon almıyor; işi teslim eden kişi yalnızca jürinin çalışması için yaklaşık 0,00024 ETH kadar bir ön tutar yatırıyor, kullanılmayan kısmı iade ediliyor. Kimse eşiği geçemezse para işi verene dönüyor.&lt;/p&gt;

&lt;p&gt;Bunları yazarken abartmak istemiyorum. Makine hâlâ makine: zevk, ton, "bu metin kulağa hoş geliyor mu" gibi ölçütü olmayan işlerde bir insan kadar isabetli olmayabilir. Edebi çeviri, pazarlama metni, arayüz yazısı gibi işler bence hâlâ insan işi. Zincire kazınmış olsa bile kötü yazılmış bir liste kötü liste kalır; o zaman iyi iş de duvara çarpıyor. Bence bu sistem, ürün ve ölçütler net ve ölçülebilir olduğunda en iyi sonuç veriyor.&lt;/p&gt;

&lt;p&gt;Benim için değişen şey şu: artık iş almadan önce "ne hayal ediyorsunuz" değil, "bunu neye göre ölçeceğiz" diye soruyorum. Soruyu baştan sormak, sonunda tartışmaktan çok daha ucuz.&lt;/p&gt;

&lt;p&gt;Detay merak edenler için: &lt;a href="https://bounties.verdikta.org" rel="noopener noreferrer"&gt;https://bounties.verdikta.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Siz de benzer bir durum yaşadıysanız, nasıl çözdüğünüzü yazar mısınız? Ben hâlâ işin başında ölçüt koymanın en pratik yolunu arıyorum.&lt;/p&gt;

</description>
      <category>turkey</category>
      <category>turkce</category>
      <category>web3</category>
      <category>ai</category>
    </item>
    <item>
      <title>How to write success criteria that someone else can actually apply</title>
      <dc:creator>kurumi</dc:creator>
      <pubDate>Sat, 24 Oct 2026 03:13:20 +0000</pubDate>
      <link>https://dev.to/kurumi_82661ed12516efd1f7/how-to-write-success-criteria-that-someone-else-can-actually-apply-2p6i</link>
      <guid>https://dev.to/kurumi_82661ed12516efd1f7/how-to-write-success-criteria-that-someone-else-can-actually-apply-2p6i</guid>
      <description>&lt;h1&gt;
  
  
  How to write success criteria that someone else can actually apply
&lt;/h1&gt;

&lt;p&gt;Most outsourced work goes wrong before anyone starts working. Not because the contractor is bad, but because the brief describes a &lt;em&gt;vibe&lt;/em&gt; instead of a &lt;em&gt;decision&lt;/em&gt;. "Make it engaging." "High quality research." "Clean, professional design." None of these tell a stranger when to stop, and none tell a judge whether the thing in front of them is done.&lt;/p&gt;

&lt;p&gt;Success criteria — acceptance criteria, definition of done, call them what you like — are the part of a brief that answers one question: &lt;strong&gt;how will someone who has never met you decide, from the deliverable alone, whether this is finished and good enough?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This guide is about writing those criteria well, whatever platform you hire on: a freelance marketplace, an internal team, a code bounty, or an AI-judged bounty board that scores submissions against a rubric published in advance. The mechanics differ. The craft does not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with the one-sentence test
&lt;/h2&gt;

&lt;p&gt;Before writing anything, write one sentence that describes the finished thing in terms of what it lets the reader &lt;em&gt;do&lt;/em&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"A reader who has never used this product can install it, connect a wallet, and complete their first transaction without asking a question."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you cannot write that sentence, you do not have a task yet — you have an intention. Ship the intention to a conversation, not to a contract.&lt;/p&gt;

&lt;p&gt;The sentence also tells you what your criteria need to test. If the goal is "a reader can complete their first transaction unaided," then criteria about word count and colour palette are proxies at best. Criteria about the steps a reader can complete are the real thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate must-pass from scored
&lt;/h2&gt;

&lt;p&gt;The single most common structural mistake is a flat list of ten equally-weighted bullets. It hides the difference between &lt;em&gt;disqualifying&lt;/em&gt; and &lt;em&gt;disappointing&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Split every rubric into two tiers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Must-pass gates.&lt;/strong&gt; Binary. If any one fails, the work does not count at all, regardless of everything else. These are usually about existence, honesty, legality, format, and scope: the file is a PDF; the claim is sourced; the code runs; the post is in the required language; the deliverable is not copied from somewhere else.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scored criteria.&lt;/strong&gt; Weighted and graded. These express taste and quality: how clear the writing is, how well the argument holds, how usable the interface feels.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A gate is not "important". A gate is "fatal if absent". Everything you would merely negotiate about belongs in the scored tier. If you find yourself with eleven must-pass gates, you have written a legal contract for a small piece of work — trim to the ones that genuinely invalidate the deliverable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Write criteria as tests, not adjectives
&lt;/h2&gt;

&lt;p&gt;Each scored criterion needs a sentence that says what it measures, and ideally what a high score looks like compared with a low one. Compare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Adjective:&lt;/strong&gt; "The writing should be clear."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test:&lt;/strong&gt; "A reader with no background in the subject can follow the argument without re-reading a paragraph. Dense jargon is defined on first use. Sentences average under 25 words."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The second version is longer and better, because two different reviewers reading the same deliverable will land in roughly the same place. The first version invites each reviewer to import their own definition of clear, and that is how you get a dispute.&lt;/p&gt;

&lt;p&gt;A useful trick: write the criterion, then imagine the deliverable at 30% and at 90%. If you cannot describe what a 30% version looks like, the criterion is not a scale, it is a wish.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep the weights few and defensible
&lt;/h2&gt;

&lt;p&gt;Weights are a statement of priorities. If everything is 20%, you have said nothing.&lt;/p&gt;

&lt;p&gt;Three to six criteria is the practical range for a single deliverable. Make the weights follow the purpose of the task. A research brief whose entire value is in the evidence has no business weighting "visual presentation" at 30%. A design task whose entire value is in usability has no business weighting "brand consistency" above it.&lt;/p&gt;

&lt;p&gt;Then state the pass threshold explicitly, in the same units the judge will use. "Total 85 out of 100, with no scored criterion below 60" is a different contract from "85 out of 100" — the second lets a submission fail the one thing you care about and still pass on the strength of everything else.&lt;/p&gt;

&lt;h2&gt;
  
  
  A reusable rubric you can adapt
&lt;/h2&gt;

&lt;p&gt;Here is a complete rubric for a research brief — the kind of task people most often under-specify. Copy it, change the subject matter, keep the shape.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Criterion&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Weight&lt;/th&gt;
&lt;th&gt;What it tests&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Deliverable exists and matches the requested format&lt;/td&gt;
&lt;td&gt;Must-pass&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;The thing asked for is the thing delivered: correct file type, length, language, and named sections present&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Every factual claim is sourced or flagged as inference&lt;/td&gt;
&lt;td&gt;Must-pass&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Nothing is presented as fact without a source, and unsourced reasoning is labelled as reasoning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Direct answer to the question in the brief&lt;/td&gt;
&lt;td&gt;Scored&lt;/td&gt;
&lt;td&gt;30%&lt;/td&gt;
&lt;td&gt;The first section answers the actual question rather than restating it or answering a nearby easier one&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quality and independence of evidence&lt;/td&gt;
&lt;td&gt;Scored&lt;/td&gt;
&lt;td&gt;25%&lt;/td&gt;
&lt;td&gt;Sources are primary where possible, multiple sources per contested claim, no circular citation of the same press release&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reasoning under uncertainty&lt;/td&gt;
&lt;td&gt;Scored&lt;/td&gt;
&lt;td&gt;20%&lt;/td&gt;
&lt;td&gt;Assumptions are stated, ranges are used instead of fake precision, and conclusions survive their own caveats&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Usability for the stated reader&lt;/td&gt;
&lt;td&gt;Scored&lt;/td&gt;
&lt;td&gt;15%&lt;/td&gt;
&lt;td&gt;The intended reader can act on it: concrete implications, no unexplained jargon, structure that follows their decision&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Honest limitations&lt;/td&gt;
&lt;td&gt;Scored&lt;/td&gt;
&lt;td&gt;10%&lt;/td&gt;
&lt;td&gt;What could not be verified, what would change the conclusion, and what the author is least confident about&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Pass threshold: 85/100 total, with the two must-pass gates satisfied and no scored criterion below 50. Notice what that last clause buys you: it prevents a submission from clearing 85 on the strength of three criteria while being useless on the one your reader needs.&lt;/p&gt;

&lt;p&gt;Notice also that the must-pass gates are about &lt;em&gt;class of thing&lt;/em&gt; and &lt;em&gt;honesty&lt;/em&gt;, not quality. That is deliberate. Gates should be cheap to check and impossible to argue about.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test the criteria before you publish them
&lt;/h2&gt;

&lt;p&gt;Four checks, each takes minutes and saves days:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The adversarial read.&lt;/strong&gt; Hand the rubric alone, without the brief, to someone who has not seen the task. Ask them to write the worst submission that still passes. If they produce something you would reject, the rubric is too loose.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The two-reviewer test.&lt;/strong&gt; Ask two people to score the same sample independently. If they differ by more than 15 points on a 100-point scale, the criteria are ambiguous, not the reviewers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The gaming check.&lt;/strong&gt; For each scored criterion, ask "what is the cheapest way to score high here without doing the work?" Word counts invite padding. "Number of sources" invites citation stuffing. Fix the criterion before someone exploits it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The scope check.&lt;/strong&gt; Read the brief next to the rubric and underline anything in the brief that no criterion tests. Every underlined line is either dead weight in the brief or a missing criterion.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There is a fifth check that matters when a machine applies the rubric: read it literally. A jury that scores against your text will not infer your intent, extend a criterion to cover an obvious case, or forgive a badly worded rule. If a criterion can be read two ways, it will be read the less convenient way.&lt;/p&gt;

&lt;h2&gt;
  
  
  One worked example: publishing the rubric in advance
&lt;/h2&gt;

&lt;p&gt;The four checks above are platform-agnostic, but they get sharper when the rubric is public and fixed before anyone starts. That is how Verdikta Bounties works, and it is worth walking through as a concrete case rather than an abstraction.&lt;/p&gt;

&lt;p&gt;On Verdikta, a creator funds a task in escrow and publishes the rubric up front. The rubric and evaluation package are pinned to IPFS and fixed on-chain, so the acceptance criteria cannot move after someone has started working. A panel of independent AI arbiter nodes on Base scores each submission against that rubric, and the per-criterion scores are public and auditable. Two consequences follow directly from that design, and both are arguments for spending more time on the rubric than feels natural:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The first submission that clears the threshold is paid the whole bounty.&lt;/strong&gt; It is not a best-of-all-entries contest judged at the deadline, so a rubric that only separates "good" from "bad" is not enough — it also has to separate "passes now" from "nearly passes", because someone will ship against it today.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A bounty cannot be cancelled or edited after creation&lt;/strong&gt;, which protects the person doing the work but removes your chance to fix a sloppy criterion halfway through. The rubric &lt;em&gt;is&lt;/em&gt; the contract.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The economics are deliberately thin: Verdikta charges no platform fee, so the entire bounty amount goes to the hunter whose submission passes; the hunter attaches a refundable oracle prepay of about 0.00024 ETH when starting a submission, usually spent in full on the jury round. If no submission passes before the deadline, the creator reclaims the full amount and the platform keeps nothing. None of that changes how you write criteria — but it does explain why a badly written rubric is expensive in a way that a badly written email brief is not.&lt;/p&gt;

&lt;p&gt;If you want a longer treatment of the same problem, including how to phrase gates so a model can apply them, Verdikta's own guide at &lt;a href="https://bounties.verdikta.org/learn/success-criteria/" rel="noopener noreferrer"&gt;https://bounties.verdikta.org/learn/success-criteria/&lt;/a&gt; covers the format end to end.&lt;/p&gt;

&lt;h2&gt;
  
  
  A short checklist before you publish
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;One sentence describing what the finished thing lets someone do.&lt;/li&gt;
&lt;li&gt;Two to six scored criteria, each with a weight and a sentence on what it tests.&lt;/li&gt;
&lt;li&gt;Must-pass gates limited to existence, honesty, legality, format and scope.&lt;/li&gt;
&lt;li&gt;A stated pass threshold, plus a floor so nobody passes by ignoring your priority.&lt;/li&gt;
&lt;li&gt;High and low descriptions for every scored criterion.&lt;/li&gt;
&lt;li&gt;The adversarial read done by someone who has not seen the brief.&lt;/li&gt;
&lt;li&gt;A literal read: could a careful stranger apply this and reach a decision without asking you anything?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If all seven are true, you have written a rubric. If not, you have written a wish list with numbers attached — and the person on the other side will find out which one it is at the worst possible moment.&lt;/p&gt;

</description>
      <category>writing</category>
      <category>freelance</category>
      <category>productivity</category>
      <category>web3</category>
    </item>
    <item>
      <title>Bug bounty, freelance gig, or judged bounty? Picking the right platform for the work in front of you</title>
      <dc:creator>kurumi</dc:creator>
      <pubDate>Sat, 24 Oct 2026 03:06:53 +0000</pubDate>
      <link>https://dev.to/kurumi_82661ed12516efd1f7/bug-bounty-freelance-gig-or-judged-bounty-picking-the-right-platform-for-the-work-in-front-of-you-11a</link>
      <guid>https://dev.to/kurumi_82661ed12516efd1f7/bug-bounty-freelance-gig-or-judged-bounty-picking-the-right-platform-for-the-work-in-front-of-you-11a</guid>
      <description>&lt;p&gt;There is a specific kind of confusion that shows up whenever someone hears "bounty" and "crypto" in the same sentence: they assume it means a security bounty. It usually does not. A smart contract audit and a 900-word research brief are both "bounties" in casual conversation, and the platforms that host them have almost nothing in common — different judges, different payment rules, different failure modes, different kinds of people who do well on them.&lt;/p&gt;

&lt;p&gt;This piece puts four options side by side: security platforms (Bugcrowd, HackerOne), talent marketplaces (Upwork and its relatives), code bounties (Gitcoin and GitHub-issue bounties), and criteria-based judged bounties (Verdikta Bounties). The goal is not to declare a winner. It is to help you look at the task in your hand and know which door to walk through.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Who judges the work&lt;/th&gt;
&lt;th&gt;What work fits&lt;/th&gt;
&lt;th&gt;How payment is decided&lt;/th&gt;
&lt;th&gt;Where it is weakest&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bugcrowd / HackerOne&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The program's security team, often with platform triage support&lt;/td&gt;
&lt;td&gt;Exploitable vulnerabilities inside a published scope&lt;/td&gt;
&lt;td&gt;Per valid, in-scope, non-duplicate report, against a reward range the program sets&lt;/td&gt;
&lt;td&gt;Anything that is not a security defect is out of scope by design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Upwork and similar marketplaces&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You, the client, as the work is delivered&lt;/td&gt;
&lt;td&gt;Any work that needs a specific person's time, judgment, or collaboration&lt;/td&gt;
&lt;td&gt;Fixed-price milestones in escrow, or tracked hourly&lt;/td&gt;
&lt;td&gt;You have to source, screen, hire, and manage; fees and disputes are part of the deal&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Gitcoin / GitHub bounties&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The repository maintainer&lt;/td&gt;
&lt;td&gt;A code change the maintainer actually wants merged&lt;/td&gt;
&lt;td&gt;Paid when the pull request is accepted&lt;/td&gt;
&lt;td&gt;Only as good as the maintainer's availability and the issue's clarity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Verdikta Bounties&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A panel of independent AI arbiter nodes scoring against a rubric published before anyone submits&lt;/td&gt;
&lt;td&gt;Tasks with a checkable deliverable and criteria you can write down in advance&lt;/td&gt;
&lt;td&gt;First submission that clears the acceptance threshold is paid the full bounty in escrow&lt;/td&gt;
&lt;td&gt;No negotiation and no revision loop; a badly written rubric cannot be fixed later&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Security platforms: Bugcrowd and HackerOne
&lt;/h2&gt;

&lt;p&gt;These are the real bug-bounty programs, and the category name belongs to them. A company publishes a scope — domains, apps, API endpoints, sometimes smart contracts — along with reward ranges and rules of engagement. Researchers go hunting, submit reports, and a triage process decides whether the finding is real, in scope, and not a duplicate. Payment follows validity, not effort.&lt;/p&gt;

&lt;p&gt;What these platforms are genuinely good at is turning an adversarial relationship into a contract. Safe harbor language, agreed response windows, and a triage workflow mean a researcher can report a serious flaw without worrying about being sued, and a company can receive hundreds of reports without opening its inbox to chaos. The reputation systems are also real currency: a strong public profile on one of these platforms changes how a researcher is treated on the next program.&lt;/p&gt;

&lt;p&gt;The boundary is just as important. A security program is not a place to ask for a landing page, a research report, a translation, or a market analysis. If the deliverable is not an exploitable defect, the report will be closed as out of scope — correctly, and often within minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Upwork and the marketplace model
&lt;/h2&gt;

&lt;p&gt;Upwork solves a different problem: you need a person. Not an artifact, not a pass/fail judgment — a human being whose time you are renting, who will ask clarifying questions, take feedback, and adapt when the brief turns out to be wrong.&lt;/p&gt;

&lt;p&gt;Fixed-price contracts put money in escrow against milestones. Hourly contracts track time. Either way, the client is the judge: you review the work, you approve it, and if you disagree there is a dispute process with mediation and arbitration behind it. That process is slow compared with an automatic payout, but it exists precisely because human work is ambiguous.&lt;/p&gt;

&lt;p&gt;The cost is management load. You write a job post, screen proposals, compare portfolios, interview, onboard, and supervise. For a one-off deliverable that could be specified precisely, that overhead is often larger than the work itself. For anything involving access to internal systems, ongoing iteration, or judgment that depends on context you cannot fully write down, it is the only model of the four that fits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gitcoin and GitHub issue bounties
&lt;/h2&gt;

&lt;p&gt;Code bounties are the narrowest and most honest of the four. An issue gets a label and a price, a contributor opens a pull request, and the maintainer decides whether it merges. Payment is tied to acceptance, and acceptance means the code is now in the repository.&lt;/p&gt;

&lt;p&gt;The strength here is contextual judgment. A maintainer knows the codebase, the style, the architectural direction, and the parts of the problem that were never written in the issue. They can accept a solution that looks strange but is right, or reject one that passes tests but would be a maintenance burden. No rubric captures that.&lt;/p&gt;

&lt;p&gt;The weakness is the same thing viewed from the other side: throughput depends on maintainer attention, scope creep is common, and "I will know it when I see it" is a legitimate but demoralising acceptance criterion for contributors. Bounties on abandoned repositories can sit unpaid for months.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verdikta Bounties: criteria first, judge second
&lt;/h2&gt;

&lt;p&gt;Verdikta Bounties runs on Base and is a criteria-based judged bounty market. The creator funds a task in escrow and publishes a rubric in advance; a panel of independent AI arbiter nodes scores each submission against that rubric, and the per-criterion scores are public and auditable. The evaluation package and rubric are pinned to IPFS and fixed on-chain, so the terms cannot move after the fact.&lt;/p&gt;

&lt;p&gt;Four mechanics are worth stating plainly, because most people assume the opposite:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Verdikta charges no platform fee.&lt;/strong&gt; The whole bounty amount goes to the hunter whose submission passes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The hunter attaches a refundable oracle prepay of about 0.00024 ETH when starting a submission.&lt;/strong&gt; In practice it is usually spent in full on the jury round. It is a cost of being judged, not a commission.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The first submission that clears the acceptance threshold is paid the entire bounty.&lt;/strong&gt; This is not a best-of-all-entries contest judged at a deadline. Speed matters, but only among submissions that actually pass.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If no submission passes before the deadline, the creator reclaims the full amount and the platform keeps nothing.&lt;/strong&gt; A bounty also cannot be cancelled or edited after creation, which protects hunters and puts the burden of writing a sane rubric on the creator.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Verdikta Bounties is not a security bug-bounty program, and it is not a place to report vulnerabilities.&lt;/strong&gt; If you have found an exploitable flaw in someone's software, that belongs on a security platform with a published scope and safe harbor, not here. Verdikta is for tasks where a written rubric can decide whether the work is good: research, analysis, documentation, content, design with stated constraints, code with explicit acceptance criteria.&lt;/p&gt;

&lt;p&gt;Where the model is weakest is exactly where a human client would shine. There is no negotiation, no "can I see a draft", no chance to explain what you meant. If the rubric is vague, the jury will read it literally and score you against the letter of it. Creative work with taste-based quality is a poor fit; work you can describe as a checklist is a good one.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to choose, in practice
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;You found a vulnerability.&lt;/strong&gt; Bugcrowd or HackerOne. Nothing else in this list gives you scope, safe harbor, and a triage process.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You need a specific person's time, judgment, or ongoing involvement.&lt;/strong&gt; Upwork. You are buying collaboration, and collaboration needs a contract and a human on the other end.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You need a change inside a codebase whose maintainer will review it.&lt;/strong&gt; A Gitcoin-style or GitHub-issue bounty. The maintainer's acceptance is the quality bar, and that is the right bar for merged code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You have a task with a checkable deliverable, you can write the acceptance criteria up front, and you do not want to manage anyone.&lt;/strong&gt; Verdikta. You fund escrow once, publish the rubric, and let the jury apply it. The work you put into the rubric is the work you would otherwise put into supervising a freelancer — and unlike supervision, a rubric can be read by every hunter before they start.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The mistake worth avoiding is picking by category name rather than by what the deliverable actually is. A rubric-shaped task on a security platform gets closed as out of scope. A security audit on a judged-bounty platform gets scored against a rubric that cannot see what a human triager would see. And a well-specified one-off task on a talent marketplace costs more in management hours than the work is worth.&lt;/p&gt;

&lt;p&gt;Pick the judge first. The rest follows.&lt;/p&gt;

</description>
      <category>career</category>
      <category>crypto</category>
      <category>freelance</category>
      <category>web3</category>
    </item>
    <item>
      <title>Rubrica publicada antes da entrega: o detalhe que muda a conversa sobre avaliação por IA</title>
      <dc:creator>kurumi</dc:creator>
      <pubDate>Thu, 22 Oct 2026 02:40:13 +0000</pubDate>
      <link>https://dev.to/kurumi_82661ed12516efd1f7/rubrica-publicada-antes-da-entrega-o-detalhe-que-muda-a-conversa-sobre-avaliacao-por-ia-43dn</link>
      <guid>https://dev.to/kurumi_82661ed12516efd1f7/rubrica-publicada-antes-da-entrega-o-detalhe-que-muda-a-conversa-sobre-avaliacao-por-ia-43dn</guid>
      <description>&lt;p&gt;Já recusei freela por falta de garantia. O briefing era bom, o valor era justo, a pessoa parecia séria. Mas quando pedi alguma coisa além de "fica tranquilo, já trabalhei com muita gente", não tinha nada. Sem contrato, sem depósito, sem critério escrito. Se o outro lado sumir, o prejuízo fica com quem trabalhou.&lt;/p&gt;

&lt;p&gt;Escrow resolve metade disso, e escrow não é novidade. O que me fez parar para ler o Verdikta, um protocolo na Base, foi a outra metade: o desenho da avaliação.&lt;/p&gt;

&lt;h2&gt;
  
  
  O problema real não é o dinheiro, é o critério
&lt;/h2&gt;

&lt;p&gt;Quem já teve entrega recusada sabe que a parte dolorosa raramente é o dinheiro em si. É receber um "não ficou como combinado" e não ter onde apontar. A justificativa existe na cabeça de quem contratou, não em lugar nenhum que você possa consultar.&lt;/p&gt;

&lt;p&gt;Quando a avaliação é feita por IA, esse problema costuma piorar em vez de melhorar. O modelo virou uma caixa-preta nova, com o agravante de que ninguém sabe dizer o que ele considerou. A conversa morre em "a IA errou" e não anda.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que muda quando a rubrica vem antes
&lt;/h2&gt;

&lt;p&gt;No Verdikta a ordem é invertida. Antes de qualquer trabalho ser aceito, os critérios já estão publicados: quais são obrigatórios, quais só somam ponto, e qual é a nota mínima para o contrato liberar o valor. O valor em si também fica travado em contrato antes do trabalho começar.&lt;/p&gt;

&lt;p&gt;Isso muda a natureza da discussão. Se o critério é público e a nota por critério também, a pergunta deixa de ser "a IA errou" e passa a ser "esse critério está mal escrito". A segunda pergunta é respondível. A primeira não é.&lt;/p&gt;

&lt;p&gt;Tem um detalhe prático que eu valorizo: a nota de corte muda de acordo com o serviço e é divulgada antes. Dá para olhar e decidir se vale a pena pegar antes de perder uma semana.&lt;/p&gt;

&lt;h2&gt;
  
  
  O que isso não resolve
&lt;/h2&gt;

&lt;p&gt;Não quero vender ilusão, então:&lt;/p&gt;

&lt;p&gt;O painel de IA lê o arquivo que você entrega. Trabalho que depende de verificar dispositivo, conta ou qualquer coisa física não tem como ser julgado assim. Continua precisando de olho humano.&lt;/p&gt;

&lt;p&gt;E tem um limite estrutural que auditabilidade não conserta: rubrica mal escrita produz nota confusa mesmo com tudo registrado bonitinho. Registro na chain deixa o erro visível, não o corrige.&lt;/p&gt;

&lt;p&gt;Sobre contestação, eu não achei caminho claro. Se a nota sair injusta, não sei dizer o que acontece. Isso me incomoda mais do que qualquer outra coisa no desenho.&lt;/p&gt;

&lt;h2&gt;
  
  
  Para que tipo de trabalho isso serve
&lt;/h2&gt;

&lt;p&gt;Para entrega cujo escopo dá para descrever em texto — documentação técnica, revisão, pesquisa curta, redação — o modelo faz sentido, porque a rubrica consegue ser específica.&lt;/p&gt;

&lt;p&gt;Para coisa subjetiva, tipo decidir se um design "tem a cara certa", eu ainda fico com um pé atrás. E aí a pergunta que fica é sobre o critério, não sobre a IA.&lt;/p&gt;

&lt;p&gt;Quem já teve trabalho avaliado assim: a rubrica publicada ajudou de verdade na hora de recorrer, ou só deixou o "não" mais bem documentado? Para quem quiser olhar de perto: &lt;a href="https://bounties.verdikta.org" rel="noopener noreferrer"&gt;https://bounties.verdikta.org&lt;/a&gt;&lt;/p&gt;

</description>
      <category>web3</category>
      <category>freelancing</category>
      <category>carreira</category>
    </item>
    <item>
      <title>Your AI agent finished the task. Who decides if it's good enough to pay for?</title>
      <dc:creator>kurumi</dc:creator>
      <pubDate>Thu, 15 Oct 2026 02:15:41 +0000</pubDate>
      <link>https://dev.to/kurumi_82661ed12516efd1f7/your-ai-agent-finished-the-task-who-decides-if-its-good-enough-to-pay-for-4b5l</link>
      <guid>https://dev.to/kurumi_82661ed12516efd1f7/your-ai-agent-finished-the-task-who-decides-if-its-good-enough-to-pay-for-4b5l</guid>
      <description>&lt;p&gt;If you've built anything agentic past a demo, you've hit this wall. The agent can write the SQL, draft the doc, summarize the repo. The hard part isn't generating the output — it's the acceptance step. Someone has to look at it and decide: is this done? Is it good enough to pay for?&lt;/p&gt;

&lt;p&gt;Right now that "someone" is almost always a human. That's fine when you're one dev reviewing your own agent. It breaks the moment you want an agent to do work for &lt;em&gt;someone else&lt;/em&gt; — or hire another agent — and get paid without a person in the loop.&lt;/p&gt;

&lt;p&gt;The usual options are all bad:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The buyer decides.&lt;/strong&gt; They can reject anything and keep the money. Workers learn not to trust them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The platform decides.&lt;/strong&gt; Now a $2 task waits in a support queue.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tests decide.&lt;/strong&gt; Great for code with a spec. Useless for "write a clear explainer" or "propose a governance design."&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Making acceptance explicit
&lt;/h2&gt;

&lt;p&gt;I've been submitting work to &lt;a href="https://bounties.verdikta.org" rel="noopener noreferrer"&gt;Verdikta Bounties&lt;/a&gt; for a few weeks, and the interesting idea there is to make the acceptance step itself explicit and automated:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The creator locks ETH in an escrow contract on Base. The contract has no cancel or edit function, so the terms can't move after you start working.&lt;/li&gt;
&lt;li&gt;The bounty ships with a rubric — weighted criteria, some marked as hard gates — and a pass threshold.&lt;/li&gt;
&lt;li&gt;The submission is scored by a jury of different models (the bounties I've worked on use an OpenAI model and an Anthropic model, weighted 50/50). Their justifications are stored on IPFS.&lt;/li&gt;
&lt;li&gt;Score at or above the threshold → the contract pays. Below → it doesn't.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The rubric is just JSON:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"concrete-example"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"References a specific, real result — not generic claims."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"weight"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"must"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flip &lt;code&gt;must&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; and that criterion becomes a gate: miss it and the weights don't matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it looks like on real bounties
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://bounties.verdikta.org/bounty/190" rel="noopener noreferrer"&gt;Bounty #190&lt;/a&gt;&lt;/strong&gt; asked for a SQL query that finds the second-highest salary in each department. Threshold 88. One submission came in, the jury scored it 98, and it paid out — no review meeting, no invoice, no "let me circle back."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://bounties.verdikta.org/bounty/182" rel="noopener noreferrer"&gt;Bounty #182&lt;/a&gt;&lt;/strong&gt; went the other way. It asked for a high-level proposal for an autonomous AI DAO, threshold 95. Seven submissions scored between 83 and 93 — solid work by most standards — and none of them passed. The bounty only paid out once a submission scored 96. The bar wasn't negotiable, which is exactly what you want when you're the one paying.&lt;/p&gt;

&lt;p&gt;My own receipt: a marketing bounty with an 88 threshold that I passed with a 91. Honestly, my first attempts didn't even get scored — the oracle timed out and I had to resubmit. It's young infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why agent builders should care
&lt;/h2&gt;

&lt;p&gt;Swap "human hunter" for "agent" and you get the primitive agent marketplaces are missing: a buyer and a worker who don't trust each other's judgment, both trusting a published rubric and a multi-model jury instead. Hunters prepay a small evaluation fee, so spamming submissions isn't free. There's also an &lt;code&gt;agents.txt&lt;/code&gt; and an API, so an agent can find bounties, submit and finalize without a browser.&lt;/p&gt;

&lt;p&gt;It won't replace unit tests where you have a spec. But for the large class of work where "good" is a judgment call, it's the first setup I've used where that judgment is written down &lt;em&gt;before&lt;/em&gt; the work starts.&lt;/p&gt;

&lt;p&gt;If you're building agents that get paid for fuzzy work — what are you using for acceptance today? Genuinely curious what's working.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>web3</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Steelmanning the case against on-chain AI verification</title>
      <dc:creator>kurumi</dc:creator>
      <pubDate>Fri, 09 Oct 2026 02:40:48 +0000</pubDate>
      <link>https://dev.to/kurumi_82661ed12516efd1f7/steelmanning-the-case-against-on-chain-ai-verification-35h0</link>
      <guid>https://dev.to/kurumi_82661ed12516efd1f7/steelmanning-the-case-against-on-chain-ai-verification-35h0</guid>
      <description>&lt;p&gt;1/12&lt;/p&gt;

&lt;p&gt;I get paid for work that an AI jury verifies on chain. That means I have every incentive to sell you the idea that verification belongs on a blockchain. So let me do the opposite first: I will make the case against it as strongly as I can, and only then say what survives.&lt;/p&gt;

&lt;p&gt;Three objections, each stated at full strength before any answer. Then the one point where the skeptic is right today and I have nothing to say in return.&lt;/p&gt;

&lt;p&gt;2/12 - Objection one: the oracle problem is not solved by a signature&lt;br&gt;
Start with the fatal one. A chain can prove who asserted something and that they staked money on the assertion. It cannot prove the assertion is true. Everything downstream - the escrow, the commit-reveal, the staking, the published rubric - operates on a claim that entered the system as unverified text. If the input is wrong, the output is wrong, and now it is wrong with a timestamp, a signature and a transaction hash behind it.&lt;/p&gt;

&lt;p&gt;That last part is what makes this objection worse rather than better. A wrong claim in a private chat is a wrong claim. A wrong claim that has been signed, paid for and settled is a wrong claim wearing the costume of an audited one. The mechanism does not reduce the lie; it launders it. Garbage in, signed garbage out, and the signature is the most dangerous component because it is the part humans trust without checking.&lt;/p&gt;

&lt;p&gt;There is a second, quieter version of the same objection: an AI jury grading a factual claim is a model guessing about a world it cannot observe. Ask a text panel whether a shop was open at 14:00 UTC and it will produce a confident, well-formatted answer that is simply its prior about shops. The system pays for that answer.&lt;/p&gt;

&lt;p&gt;3/12 - What answers the oracle objection&lt;br&gt;
What answers it. Not a promise of truth - a narrower scope plus inspectable reasoning. Two mechanisms do the work. First, evidence pinning: the artifact under evaluation is content-addressed, so a verdict can always be traced to the exact bytes that produced it, and a later reader can see what was judged rather than what someone now says was judged. Second, per-criterion published scores: the jury has to return a number for each rubric criterion with its reasoning attached, which means a verdict is a document that can be argued with, not a black-box yes or no.&lt;/p&gt;

&lt;p&gt;What that still does not fix. A pinned lie is still a lie. Pinning changes the question from "is the verdict fair" to "was the input true", and only the second question matters - and the system can only answer it for claims whose ground truth is public and cheap to re-check. A posted price, a merged pull request, a transaction hash, a published timetable: those are checkable. Whether a market felt confident, whether a design was original, whether a summary was fair - those are not, and no amount of on-chain machinery makes them so. Any honest description of this category has to say that out loud, because the failure mode is not that the oracle lies. The failure mode is that it answers anyway.&lt;/p&gt;

&lt;p&gt;4/12 - Objection two: you can spend more on judging the work than the work was worth&lt;br&gt;
Now the economic objection, which is the one that actually kills projects. Every verdict costs money and time. On a bounty worth 0.0015 ETH, a single submission attempt costs a 0.00024 ETH prepay plus oracle fees plus gas, and then you wait minutes - sometimes much longer - for a number that might be a rejection. You have built a machine where the cost of judging is a meaningful fraction of the value of the work, and where the payer is the person who has not yet been paid.&lt;/p&gt;

&lt;p&gt;The incentive structure gets worse from there. If evaluation is expensive, the rational creator writes fewer, larger bounties, which concentrates the market and locks out exactly the small, weird, high-variance tasks that a permissionless system is supposed to unlock. Meanwhile the hunter absorbs the cost of every failed attempt, which is a regressive tax on trying. The skeptic's summary writes itself: this is a dispute-resolution system priced for disputes worth thousands, pointed at work worth pennies, and it will either price itself out or subsidise itself into insolvency.&lt;/p&gt;

&lt;p&gt;5/12 - What answers the cost objection&lt;br&gt;
What answers it. Escrowed payout, multi-model settlement, and commit-reveal ordering. The escrow matters because it removes the payer's discretion: the money is committed before the work exists, so a creator cannot accept the work and then decline to pay. Multi-model panels matter because they make a verdict less dependent on one vendor's mood. Commit-reveal matters because jurors commit to an answer before anyone can see the panel's lean, which removes the cheapest collusion path - reading the room and following it.&lt;/p&gt;

&lt;p&gt;On cost specifically, the honest answer is that the fee should track the stake, not the artifact. The oracle does not need to cost the same to judge a haiku and a contract audit; it needs to cost a small fixed fraction of what is at risk, so that a micro-bounty is cheap to judge precisely because there is little to fight over.&lt;/p&gt;

&lt;p&gt;What that still does not fix. A floor is real. Below some payout, the cost of judging exceeds the value of judging, and the correct move is to keep the task off chain entirely. Anyone who tells you that on-chain verification is appropriate at every scale is selling something. It is appropriate where the stake is large enough to fund a verdict and the claim is checkable enough to be worth one - and that is a narrower set of tasks than the pitch deck implies.&lt;/p&gt;

&lt;p&gt;6/12 - Objection three: a verdict is a sample, not a measurement&lt;br&gt;
The third objection is the one insiders rarely say plainly. A verdict from a language model panel is not a measurement of quality. It is one draw from a distribution. Submit the same text twice and you get two numbers, and the spread is not noise around a stable truth - it is the truth of the system, which is that it has no stable truth.&lt;/p&gt;

&lt;p&gt;I can give this objection my own receipts rather than a hypothetical. Six submissions to a single bounty, scored between 86 and 93 against a threshold of 94. Never crossed. The content was revised between rounds and the scores moved, but they moved inside a band, and the band sat below the line. Which of those two facts is the finding - that the work was not good enough, or that the line was drawn in a place the system could not reach - is not something the score can tell you.&lt;/p&gt;

&lt;p&gt;It gets sharper when a panel member fails. If one of two jurors errors out and the other returns a score, the composite becomes one model's opinion plus a conservative floor. Nothing in the verdict announces this. The number looks exactly like a normal number. A submission can be capped by an infrastructure fault and read as a content verdict, and the hunter will spend real money rewriting prose to chase a gap that rewriting cannot close.&lt;/p&gt;

&lt;p&gt;7/12 - What answers the variance objection&lt;br&gt;
What answers it. Publish the rubric before submissions open, with weights and per-criterion descriptions, and have the panel return a score per criterion. That converts a verdict from an oracle into an audit: a reader can see which criterion fell short, by how much, and whether the reasoning is coherent. Add staked jurors and permissionless entry, and the cost of capturing the panel rises above the value of capturing it, which is the only durable defence.&lt;/p&gt;

&lt;p&gt;What that still does not fix. A panel narrows the spread. It does not remove it. Two models agreeing is evidence, not proof, and it does not change the fact that at the threshold, luck decides. If a submission scores 93 against a line at 94, resubmitting near-identical work may cross by accident - and the reverse is equally true. Publishing per-criterion scores makes that visible, which is an improvement over hiding it, but visible variance is still variance. If the payout structure only pays at the top, the system inherits a lottery.&lt;/p&gt;

&lt;p&gt;8/12 - Where rivals do it better: Kleros&lt;br&gt;
I am not going to pretend the design I am defending is state of the art, because two adjacent systems do parts of this better and a fair reading has to say so.&lt;/p&gt;

&lt;p&gt;Kleros has run staked, appealable juries since 2018. In its General Court a juror costs 0.005 ETH per round, and an appeal scales the jury 3, then 7, then 15, then 31, with roughly three days per phase. That is real game theory: economic finality, escalating cost for the losing side, and a court tiered by stake rather than by promise. It also runs a curation court at around 0.00017 ETH per juror for smaller questions, which is a cheaper design than most people assume. Where it beats a two-model panel is credibility under dispute: it can survive someone genuinely trying to buy a verdict. Where it loses is latency and cost - it is a dispute process, not an evaluation one, and pointing it at a 0.0015 ETH writing bounty would be absurd.&lt;/p&gt;

&lt;p&gt;9/12 - UMA and Chainlink&lt;br&gt;
UMA's optimistic oracle takes the opposite trade. A proposer bonds an answer, a liveness window runs, and a dispute escalates to a token-holder vote. It is cheap and fast because it assumes most answers are uncontested, which is right most of the time. It is built for numeric facts - a price, a timestamp, a resolution outcome - and it degrades badly on prose, where "disputed" is the default condition rather than the exception.&lt;/p&gt;

&lt;p&gt;Chainlink is often cited in these conversations and mostly does not belong in them. It delivers data and runs off-chain computation with a strong track record on the delivery side. Adjudicating a subjective claim is not a job it does, and treating it as an adjudication layer misreads what it is.&lt;/p&gt;

&lt;p&gt;10/12 - Attestations prove less than they sound like&lt;br&gt;
Then there are the attestation systems, which are useful and routinely oversold. EAS records who attested what, with a schema and a timestamp. ERC-8004 registries anchor agent identity so a claim can be attributed to a specific agent. TEE attestation proves which code ran and what it returned. All three are genuinely valuable, and none of them makes the input true. A TEE makes garbage in, garbage out provable, which is an improvement in auditability and precisely nothing on the oracle problem. If you hear someone claim otherwise, that is the claim to press on.&lt;/p&gt;

&lt;p&gt;11/12 - The concession&lt;br&gt;
Here is the point on which the skeptic is simply right today, and I will not dress it up: for most claims about the world, "verified on chain" means signed and staked, not true. Not verified. Not proven. Signed by someone who put money behind it. Where the claim's ground truth is public and cheap to re-check - a posted price, a merged pull request, a transaction hash - the mechanism does real work. Where it is not, the mechanism produces a confident artifact around an unverifiable statement, and calling that truth is the failure mode this entire category keeps committing.&lt;/p&gt;

&lt;p&gt;The category's actual value proposition is much narrower than its marketing. It is not "verify anything". It is: take a claim that a stranger could in principle check, attach the evidence, pay an independent panel to score it against a rubric published in advance, commit the money before the work exists, and publish the reasoning so the decision can be argued with afterwards. That is a real thing, and it is a small thing.&lt;/p&gt;

&lt;p&gt;12/12 - What survives&lt;br&gt;
An escrowed payout, so the person who benefits from a "yes" cannot withhold it. A rubric published before the work exists, so the target is not moved after the fact. A multi-model panel with commit-reveal ordering, so a verdict is not one vendor's mood and the cheapest collusion path is closed. Published per-criterion scores, so the reasoning is inspectable rather than merely authoritative. And a scope limit stated out loud, so the system is not pointed at claims it cannot check.&lt;/p&gt;

&lt;p&gt;None of that solves the oracle problem. All of it beats the alternative it is actually competing with, which is not some ideal of objective truth - it is a private yes or no from whoever holds the money, delivered whenever they feel like it, with no rubric, no rationale, and no recourse. Compared to that, a signed, staked, checkable, appealable answer is a large improvement. Compared to truth, it is a receipt.&lt;/p&gt;

&lt;p&gt;Where the world can check the claim, this beats a private decision. Where it cannot, the honest move is to say so instead of shipping a signature and calling it verification.&lt;/p&gt;

&lt;p&gt;Written for Verdikta bounty #146. The system discussed here is AI-evaluated, escrow-settled work on Base: bounties.verdikta.org. The author is a hunter on that platform, which is disclosed in the first line and is the reason this article argues against its own interest first.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>blockchain</category>
      <category>crypto</category>
      <category>web3</category>
    </item>
    <item>
      <title>How to Create Your First AI-Evaluated Bounty (Step by Step)</title>
      <dc:creator>kurumi</dc:creator>
      <pubDate>Fri, 04 Sep 2026 09:41:00 +0000</pubDate>
      <link>https://dev.to/kurumi_82661ed12516efd1f7/how-to-create-your-first-ai-evaluated-bounty-step-by-step-19bd</link>
      <guid>https://dev.to/kurumi_82661ed12516efd1f7/how-to-create-your-first-ai-evaluated-bounty-step-by-step-19bd</guid>
      <description>&lt;h1&gt;
  
  
  How to Create Your First AI-Evaluated Bounty
&lt;/h1&gt;

&lt;p&gt;If you've ever posted a freelance task and then argued over whether the work "met the bar," you already understand the problem this tutorial solves. Vague briefs plus subjective review equals disputes. The fix isn't more back-and-forth — it's deciding, in advance, exactly what "good" means, and letting an AI evaluator apply that definition consistently.&lt;/p&gt;

&lt;p&gt;This walkthrough uses &lt;a href="https://bounties.verdikta.org" rel="noopener noreferrer"&gt;Verdikta&lt;/a&gt; as the working example, since it's built specifically for AI-evaluated bounties with escrowed payment. By the end, you'll understand the five pieces every bounty needs: a rubric, weights, a threshold, must-pass gates, and funded escrow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "AI-evaluated" changes the incentive structure
&lt;/h2&gt;

&lt;p&gt;In a normal freelance posting, the person who pays is also the person who judges the work — after it's done. That's a conflict of interest baked into the structure, even when everyone involved is acting in good faith. The worker has no way to know, going in, exactly what will satisfy the buyer.&lt;/p&gt;

&lt;p&gt;An AI-evaluated bounty flips the order of operations:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You define success criteria &lt;em&gt;before&lt;/em&gt; anyone starts working.&lt;/li&gt;
&lt;li&gt;You fund escrow &lt;em&gt;before&lt;/em&gt; anyone starts working.&lt;/li&gt;
&lt;li&gt;Submissions get scored against the criteria you wrote — not a mood, not a moving target.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The AI model doesn't decide what "good" means. You do. The model just applies your definition consistently, every time, to every submission.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Scope the task tightly
&lt;/h2&gt;

&lt;p&gt;Before writing a rubric, write one sentence describing the deliverable. If you can't compress the task to one sentence, it's not ready for a bounty yet — it's still a discussion.&lt;/p&gt;

&lt;p&gt;Example: &lt;em&gt;"Write a Python function that validates email addresses against RFC 5322 and returns a boolean."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Tight scope makes the rubric easier to write and the evaluation less ambiguous.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Write your rubric — criteria and weights
&lt;/h2&gt;

&lt;p&gt;A rubric is a list of criteria, each with a weight reflecting how much it matters relative to the others. Weights should sum to something predictable (100 is common) so the final score is easy to reason about.&lt;/p&gt;

&lt;p&gt;Here's a sample rubric for the email-validator task, expressed as JSON — the format Verdikta bounties expect:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"task"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Python email validator function"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"criteria"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"correctness"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Function correctly validates RFC 5322-compliant emails and rejects invalid ones"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"weight"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"edge_case_handling"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Handles empty strings, unicode domains, and multiple @ symbols without crashing"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"weight"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"code_quality"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Readable, follows PEP8, includes type hints"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"weight"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"test_coverage"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Includes at least 5 unit tests covering valid and invalid cases"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"weight"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"threshold"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"must_pass_gates"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"no_syntax_errors"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"function_signature_matches_spec"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few things worth noticing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Each criterion has a plain-language description.&lt;/strong&gt; The AI evaluator reads this, so vague language produces vague scoring. "Good code quality" is worse than "follows PEP8, includes type hints."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weights reflect priority, not just presence.&lt;/strong&gt; Here, correctness matters twice as much as code quality — say so explicitly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The rubric is the contract.&lt;/strong&gt; Once it's published, it shouldn't change mid-bounty. That's the whole point: the worker knows exactly what they're being measured against before they start.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3: Set your threshold
&lt;/h2&gt;

&lt;p&gt;The threshold is the minimum weighted score a submission needs to pass. In the example above, it's 75 out of 100.&lt;/p&gt;

&lt;p&gt;Setting this number is a judgment call:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Too low&lt;/strong&gt;, and mediocre work gets paid, which defeats the purpose of having a rubric at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Too high&lt;/strong&gt;, and you risk rejecting genuinely useful work over minor gaps, which discourages submissions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A reasonable starting point for most bounties is 70–80. You can always run a small test bounty first to see what typical submissions score, then calibrate the threshold for future postings.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Choose your must-pass gates
&lt;/h2&gt;

&lt;p&gt;Gates are binary checks that exist outside the weighted scoring — pass/fail conditions that override everything else. A submission can score 95/100 on the rubric and still fail if it doesn't clear a gate.&lt;/p&gt;

&lt;p&gt;Use gates for non-negotiables: things where "mostly correct" isn't good enough. In the example, &lt;code&gt;no_syntax_errors&lt;/code&gt; and &lt;code&gt;function_signature_matches_spec&lt;/code&gt; are gates — a function that doesn't run, or doesn't match the required signature, shouldn't be scored on style at all.&lt;/p&gt;

&lt;p&gt;Common gate categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does it run / compile / execute without error?&lt;/li&gt;
&lt;li&gt;Does it match a required interface or file format?&lt;/li&gt;
&lt;li&gt;Does it avoid prohibited approaches (e.g., "no external libraries")?&lt;/li&gt;
&lt;li&gt;Does it meet a hard legal or safety constraint?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Keep gates few and unambiguous. Gates that require judgment calls belong in the weighted rubric instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Fund the escrow
&lt;/h2&gt;

&lt;p&gt;This is the step that makes the whole system trustworthy from the worker's side. Once you fund escrow on &lt;a href="https://bounties.verdikta.org" rel="noopener noreferrer"&gt;bounties.verdikta.org&lt;/a&gt;, the payment is locked and can't be quietly withdrawn or renegotiated. A worker submitting to a funded bounty knows the money exists and is reserved for whoever meets the criteria — not contingent on your continued goodwill after the fact.&lt;/p&gt;

&lt;p&gt;Practically, this means:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set the bounty amount.&lt;/li&gt;
&lt;li&gt;Deposit funds into escrow when you publish the rubric.&lt;/li&gt;
&lt;li&gt;The funds stay locked until a submission is evaluated.&lt;/li&gt;
&lt;li&gt;On a passing evaluation, payment releases automatically — no manual approval step required, no room for after-the-fact renegotiation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is the piece that closes the trust gap discussed earlier. The rubric defines what "good" means; escrow guarantees that meeting it actually results in payment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 6: What happens when submissions arrive
&lt;/h2&gt;

&lt;p&gt;Once your bounty is live and funded, here's the flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A worker submits.&lt;/strong&gt; This could be a human, an AI agent, or some hybrid workflow — the bounty doesn't care who or what produced the work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gates are checked first.&lt;/strong&gt; If any must-pass gate fails, the submission is rejected before scoring even begins. No wasted evaluation cycles on disqualified work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weighted scoring runs against the rubric.&lt;/strong&gt; Each criterion gets scored individually, then combined using your weights into a single number.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The score is compared to your threshold.&lt;/strong&gt; Above threshold, the submission passes and escrow releases. Below threshold, it doesn't, and the worker sees exactly which criteria fell short.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multiple submissions, if allowed, get ranked.&lt;/strong&gt; If your bounty accepts multiple attempts, the highest-scoring passing submission wins.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The key property here: the evaluation is reproducible. Run the same submission against the same rubric twice, and you get the same result — not a different mood on a different day.&lt;/p&gt;

&lt;h2&gt;
  
  
  A quick checklist before you publish
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Task scoped to a single clear sentence&lt;/li&gt;
&lt;li&gt;[ ] Rubric criteria written in plain, specific language&lt;/li&gt;
&lt;li&gt;[ ] Weights assigned and sum to a clean total (e.g., 100)&lt;/li&gt;
&lt;li&gt;[ ] Threshold set based on realistic expectations&lt;/li&gt;
&lt;li&gt;[ ] Must-pass gates limited to true non-negotiables&lt;/li&gt;
&lt;li&gt;[ ] Escrow funded before publishing&lt;/li&gt;
&lt;li&gt;[ ] Rubric reviewed once more — it won't change after workers start submitting&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Closing thoughts
&lt;/h2&gt;

&lt;p&gt;The interesting thing about AI-evaluated bounties isn't the AI part — it's that they force you, as the person posting work, to think clearly about what you actually want &lt;em&gt;before&lt;/em&gt; you ask someone else to produce it. Most disputes in freelance work come from ambiguity, not dishonesty. Writing the rubric is the real work; the evaluation just enforces it consistently.&lt;/p&gt;

&lt;p&gt;If you want to try this yourself, head to &lt;a href="https://bounties.verdikta.org" rel="noopener noreferrer"&gt;bounties.verdikta.org&lt;/a&gt; and post a small bounty with a tightly scoped task. Start with a rubric you could explain to a stranger in thirty seconds — if you can't, that's a sign to scope down further before you publish.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>blockchain</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How Verdikta Decides Whether a Bounty Gets Paid — A Plain-Language Guide for Newcomers</title>
      <dc:creator>kurumi</dc:creator>
      <pubDate>Thu, 13 Aug 2026 06:24:43 +0000</pubDate>
      <link>https://dev.to/kurumi_82661ed12516efd1f7/how-verdikta-decides-whether-a-bounty-gets-paid-a-plain-language-guide-for-newcomers-3lli</link>
      <guid>https://dev.to/kurumi_82661ed12516efd1f7/how-verdikta-decides-whether-a-bounty-gets-paid-a-plain-language-guide-for-newcomers-3lli</guid>
      <description>&lt;p&gt;If you have ever browsed a bounty marketplace and wondered what happens between the moment you click "Submit" and the moment you receive (or don't receive) your payout, this article is for you. Verdikta is an AI-powered dispute-resolution and bounty-evaluation platform built on the Base blockchain. Below is a step-by-step walkthrough of the system, written so that anyone — developer or not — can follow along.&lt;br&gt;
The Two Roles: Creator and Hunter&lt;br&gt;
Every Verdikta bounty starts with a creator. The creator does three things:&lt;br&gt;
• Escrows ETH — locks a payout amount into a smart contract so that the money is guaranteed to be there when the bounty closes.&lt;br&gt;
• Writes a rubric — a checklist that tells evaluators exactly what "good work" looks like and how much each aspect matters.&lt;br&gt;
• Sets a pass threshold — a minimum score (for example 80%) that a submission must reach before the escrow is released.&lt;br&gt;
On the other side is the hunter. The hunter reads the bounty description, produces the requested work (an article, a code module, a design, etc.), and submits it through the platform. Once submitted, the hunter's work enters the evaluation pipeline — and that is where the AI jury takes over.&lt;br&gt;
The AI Jury: Multiple Models, One Verdict&lt;br&gt;
Verdikta does not rely on a single opinion. Instead, it assigns each submission to a jury of independent AI models — typically two or more large language models from different providers (for example, OpenAI's GPT and Anthropic's Claude). Each model receives the submission, the rubric, and any supporting files, then scores every rubric criterion on its own.&lt;br&gt;
Why use more than one model? The same reason courts use juries: a single evaluator can miss context or be biased. By asking several models to evaluate independently and then weighting their scores (for example, 50% model A and 50% model B), the platform reduces the chance that one model's quirks determine the outcome. The weighted average becomes the aggregate score, which is compared against the creator's threshold to produce a binary verdict: FUND (pay the hunter) or DON'T FUND (reject).&lt;br&gt;
Understanding the Rubric&lt;br&gt;
The rubric is the heart of every Verdikta bounty. It has two kinds of criteria:&lt;br&gt;
Scored Criteria (Weight &amp;gt; 0)&lt;br&gt;
Each scored criterion carries a weight between 0 and 1, and all weights together sum to 1.0. For example, a bounty might define Clarity (weight 0.30), Technical accuracy (weight 0.40), and Completeness (weight 0.30). Each AI model assigns a score to every criterion. The platform multiplies each criterion score by its weight, sums the results, and — after combining the models' outputs according to the jury weights — produces the final aggregate score.&lt;br&gt;
Must-Pass Gates (Weight = 0)&lt;br&gt;
Some criteria are must-pass gates. They carry a weight of 0, which means they do not contribute positively to the score, but they can hard-fail a submission. If any AI model marks a must-pass gate as "fail," that model's entire evaluation is set to zero — regardless of how well the submission scored on everything else. Common examples include: "The submission must include a live public URL" and "The article must have been published for at least 24 hours." Must-pass gates exist to enforce hard requirements that the creator considers non-negotiable. A beautifully written article that is missing the required URL will still score 0%.&lt;br&gt;
Threshold and Payout&lt;br&gt;
After the AI jury finishes its evaluation, the platform compares the aggregate score to the creator's threshold: if the aggregate score meets or exceeds the threshold, the smart contract releases the escrowed ETH to the hunter's wallet (FUND). If it falls short, the escrow returns to the creator and the hunter receives nothing (DON'T FUND). This entire process is transparent and on-chain. The smart contract handles the payout automatically once the evaluation verdict is recorded, so neither party has to trust the other — the code enforces the agreement.&lt;br&gt;
Why This Matters&lt;br&gt;
Traditional freelance platforms rely on human reviewers, which introduces delays, subjectivity, and disputes. Verdikta replaces that with a deterministic, auditable AI pipeline: the rules are public (the rubric), the judges are independent (the AI models), and the payout is automatic (the smart contract). For hunters, it means fast, fair feedback. For creators, it means you only pay for work that meets your standards.&lt;br&gt;
If you are curious, head to bounties.verdikta.org, browse the open bounties, and try submitting your first entry. The system is designed so that anyone can participate — and now you know exactly how it decides who gets paid.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Building a Bounty Agent for Verdikta on Base L2 published</title>
      <dc:creator>kurumi</dc:creator>
      <pubDate>Sun, 26 Jul 2026 20:16:20 +0000</pubDate>
      <link>https://dev.to/kurumi_82661ed12516efd1f7/building-a-bounty-agent-for-verdikta-on-base-l2published-3643</link>
      <guid>https://dev.to/kurumi_82661ed12516efd1f7/building-a-bounty-agent-for-verdikta-on-base-l2published-3643</guid>
      <description>&lt;p&gt;Building an Autonomous Agent for Verdikta Bounties: A Technical Deep Dive&lt;br&gt;
How I built a Python agent that monitors, evaluates, and interacts with Verdikta's AI-judged bounty system on Base L2.&lt;/p&gt;

&lt;p&gt;Why Build a Bounty Agent?&lt;br&gt;
Verdikta is a decentralized bounty platform where AI models — GPT-5.2 and Claude Sonnet 4.5 — evaluate submissions and release ETH payments automatically via smart contracts. No human reviewers. No manual payouts. Just code.&lt;/p&gt;

&lt;p&gt;After winning 6+ bounties manually, I wanted to automate the process. The goal: an agent that watches for new bounties, evaluates which ones are worth pursuing, and integrates with Verdikta's API to read data and submit work.&lt;/p&gt;

&lt;p&gt;Architecture&lt;br&gt;
The agent has four components:&lt;/p&gt;

&lt;p&gt;copy&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
verdikta_agent.py&lt;br&gt;
├── VerdiktaAPI          — HTTP client for the Verdikta Bot API&lt;br&gt;
├── BountyMonitor        — Watches bounties, calculates viability scores&lt;br&gt;
├── SubmissionTracker    — Records submission history and statistics&lt;br&gt;
└── ViabilityScorer      — Evaluates ROI: payout vs threshold vs time&lt;br&gt;
VerdiktaAPI Client&lt;br&gt;
The Verdikta Bot API requires authentication via an X-Bot-API-Key header. You register your bot at POST /api/bots/register to get a key.&lt;/p&gt;

&lt;p&gt;Python&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
class VerdiktaAPI:&lt;br&gt;
    def &lt;strong&gt;init&lt;/strong&gt;(self, api_key=None):&lt;br&gt;
        self.session = requests.Session()&lt;br&gt;
        if api_key:&lt;br&gt;
            self.session.headers["X-Bot-API-Key"] = api_key&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def get_bounty(self, bounty_id):
    resp = self.session.get(f"{API_BASE}/jobs/{bounty_id}")
    resp.raise_for_status()
    return resp.json()

def submit_work(self, bounty_id, content):
    return self.session.post(
        f"{API_BASE}/jobs/{bounty_id}/submit",
        json={"content": content}
    ).json()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Key endpoints:&lt;/p&gt;

&lt;p&gt;GET /api/jobs — List bounties (filter by status)&lt;br&gt;
GET /api/jobs/{id} — Bounty details&lt;br&gt;
GET /api/jobs/{id}/submissions — Submission history&lt;br&gt;
POST /api/jobs/{id}/submit — Submit work&lt;br&gt;
BountyMonitor &amp;amp; Viability Scoring&lt;br&gt;
Not all bounties are worth pursuing. The agent calculates a viability score:&lt;/p&gt;

&lt;p&gt;Python&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
def _score_viability(self, bounty):&lt;br&gt;
    payout = bounty["payout_eth"]&lt;br&gt;
    threshold = bounty["threshold"]&lt;br&gt;
    remaining_hours = bounty["remaining_hours"]&lt;br&gt;
    is_targeted = self._is_targeted_to_me(bounty)&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Higher threshold = harder = lower viability
difficulty = {92: 0.3, 88: 0.6, 85: 0.8}.get(threshold, 1.0)

# Prefer bounties with more time remaining
time_factor = min(remaining_hours / 168, 1.0)

# Targeted bounties = only you can submit
targeted_bonus = 1.5 if is_targeted else 1.0

score = payout * 1000 * difficulty * time_factor * targeted_bonus
return {"score": score, "rating": "HIGH" if score &amp;gt; 50 else "MED" if score &amp;gt; 20 else "LOW"}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;This catches the key insight: a 0.02 ETH bounty with 88% threshold and 13 days left, targeted to your wallet, is worth much more than a 0.002 ETH open bounty with 92% threshold expiring tomorrow.&lt;/p&gt;

&lt;p&gt;Graceful API Fallback&lt;br&gt;
The Verdikta API requires authentication. During development I didn't always have a valid key. The agent falls back to hardcoded bounty data when the API returns 401:&lt;/p&gt;

&lt;p&gt;Python&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
try:&lt;br&gt;
    bounty = self.api.get_bounty(bounty_id)&lt;br&gt;
except requests.HTTPError:&lt;br&gt;
    bounties = self._scrape_bounties()  # Local fallback&lt;br&gt;
    bounty = next(b for b in bounties if b["id"] == bounty_id)&lt;br&gt;
This pattern — try API, fall back to local data — is essential for agents that need to work offline or during API outages.&lt;/p&gt;

&lt;p&gt;On-Chain Integration&lt;br&gt;
The BountyEscrow contract on Base L2 handles payments:&lt;/p&gt;

&lt;p&gt;copy&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
Contract: 0x2Ae271f5E86bee449a36B943414b7C1a7b39772D&lt;br&gt;
Network: Base Mainnet (Chain ID: 8453)&lt;br&gt;
The agent reads on-chain data via BaseScan API to verify:&lt;/p&gt;

&lt;p&gt;Bounty funding status&lt;br&gt;
Payment releases to hunter wallets&lt;br&gt;
Submission transaction hashes&lt;br&gt;
This provides independent verification — the agent doesn't trust the API alone, it cross-checks against on-chain state.&lt;/p&gt;

&lt;p&gt;CLI Interface&lt;br&gt;
The agent uses argparse with rich for formatted output:&lt;/p&gt;

&lt;p&gt;Bash&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  List open bounties with viability scores
&lt;/h1&gt;

&lt;p&gt;python verdikta_agent.py --list&lt;/p&gt;

&lt;h1&gt;
  
  
  Check specific bounty
&lt;/h1&gt;

&lt;p&gt;python verdikta_agent.py --check 157&lt;/p&gt;

&lt;h1&gt;
  
  
  Monitor mode (checks every 30 minutes)
&lt;/h1&gt;

&lt;p&gt;python verdikta_agent.py --monitor&lt;/p&gt;

&lt;h1&gt;
  
  
  View submission history
&lt;/h1&gt;

&lt;p&gt;python verdikta_agent.py --history&lt;br&gt;
Example output:&lt;/p&gt;

&lt;p&gt;copy&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
📊 Verdikta Open Bounties&lt;br&gt;
┌─────┬──────────────────────────┬──────────┬───────────┬──────────┬───────────┐&lt;br&gt;
│  #  │ Title                    │ Payout   │ Threshold │ Targeted │ Viability │&lt;br&gt;
├─────┼──────────────────────────┼──────────┼───────────┼──────────┼───────────┤&lt;br&gt;
│ 157 │ I Tried to Cheat a       │ 0.02 ETH │ 88%       │ ✅ You   │ HIGH ⭐   │&lt;br&gt;
│ 158 │ Build an Agent           │ 0.02 ETH │ 88%       │ ✅ You   │ HIGH ⭐   │&lt;br&gt;
│ 160 │ Reddit AMA Post          │ 0.008 ETH│ 85%       │ ❌ Open  │ MEDIUM    │&lt;br&gt;
└─────┴──────────────────────────┴──────────┴───────────┴──────────┴───────────┘&lt;br&gt;
Key Design Decisions&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Read-Only by Default&lt;br&gt;
The agent does NOT send on-chain transactions automatically. It reads data, evaluates bounties, and prepares submissions — but ETH transfers require manual wallet confirmation. This is a safety feature: losing 0.02 ETH to a bad auto-submission isn't worth the automation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dual Verification&lt;br&gt;
Every claim is verified twice: once via the Verdikta API and once via on-chain data. If the two disagree, the agent flags the discrepancy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Submission Tracking&lt;br&gt;
The agent records every submission attempt with score, status, and timestamp. Over time, this builds a dataset of what works: which bounty classes yield highest scores, which rubric criteria are hardest to pass, and which strategies fail.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What I Learned Building This&lt;br&gt;
The Verdikta API Is Bot-Friendly&lt;br&gt;
The X-Bot-API-Key authentication pattern is clean. Register once, use the key forever. The API returns structured JSON that's easy to parse. This is how bounty platforms should work.&lt;/p&gt;

&lt;p&gt;Viability Scoring Saves Time&lt;br&gt;
Not every 0.002 ETH bounty is worth 3 hours of work. The viability score factors in payout, threshold, remaining time, and whether the bounty is targeted. This turned a manual "should I try this?" into an automated decision.&lt;/p&gt;

&lt;p&gt;Fallback Data Is Essential&lt;br&gt;
The API sometimes returns 401 (expired key, rate limit, maintenance). Hardcoding known bounty data as fallback means the agent keeps working even when the API doesn't. This is a pattern I'll use in every API-dependent agent going forward.&lt;/p&gt;

&lt;p&gt;The Real Value Is Tracking&lt;br&gt;
The most useful feature isn't the monitoring or the viability scoring — it's the submission history. After 10+ submissions, you can see patterns: which bounty classes you excel at, which rubric criteria consistently trip you up, and whether your scores are improving over time.&lt;/p&gt;

&lt;p&gt;Next Steps&lt;br&gt;
Auto-generate submissions: Use an LLM to draft submissions based on rubric criteria&lt;br&gt;
Score prediction: Train a model on past submissions to predict scores before submitting&lt;br&gt;
Multi-chain support: Extend to other chains as Verdikta expands&lt;br&gt;
Webhook notifications: Alert via Telegram/Discord when high-viability bounties appear&lt;br&gt;
Try It Yourself&lt;br&gt;
The agent is open source:&lt;/p&gt;

&lt;p&gt;GitHub: github.com/s97472091-pixel/verdikta-agent&lt;/p&gt;

&lt;p&gt;Bash&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
git clone &lt;a href="https://github.com/s97472091-pixel/verdikta-agent.git" rel="noopener noreferrer"&gt;https://github.com/s97472091-pixel/verdikta-agent.git&lt;/a&gt;&lt;br&gt;
cd verdikta-agent&lt;br&gt;
pip install -r requirements.txt&lt;br&gt;
python verdikta_agent.py --list&lt;br&gt;
On-Chain Evidence&lt;br&gt;
Hunter Wallet: 0x1b9cA7b297a736f4FE01256C9e2d499c79dEFFb3&lt;br&gt;
BountyEscrow: 0x2Ae271f5E86bee449a36B943414b7C1a7b39772D&lt;br&gt;
6+ bounties won across math, task-creation, and case study categories&lt;br&gt;
All claims verifiable at bounties.verdikta.org&lt;br&gt;
Code at github.com/s97472091-pixel/verdikta-agent&lt;/p&gt;

</description>
      <category>agents</category>
      <category>crypto</category>
      <category>python</category>
      <category>web3</category>
    </item>
  </channel>
</rss>
