<?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: State Of the Art TECHnology</title>
    <description>The latest articles on DEV Community by State Of the Art TECHnology (@soatech).</description>
    <link>https://dev.to/soatech</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%2F4038190%2Fb427f995-c591-45d6-8c69-920a89a470ed.png</url>
      <title>DEV Community: State Of the Art TECHnology</title>
      <link>https://dev.to/soatech</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/soatech"/>
    <language>en</language>
    <item>
      <title>We let Qwen rewrite our scoring algorithm — but only through a clinical-style gate</title>
      <dc:creator>State Of the Art TECHnology</dc:creator>
      <pubDate>Mon, 20 Jul 2026 12:49:09 +0000</pubDate>
      <link>https://dev.to/soatech/we-let-qwen-rewrite-our-scoring-algorithm-but-only-through-a-clinical-style-gate-1koc</link>
      <guid>https://dev.to/soatech/we-let-qwen-rewrite-our-scoring-algorithm-but-only-through-a-clinical-style-gate-1koc</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%2F43grc87hiif9j9u7xnyv.jpeg" 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%2F43grc87hiif9j9u7xnyv.jpeg" alt=" " width="800" height="597"&gt;&lt;/a&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — We built a focus-measurement system whose scoring algorithm improves itself. Qwen3.7-Max reads the mistake log and proposes which parameters to change. Our server then refuses to believe a single number it says: it re-runs the simulation itself, and any claim off by more than 0.5 percentage points is thrown out. What survives goes through a train/holdout gate. What survives &lt;em&gt;that&lt;/em&gt; waits for a human to click adopt. In our first Qwen-driven generation, holdout blank-stare sensitivity went from &lt;strong&gt;0.273 to 1.000&lt;/strong&gt; with zero regressions — and Qwen deliberately avoided a value a previous generation had already failed with.&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem nobody wants to solve with a camera
&lt;/h2&gt;

&lt;p&gt;Every parent and teacher wants the same answer: &lt;em&gt;is this student actually focusing, or just sitting in front of a book?&lt;/em&gt;&lt;br&gt;
A camera can tell you. That's the easy part. The hard part is that nobody — correctly — wants a camera streaming their child's face to somebody's cloud.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftxu6hfo5z844vot7k901.jpeg" 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%2Ftxu6hfo5z844vot7k901.jpeg" alt=" " width="768" height="1376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So we drew a hard line in the architecture. Our device (a small NIR camera cube on the desk) processes video &lt;strong&gt;on-device and never stores or transmits it&lt;/strong&gt;. What leaves the device is about 12,000–24,000 numeric records per session at 10 Hz: gaze coordinates, an on-page probability, pupil z-scores, blink events, PERCLOS. The cloud sees numbers. It never sees a face.&lt;/p&gt;

&lt;p&gt;From those numbers we compute a &lt;strong&gt;Sustained Focus Index (SFI)&lt;/strong&gt;, 0–100. The scoring function is deliberately a pure function: &lt;code&gt;score(records, param_set) → result&lt;/code&gt;. Same input, same parameters, same output. Always.&lt;/p&gt;

&lt;p&gt;That purity is what makes the rest of this post possible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbz2zdba4gevkgoyh8xyv.jpg" 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%2Fbz2zdba4gevkgoyh8xyv.jpg" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Who's building this, and why
&lt;/h2&gt;

&lt;p&gt;Concentration Cube is built by S-O-A TECH. Its founder chairs the Medical Committee of the Korean Olympic Committee and is an internationally recognized orthopedic surgeon — the physician who has treated and operated on most of Korea's elite athletes. Working at that level teaches you something quickly: at the top, every body is extraordinary. What separates a medal from fourth place isn't hours of training — it's the quality of &lt;strong&gt;focus&lt;/strong&gt;. After watching that one scarce resource decide careers, year after year, the question becomes unavoidable: if focus is this decisive, why does nobody measure it properly?&lt;/p&gt;

&lt;p&gt;A physician's reflex is to answer questions with measurements, not impressions. That reflex shaped everything downstream: measurement without surveillance (no video leaves the device), validation through an IRB process at a general hospital rather than around it, and a refusal to let any algorithm change go live without evidence. We didn't set out to build "an AI product". We set out to build a medical-grade answer to the question elite sport asks every day — and the only way to keep that answer honest at scale turned out to be a self-evolving engine behind clinical gates.&lt;/p&gt;
&lt;h2&gt;
  
  
  The actual hard problem: who tunes the parameters?
&lt;/h2&gt;

&lt;p&gt;A scoring function like this lives or dies on its thresholds. When does low gaze dispersion mean deep focus versus a blank stare? How many saccades per second separates reading from zoning out?&lt;/p&gt;

&lt;p&gt;We tuned these by hand. It was slow, and worse, it was &lt;strong&gt;unfalsifiable&lt;/strong&gt; — we'd nudge a threshold, eyeball some sessions, and convince ourselves it was better.&lt;/p&gt;

&lt;p&gt;The obvious 2026 answer is "let an LLM do it." We tried that, and immediately hit the thing everyone hits.&lt;/p&gt;
&lt;h2&gt;
  
  
  LLMs will happily lie to you about their own test results
&lt;/h2&gt;

&lt;p&gt;Our first version ran a local coding-agent CLI in a sandboxed workspace. It could edit parameters, run our simulator, and report results.&lt;/p&gt;

&lt;p&gt;It reported &lt;em&gt;great&lt;/em&gt; results. Some of them were real. Some of them were the model telling us what we wanted to hear — numbers it had reasoned toward rather than measured. If you've given an agent a shell and then read the transcript carefully, you know exactly the feeling.&lt;/p&gt;

&lt;p&gt;You cannot fix this with a better prompt. "Please don't hallucinate your test results" is not an engineering control.&lt;/p&gt;

&lt;p&gt;So we stopped trying to make the model trustworthy, and made its trustworthiness &lt;strong&gt;irrelevant&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  The hallucination firewall
&lt;/h2&gt;

&lt;p&gt;Here is the whole idea, and it's almost embarrassingly simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The LLM is only allowed to decide &lt;em&gt;which&lt;/em&gt; parameters to change. It is never allowed to tell us what happened as a result.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Concretely, in our Qwen adapter:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;We hand Qwen the evidence — the mistake log (bins where the current parameters got the ground-truth label wrong), feature statistics, the current parameter set, and the history of previous generations.&lt;/li&gt;
&lt;li&gt;Qwen returns a small JSON: a list of &lt;code&gt;changes&lt;/code&gt;, each with a key, a target value, and its reasoning. That's it. No file access, no shell, no tools.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Our server&lt;/strong&gt; applies those changes — filtered against an allowlist, clamped to valid bounds, with the key set preserved so nothing can be silently dropped.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Our server&lt;/strong&gt; runs the simulation and computes the before/after numbers, using the same scoring core that production uses.&lt;/li&gt;
&lt;li&gt;The validator compares what the agent claimed against what the server measured. Deviation over &lt;strong&gt;±0.5 percentage points → the proposal is rejected outright.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Because the server computes the numbers with the same code and the same data, step 5 is not really "catching lies" anymore — it's a structural guarantee that the numbers in the record are the ones that actually happened.&lt;/p&gt;
&lt;h2&gt;
  
  
  Then: does it generalize, or did it just memorize?
&lt;/h2&gt;

&lt;p&gt;Passing self-test isn't enough. A parameter change can fit the training sessions beautifully and fall apart on anything new.&lt;/p&gt;

&lt;p&gt;So every candidate faces a &lt;strong&gt;train/holdout split&lt;/strong&gt;. The mistake log the agent sees comes only from train sessions. The gate is measured on holdout sessions the proposal has never influenced.&lt;/p&gt;

&lt;p&gt;The gate rule is deliberately conservative:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Every state's sensitivity and specificity on holdout must be within −2 percentage points of baseline, &lt;strong&gt;and&lt;/strong&gt; at least one metric must actually improve.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No cherry-picking a win while quietly breaking something else.&lt;/p&gt;
&lt;h2&gt;
  
  
  And then a human clicks the button
&lt;/h2&gt;

&lt;p&gt;Even after all of that, the system stops. A passing candidate sits in &lt;code&gt;PASSED&lt;/code&gt;. Adoption happens when a person opens the report and clicks &lt;strong&gt;Adopt&lt;/strong&gt;. The state machine has no path from &lt;code&gt;PASSED&lt;/code&gt; to &lt;code&gt;ADOPTED&lt;/code&gt; that doesn't go through a human.&lt;/p&gt;

&lt;p&gt;This is not us being timid about AI. It's that this number gets shown to a parent about their child. Automation earns the right to &lt;em&gt;propose&lt;/em&gt;. It doesn't get to &lt;em&gt;decide&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwp68wn73ub1we74u0qba.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%2Fwp68wn73ub1we74u0qba.png" alt=" " width="799" height="273"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Moving the brain to Qwen Cloud
&lt;/h2&gt;

&lt;p&gt;Our CLI-based agent had a practical problem beyond hallucination: it authenticated through a browser OAuth session tied to the host machine. That meant the evolution engine could only ever run on a developer's laptop. It could not be deployed.&lt;/p&gt;

&lt;p&gt;Switching to &lt;strong&gt;Qwen via Alibaba Cloud Model Studio's OpenAI-compatible endpoint&lt;/strong&gt; removed that constraint entirely. An API key is an environment variable. An environment variable goes in a container. Suddenly the engine that had been stuck on one laptop could run on a server.&lt;/p&gt;

&lt;p&gt;We ended up using Qwen in two distinct production roles:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Proposer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qwen3.7-max&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Parameter reasoning over statistical evidence — flagship reasoning matters here&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Coach&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;qwen3.7-plus&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Generates the student/parent report in Korean, English, and Chinese from a numeric summary containing no personal data&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;(We also keep &lt;code&gt;qwen3.6-flash&lt;/code&gt; configured for smoke tests and debugging iterations.)&lt;/p&gt;

&lt;p&gt;Splitting roles across models is a real design consideration, not an afterthought: Model Studio grants free quota &lt;strong&gt;per model&lt;/strong&gt;, so separating roles across models separates their quota pools too. Role separation and cost control turned out to be the same decision.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkcfczelcs58f8da4mcc0.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%2Fkcfczelcs58f8da4mcc0.png" alt=" " width="800" height="314"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What actually happened on the first Qwen generation
&lt;/h2&gt;

&lt;p&gt;We seeded 18 synthetic LAB-5 sessions engineered so that blank staring would be misclassified as focus under the current parameters, then ran one generation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Total elapsed: 2 minutes 10 seconds.&lt;/strong&gt; (Our earlier CLI-agent rehearsal took 7.)&lt;/p&gt;

&lt;p&gt;Qwen proposed two changes:&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="nl"&gt;"key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"blank_stare.stare_dispersion_th"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"from"&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.035&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"to"&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.055&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="nl"&gt;"key"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"blank_stare.max_saccade_count_1s"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"from"&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.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="nl"&gt;"to"&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.6&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;Holdout results — five sessions the proposal never saw:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;th&gt;Sensitivity&lt;/th&gt;
&lt;th&gt;Specificity&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;blank_stare&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.273 → 1.000&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1.000 → 1.000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;focus&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1.000 → 1.000&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.619 → 1.000&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;off_task&lt;/td&gt;
&lt;td&gt;1.000 → 1.000&lt;/td&gt;
&lt;td&gt;1.000 → 1.000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Zero regressions. Gate passed.&lt;/p&gt;

&lt;p&gt;But the part that made us stop and reread the log was the reasoning attached to the first change:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"…a value distinct from the previously rejected 0.06 / 0.062, to distribute holdout overfitting risk."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Qwen had read the generation history, found that an earlier agent had proposed 0.06 and had it rejected, and picked a different point in the separation gap &lt;strong&gt;specifically to avoid repeating that failure&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Nobody prompted it to do that. It was in the evidence, and it used it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we call this a memory agent
&lt;/h2&gt;

&lt;p&gt;There's a version of "agent memory" that means storing chat logs and retrieving them later. That's fine, but it isn't what's happening here.&lt;/p&gt;

&lt;p&gt;Our agent's memory is a &lt;strong&gt;versioned lineage of scoring parameters, each attached to the evidence that justified it&lt;/strong&gt;: the mistake log that motivated it, the server-computed before/after numbers, the gate verdict, whether a human adopted it, and whether it was later rolled back.&lt;/p&gt;

&lt;p&gt;That's memory you can audit. When the SFI shown to a parent changes, you can walk backward through generations and see exactly which change caused it, what evidence motivated it, what it measured on data it hadn't seen, and who approved it.&lt;/p&gt;

&lt;p&gt;Experience accumulating as evidence, not as transcript.&lt;/p&gt;

&lt;h2&gt;
  
  
  How this compares to everything else out there
&lt;/h2&gt;

&lt;p&gt;The market is full of "focus apps" — webcam attention trackers, study timers with cameras, classroom monitoring tools. Almost all of them share two properties we consider disqualifying. First, they ship frames or video off the device — exactly what parents and regulators don't want pointed at children. Second, their scoring logic is frozen: fixed heuristics or a black-box model that interprets a 9-year-old and a 40-year-old with the same thresholds, forever.&lt;/p&gt;

&lt;p&gt;Concentration Cube inverts both. Raw video never leaves the desk, and the interpretation itself evolves — against instructor-labeled clinical ground truth, through a holdout gate, with an auditable lineage and a human owning every adoption. We're not aware of another consumer focus product that combines on-device privacy, hospital-protocol ground truth, and a gated self-evolving interpreter. That combination is the moat — and it deepens daily, because every day of data makes the next generation better. As we like to put it: &lt;strong&gt;this device is at its least capable the day you buy it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1j14flmo3nuxvycpfbo1.jpg" 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%2F1j14flmo3nuxvycpfbo1.jpg" alt=" " width="800" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the daily evidence comes from
&lt;/h2&gt;

&lt;p&gt;One thing that surprises people: the ground truth feeding this engine is not synthetic-only and not crowd-labeled. Our team runs an &lt;strong&gt;IRB-approved validation program at a general hospital&lt;/strong&gt; — supervised, consented sessions, collected daily. Each session is an instructed experiment: an investigator tells the subject in real time — &lt;em&gt;focus&lt;/em&gt; (actually read), &lt;em&gt;blank-stare&lt;/em&gt; (keep looking at the book, stop reading), &lt;em&gt;look away&lt;/em&gt; (leave the task entirely) — and logs each command at the moment it is spoken, so the 10 Hz eye/pupil stream is synchronized with ground truth to the second. The labeling method is literally called &lt;code&gt;realtime_instructed&lt;/code&gt; in our API. What evolves against those labels is the &lt;strong&gt;interpretation method itself&lt;/strong&gt; — how gaze dispersion, saccades, and pupil dynamics map onto mental states.&lt;/p&gt;

&lt;p&gt;We chose to confront the ethics and safety questions of measuring children's attention through an institutional review process rather than around it. The architectural consequence is that the evolution server has a steady diet: every day of clinical ground truth is fresh evidence, and fresh evidence is a new generation candidate. The product consumers meet is a small cube on a desk. The thing that makes it smarter every day is this loop.&lt;/p&gt;

&lt;p&gt;It also makes the two-server split make sense. The operations server &lt;em&gt;is&lt;/em&gt; the product. The evolution server exists only to grow it — it owns the mistake logs, the lineage, the proposer, and the gates. Growth is a separate system from the thing that grows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The whole stack is Alibaba-native
&lt;/h2&gt;

&lt;p&gt;One thing worth stating plainly: this is an Alibaba-ecosystem project end to end, by choice. The cube itself is sourced for manufacturing through &lt;strong&gt;Accio&lt;/strong&gt;, Alibaba's AI sourcing platform, with PCBA suppliers from the Alibaba network. The backend — both the operations server and the evolution server — runs on &lt;strong&gt;Alibaba Cloud ECS&lt;/strong&gt; in Singapore. And the intelligence is &lt;strong&gt;Qwen on Model Studio&lt;/strong&gt;, over the OpenAI-compatible endpoint: &lt;code&gt;qwen3.7-max&lt;/code&gt; as the proposer that evolves the interpretation, &lt;code&gt;qwen3.7-plus&lt;/code&gt; as the coach that writes trilingual reports, &lt;code&gt;qwen3.6-flash&lt;/code&gt; for smoke tests. Splitting roles across models also splits Model Studio's per-model free quota — role separation and cost control turned out to be the same decision.&lt;/p&gt;

&lt;p&gt;The roadmap only deepens this: age-stratified interpretation means one evolving lineage per 5-year age band — which means more generations, more evaluation, more Qwen. The heart of this product is the evolution server; the engine driving that heart is &lt;strong&gt;Qwen Cloud&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F97c3el4bdtnu4lgzftkz.jpg" 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%2F97c3el4bdtnu4lgzftkz.jpg" alt=" " width="624" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What we'd tell you to steal
&lt;/h2&gt;

&lt;p&gt;If you're building anything where an LLM modifies a system that produces numbers people rely on:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Let the model choose, not report.&lt;/strong&gt; Separate the decision (cheap to verify) from the measurement (expensive to trust). Never let the same entity do both.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Recompute, don't validate prose.&lt;/strong&gt; Don't ask "does this claim look plausible?" Re-run it. A tolerance check against your own execution is worth more than any amount of prompt engineering.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hold out data the proposal can't touch.&lt;/strong&gt; Self-reported improvement on visible data is not improvement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Put the human at the last step, not the first.&lt;/strong&gt; Review every proposal and you've built a slow human. Review only what survived mechanical verification and a generalization gate, and you've built leverage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Split roles across models.&lt;/strong&gt; Better fit per task, and on Model Studio, separate free-quota pools.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;Built for the Global AI Hackathon Series with Qwen Cloud. Everything runs on Alibaba Cloud — ECS for the stack, Model Studio (Singapore) for the Qwen models.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Code: &lt;a href="https://github.com/S-O-A-TECH/concentration-cube-cloud" rel="noopener noreferrer"&gt;github.com/S-O-A-TECH/concentration-cube-cloud&lt;/a&gt; · Demo video: &lt;a href="https://youtu.be/S3M3wOPD8zE" rel="noopener noreferrer"&gt;youtu.be/S3M3wOPD8zE&lt;/a&gt; · Live demo: &lt;a href="http://47.84.139.15:8200" rel="noopener noreferrer"&gt;http://47.84.139.15:8200&lt;/a&gt; · Track: MemoryAgent&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>qwen</category>
      <category>alibabacloud</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
