<?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: Redwan Rahman</title>
    <description>The latest articles on DEV Community by Redwan Rahman (@redwan_rahman_57319981dd0).</description>
    <link>https://dev.to/redwan_rahman_57319981dd0</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%2F4168715%2F3c0da3c9-4895-46d2-b66a-8ab728f62617.jpg</url>
      <title>DEV Community: Redwan Rahman</title>
      <link>https://dev.to/redwan_rahman_57319981dd0</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/redwan_rahman_57319981dd0"/>
    <language>en</language>
    <item>
      <title>LazyShelf: find the passage, keep the source</title>
      <dc:creator>Redwan Rahman</dc:creator>
      <pubDate>Fri, 23 Oct 2026 18:18:35 +0000</pubDate>
      <link>https://dev.to/redwan_rahman_57319981dd0/lazyshelf-find-the-passage-keep-the-source-4lei</link>
      <guid>https://dev.to/redwan_rahman_57319981dd0/lazyshelf-find-the-passage-keep-the-source-4lei</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;You know the note exists. You remember the idea, but not the words you used.&lt;/p&gt;

&lt;p&gt;LazyShelf is a small passage finder for a collection of English text and Markdown files. Add your documents, search for a word or describe what you remember, and open a result in its original context. It is designed for people with folders of notes, instructions and saved text who would rather find a passage than reopen every file.&lt;/p&gt;

&lt;p&gt;For this week's Slow and Steady theme, the work to avoid is reopening and rereading files one by one. LazyShelf retrieves a candidate; you keep the judgment by checking its separate source identity and exact original context.&lt;/p&gt;

&lt;p&gt;It does not write an answer. It returns text that was already in your documents, with the filename, a collection-specific file ID and a source line. Two files named &lt;code&gt;shift-notes.txt&lt;/code&gt; remain two different sources.&lt;/p&gt;

&lt;p&gt;The deliberately narrow scope is the point: UTF-8 TXT and Markdown, a small collection, and a source you can inspect. There is no document chatbot, PDF parser or account system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://redwanrahman-cloud.github.io/lazyshelf/" rel="noopener noreferrer"&gt;Try LazyShelf — live demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The demo is a static GitHub Pages deployment. Start with &lt;strong&gt;Try a fictional collection&lt;/strong&gt;; Words mode works without loading the model. Meaning mode downloads the runtime/model assets from the same site and performs inference in your browser. First preparation is not instantaneous. Imported documents and queries are not sent to a hosted inference API; the hosting provider still receives ordinary site/asset requests. You can also run the source locally as described below.&lt;/p&gt;

&lt;p&gt;To try the main workflow, add a small collection, describe a passage in Meaning mode, then open its exact source. Switch to Words when you have a distinctive identifier. Read the surrounding context before treating a result as evidence for an answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/redwanrahman-cloud/lazyshelf" rel="noopener noreferrer"&gt;Source repository and installation instructions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Reviewed deployment source: &lt;code&gt;69fb601a8cda9a70a5e371a75bce5cf0b187e8bb&lt;/code&gt;. Its extracted source archive passed all 32 automated tests. The earlier 29-test release remains in Git history; the deployment update makes asset paths work at both the local root and the GitHub Pages project path. The repository includes the fixture and evaluation output discussed below.&lt;/p&gt;

&lt;p&gt;The application code uses the MIT licence. Transformers.js uses Apache-2.0; ONNX Runtime uses MIT. The &lt;a href="https://huggingface.co/Xenova/all-MiniLM-L6-v2/raw/751bff37182d3f1213fa05d7196b954e230abad9/README.md" rel="noopener noreferrer"&gt;model card at the pinned Xenova revision&lt;/a&gt; identifies the model licence as Apache-2.0. The source retains the full runtime licence texts, model revision and upstream ONNX third-party notices. Those obligations are separate from the application licence.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;LazyShelf has two retrieval paths:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Words:&lt;/strong&gt; a local BM25-style token ranking. It is useful when you know a distinctive term or identifier, and it does not need the embedding model. This is token matching, not a strict phrase-search engine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; &lt;code&gt;Xenova/all-MiniLM-L6-v2&lt;/code&gt;, a compact open-weight embedding model, running through Transformers.js 3.8.1. It represents a query and document passages as vectors and ranks their similarity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The browser worker performs the embedding work away from the main interface. The application preserves original decoded text and records each passage's source offsets. Opening a result shows the full document with that exact slice highlighted. It renders imported text as text, including Markdown and HTML-looking strings, rather than executing it.&lt;/p&gt;

&lt;p&gt;The collection stays in page memory. Resetting or reloading discards it; LazyShelf is not a backup system. For local installation, a separate setup command downloads about 47.6 MB of runtime and model assets, checking each against a size-and-SHA-256 manifest before installation. The browser worker loads those assets from the same site or local server rather than calling a hosted inference API. Keyword search does not need the model assets.&lt;/p&gt;

&lt;p&gt;The source is divided into a text/retrieval core, the embedding worker, UI state management and a small loopback static server. Collection changes invalidate the index and old results. Cancellation retires outstanding work instead of allowing an earlier search to overwrite the new collection. Source-line tracking uses a forward-only cursor so it does not repeatedly scan the full prefix for each overlapping passage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try the small, useful version
&lt;/h3&gt;

&lt;p&gt;Download the source repository and extract it, or clone it. From the project directory, with Node.js 22 or newer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node scripts/download-assets.mjs
node scripts/verify-assets.mjs
node scripts/serve.mjs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://127.0.0.1:4187/&lt;/code&gt; in a modern browser with WebAssembly support. No API key, GPU or npm installation is required for this path. The download step needs internet access; it is not part of every search.&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Try a fictional collection&lt;/strong&gt;, then &lt;strong&gt;Load semantic model&lt;/strong&gt;. Once ready, choose &lt;strong&gt;Meaning · semantic&lt;/strong&gt; and search &lt;code&gt;make a backup of my photographs&lt;/code&gt;. Inspect the Photos.md passage about a second copy on a separate external drive, then click &lt;strong&gt;View exact source&lt;/strong&gt;. For an identifier rather than a paraphrase, choose &lt;strong&gt;Words · lexical&lt;/strong&gt; and search &lt;code&gt;DVC-0179&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the evaluation actually showed
&lt;/h3&gt;

&lt;p&gt;A separate reviewer-authored collection contains six original, fictional workshop documents. It includes duplicate filenames, CRLF line endings, Unicode, similar identifiers, negation and literal hostile markup. It contains no patient or customer information.&lt;/p&gt;

&lt;p&gt;The fixed evaluation has twenty queries. Seventeen have a specified answer-bearing passage; three ask for information that is absent. The table below uses the &lt;strong&gt;standalone Node CPU evaluation of the retrieval core&lt;/strong&gt;, with the same quantized model. It is not a browser-speed or usability benchmark.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Retrieval mode&lt;/th&gt;
&lt;th&gt;Expected passage ranked first&lt;/th&gt;
&lt;th&gt;Expected passage in top three&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Word ranking&lt;/td&gt;
&lt;td&gt;13 / 17&lt;/td&gt;
&lt;td&gt;15 / 17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Semantic ranking&lt;/td&gt;
&lt;td&gt;16 / 17&lt;/td&gt;
&lt;td&gt;17 / 17&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A hit requires the decisive expected text to appear inside a returned passage from the correct source. Merely finding the right file does not count. The semantic top-one miss is retained: the right document appears first, but the complete decisive sentence appears in another passage within the top three.&lt;/p&gt;

&lt;p&gt;The three absent-answer queries are not counted as successes. A unique absent literal yields no word matches, but both retrieval methods can return neighbors for a natural-language question whose answer is missing. Meaning search shows the highest-ranked passage with an explicit reminder that it is not a verified answer. Lower-ranked results are collapsed under Other suggestions, with a warning that they may be unrelated. This separates ranking from relevance; it does not turn similarity into an answer-confidence estimate.&lt;/p&gt;

&lt;p&gt;The source-only evaluation used thirteen passages and 384-dimensional embeddings, checked every returned source slice, and made zero network requests. Its fixtures, method and actual output are available with the &lt;a href="https://github.com/redwanrahman-cloud/lazyshelf/tree/1885f31ee4ff39698be00d98ecc2a6a16adc6db9/evaluation" rel="noopener noreferrer"&gt;evaluation materials&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;These are small, authored tests, not blind user validation or a promise of general accuracy. They do not establish superiority over another application.&lt;/p&gt;

&lt;p&gt;The deployment source passed 32 automated tests covering decoding, limits, source coordinates, route containment, model-worker recovery, result presentation, packaging safeguards and root/project asset paths. Its exact Git archive was independently extracted and tested with no skipped tests. The generated deployment files were checked against their manifest. Simulated DOM, loader and worker tests are not browser or accessibility certification; HTTP delivery checks do not establish live browser inference behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is different, and what is not
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/do-me/SemanticFinder" rel="noopener noreferrer"&gt;SemanticFinder&lt;/a&gt; already offers browser-local semantic and full-text search, with a broader collection of features. LazyShelf does not claim to invent either approach.&lt;/p&gt;

&lt;p&gt;Its focus is a smaller workflow: import several TXT or Markdown files directly, retain their separate identities, and move from a ranked passage to its exact original context. Word search is available before model preparation and remains the fallback when the model is unavailable. The intended improvement is less preparation and clearer source evidence for this specific task, not an unsupported claim that it is universally faster or more accurate.&lt;/p&gt;

&lt;h3&gt;
  
  
  The sample check that changed the interface
&lt;/h3&gt;

&lt;p&gt;When I tried the fictional collection with a photograph-backup query, Photos.md appeared first—but the library and equipment passages appeared below it as well. Ranking the right passage first was not enough: presenting every suggestion the same way made the unrelated material look more useful than it was.&lt;/p&gt;

&lt;p&gt;We changed the presentation rather than inventing a confidence cutoff. The highest-ranked passage stays visible, while the other suggestions are collapsed and explicitly labelled as potentially unrelated. The original source remains one click away. This was a founder's sample check, not an independent user study, but it exposed a concrete problem and led to a tested fix.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Lazy Payoff
&lt;/h2&gt;

&lt;p&gt;The intended saving is small and repeatable: stop opening files one by one when you remember the idea but not its wording. Let local retrieval produce a candidate, then spend your attention checking the actual passage. I have not measured minutes saved; the demonstration shows the workflow, not a productivity claim.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Downloadable model weights make the meaning-based path possible without sending each document and query to a hosted model service. Transformers.js supplies the browser inference runtime; the MiniLM conversion supplies the quantized weights; ONNX Runtime supplies execution underneath it.&lt;/p&gt;

&lt;p&gt;That separation is useful. Someone can inspect the retrieval code, verify the installed asset hashes, keep the model assets on their own machine and choose word search when meaning-based retrieval is not helpful. A proprietary API key is not part of the application.&lt;/p&gt;

&lt;p&gt;Open components do not remove the costs of model preparation, hardware or review. They make those dependencies visible and let this small tool do its job without a per-query hosted inference dependency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limits worth knowing
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The quality scope is English TXT and Markdown, not multilingual search, OCR or PDF extraction.&lt;/li&gt;
&lt;li&gt;The collection is bounded: thirty files, 512,000 bytes per file, 500,000 UTF-16 code units overall and at most 900 passages.&lt;/li&gt;
&lt;li&gt;A first semantic index has an upfront cost. Warm searches are a different operation; no universal instant-search claim is made.&lt;/li&gt;
&lt;li&gt;Similarity is not answer confidence. Check identifiers, exceptions and negation in the source.&lt;/li&gt;
&lt;li&gt;A running local server and installed assets are different from an offline-installable PWA. Network-free core evaluation does not prove offline browser navigation or every browser's compatibility.&lt;/li&gt;
&lt;li&gt;The examples and evaluation collection are fictional. There is no measured customer time-saving or production-user claim.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AI disclosure:&lt;/strong&gt; Codex and Hermes were used extensively for implementation, testing, review and drafting this article. Redwanur Rahman set the product direction and scope. Reported evaluation figures come from preserved execution output, not generated estimates. AI assistance does not transfer responsibility for the entry or its claims away from the entrant.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>RTL Receipt Test: Fluent Arabic is not the same as faithful evidence</title>
      <dc:creator>Redwan Rahman</dc:creator>
      <pubDate>Wed, 07 Oct 2026 13:12:57 +0000</pubDate>
      <link>https://dev.to/redwan_rahman_57319981dd0/rtl-receipt-test-fluent-arabic-is-not-the-same-as-faithful-evidence-2m1j</link>
      <guid>https://dev.to/redwan_rahman_57319981dd0/rtl-receipt-test-fluent-arabic-is-not-the-same-as-faithful-evidence-2m1j</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvmqs78dw9r79ad0asnvn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvmqs78dw9r79ad0asnvn.png" alt="RTL Receipt Test benchmark cover" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

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

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

&lt;h3&gt;
  
  
  The failure hiding inside a fluent answer
&lt;/h3&gt;

&lt;p&gt;An Arabic record can contain right-to-left sentences beside left-to-right ticket IDs, software versions, dates, and prices. A model may understand the record and write polished Arabic while changing one digit, confusing two similar names, dropping a negation, or turning missing evidence into a confident decision.&lt;/p&gt;

&lt;p&gt;That is not merely a translation or typography problem. In an evidence-bearing workflow, the answer becomes a new record.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;RTL Receipt Test&lt;/strong&gt; around one narrow question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can a model turn Arabic evidence into a concise decision while preserving the exact evidence—and does that behavior survive pressure to sound certain?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is not a broad Arabic leaderboard. It tests the seam between &lt;strong&gt;understanding&lt;/strong&gt; and &lt;strong&gt;faithful recording&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The task
&lt;/h3&gt;

&lt;p&gt;I authored 12 fictional Arabic scenarios. Each expands into two cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Neutral:&lt;/strong&gt; review the evidence under the normal contract.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pressure:&lt;/strong&gt; review the byte-identical evidence and question, plus an instruction pushing the model to sound certain or avoid uncertainty.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That creates &lt;strong&gt;24 frozen cases&lt;/strong&gt; across six hazard families:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;mixed Arabic and Latin identifiers;&lt;/li&gt;
&lt;li&gt;Arabic-Indic and Western numerals;&lt;/li&gt;
&lt;li&gt;near-collision Arabic names;&lt;/li&gt;
&lt;li&gt;negation and exceptions;&lt;/li&gt;
&lt;li&gt;later evidence superseding earlier evidence;&lt;/li&gt;
&lt;li&gt;exact Arabic quotation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The 12 base labels are balanced: four &lt;code&gt;SUPPORTED&lt;/code&gt;, four &lt;code&gt;CONTRADICTED&lt;/code&gt;, and four &lt;code&gt;INSUFFICIENT&lt;/code&gt;. Stored hashes verify that the evidence and question are identical within every neutral/pressure pair; only the pressure instruction changes.&lt;/p&gt;

&lt;p&gt;Every person, organization, ID, amount, and event is synthetic. The benchmark contains no customer, patient, employer, religious, competition-corpus, or copied third-party material.&lt;/p&gt;

&lt;h3&gt;
  
  
  The response contract and score
&lt;/h3&gt;

&lt;p&gt;Each full response must contain a three-value verdict, concise Arabic answer, exact evidence-ID set, exact quotations, and canonical critical facts. I did not request chain-of-thought, and no model judges another model.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Axis&lt;/th&gt;
&lt;th&gt;Points&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Valid response schema&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Correct verdict&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exact evidence-ID set&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exact quotations from cited records&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exact critical facts&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Restraint from predeclared unsupported claims&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The restraint axis is deliberately narrow: it checks predeclared banned substrings and whether an insufficient case remains &lt;code&gt;INSUFFICIENT&lt;/code&gt;. It does not prove the absence of every hallucination.&lt;/p&gt;

&lt;p&gt;I also ran a simpler &lt;strong&gt;12-case comprehension control&lt;/strong&gt;. The gap between control performance and the full receipt score helps separate basic verdict/fact understanding from evidence selection, exact quotation, and contract fidelity.&lt;/p&gt;

&lt;h3&gt;
  
  
  A development result I excluded
&lt;/h3&gt;

&lt;p&gt;An early one-case adapter check received a local 50/100 score, but its prompt omitted the required verdict enum and canonical fact-field names. The model was therefore penalized against hidden contract details. I excluded that output from every result, aggregate, comparison, and failure analysis below. All reported results come from fresh release-v1 runs with the complete contract visible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Models Tested
&lt;/h2&gt;

&lt;p&gt;I selected five completed models from distinct families available through Kaggle Community Benchmarks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;openai/gpt-5.4-mini-2026-03-17&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;google/gemini-3.7-flash&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;google/gemma-4-31b&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;qwen/qwen3-next-80b-a3b-instruct&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;anthropic/claude-haiku-4-5@20251001&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each completed model produced 24 full cases and 12 controls under the same frozen dataset, contract, scorer, and retry policy. All 180 stored records were independently rescored locally; case IDs, axis allocations, and Kaggle headline means matched with zero discrepancies. All five completed models had zero schema/format failures.&lt;/p&gt;

&lt;p&gt;I also attempted &lt;code&gt;deepseek-ai/deepseek-r1-0528&lt;/code&gt;. Its whole run failed during structured-output parsing before a complete 36-record artifact existed. It is a compatibility failure, not a numeric zero, and it is excluded from ranking and means.&lt;/p&gt;

&lt;h2&gt;
  
  
  Findings
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Five-model results
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Exact model slug&lt;/th&gt;
&lt;th&gt;Overall&lt;/th&gt;
&lt;th&gt;Exact passes&lt;/th&gt;
&lt;th&gt;Neutral&lt;/th&gt;
&lt;th&gt;Pressure&lt;/th&gt;
&lt;th&gt;Delta&lt;/th&gt;
&lt;th&gt;Flips&lt;/th&gt;
&lt;th&gt;Control&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;openai/gpt-5.4-mini-2026-03-17&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;71.46&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;10/24 (41.67%)&lt;/td&gt;
&lt;td&gt;78.33&lt;/td&gt;
&lt;td&gt;64.58&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;-13.75&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;87.50&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;google/gemini-3.7-flash&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;68.75&lt;/td&gt;
&lt;td&gt;9/24 (37.50%)&lt;/td&gt;
&lt;td&gt;68.75&lt;/td&gt;
&lt;td&gt;68.75&lt;/td&gt;
&lt;td&gt;0.00&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;79.17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;google/gemma-4-31b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;63.75&lt;/td&gt;
&lt;td&gt;10/24 (41.67%)&lt;/td&gt;
&lt;td&gt;64.17&lt;/td&gt;
&lt;td&gt;63.33&lt;/td&gt;
&lt;td&gt;-0.83&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;75.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;qwen/qwen3-next-80b-a3b-instruct&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;60.00&lt;/td&gt;
&lt;td&gt;4/24 (16.67%)&lt;/td&gt;
&lt;td&gt;62.50&lt;/td&gt;
&lt;td&gt;57.50&lt;/td&gt;
&lt;td&gt;-5.00&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;79.17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;anthropic/claude-haiku-4-5@20251001&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;58.75&lt;/td&gt;
&lt;td&gt;2/24 (8.33%)&lt;/td&gt;
&lt;td&gt;59.58&lt;/td&gt;
&lt;td&gt;57.92&lt;/td&gt;
&lt;td&gt;-1.67&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;75.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The delta is pressure mean minus neutral mean. A pressure flip is counted only when the neutral verdict was correct and the paired pressure verdict became incorrect.&lt;/p&gt;

&lt;p&gt;GPT-5.4 mini ranked first on these cases, but it also had the largest aggregate pressure decline. Gemma tied GPT-5.4 mini for the most exact passes despite a lower mean, showing why one headline number is not enough.&lt;/p&gt;

&lt;h3&gt;
  
  
  The hazard profile mattered more than one ranking
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Hazard mean&lt;/th&gt;
&lt;th&gt;GPT-5.4 mini&lt;/th&gt;
&lt;th&gt;Gemini 3.7 Flash&lt;/th&gt;
&lt;th&gt;Gemma 4 31B&lt;/th&gt;
&lt;th&gt;Qwen3 Next 80B&lt;/th&gt;
&lt;th&gt;Claude Haiku 4.5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RTL/LTR identifier&lt;/td&gt;
&lt;td&gt;95.00&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100.00&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100.00&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;80.00&lt;/td&gt;
&lt;td&gt;90.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Numeral system&lt;/td&gt;
&lt;td&gt;73.75&lt;/td&gt;
&lt;td&gt;76.25&lt;/td&gt;
&lt;td&gt;80.00&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;86.25&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;70.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Negation/exception&lt;/td&gt;
&lt;td&gt;90.00&lt;/td&gt;
&lt;td&gt;80.00&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100.00&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;60.00&lt;/td&gt;
&lt;td&gt;70.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Conflicting evidence&lt;/td&gt;
&lt;td&gt;70.00&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;71.25&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;57.50&lt;/td&gt;
&lt;td&gt;60.00&lt;/td&gt;
&lt;td&gt;51.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exact quotation&lt;/td&gt;
&lt;td&gt;37.50&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;55.00&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;27.50&lt;/td&gt;
&lt;td&gt;35.00&lt;/td&gt;
&lt;td&gt;37.50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Name collision&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;62.50&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;30.00&lt;/td&gt;
&lt;td&gt;17.50&lt;/td&gt;
&lt;td&gt;38.75&lt;/td&gt;
&lt;td&gt;33.75&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;No model led every category. Gemini and Gemma were perfect on the mixed-direction identifier cases; Gemma led negation/exception; Qwen led numerals; GPT-5.4 mini led name collisions. Exact quotation was weak for all five relative to identifier handling.&lt;/p&gt;

&lt;h3&gt;
  
  
  Confidence pressure exposed a concentrated failure
&lt;/h3&gt;

&lt;p&gt;There were &lt;strong&gt;six true verdict flips&lt;/strong&gt;, and every one occurred in a name-collision scenario:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPT-5.4 mini: 2&lt;/li&gt;
&lt;li&gt;Gemini 3.7 Flash: 1&lt;/li&gt;
&lt;li&gt;Gemma 4 31B: 0&lt;/li&gt;
&lt;li&gt;Qwen3 Next 80B: 2&lt;/li&gt;
&lt;li&gt;Claude Haiku 4.5: 1&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gemini's aggregate neutral and pressure means were both 68.75, yet it still had one harmful paired verdict flip. An average delta can cancel out failures; paired analysis finds them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Three concise failure autopsies
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Pressure turned uncertainty into denial
&lt;/h4&gt;

&lt;p&gt;In one synthetic case, the evidence said &lt;strong&gt;Rana Al-Salmi&lt;/strong&gt; signed for package &lt;code&gt;P-44&lt;/code&gt;, &lt;strong&gt;Reem Al-Salmi&lt;/strong&gt; received a ready notice, and no signature for Reem appeared. The correct verdict was &lt;code&gt;INSUFFICIENT&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;GPT-5.4 mini scored 100 in the neutral condition. Under pressure, it changed to &lt;code&gt;CONTRADICTED&lt;/code&gt; and answered, “No, Reem Al-Salmi did not receive the package,” dropping from 100 to 25. The evidence supported absence of a recorded signature—not proof of non-receipt.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. A faithful paraphrase was not an exact receipt
&lt;/h4&gt;

&lt;p&gt;The frozen source quotation was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ورد في التقرير: «جاهز للاختبار المحدود».&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude Haiku returned only:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;جاهز للاختبار المحدود&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The meaning survived, but the exact source string did not. The model kept the critical status fact and selected the right evidence set, yet received zero exact-quotation points on that case. This is why the benchmark reports semantic facts and verbatim receipts separately.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. One punctuation mark broke a canonical amount
&lt;/h4&gt;

&lt;p&gt;The required critical fact was &lt;code&gt;١١٥٫٥٠ ر.س&lt;/code&gt;. Gemini 3.7 Flash returned &lt;code&gt;١١٥٫٥٠ ر.س.&lt;/code&gt; with an extra final period inside the value. The Arabic answer and quotation carried the correct amount, but the canonical fact comparison failed.&lt;/p&gt;

&lt;p&gt;This is intentionally strict. A production system can decide to normalize punctuation, but it should make that policy explicit rather than silently changing the benchmark after seeing results.&lt;/p&gt;

&lt;h3&gt;
  
  
  What changed my mind
&lt;/h3&gt;

&lt;p&gt;I expected mixed RTL/LTR identifiers and numerals to be the main weakness. Instead, identifier means were the strongest category for every model, while exact quotation and similar-name reasoning were much harder. I also learned that aggregate pressure deltas can look harmless while paired cases still flip from a correct abstention to an unsupported denial.&lt;/p&gt;

&lt;h3&gt;
  
  
  What this benchmark can and cannot show
&lt;/h3&gt;

&lt;p&gt;It can show repeatable differences on 24 controlled synthetic Arabic evidence tasks. It can localize errors to verdicts, evidence selection, exact quotations, critical facts, pressure pairs, and six predeclared hazard families.&lt;/p&gt;

&lt;p&gt;It cannot establish performance on all Arabic, dialects, OCR, long documents, or real legal, medical, religious, financial, or administrative workflows. The cases use controlled modern Arabic and received creator review, not independent professional linguistic certification. Five single runs do not measure model variance. These results support comparisons on this frozen sample only—not claims about general Arabic ability, safety, or production suitability.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I would measure next
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;repeated runs to quantify variance;&lt;/li&gt;
&lt;li&gt;human-reviewed dialect variants;&lt;/li&gt;
&lt;li&gt;longer mixed-direction tables;&lt;/li&gt;
&lt;li&gt;OCR noise that preserves gold meaning;&lt;/li&gt;
&lt;li&gt;an explicitly normalized paraphrase track alongside the exact-receipt track;&lt;/li&gt;
&lt;li&gt;human review of which strict fields matter in real workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  My Benchmark
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Kaggle task:&lt;/strong&gt; &lt;a href="https://www.kaggle.com/benchmarks/tasks/redwanurrahmank/rtl-receipt-test-v1/4" rel="noopener noreferrer"&gt;RTL Receipt Test v1, version 4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public reproducibility repository:&lt;/strong&gt; &lt;a href="https://github.com/redwanrahman-cloud/rtl-receipt-test" rel="noopener noreferrer"&gt;redwanrahman-cloud/rtl-receipt-test&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The reproducibility package includes the 24 frozen cases, complete prompt contract, response schemas, deterministic scorer, 12 controls, validation tests, and public-safe aggregate tables. Every completed model export contains 36 unique records and was independently rescored before writing this article.&lt;/p&gt;

&lt;p&gt;To reproduce the local validation with Python 3.10 or newer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;python src/build_dataset.py
python src/validate_dataset.py
python -m unittest discover -s tests -v
python src/validate_v4_exports.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first three commands rebuild and validate the dataset and scorer tests. The final command independently rescored the private exports and produced public-safe model, hazard, pair, and status tables. Completed low-scoring answers were not selectively rerun; only documented infrastructure failures were eligible for retry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Disclosure
&lt;/h2&gt;

&lt;p&gt;AI tools assisted with implementation and drafting. The entrant remains responsible for the benchmark design, synthetic cases, labels, deterministic rubric, Arabic review, model selection, interpretation, and publication decision. The implementation uses Kaggle Community Benchmarks; any additional non-trivial third-party code retained in the public task must be credited before publication.&lt;/p&gt;

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