Spaces:
Runtime error
Runtime error
Field Notes link + doc factuality fixes (QC vs code truth)
Browse files- README: link the honest write-up (backs achievement:fieldnotes).
- prompts.py: docstring described the removed JSON-prefill trick; the code uses
response_format json_object grammar (since f92e318). Corrected to match llm.py.
- README: first-boot download is ~3.3 GB (1.9 GB model + 1.3 GB f16 mmproj),
not ~2.3 GB — the projector was uncounted.
- README + writeup: QuickWin keys on impact+effort, not readiness; 'short, ready'
-> 'short, high-impact' (QW = 1 + 0.6*(I/10)*exp(-E/1.5) in score.py).
- README: drop stale HTML comment claiming a nonexistent front-matter video.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- README.md +7 -4
- prompts.py +4 -3
- submission/whatfirst-small-writeup.md +1 -1
README.md
CHANGED
|
@@ -34,14 +34,17 @@ keys, runs on a laptop.
|
|
| 34 |
Built for the [Hugging Face Build Small hackathon](https://huggingface.co/build-small-hackathon)
|
| 35 |
(Backyard AI track).
|
| 36 |
|
|
|
|
|
|
|
|
|
|
| 37 |
## Demo
|
| 38 |
|
| 39 |
[](https://huggingface.co/spaces/build-small-hackathon/whatfirst-small/resolve/main/demo/out/whatfirst-small-demo-loud.mp4)
|
| 40 |
|
| 41 |
▶ **[Watch the demo video](https://huggingface.co/spaces/build-small-hackathon/whatfirst-small/resolve/main/demo/out/whatfirst-small-demo-loud.mp4)** · **[Try the live Space](https://huggingface.co/spaces/build-small-hackathon/whatfirst-small)**
|
| 42 |
|
| 43 |
-
<!--
|
| 44 |
-
|
| 45 |
|
| 46 |
|
| 47 |
## Why this exists
|
|
@@ -50,7 +53,7 @@ Deciding *what to do first* is a real, daily problem — and most "AI to-do" app
|
|
| 50 |
answer it with a black box. This one keeps the AI where it earns its keep (turning
|
| 51 |
vague human language into structured fields) and makes the prioritization itself
|
| 52 |
**legible**: two competing scores (do-it-now vs. de-risk-first), an urgency curve
|
| 53 |
-
that explodes as a deadline nears, a quick-win boost for short
|
| 54 |
deadlines treated as a hard constraint rather than a number folded into a blob.
|
| 55 |
|
| 56 |
The problem — and the prioritization approach — come from
|
|
@@ -83,7 +86,7 @@ brain-dump / photo ──▶ Qwen2.5-VL-3B (llama.cpp, localhost) ──▶
|
|
| 83 |
|
| 84 |
```bash
|
| 85 |
docker build -t whatfirst-small .
|
| 86 |
-
docker run -p 7860:7860 whatfirst-small # first boot downloads ~
|
| 87 |
```
|
| 88 |
|
| 89 |
Then open http://localhost:7860. On a CPU-only box, expect a few seconds per task
|
|
|
|
| 34 |
Built for the [Hugging Face Build Small hackathon](https://huggingface.co/build-small-hackathon)
|
| 35 |
(Backyard AI track).
|
| 36 |
|
| 37 |
+
📓 **Field notes:** [an honest write-up of what worked and what didn't](submission/whatfirst-small-writeup.md) —
|
| 38 |
+
the small-model story, including where a 3B model wobbles and how the design absorbs it.
|
| 39 |
+
|
| 40 |
## Demo
|
| 41 |
|
| 42 |
[](https://huggingface.co/spaces/build-small-hackathon/whatfirst-small/resolve/main/demo/out/whatfirst-small-demo-loud.mp4)
|
| 43 |
|
| 44 |
▶ **[Watch the demo video](https://huggingface.co/spaces/build-small-hackathon/whatfirst-small/resolve/main/demo/out/whatfirst-small-demo-loud.mp4)** · **[Try the live Space](https://huggingface.co/spaces/build-small-hackathon/whatfirst-small)**
|
| 45 |
|
| 46 |
+
<!-- Rendered as a clickable poster + links so the demo works on GitHub (which strips raw <video>)
|
| 47 |
+
and on Hugging Face alike. -->
|
| 48 |
|
| 49 |
|
| 50 |
## Why this exists
|
|
|
|
| 53 |
answer it with a black box. This one keeps the AI where it earns its keep (turning
|
| 54 |
vague human language into structured fields) and makes the prioritization itself
|
| 55 |
**legible**: two competing scores (do-it-now vs. de-risk-first), an urgency curve
|
| 56 |
+
that explodes as a deadline nears, a quick-win boost for short, high-impact tasks, and
|
| 57 |
deadlines treated as a hard constraint rather than a number folded into a blob.
|
| 58 |
|
| 59 |
The problem — and the prioritization approach — come from
|
|
|
|
| 86 |
|
| 87 |
```bash
|
| 88 |
docker build -t whatfirst-small .
|
| 89 |
+
docker run -p 7860:7860 whatfirst-small # first boot downloads ~3.3 GB (model + vision projector)
|
| 90 |
```
|
| 91 |
|
| 92 |
Then open http://localhost:7860. On a CPU-only box, expect a few seconds per task
|
prompts.py
CHANGED
|
@@ -7,9 +7,10 @@ prompts), reshaped for a single small model running locally:
|
|
| 7 |
- EXTRACT : a photo of a list -> task items (titles only; scored after)
|
| 8 |
- SCORE : one task -> impact / readiness / effort (slider re-suggest)
|
| 9 |
|
| 10 |
-
Every call
|
| 11 |
-
|
| 12 |
-
output is untrusted and re-clamped in
|
|
|
|
| 13 |
"""
|
| 14 |
|
| 15 |
# Shared definitions of the three scoring axes, kept identical across prompts so
|
|
|
|
| 7 |
- EXTRACT : a photo of a list -> task items (titles only; scored after)
|
| 8 |
- SCORE : one task -> impact / readiness / effort (slider re-suggest)
|
| 9 |
|
| 10 |
+
Every call is constrained to emit a single JSON object via llama.cpp's
|
| 11 |
+
`response_format: json_object` grammar (see llm.py) — the model cannot wrap it in
|
| 12 |
+
prose or markdown fences. All model output is still untrusted and re-clamped in
|
| 13 |
+
llm.py before it reaches the scorer.
|
| 14 |
"""
|
| 15 |
|
| 16 |
# Shared definitions of the three scoring axes, kept identical across prompts so
|
submission/whatfirst-small-writeup.md
CHANGED
|
@@ -64,7 +64,7 @@ The model's job ends at structured fields. The ranking is deterministic, and **e
|
|
| 64 |
- **do** = `(Impact · Urgency · Readiness_eff · QuickWin) / 10` — the case for doing it now.
|
| 65 |
- **prep** = `(Impact · Urgency · (10 − Readiness)) / 10 · 0.7 · QuickWin` — the case for de-risking it first (wins only when a task is valuable but not ready).
|
| 66 |
|
| 67 |
-
**Urgency** climbs as a deadline nears and _explodes_ once it's within a day, so a looming deadline can't be buried by a shiny far-off task. **QuickWin** rewards short,
|
| 68 |
|
| 69 |
Disagree with a score? Drag a slider and the list **re-ranks live** — the model proposes, you decide.
|
| 70 |
|
|
|
|
| 64 |
- **do** = `(Impact · Urgency · Readiness_eff · QuickWin) / 10` — the case for doing it now.
|
| 65 |
- **prep** = `(Impact · Urgency · (10 − Readiness)) / 10 · 0.7 · QuickWin` — the case for de-risking it first (wins only when a task is valuable but not ready).
|
| 66 |
|
| 67 |
+
**Urgency** climbs as a deadline nears and _explodes_ once it's within a day, so a looming deadline can't be buried by a shiny far-off task. **QuickWin** rewards short, high-impact tasks. And deadlines act as a **constraint**, not just a term: anything overdue, or that genuinely won't finish in time given everything ahead of it, is lifted above the value pack.
|
| 68 |
|
| 69 |
Disagree with a score? Drag a slider and the list **re-ranks live** — the model proposes, you decide.
|
| 70 |
|