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: 1.
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.
2.
Per page: a fallback category when I don't set one.
3.
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 onerender.yaml Blueprint: acron job for the daily pipeline and aweb 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 s. 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. Settingreasoning_effort: "minimal" brought it down toabout 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 topicper 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 became5 topics and one page, about2 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.