Verdict Memory logo

Verdict Memory

The Slack agent that remembers every decision your team makes and warns you before you contradict one.


Inspiration

We kept watching teams re-decide things they had already settled. A choice made in a Slack thread three months ago would quietly get reversed because nobody could find the original reasoning, and new hires had no way to learn why anything was the way it was. Slack search could find the words but never the why, so we wanted an agent that treats decisions as memory with provenance instead of messages that scroll away.

What it does

Verdict Memory captures the decisions a team makes in Slack, with the owner, the reasoning, and a link back to the source thread. It answers why questions in plain language with real citations, and it proactively warns the team when a new discussion reverses or reopens a settled decision. The people who benefit are cross-functional teams at growing companies: engineering leads, product managers, and ops folks who lose the why behind their calls.

How we built it

We built the web companion in Next.js 14 with TypeScript, Tailwind, and a small shadcn-style component layer, and packaged it with a multi-stage Docker build on standalone output. The contradiction engine records what each decision chose and rejected, then matches new messages that advocate a rejected option or drop a chosen one. We use Anthropic Claude for detection and reasoning, model the retrieval around Slack's Real-Time Search API so it stays permission-aware, and degrade gracefully to a deterministic engine and seeded data when no key is present.

Challenges we ran into

Decision detection precision was the hard one. Over-firing on casual chatter would kill trust, so we lead with a one-tap human confirmation card before anything is committed, and we suppress the capture prompt when a message clearly reverses an existing decision so the warning stays the focus. The second challenge was making the whole thing demo without any setup, which pushed us to build a real local reasoning engine rather than only calling out to an API.

Accomplishments that we're proud of

The contradiction catch genuinely lands in seconds, and it reads like a teammate gently saying you already decided the opposite, here is why. We are proud that every answer and every alert carries provenance back to a real thread, and that the entire product is explorable in demo mode with zero keys while still upgrading cleanly to live Claude reasoning.

What we learned

Memory for agents is not retrieval. The interesting work is handling contradiction and staleness, which classical keyword search ignores entirely. Tracking what was rejected, not just what was chosen, turned out to be the single most useful piece of structure for catching reversals.

What's next for Verdict Memory

We want to wire the live Slack MCP server so capture cards and alerts post into real channels, add one-click decision-history export to a Slack canvas for onboarding, score decision confidence as evidence accumulates or ages, and surface team analytics on which topics get re-litigated most.

Built with

Next.js 14, TypeScript, Tailwind CSS, shadcn/ui, Radix UI, Anthropic Claude, Slack Real-Time Search API, Slack MCP server, lucide-react, and Docker.

Built With

  • anthropic-claude
  • docker
  • lucide-react
  • next.js-14
  • radix-ui
  • shadcn-ui
  • slack-mcp-server
  • slack-real-time-search-api
  • tailwindcss
  • typescript
Share this project:

Updates