Skip to main content
> RARE_SIGNAL — OPEN-SOURCE SUPERPOWERS
01 · throw anything

Throw anything at it.
Get a table back.

Local-first. BYO model. MIT. Define an analysis contract once. Resolve any pile of text forever.

02 · in his own words

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.

0:000:00
now playing

Press play to start the dictation.

Loading transcript…

9 scenes · ~60sopen full-screen ↗

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.

invariant · 09

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.

tests/test_contracts.py prevents reintroduction · agents.md invariant 9

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.

01

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.

02

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.

03

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.

PDFMarkdownPlain textDOCXHTMLURLEMLMBOXZIPfolder

+ optional Whisper audio · Tesseract OCR

LM Studiodefault · localhost
Ollamalocalhost
OpenAIapi key
Anthropicapi key
Groqapi key
OpenRouterapi key
Togetherapi key
Customyou pick

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.