Hacktoberfest · Slow and Steady · runs on your laptop

I had 1,247 articles saved “for later.”An open model learned my habits and kept 5.

Unpile is a 100% local agent that reads your “save it, never open it” habits, silences the 58% of your backlog that will only ever rot, and hands you a calm two-line morning digest of the few things actually worth your coffee. No cloud. No account. $0.

5
kept for your morning
8
silenced automatically
5.5 h
reading time reclaimed
TabPFN-v2, on CPU Gemma 3, local via Ollama Works offline MIT · $0 / item
SEE IT WORK

Declare bankruptcy on your backlog

Here is a real read-later pile. The open model decides each item from the same signals you have the moment you save it, then writes your morning digest. Toggle any item’s signals and watch the call change live.

Your pile loading…

Worth your morning

0 kept

Maybe (a quick skim)

0 skim

Silenced (it’ll rot)

0 dropped

This page runs a faithful in-browser mirror of the model. The numbers above are the real TabPFN-v2 + Gemma output, baked from scripts/bake_static.py. Clone the repo and run python run.py for the live local agent.

Two open models, one job each

The sloth principle: it does the boring triage so you don’t. You wake up to the answer.

1

It learns your taste

TabPFN-v2 conditions, in one CPU pass, on your own history of what you read vs. let rot. No training run, no GPU, no data leaving the machine.

open-weight · TabPFN-v2 · CPU
2

It decides & acts

For every item it predicts “will I actually read this?”, then keeps the few, flags the maybes, and silently archives the rot - surfacing only the exceptions to you.

prediction agent · keep / skim / drop
3

It writes your digest

Gemma 3, running locally through Ollama, turns the survivors into a calm, low-pressure two-line morning note. Offline fallback means the digest always arrives.

open-weight · Gemma 3 · local

Why open innovation matters here

Your reading list is a confession. This only works because it’s open and local.

Your history never leaves the laptop

What you read reveals your job, health, politics, insecurities. A closed API would need all of it on someone else’s server. Unpile keeps every row on your machine.

It works with the Wi-Fi off

Open weights run on-device. Your overnight triage doesn’t depend on a connection, a login, or a vendor being up.

$0, forever, at any scale

Triaging a 1,200-item backlog would be a real bill on a per-call API. On open weights it costs nothing, so you can run it nightly without thinking about it.

It learns your taste, not the average

Retrain the decision on your own labels and it mirrors you. A generic closed model can’t be bent to one person’s backlog the way an open one can.

The honest take

Measuring on a held-out slice of the saved-items history…

Translation: when Unpile surfaces something, you read it about 1.6× more often than a random item from the pile - and it safely silences over half the backlog. But it is not magic: at this setting it also wrongly drops ~39% of the items you would have read. I surface that number instead of hiding it. The fix is a dial, not a lie: loosen the keep threshold and you recover more good items at the cost of a noisier morning. The dataset here is synthetic and documented; point it at your own Pocket/CSV export and the numbers become yours.

Built Oct 19 to 25, 2026 for the Hacktoberfest “Slow and Steady” challenge. New project; reuses my own FrostWise/PricePilot local-AI patterns, disclosed in the README.