-
-
The model proposes, a human confirms, and Slack and MCP consume the same deterministic decision ledger.
-
Precedent shows SQLite as current, Postgres as replaced, and links to the original evidence.
-
Precedent turns a Slack commitment into a proposal a human can confirm, edit, or dismiss.
-
Precedent recognizes the switch from Postgres to SQLite before confirmation.
-
Slackbot checks Precedent before acting on an outdated decision.
Inspiration
Volunteer-led nonprofits and open-source communities often depend on a small number of maintainers who remember why important decisions were made.
When one of those maintainers leaves, new contributors inherit thousands of Slack messages—but not the context behind them. They reopen settled debates, repeat rejected work, or abandon a contribution after discovering an invisible constraint too late.
Slack search can find every message mentioning Postgres and SQLite. It cannot determine that Postgres was later reversed, SQLite is now authoritative, or why the team changed course.
We built Precedent to preserve that missing “why” and make it equally accessible to longtime maintainers, new volunteers, and the agents working alongside them.
What it does
Precedent turns consequential Slack conversations into a living, source-grounded decision record.
When a team makes a clear commitment, Precedent drafts a native Block Kit proposal containing:
- the decision;
- its rationale;
- rejected alternatives;
- its scope and deciders;
- confidence and exact source messages.
The proposal is never automatically accepted. A person must Confirm, Edit, or Dismiss it.
When a later decision replaces or reverses an earlier one, Precedent links the records and shows a compact old → new timeline. Asking /precedent why primary datastore returns the current decision, complete history, timestamps, people involved, rejected alternatives, and clickable Slack receipts.
Precedent also exposes this organizational memory through MCP. Slackbot or another independent agent can check existing precedent before proposing work and receive the same authoritative, cited answer as a person.
A chat log tells you what was said. Precedent tells you what was decided—and whether it is still true.
How we built it
Precedent is a TypeScript monorepo built with Slack Bolt, Block Kit, Socket Mode, Claude structured extraction, Slack’s Real-Time Search API, the Model Context Protocol, and SQLite.
Its central architectural decision is a hard trust boundary:
- The model proposes. Claude extracts a candidate statement, rationale, alternatives, scope, deciders, and citations.
- A human confirms. Nothing enters organizational memory without explicit review.
- Deterministic code owns truth. The ledger—not the language model—determines which decision is current.
- Every answer includes evidence. Records retain genuine Slack permalinks as receipts.
Confirmed decisions receive content-addressed IDs and are written to an append-only hash chain. Lifecycle changes create new records pointing to earlier decisions; history is never silently rewritten. SQLite triggers reject updates and deletes at the database layer.
Precedent’s MCP server supports Slack-signed requests from Slackbot and bearer-authenticated requests from other clients. Each invocation produces a bounded audit event. The application is packaged as a production Docker image with persistent storage and a health endpoint.
Challenges we ran into
The hardest problem was not summarization—it was lifecycle correctness.
Search can retrieve both “Use Postgres” and “Switch to SQLite,” but ranking those messages cannot safely determine which decision governs the project. We modeled decisions as immutable records connected through explicit replacement, reversal, and amendment relationships.
Grounding model output was another challenge. We prevented the model from manufacturing organizational history by requiring real source-message citations and human confirmation before committing anything.
Connecting Slackbot also required a separate MCP transport path. Slackbot sends signed, stateless requests, while conventional MCP clients use authenticated sessions. Precedent supports both without weakening either authentication model.
Finally, we removed synthetic demo seeding entirely. Every decision shown in the working product was posted, reviewed, and confirmed by a real Slack user.
Accomplishments that we're proud of
- A native Slack experience rather than a chatbot wrapped around search.
- Human-confirmed capture with Confirm, Edit, and Dismiss controls.
- Prominent reversal warnings and an old → new decision timeline.
- Deterministic resolution of the current decision.
- Genuine Slack source receipts for every confirmed record.
- An independent Slackbot agent consulting Precedent through MCP.
- Append-only storage, hash-chain verification, channel scoping, provenance validation, event deduplication, and MCP auditing.
- A guided Home experience and actionable recovery messages.
- 59 automated tests across 14 files with strict TypeScript validation.
- A production Docker image with zero known production dependency vulnerabilities.
What we learned
Agent memory needs a stronger contract than retrieval.
An organizational memory system must distinguish a suggestion from a decision, preserve why alternatives lost, represent changes explicitly, and make its conclusions inspectable. It also needs to return the same truth to humans and agents.
The most useful role for AI here is not owning organizational truth. It is reducing the effort required to create a trustworthy record while keeping people in control.
What's next for Precedent
Our next step is a pilot with volunteer-led nonprofits and open-source communities.
We plan to measure:
- maintainer time spent re-explaining settled decisions;
- newcomer time from asking “why?” to opening the source evidence;
- repeated proposals where Precedent surfaces an existing decision;
- contributors who continue their work after receiving missing context.
Product work will include guided historical backfill, stable managed hosting, multi-workspace support, retention controls, ADR export, GitHub links, and aggregate impact reporting.
The long-term vision is for Precedent to become a shared governance layer: organizational memory that every person and every agent checks before acting.
Built With
- anthropic
- api
- block
- bolt
- claude
- context
- docker
- kit
- mode
- model
- node.js
- protocol
- real-time
- search
- slack
- socket
- sqlite
- typescript
- vitest
- zod


Log in or sign up for Devpost to join the conversation.