inspiration
over a billion people open tiktok every day to let ‘the for you page’ decide what fills their brain, and it’s mostly nonsense. imagine instead telling an app “teach me astrophysics” and getting an infinite and personalised feed of short-form video lessons. that's where i started. i wanted to hijack the dopamine loop of the infinite scroll and redirect it toward actual human progress.
what it does
spool is the algorithmic education feed. instead of buying a boring 10-hour linear course you'll never finish, you unlock a subject (like black holes or linear algebra) and get an infinite, personalized scroll of bite-sized lessons.
but it's not just passive watching - every few swipes, the app serves a frictionless "prove it" quiz card. if you pass, you move on. if you fail, the algorithm dynamically queues up a different explanation of that same concept. the best part? creators are paid micro-royalties based on user comprehension, not just watch time. if a concept has a high failure rate, spool automatically issues a bounty to the creator network to explain it better.
how i built it
i went native. the frontend is a buttery smooth swift ios app because web wrappers just can't replicate that seamless tiktok scroll. the backend is running on hono, connected to a reliable sql database to track user progression and the learning nodes.
to handle the content engine, i built a background queue system. as the user gets close to the end of their current feed, the queue fires off a generation event. it pulls an 11labs ai voiceover, layers it over high-quality free stock images, and stitches it directly into the feed alongside highly curated, preloaded tiktoks on that specific topic to keep the dopamine hitting.
challenges i ran into
the biggest wall was the initial video rendering latency. i initially tried using remotion to programmatically generate full mp4s on the fly, but it was just too slow. waiting minutes for a video completely kills the magic of an infinite scroll app. i had to pivot hard to my lightweight 11labs + stock image composition and seed the db with pre-curated tiktoks to bridge the gap.
database architecture was another brutal pivot. i originally tried to be clever and use a graphdb to map out the conceptual learning trees, but the implementation failed spectacularly midway through the hackathon. i ripped it out and fell back to good old sql.
finally, just dealing with the feed ui. i'm so used to how perfect the tiktok feed feels, and replicating that pre-fetching and state management in swift without dropping frames isn't trivial.
accomplishments that i'm proud of
for me, the absolute peak is the background generation task. getting the queue to track the user's scroll depth and fire off just-in-time video generation right as they are nearing the end of the feed—and actually seeing it stitch into the native ios feed seamlessly—is incredibly cool. (well, when i don't run out of api credits, anyway).
building an autonomous pipeline that pings 11labs, grabs assets, and updates the sql database while keeping a swift frontend buttery smooth is definitely my biggest technical win. on top of that, writing the core logic for the bounty and micro-royalty system proves this isn't just a tech demo; it's a viable business model.
what i learned
i learned that graph databases are completely unnecessary overkill for an mvp. i also learned that real-time video rendering is a fool's errand right now—asynchronous queues and clever ux to hide loading times are the only ways to survive the latency. most importantly, building a smooth, memory-efficient infinite scroll in swift is an absolute art form.
what's next for spool
scaling the creator marketplace. for the mvp i pre-generated the initial feeds, but the immediate next step is building the full self-serve creator dashboard. anyone will be able to claim a bounty, paste a youtube link, and let the pipeline auto-slice and format their explanation into the spool ecosystem. i'm going to make learning as addictive as scrolling.
[education track]
Log in or sign up for Devpost to join the conversation.