Internet's Lost Middleground
Broadly speaking, people use the internet in two different ways. You either know what you want and use the search bar to retrieve it, or you scroll a feed powered by an algorithm. But this hasn't always been the case. In the early days of the internet, people browsed it much like a library. Popular webpages like Yahoo had categories, where people sorted websites by hand into topics and subtopics. You could start at Recreation, click down into Cooking, and land on something you didn't know you were looking for. That kind of wandering faded once search got good and feeds got addictive.
I felt that gap in my own saves. Every good post I found while scrolling, I saved, until I had 6,254 saved posts from 4,449 creators. The only way back into them was a grid of thumbnails sorted by date. I'd built my own library and had no way to browse it.
Yahoo built its directory by hand. Locus builds one from your saves.
What it does
Locus turns the posts you've saved into a library you can browse. It works in four layers.
Sort. Folders aren't assigned; they're derived. Every post gets free-form tags, and a directory of about 1,000 entries decides where it lands: recipes by cuisine, meal, cooking method, dish and main ingredient, with other kinds getting their own directions. Placement happens when you browse, so one post lives in several places at once. A Korean beef bowl is under Korean, under Dinner and under Beef. You never make or maintain a folder.
Browse. The Hub gives each kind its own row: Recipes, Workouts, Places, Movies & shows, Books, Quotes. Shelves reshuffle daily so the same six things aren't always on top, chips narrow a shelf without typing a search, and saved places sit on a map.
Look inside. A post is often a doorway to something else: a creator recommending five films, a book, a line worth keeping. The pipeline already scans every save for books, albums, songs, shows, podcasts, games, products, places, tier lists and quotes. In the live app you can add a film or book to its row and start your own lists. Version 1.1, on TestFlight now, puts "Found in this post" right on the card.
Act. When something is worth doing, Locus gets you there. Cook Mode walks through a recipe in the creator's own steps, Face-Off turns a pile of saves into a ranking you decide, and you can mark what you've tried. Every card keeps the creator's name and links back to their post.
How I built it
The iOS app is SwiftUI and MapKit on Supabase. Behind it, a Python pipeline on GitHub Actions and Modal transcribes each save with Whisper, classifies and tags it with Gemini and GPT-4o-mini, and scans it for recommendations.
The directory is the part I'm proudest of. Free-form tags come out messy: korean, korean-food, koreanfood and korean-bbq all mean roughly the same thing. So a separate step has Claude Opus read every tag variant actually used across my 6,254 saves and build a tree of browsing directions, where each entry lists every spelling that should land there. The app matches a post's tags against that tree at browse time instead of storing a fixed folder per post, so I can reshape the whole directory without re-tagging a single save.
Subscriptions run through RevenueCat, and the entitlement goes deeper than the app. RevenueCat's webhook writes it onto the user's row in Postgres, and the database's security rules check that column, so an unpaid account is refused by the database itself, not just hidden in the UI. Prices and free-tier limits live in tables too, so changing a plan is a database update, not an app release.
I built it with Claude Code, against my own saves rather than demo data.
Challenges I ran into
Deciding what not to ship. I built a feature that cut short GIFs from saved videos to illustrate recipe steps. It looked great, but it meant redistributing creators' work, so I pulled it. The same rule runs through the app: credit the creator, link back, and if a recipe isn't actually in the post, say so instead of inventing one.
The directory has its own honest limit: it was built from my library's vocabulary, so a new user's saves fill it only where their tags overlap mine. Growing it from everyone's saves is next.
What I learned
A library is only browsable once there's something in it. New users opening an empty app didn't see the point until their own saves synced, which is pushing me to seed new libraries with popular posts so there's something to wander through on day one.
What's next for Locus Sync
Today Locus is a very good bookmark manager, and that's deliberate: it's the scaffolding. Version 1.1 puts extraction on the card. Open a post and you'll see "Found in this post: Ikiru, Children of Paradise," each with a cover, a Tried mark and a D-to-S rank. A Found tab per kind collects everything your saves recommended, and nothing joins your collections unless you add it. After that come links between saves, so recipes, places and creators connect the way your interests do, and then sharing, so a friend's collection becomes something you can browse too.
Categories
RevenueCat Design Award. Details worth a look: the Hub rows, shelf browsing and chips, the recipe cards, Cook Mode, and the cream, brown and racing-green palette.
Built With
- claude
- supabase
- swift
- vercel
Log in or sign up for Devpost to join the conversation.