Katha takes dense technical material - a doc, a README, a paper, a long YouTube course - and breaks it into an ordered sequence of small "read a little, build a little" steps, tailored to a goal you state up front.
- Give it a source: paste text, or a URL (regular web pages, or a YouTube video - it pulls the real transcript, not the description).
- Give it a goal: what you're actually trying to build or learn.
- It chunks the source into ordered steps, each with something to read and (usually) something to do - build it, recall it, or just get oriented, depending on what the material actually supports.
- Work through steps one at a time, tracking read / build / stuck / done as you go.
Everything you add - sources, chunks, progress - lives in your browser (IndexedDB), not on a server.
Home - resume where you left off, see every source at a glance:
Step - one chunk at a time, what to read and what to do with it:
Path - the full sequence for a source, at a glance:
- frontend/ - Vite + React. No backend-side accounts; your Anthropic or OpenRouter API key is entered once, encrypted, and stored in your own browser (bring-your-own-key, not a shared/paid key).
- backend/ - Express. Two jobs only: extract readable content from a URL (Readability, with a headless-browser fallback for JS-heavy pages, plus a dedicated YouTube transcript extractor), and relay the chunking prompt to whichever model your key belongs to. It never stores a key or pays for anyone's usage but the caller's own.
- backend/eval/ - the prompt-quality harness: fixtures, metrics, an
LLM-judge, golden baselines, A/B prompt comparison, and a human scorecard.
See
backend/eval/README.md.
cd backend && npm install && npm run dev # http://localhost:8787
cd frontend && npm install && npm run dev # http://localhost:5173
The frontend talks to the backend via VITE_BACKEND_URL (defaults to
http://localhost:8787 for local dev).
- Backend needs a real headless browser (Playwright) for the JS-render
fallback, so it wants a normal persistent server, not a serverless
function - a small VPS (Lightsail, EC2, etc.) works. Point
nginxat it and get a cert viacertbot, run the app underpm2. - Frontend is a plain static Vite build - deploys as-is to Vercel or
similar. Set
VITE_BACKEND_URLto wherever the backend actually lives.


