optiquant Claude Opus 4.8 (1M context) commited on
Commit
744013f
·
1 Parent(s): 38ad4ca

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 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
  [![Watch the whatfirst-small demo](https://huggingface.co/spaces/build-small-hackathon/whatfirst-small/resolve/main/demo/out/whatfirst-small-demo-poster.jpg)](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)** &nbsp;·&nbsp; **[Try the live Space](https://huggingface.co/spaces/build-small-hackathon/whatfirst-small)**
42
 
43
- <!-- The block above renders as a clickable poster on GitHub (which strips <video>) and on Hugging Face.
44
- The Space's own front-matter video is preserved by the `---` header at the top of this file. -->
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 ready tasks, and
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 ~2.3 GB of weights
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
  [![Watch the whatfirst-small demo](https://huggingface.co/spaces/build-small-hackathon/whatfirst-small/resolve/main/demo/out/whatfirst-small-demo-poster.jpg)](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)** &nbsp;·&nbsp; **[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 uses the JSON-prefill trick (prefill the assistant turn with "{") so
11
- a small model continues the object instead of wrapping it in prose. All model
12
- output is untrusted and re-clamped in llm.py before it reaches the scorer.
 
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, ready 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
 
 
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