cd /news/artificial-intelligence/sloth-inbox-let-a-tiny-open-model-so… · home › topics › artificial-intelligence › article
[ARTICLE · art-154803] src=dev.to ↗ pub= topic=artificial-intelligence verified=true sentiment=↑ positive

Sloth Inbox: let a tiny open model sort the notes you keep avoiding

A developer built Sloth Inbox, a browser-based note-sorting tool that runs the open all-MiniLM-L6-v2 embedding model locally via Transformers.js 3.8.1 and WebAssembly, with no account, API key, or server involved. In a test of twelve notes, the top shelf suggestion matched the intended category for all twelve, but only eight were auto-assigned; four stayed in review because their cosine similarity scores fell below the 0.25 threshold or the 0.04 lead margin. The app, released under Apache 2.0 as plain HTML, CSS and JavaScript, keeps inference in a web worker and caps input at sixty notes of 300 characters each.

by read4 min views3 publishedOct 21, 2026

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady.

A brain dump is very good at collecting things. Organizing those things is where it starts asking for a second job. 🦥

I built Sloth Inbox to take one small chore off that list: putting loose notes into sensible buckets. Paste a messy list, get suggested shelves, change anything that looks wrong, and leave with a tidy Markdown file.

The default shelves are Fix, Read, Buy, and Life. A broken login, an interesting paper, coffee beans, a dentist appointment: one pile in, a more useful list out. You can replace those shelves with your own names and descriptions.

The AI runs in the browser. There is no account, API key, or server waiting to read your notes. The slightly suspicious-looking sloth is an original SVG. It contributes absolutely nothing to inference, which feels appropriate.

I started and completed this project on October 22, inside this challenge’s window.

Open Sloth Inbox · Open the app directly

Actual screenshot of the deployed app. All example notes are synthetic.

I tested the deployed example with twelve notes. Its top shelf suggestion matched the intended category for all twelve, but the app assigned only eight automatically. Four remained in review because their similarity scores were low. The displayed processing time was **1.24 seconds after model ** in that run.

That difference matters. “Dentist appointment” got the intended Life suggestion at a similarity of only 0.15, so it stayed in review. I changed its dropdown to Life and checked that the Markdown preview moved it into the correct section.

This is a small functional check on deliberately straightforward examples, not an accuracy benchmark. The runtime figure excludes down and the model.

The project is Apache 2.0 licensed. It is plain HTML, CSS and JavaScript, with a worker for inference. No build step is needed. To run a downloaded copy with Python 3 installed:

python3 -m http.server 8000 --bind 127.0.0.1

Open http://127.0.0.1:8000. The README includes the exact model revision, runtime, limits and dependency credits. node check.mjs runs ten checks covering input limits, shelf validation, ranking, ambiguous matches and corrected exports.

The core is all-MiniLM-L6-v2, an open embedding model, running with Transformers.js 3.8.1 and WebAssembly. I pinned the ONNX model revision rather than following a moving model branch.

An embedding turns a piece of text into a vector: a list of numbers representing aspects of its meaning. Each note gets one. Each shelf description gets one too. Mean pooling and normalization produce vectors with 384 numbers; comparing their dot products gives cosine similarity.

So a shelf is more than a label. This description gives the model something useful to match:

Fix: bugs, broken software, errors, debugging and repairs

The app ranks the shelves for each note. If the best score is below 0.25, or its lead over the second-best shelf is below 0.04, the note stays in review. Those are simple heuristic defaults. They are not calibrated confidence guarantees.

Common mistake: treating similarity as certainty. A score of 0.35 does not mean “35% likely to be correct.” Making that number look like a confidence percentage would give the interface more authority than the model has earned.

I kept inference in a web worker so the model does not run on the main UI thread. Inputs are bounded to sixty notes, each at most 300 characters. There is no keyword fallback silently pretending the model worked: if model fails, the app reports an error.

For this tool, the useful part of open innovation is control over where inference happens.

The model weights can be downloaded and executed in the visitor’s browser. The runtime and application code are inspectable. I can change the matching logic, the review thresholds or the shelf descriptions without depending on a hosted inference endpoint accepting those choices.

A closed API could also sort notes. This implementation gives me a different trade-off: a model download up front, then local inference without sending the notes to a model provider or supplying an inference credential. That is a practical fit for a scratchpad full of small personal tasks.

The lazy part is modest: the tool proposes the first pass through a pile of notes. The person still checks the shelves. I have not measured human time saved, so there is no invented “hours reclaimed” counter. Sometimes a useful automation just removes twelve tiny sorting decisions from the starting line.

English works best. Negation, vague wording and notes covering multiple topics can confuse the model; splitting a mixed note is often more useful than trusting its highest score. Every suggestion remains editable.

The app downloads code from jsDelivr and model files from Hugging Face. Those hosts receive normal download requests, but the application does not send note text to an inference server. Inputs stay in memory and disappear on reload. A connection is needed for initial downloads and to reopen the hosted page; this is not a packaged offline application. The tokenizer caps inputs at 128 tokens, so unusual text may still be truncated within the character limit.

Screenshot and sloth illustration were made for this project. No partner prize category is claimed.

AI was used to draft the article.

── more in #artificial-intelligence 4 stories · sorted by recency
── more on @sloth inbox 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/sloth-inbox-let-a-ti…] indexed:0 read:4min 2026-10-21 · —