Local InferenceOpen SourceFreeActiveMachine-verified· beginner · ~10 min setup

Local model chore: turn a brain-dump into a clean to-do list

Paste messy meeting notes into a free, offline model on your own laptop and get back an organized to-do list, with nothing leaving the machine.

by Shilpa Mitra· verified today· v1.0.0

Run this workflow

CI-verified, 2/2 fixtures passing.

Build this with your agent

One copy-paste hands Claude Code, Codex, or Cursor the full recipe, steps included, nothing to fetch.

Intended Use

Anyone who wants to clean up messy notes privately. CI installs Ollama, pulls a real small Gemma 3 model, and runs the actual to-do prompt offline, asserting the model returns a non-empty answer with a clean exit (no API key, no cloud). The newsletter recommends gemma3:4b for real use; CI uses the tiny gemma3:270m for speed. The answer's QUALITY is non-deterministic and is fenced.

Not for

  • Trusting the list blindly, small models occasionally drop or garble an item, so skim it
  • Expecting CI to grade the list, only that a local model ran and produced output offline

The Stack

Tested Against

ollama@0.30gemma3:270mgemma3:4b (recommended for real use)

Side effects & data flow

Network
ollama.com, model pull only; inference is fully offline
Writes
~/.ollama/ (downloaded model)
Credentials
none required

Data privacy

  • nobody (fully local after the one-time model download) your pasted notes (retention: stays on device; nothing is sent off-machine or retained by any service)

Prerequisites

  • A laptop with ~8GB RAM (16GB for the 12B models)

Steps

  1. 1

    Run the chore on a real local model (offline)

    Install Ollama, pull a Gemma 3 model, and run the to-do prompt on your messy notes. With LM Studio you'd do the same in a window; here CI does it headless. After the download this runs with wifi off. CI runs exactly this with the tiny gemma3:270m and checks the model returned a real answer.

    command -v ollama >/dev/null 2>&1 || curl -fsSL https://ollama.com/install.sh | sh
    curl -s http://localhost:11434/api/version >/dev/null 2>&1 || (ollama serve >/tmp/ollama-serve.log 2>&1 &)
    for i in $(seq 1 60); do curl -s http://localhost:11434/api/version >/dev/null 2>&1 && break; sleep 1; done
    ollama pull gemma3:270m >/dev/null 2>&1
    OUT=$(ollama run gemma3:270m "Turn these messy notes into a short, organized to-do list:
    - talked to Sam about the Q3 launch, he will send the deck
    - need to book the dentist
    - buy milk and coffee
    - reply to the landlord about the lease")
    if [ -n "$OUT" ]; then
      echo "chore1 OK: gemma3:270m produced a $(printf '%s' "$OUT" | wc -c | tr -d ' ')-char to-do list offline (quality fenced)"
    else
      echo "EMPTY OUTPUT"; exit 1
    fi
  2. 2

    Use the recommended size for real work (the quality step, not checked by CI)

    For day-to-day use, pull gemma3:4b (about 3.3GB, fits 8GB) or gemma3:12b (about 8GB, for 16GB). The bigger model writes a cleaner list. Output quality is non-deterministic, so CI never claims it.

Eval, 2 fixtures

Last passed: verified today
  • ran-offlinecontainstimeout 600s · max $0

    Expected: chore1 OK: gemma3:270m produced a

  • clean-exitexit_codetimeout 600s · max $0

    Expected: 0

Results

The fastest way to feel the value on day one: rough notes in, clean list out, fully local and free. Gemma 3 4B (about 3.3GB) fits a typical 8GB laptop.

Did this work for you?

Our CI checks the setup runs. You tell us if the whole thing worked. Tell us straight.

Liked this workflow?

Get new verified workflows in WebAfterAI, three issues a week (Tue, Thu, Sat).