DEV Community

Cover image for My Instagram saves were a graveyard. So I put a sloth on my laptop to dig through it.
Hiya Lukka
Hiya Lukka

Posted on Edited on

My Instagram saves were a graveyard. So I put a sloth on my laptop to dig through it.

Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady 🦥

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

I have a folder on Instagram called "python". Another one called "ai". Every time a reel promises to teach me something in 60 seconds, I tap save and feel like I already learned it.

I have never opened that folder to study. Saving felt like progress, so I never needed to read.

That folder is the laziest thing about me, so I built the laziest possible fix: I stopped trying to be more disciplined and made a sloth do the reading.

What I Built

SlothShelf is a local-first AI that reads the links you saved and never opened, then tells you which few are worth your time.

You paste links, drop a bookmarks file or a WhatsApp "message yourself" export. A Gemma model running on your own laptop reads every page and writes a card for it:

  • Verdict: read, skim or skip, with a one-line reason
  • The gist in a short paragraph
  • 4 to 8 key points: tools, commands, steps, numbers
  • A "worth knowing" list of the tools and concepts it mentioned one thing to try after reading

On Sunday, it builds a PDF digest: your best picks with the full detail, the rest of the shelf grouped by topic, a safe-to-skip list, and a list of everything it could not read. The idea is that the PDF is the thing you read. The 40 tabs are not.

Who gets to be lazier? Anyone who saves ten things a week and reads none of them. That is me, and probably you.

Demo

Live demo page (sample data, so you can click around without installing anything): https://hiyalukka.github.io/slothshelf/

Code

SlothShelf

Save fast. Read slow. Skip the rest. A local-first AI that reads the links and reels you saved, then tells you which few are worth your time.

Live demo | Built for the DEV Hacktoberfest Open-Source AI Challenge, "Slow and Steady" | Categories: MongoDB Atlas, Gemma

What it does

Paste links, drop a bookmarks file or a WhatsApp export. A local Gemma model reads each page and writes a card:

Field What you get
Verdict read, skim or skip, with a one-line reason
Gist A short paragraph covering the main ideas
Key points 4 to 8 concrete points: tools, commands, steps, numbers
Worth knowing Tools and concepts mentioned, in one line each
Try this One action to take after reading

Every week it builds a PDF digest: your top picks with full detail, the rest of your shelf grouped by topic, a safe-to-skip list and anything…

How I Built It

Links → Deduplication → Fetch & Clean → Gemma Card + Embeddings → MongoDB Atlas

↳ Goals & Taste: Personalization signals that influence the system.

The open-source AI: Gemma (gemma2:2b) writes the cards, and nomic-embed-text makes the embeddings. Both run through Ollama, so no page text ever leaves the laptop. I use Ollama's structured output: the model has to return JSON that matches a Pydantic schema (verdict, key points, terms, topic), so the app gets data it can store instead of prose it has to parse.

MongoDB Atlas is the memory, not just the storage. There are three collections:

Links: one document per link, with the card and a 768-number embedding
Memory: my goals, plus a weight per tag that moves when I react to a card (+1 read, +2 loved, -1 skipped)
Digests: one document per ISO week

Atlas Vector Search does two jobs:

  • Find by meaning: I can type "that thing about evaluating RAG" and get the closest saved links, even if none of them contain those words.
  • Taste retrieval: Before Gemma judges a new link, I pull the closest links I previously loved and put them in the prompt.

So the sloth does not just score links against a generic idea of "good". It scores them against what I actually kept.
It keeps score on itself. The app shows an agreement rate: of the links I acted on, how often did my choice match the sloth's verdict? A tool that tells you what to read should show you how often it is right.

Why Does Open Innovation Matter?

A saved-links folder says more about you than almost anything else you own. Mine shows which careers I am eyeing, which skills I feel behind on, which hackathons I am scared of. I did not want to hand that to an API, and with open weights I did not have to.

Three things open models made possible that a closed API would not:

Privacy by default: Gemma reads the pages on my machine. Atlas only stores the card, the embedding and my signals.
No meter running: Reading a backlog means hundreds of calls. Locally, a big pile costs time, not money, so nobody has to decide a link is "not worth the tokens".
Swappable parts: The card model is one line in .env. Any model Ollama can run works, and I can inspect or change every prompt.

The Lazy Payoff

Here are my real numbers from running it on my own saves:

Links imported: 6
Read by Gemma: 5
Verdicts: 3 read / 1 skim / 1 skip
Links I actually opened from the digest: 4
Agreement rate: 78% over 42 links

Prize Categories

Best Use of MongoDB Atlas: Atlas holds the cards, the memory loop and the weekly digests, and Atlas Vector Search powers both find-by-meaning and taste retrieval.

Best use of Gemma: Gemma writes every card, locally, with schema-constrained output

Top comments (0)