Throw anything at it.
Get a table back.
Local-first. BYO model. MIT. Define an analysis contract once. Resolve any pile of text forever.
Twenty minutes, unedited.
The voice memo behind this build. Press play and follow along — the ring listens to the audio in real time, and the focus box keeps you on the current thought. Click any paragraph to jump there.
Press play to start the dictation.
Loading transcript…
A contract is a JSON file.
Name the table. Name the columns. Write the prompt the model should answer for each column, on each chunk. That’s the whole spec.
// decisions.contract.json
{
"name": "decisions",
"columns": [
{ "key": "decision", "title": "Decision",
"prompt": "What concrete decision was made? Null if none.",
"data_type": "string", "include_explanation": true },
{ "key": "owner", "title": "Owner",
"prompt": "Who owns the follow-through? Null if unassigned.",
"data_type": "string" },
{ "key": "deadline", "title": "Deadline",
"prompt": "When is it due? Null if not stated.",
"data_type": "string" }
]
}Define once. Resolve forever. Pass contracts around like dotfiles.
There is no rating type.
Every row is an atomic per-chunk LLM call with no memory of any other chunk. A 1–5 star column has nothing to compare against, so it collapses to the model’s prior. The quotes demo tape used to score 38 out of 38 quotes at 4 or 5 stars. That’s what got the type deleted. Use a boolean with sharp truth conditions instead.
Ten contracts ship in contracts/.
A living library, not a read-only reference. Fork them. Write your own. Paste a gist URL into the UI to import any contract on the internet.
This is a Software 2 tool.
Three things make it that.
Vibe-coded.
Built in one night by a human + LLM pair. The full build conversations are committed in conversations/ as provenance. Read them like git history for the intent, not just the diff.
BYO model.
Default talks to LM Studio on localhost:1234. Switch to OpenAI, Anthropic, Groq, OpenRouter, Together, Ollama, or any custom OpenAI-compatible endpoint with a dropdown. Nothing leaves your laptop unless you say so.
Agent-operated.
Point Claude Code, Codex, or Cursor at the repo and tell it what you want to extract — it writes a new contract JSON file next to the existing ones. The contracts/ and backtest/ directories are living libraries. The repo itself is part of the UI.
+ optional Whisper audio · Tesseract OCR
One click from the Provider dropdown, or --base-url from the CLI.
Resolutionizer is a companion to RareSignal. Same thesis, running as a standalone app you can install and point at your own stuff. Contracts are to Resolutionizer what Spells are to RareSignal. Both are libraries you grow.
It’s a demo. Fork the concepts.
The repo is a working sketch, not a product. Read it. Vibe-fork it with your favorite agent. Or point Claude Code, Codex, or Cursor at it and bend the whole thing into something you actually need.