Foundation

Systems.

Before you download

kvsetup is a fully containerized application that collects, categorizes, and retrieves information stored locally on your own system. You can point it at videos, books, newsletters, and other sources, and you are free to customize it further. The software is provided "as is," without warranties of any kind, express or implied. You download, install, configure, and run it entirely at your own risk. Shourjo Guha accepts no responsibility or liability for any damage, data loss, security issue, or other consequence arising from its use. By downloading, you agree that you alone are responsible for how you use this application.

Disposition matters more than information. I built a four-door personal-OS to prove that pattern holds across very different kinds of evidence — heart-rate variability, macros, options chains, half-finished textbooks.

The 30-second version

rx is a recommendation engine with exactly one user: me. That makes it the most honest artifact on this site — no team to impress, no reviewer to catch a lazy decision, just whether I keep using it.

I built it because of what I kept doing with good advice: following it for a while, then quietly stopping. The system's one job is to turn "quietly stopping" into a visible, recorded event.

If you've opened the fitness or investments projects, you've already seen two of its doors from the inside. Below, the sections get steadily more technical — the headings carry the argument, the cards hold the receipts.

Use cases

Four doors.

Different kinds of signal — high-frequency vs slow, cheap vs expensive, measurable vs vibes. If one prescription pattern can produce useful next-actions across that spread, the pattern is the asset.

rx
eleven
canonical steps
Zeus
Fitness
Storage · Supabase
UI · Vercel (Verocity)
Athena
Nutrition
Storage · Supabase
UI · None (markdown-only)
Lakshmi
Finance
Storage · Local Postgres
UI · TradingV FastAPI panel
Ganesh
Learning
Storage · Markdown only
UI · None

Hover any door · storage routing locked by decision (D-045)

System

Same eleven steps.

The shape underneath all four doors is what I call rx — a prescription. Pull evidence, compose a recommendation with its counter-thesis, persist it with a stable ID, wait for me to act, snooze, or dismiss. Three primitives are domain-agnostic by design.

7d
Bounded snooze
At two consecutive snoozes the system forces a decision.
∀ rx
Mandatory counter-thesis
No rx ships without an explicit argument for why it might be wrong.
<30%
Action-rate kill-switch
Under 30% means the system is generating noise — paused until inputs are fixed.

The pipeline is eleven canonical steps, identical across all four doors. Drift detection → evidence retrieval → dedup against open rxs (auto under 48h, drift ±0.05) → compose → counter-thesis → persist → a closing Phase W reconciler that walks the markdown record of what I actually did and writes it back. Doing nothing produces no rxs, and doing something produces exactly one.

Optimizations

Technical layer.

Curated corpus, four-layer hybrid retrieval, slash-command CLI on top of Claude Code. The optimizations that make this run, not just exist.

Operator-curated corpus
Vault is hand-picked — newsletters, creators, books, papers I personally vet. Recommendations score against sources I trust, not whatever the web shouts loudest. The corpus shape is a decision, not a default.
Custom MCP 1kb_Shos
Semantic search over the vault, registered globally so every Claude session reaches the same index. Exposes search, bundle, node_chunks, traverse, graph_search, and read-only db_query against finance Postgres.
BAAI bge-large-en-v1.5
1024-d cosine via sqlite-vec. H2-section-aware chunking, ~600-word target, 80-word overlap — keeps semantic units intact instead of slicing mid-argument; oversize sections truncate at the encoder's 512-token window, an accepted trade-off.
Four-layer hybrid retrieval
Vector KNN ∥ BM25 → RRF fusion → ranked-grouped decay (finance only) → graph re-rank (0.6·vector + 0.25·PageRank + 0.15·centrality). Decay opt-in per domain — recency isn't always evidence.
/rx-* slash commands
CLI on top of Claude Code: /rx-fitness, /rx-nutrition, /rx-finance, /rx-learning + history/status/digest variants. Same eleven-step pipeline wrapped around domain-specific drift inputs.
ia-explainer as META artifact
Astro 5 + React Flow site documenting the architecture it doesn't run. Eight content pages, six interactive diagrams, the decisions ledger pinned in full. 9-step audit checklist enforced before any change ships.
Fact-to-file-to-source mapping
Every claim on the explainer site has exactly one canonical source file. Updates are re-verification, not rewrite. This is what stops documentation drift from compounding.
Storage routing locked by decision
D-045 fixes which domain writes where — held by construction (each slash command carries credentials for its own store only) plus code review, no runtime guard. A finance rx has no write path to Supabase.