whatfirst-small / README.md
optiquant's picture
Claim Tiny Titan badge: add achievement:tiny-titan Space tag
68572d7
|
Raw
History Blame Contribute Delete
5.23 kB
metadata
title: whatfirst small
emoji: πŸ—‚οΈ
colorFrom: indigo
colorTo: blue
sdk: docker
app_port: 7860
pinned: true
license: apache-2.0
models:
  - ggml-org/Qwen2.5-VL-3B-Instruct-GGUF
tags:
  - track:backyard
  - achievement:offgrid
  - achievement:llama
  - achievement:fieldnotes
  - achievement:tiny-titan
thumbnail: >-
  https://cdn-uploads.huggingface.co/production/uploads/67a39e9465c06c95d452bd6d/Z_pvYNAWsx5oR24zkUFZg.png

whatfirst Β· small

Dump everything on your mind β€” get back what to do first, with the math shown.

β–Ά Try the live demo

🀏 3B params (≀ 4B β€” Tiny Titan)  Β·  πŸ”Œ runs 100% offline β€” no internet required  Β·  πŸ¦™ llama.cpp

πŸ“£ Launch post  Β·  what-first.com  Β·  Apache-2.0

A small local vision-language model (Qwen2.5-VL-3B, ~2 GB, running on llama.cpp) reads a messy brain-dump or a photo of a to-do list and turns each line into a structured task β€” impact, readiness, effort, deadline. A deterministic, transparent scoring engine then ranks them and tells you the one thing to start now, showing every number behind the call. No cloud, no API keys, runs on a laptop.

Built for the Hugging Face Build Small hackathon (Backyard AI track).

πŸ““ Field notes: an honest write-up of what worked and what didn't β€” the small-model story, including where a 3B model wobbles and how the design absorbs it.

Demo

Watch the whatfirst-small demo

β–Ά Watch the demo video  Β·  Try the live Space

Why this exists

Deciding what to do first is a real, daily problem β€” and most "AI to-do" apps answer it with a black box. This one keeps the AI where it earns its keep (turning vague human language into structured fields) and makes the prioritization itself legible: two competing scores (do-it-now vs. de-risk-first), an urgency curve that explodes as a deadline nears, a quick-win boost for short, high-impact tasks, and deadlines treated as a hard constraint rather than a number folded into a blob.

The problem β€” and the prioritization approach β€” come from what-first.com, a full web app the same team built in June 2026. There, a frontier cloud model (Claude) does the language work β€” reading your tasks and proposing their impact, readiness, and effort β€” and a deterministic engine ranks them. This entry asks a smaller question: can a 3B model running offline on a laptop do that same language work? The ranking engine here is a clean-room Python reimplementation with its own tests, not a copy of the original.

How it works

brain-dump / photo  ──▢  Qwen2.5-VL-3B (llama.cpp, localhost)  ──▢  structured tasks
                                                                          β”‚
                                                              score.py (deterministic)
                                                                          β”‚
                                                          ranked list + "do this first"
  • score.py β€” the scoring + deadline-ranking engine (pure standard-library math).
  • llm.py β€” client for the local llama.cpp server (brain-dump parse, image extract, single-task re-score). Each call is grammar-constrained to a JSON object; every model output is re-clamped before scoring.
  • prompts.py β€” the system prompts that ask for strict-JSON output and define the scoring scales.
  • app.py β€” the Gradio UI: capture, ranked table, and sliders to correct any score and re-rank live.

Run it locally

docker build -t whatfirst-small .
docker run -p 7860:7860 whatfirst-small   # first boot downloads ~3.3 GB (model + vision projector)

Then open http://localhost:7860. On a CPU-only box, expect a few seconds per task β€” that's the cost of staying fully on the grid-less side. Tests:

python -m pytest test_score.py    # or: python test_score.py

Notes

  • Model: ggml-org/Qwen2.5-VL-3B-Instruct-GGUF (Q4_K_M + f16 mmproj), ≀ 32B and laptop-runnable.
  • Off the grid: all inference is local llama.cpp over localhost; nothing leaves the box at runtime.

πŸ““ See the full story in our field notes β€” what worked, where a 3B model wobbles, and how the design absorbs it.