Saleor Store
우리 컬렉션을 쇼핑하세요
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기WB Hackathon 2026, Small AI solution Dure.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Challenge 04, Agriculture (Annex B, Noor). World Bank Small AI for Development Hackathon, 3–4 October 2026.
Builder: Tae Yoon Moon (solo), University of Seoul. Licence: code MIT; synthetic data CC BY 4.0; illustrations and site text all rights reserved.
Live: https://dure-ai.pages.dev (phones and tablets get the mobile edition, https://dure-ai.pages.dev/m.html) · demo: https://dure-ai.pages.dev/demo.html · photo grader: https://dure-ai.pages.dev/demo.html?photo=1 · Registry: https://dure-ai.pages.dev/sheet.htmlREADME 전문 보기 ↗Winner, Agriculture track · World Bank Small AI for Development Hackathon 2026 (Challenge 04, Annex B: Noor)
Dure does a farmers' cooperative's jobs by plain text message. Smallholder coffee farmers in Letefoho, Ermera, Timor-Leste, get a fair morning price, sell together, have buyers compete for their coffee, get paid, and build a record that earns trust. It all happens in Tetum or English, on any phone that can send SMS. There is no app and no data plan.
| Live site | https://dure-ai.pages.dev (phones and tablets get the mobile edition, m.html) |
| Interactive demo | https://dure-ai.pages.dev/demo.html: a full market week in your browser, with nothing to install and no server |
| Photo grader | https://dure-ai.pages.dev/demo.html?photo=1 |
| Farmer Registry | https://dure-ai.pages.dev/sheet.html: eight weeks of synthetic data from Letefoho, plus a brief for extension officers |
| Videos | Promotion · Meet the founder · Product demo · Technical walkthrough |
| Builder | Tae Yoon Moon (solo), University of Seoul · [email protected] |
Status. This is a working prototype. All farmers, buyers, volumes and prices in the demo and the Registry are synthetic, and there has been no field test yet. The SMS gateway and mobile money are simulated. The AI models and the numbers reported below are real.
Noor's steps follow the live site's How it works section. The prices are the site's illustrative week.
bondia! kafe 40kilu diak los.. fan 2.84 bele?. Dure repeats back what it understood (coffee, 40 kg, grade A, ask $2.84/kg), and nothing is recorded until she confirms. She then sends one photo and gets a first-look grade (A, 93%).Before Dure, the roadside trader in the story offers Noor $2.25/kg. The interactive demo simulates a fresh market week on every run (?seed=N replays a week).
Reputation lets Dure run two markets at once. The site's Technical walkthrough 4–5 covers this.
In the demo, reputation and the fixed pool run on pre-accumulated synthetic records.
| Part | AI or software | Where it runs |
|---|---|---|
| Reading farmers' SMS (kilos, grade, price, yes/no, questions) in Tetum and English | AI, hybrid. A rules engine reads every text. A Qwen2.5-0.5B model fine-tuned with LoRA reads the texts routing sends it: English, other languages, and anything the rules engine could not place. | Rules engine on the phone or hub. The fine-tuned reader runs as an 8-bit GGUF on the hub laptop (llama.cpp). The web demo runs the rules engine only for offers (see below). |
| Off-script questions ("is today a good day to sell?", "why is the price low?") | AI. Stock Qwen2.5-0.5B-Instruct reads the intent. The reply is composed from live market data, so every number is real. | On the visitor's device (transformers.js, WebGPU or WebAssembly), ~3 s per reply on a 2-core CPU |
| Preliminary grade from one phone photo | AI (computer vision). CLIP ViT-B/32 (int8) plus our own 5-class head (A/B/C, roasted, not coffee) | On the visitor's device (onnxruntime-web), ~2 s per photo |
| Daily brief for extension services | On the site: code computes the findings and fills a hand-written phrase bank; a checker verifies every sentence. A small model (Qwen2.5-3B) writing the sentences instead was tested offline (ai/brief/) | Site version in the browser; the model version on a laptop, not on the site |
| Morning price, suggestion, opening price, reputation, two pools | Algorithms run on pre-accumulated synthetic records in the demo | In the browser |
| Pooling, auction, floor, escrow, payout, Registry | Ordinary software, which must be predictable and auditable | In the browser (simulated) |
On phones and tablets, the 500 MB Qwen model does not fit in a browser tab's memory. There, the Small AI is Dure's own question-topic model (ai/intent):
site/src/assets/intent.json), 0.2 MB gzipped, under 1 ms per question.ai/intent/test*.json).On computers, the topic model also cross-checks Qwen's pick. Either way, the reply answers the exact question (sell or keep, why the price moved, outlook, buyers, weather and road, quality, pool) from the live simulated market. To retrain it, run cd ai/intent && python3 gen.py && python3 train.py.
Both on-device models download in the background while the visitor reads the story page (Cache Storage), so the demo starts instantly. The site is served with cross-origin isolation headers, which let WebAssembly use several threads.
Dure has two small models, and they have different jobs.
ai/coffee/lora_v2/, 35 MB).
ai/coffee/lora/), then one short extra pass (39 minutes on 2 CPU cores) on 847 targeted synthetic SMS plus 450 replayed v1 examples for v2 (gen2.py, train2.py).ai/coffee/infer_gguf.py). v2 was measured at full precision (about 3 s per text); its 8-bit file has not been built yet.What runs on the live site, and what the benchmark measures. The web demo reads offers with the rules engine only, and uses the second model for questions. The fine-tuned reader and the routing measured in the Tetum Benchmark Index run on the hub laptop and in ai/coffee/, not on the site. (The demo has a developer option, ?api=URL, that sends offers to a hosted reader; it predates routing v2, and the site does not link to a hosted reader.) We kept the fine-tuned reader out of the web demo on purpose:
To see the fine-tuned reader at work, run ai/coffee/infer_gguf.py on the merged GGUF. The benchmark predictions it produced are in ai/coffee/pred_gguf_test3.json, and ai/coffee/score.py scores them.
Tetum is one of the languages large language models overlook most. A text counts as correct only if every field is right (crop, quantity, grade, price and intent).
Dure reads every text with a rules engine and, when routing says so, a small fine-tuned model. Routing sends each text to the reader that handles it best: the rules engine's sure answers and the Tetum messages it understood stay with it; English, messages in other languages, and anything it could not place go to the model (ai/coffee/hybrid2.py).
| Reader (current versions) | Test 3 (60) | Test 6 (64, held out) |
|---|---|---|
| Dure: rules engine v2.1 + small model v2, routing v2 | 90% (54/60) | 86% (55/64) |
| Claude Haiku 4.5 (large model over the internet) | 87% (52/60) | not run |
| Small model v2 alone (Qwen2.5-0.5B + LoRA) | 85% (51/60) | 83% (53/64) |
| Rules engine v2.1 alone | 78% (47/60) | 78% (50/64) |
| Qwen2.5-0.5B without fine-tuning (examples only) | 7% (4/60) | — |
ai/coffee/RESULTS.md.Note: the training scripts for photo grader v2 and for a later reader experiment (v2) were lost when our build environment was reset on 4 Oct. What survived is the deployed grader (site/src/assets/grader_v2.js, with the head weights inlined), the benchmarked reader (the LoRA adapter in ai/coffee/lora/) and the measured numbers above.
A farmer Registry is valuable but labour-intensive and expensive to keep up. In Dure, every deal leaves a row, so the Registry builds itself.
Each morning, code computes findings from those rows and writes them up from a hand-written phrase bank, and a checker drops any sentence whose numbers it cannot trace back to the rows. Letting a small model (Qwen2.5-3B, on a laptop) write the sentences was tested offline: with code doing the analysis and the same checker in front, it kept 9 of 10 sentences on the July data and 12 of 17 on a held-out register. That model version is not shown on the site. Extension officers visit about twice a year, and the brief helps them use those visits where they matter. Dure stays out of how farmers farm. Try the sample Registry; the brief experiments are in ai/brief/.
More detail: RESPONSIBLE_AI.md · data sources: DATA_CARD.md.
cd site
python build.py # builds src/ into dist/
python tools/mobile/build_phone.py # regenerates the phone edition (run before build.py after story changes)
cd dist && python -m http.server 8000
Then open these pages, over http rather than file://:
| Page | What it is | Options |
|---|---|---|
index.html | The story | Phones and tablets are sent to m.html; add ?full=1 to stay. |
m.html | The mobile edition | |
demo.html | The demo | ?photo=1 opens the photo step, ?llm=0 turns the small-AI chat off, ?seed=N replays a week. |
sheet.html | The Registry |
For multithreaded WebAssembly, serve with the headers in site/src/_headers.
Deployment: every push to main that touches site/** is built and published to Cloudflare Pages by .github/workflows/deploy-cloudflare.yml.
site/build.py builds src/ into dist/ (dist/ is not committed; the deploy workflow builds it)
site/src/ site.html (story, PC), m_phone.html (phone and tablet edition, generated), demo_map.html (demo),
sheet.html (Registry + brief), assets/ (grader_v2.js, sample photos, Letefoho satellite base map,
training-photo thumbnails, World Bank logo used with permission), _headers, shared.css, figs.js,
geo.json, m_*.json (phone figures), m_classic.html (earlier phone edition, source only: not published; build_phone.py builds on its tools)
site/tools/mobile/ phone edition generator: build_phone.py (+ phone.css, phone.js) on top of build_mobile.py and its
figure/scene extractors
site/tools/ gen_sheet_data.py, check_sheet.js (synthetic Registry data)
docs/ redirects from the old GitHub Pages address to dure-ai.pages.dev
ai/coffee/ SMS reader: rules.js (v2.1), synthetic data generators (gen.py, gen2.py), LoRA training (lora/, lora_v2/),
routing (hybrid2.py), test sets 1–6, evaluation, GGUF inference
ai/intent/ on-device question-topic model for phones and tablets (generator, numpy trainer, test sets)
ai/photo/ photo grader v1 (MobileNetV3) scripts and results
ai/brief/ brief findings + model writer + checker experiments
| What | Licence |
|---|---|
| Code | MIT (LICENSE) |
| Synthetic data | CC BY 4.0 |
| Illustrations and story text | © 2026 Tae Yoon Moon, all rights reserved |
Third-party components: