Projects
Things I build outside of work. Both are open source, repos are linked under each one.
km. km (knowledgemaxxing)
MIT licensed · github.com/joeamroo/knowledgemaxxing · site and demo video
I kept requesting my data exports and never opening them. Twitter archive, Google MyActivity, ChatGPT logs, Reddit’s GDPR export, all downloaded and forgotten. km opens them.
- Dedupes roughly 500k items into a single SQLite file and keeps provenance for every save, like, search, bookmark, and page visit, including iPhone Safari history pulled in through iCloud on macOS.
- Search runs three legs fused with reciprocal rank fusion: BM25 over titles, BM25 over article bodies, and vector search over passages, using local bge embeddings stored through sqlite-vec. “That tweet about machine guns and birds in australia” finds the emu war tweet from 2022 with none of those words in it.
- The chat is an archivist agent rather than a RAG prompt. It runs its own searches, pulls full items, and will star, annotate, or save a list as a collection when you ask.
km mcpexposes the same read-only tools over MCP, so Claude Code can search the archive from any session. - Local first, because fifteen years of my reading history is in this thing and I did not want to hand that to someone else’s server just to make it searchable. The web UI binds to 127.0.0.1 behind a DNS-rebinding guard, nothing is ingested until you review a manifest, and the AI layer is opt-in with your own key and only ever sends the text of an item.
- Python, FastAPI, a prebuilt React UI, and one SQLite file for everything including the vectors. The scrapers are Playwright against a dedicated browser profile, so your daily browser is never touched.
Larpin LarpIn
Just for fun. A parody LinkedIn where everyone admits they are indeed larping.
- No signup. You get a generated persona when you arrive, and there is one global feed.
- Every post is scored on buzzword density, from “NPC (for now)” up to “Final Boss of LinkedIn”.
- A button fills in the “You need to be X-maxxing” format for you. That is the part I actually keep using.
- Rails 8.1, SQLite, Hotwire, one box, no JS build step.