This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady
What I Built
Every morning I opened Instagram "just to catch up", and every morning the feed won. One quick check became another, with ads, reposts and giveaways in between.
SlothScroll is my lazy fix. It's a morning digest of the Instagram pages I follow. Once a day a cloud browser visits those pages for me. Gemma, Google's open-weight model, reads every new post and writes a one-line gist. It also sorts the post into a topic (Sports, Science, Finance, Techβ¦) and quietly drops ads, reposts and giveaways. What I get is one calm page and one email, grouped by topic, with the 1β3 posts actually worth opening.
I read it in about two minutes with my coffee, then close the tab. I never open Instagram.
Who gets to be lazier? Anyone who follows news, sports or creator pages to stay informed, not to scroll.
Demo
π Live: https://slothscroll-web-ngb7.onrender.com
What you'll see in the video:
- Today's edition: a greeting, the "scrolling saved" number, topic tabs, and Gemma's summary for each topic with its top picks
- The archive, an RSS feed per page, and dark mode
- The morning email, the same edition delivered to my inbox
Code
The latest code is on the SlothScroll branch.
How I Built It
-
Gemma (
gemma-4-26b-a4b-it) is the brain. It runs through an OpenAI-compatible client set by environment variables (AI_BASE_URL,AI_MODEL), so the same code can point at a hosted endpoint or, by changing one variable, a local Ollama. I use it for three jobs:- Per post: a one-line gist, the post's topic, and whether it's an ad, repost or giveaway. All three come back as JSON from a single call. When a caption is only emojis and hashtags, Gemma looks at the image instead.
- Per page: a fallback category when I don't set one.
- Per topic: a 2β3 line summary plus the posts worth opening.
- Browserbase + Stagehand give it a real browser. I log in once through Browserbase's live view, and a persisted context keeps that session for daily runs.
- MongoDB Atlas is the data layer. The cron job writes, the website reads, and a unique index on the post URL means a post is never processed twice.
-
Render runs everything from one
render.yamlBlueprint: a cron job for the daily pipeline and a web service for the site. Every secret issync: false, so none live in the repo. - The website is server-rendered HTML on Hono, with no frontend framework. It has light and dark mode, works on mobile, and loads quickly.
- ElevenLabs narrated the demo video.
Slow and steady by design: one run per day, public pages only, visited one at a time with random pauses. A page that fails is noted, and the edition still ships. If Instagram asks for a login, SlothScroll stops and tells me instead of trying to get around it.
What broke (and how I fixed it)
-
Gemma was slow for this job. A demo run took about 4 minutes because the model reasoned before every answer. Setting
reasoning_effort: "minimal"brought it down to about 20 seconds, with the same quality for one-line gists. - Everything was "News". Topics were assigned per page, so a football page's posts and an IPO story all landed in News. Now Gemma chooses a topic per post in the same call, with no extra requests. On my real feed the same 16 posts went from one topic to five.
- The browser died mid-run. Browserbase sessions end after 5 minutes by default, and a full run takes longer. Asking for a 30-minute session fixed it.
- Half-emoji headlines. Shortening captions sometimes cut an emoji in half and left "οΏ½". The page now cleans those characters before showing them.
Why Does Open Innovation Matter?
What you follow says a lot about you. Your reading habits are personal, and an open-weight model means this digest doesn't have to depend on one company's closed API:
- I choose where it runs. Gemma is reached through a plain OpenAI-compatible endpoint, so switching providers is an environment-variable change. The client is built to switch to a local Ollama the same way, so the posts never have to leave my machine.
- It's cheap enough to run every day forever. A small open model is plenty for one-line gists and topic tags. It's a daily habit, not a premium feature.
- It's inspectable and forkable. The prompts, the pipeline and the model are all open, so anyone can adapt SlothScroll to their own pages, language or topics.
The Lazy Payoff
From a real run this week, using a deliberately conservative estimate of 8 seconds per post:
- 16 posts from my pages became 5 topics and one page, about 2 minutes of scrolling saved that day.
- 0 times I opened Instagram.
The real win is bigger than the 8-second math. One "quick check" usually turns into twenty minutes. SlothScroll ends the session before it starts, and it scales with the pages you follow: I've since added six more (The Verge, National Geographic, CNBC, Tasty, Netflix and 9GAG).
Prize Categories
- Best Use of Gemma: Gemma writes the gists, picks the topics, filters ads and summarizes each topic.
- Best Use of Render: a Blueprint with a cron job for the agent pipeline and a web service for the front end.
- Best Use of Browserbase: Stagehand drives a real browser with a persisted login, as a repeatable daily workflow.
- Best Use of MongoDB Atlas: the database behind an app built on an open-weight model.
- Best Use of ElevenLabs: narration for the demo video.



Top comments (0)