The decision wall: every call captured in seconds, searchable months later.

Connectors that met teams where they worked

Decisions happen in Slack, Figma, and design reviews, so I put the capture in all three, where teams already worked.

Slack: /pin from any channel

I put capture inside Slack as a /pin command: any member of a connected workspace could type it, the decision landed on the wall instantly, and @mentions triggered a DM. Nobody had to leave the conversation to record it.

Figma: pin without leaving the canvas

I built the plugin to attach file and page context automatically, so a call made in a review carried its artwork with it. Published on the Figma Community.

Decide together, without the anchoring

I made alignment votes anonymous until close: members voted without seeing the tally, and results stayed hidden until voting ended, so the first vote never anchored the rest.

Dcyde login page with Continue with Google, Microsoft, email, and Sign in with SSO

Four ways in, one account

I shipped four ways in, all resolving to a single identity: Google, Microsoft, SAML SSO, and email magic link.

Archie, an AI companion

Archie lives in every room as a small face on the right edge. It explains, summarizes and checks, and every change it suggests waits for a human click.

Archie tethered to a decision card, with a summary and related earlier and later decisions

Explain a decision

You drag a line from Archie to any decision card. Archie reads the room's history and returns a short summary, plus up to four related decisions marked Earlier or Later. Each one scrolls to its card.

The agent's work shows as three fixed steps with one live detail line, such as searching "billing". People can see what it does without reading a log.

Archie's Catch me up panel with the last ten decisions and an open vote

Catch me up

Archie summarizes the decisions you haven't read yet, or the last ten if you're up to date. It flags open votes and decisions that were reversed.

Check my draft flagging a duplicate of an earlier decision, with Use this wording and Keep mine buttons

Check my draft

Before you post, Archie looks for earlier decisions the draft conflicts with or repeats. It tags them Conflict, Duplicate or Unclear and suggests new wording. You choose "Use this wording" or "Keep mine".

When the two models disagree, the item shows as Unclear and a person judges it. It costs a third tag, and nothing gets hidden quietly.

Archie on a phone, as a bottom sheet with a catch-up summary and both tools

On a phone

Archie docks above the + button and opens as a bottom sheet, with both tools at the bottom. A tap replaces the drag, then you pick the decision to explain.

Under the hood

I built three client surfaces (web, the Figma plugin, and Slack) onto one realtime core. A decision pinned in Slack was on every screen before the modal closed.

Dcyde system architectureThree client surfaces (the React web app, the Figma plugin, and the Slack slash-pin command) all talk in real time to one core: Firestore plus 58 Cloud Functions in europe-west1. The core drives four server-side services: Resend for transactional email in English and French, Stripe for enterprise billing, WorkOS for SAML single sign-on, and the Slack API for DMs and modals, plus four scheduled cron jobs. Each node is a button that shows why-and-how details below the diagram.

core · firestore + cloud functions

Why

One realtime hub means every surface reads and writes the same wall, live, with no REST layer to babysit. Sync is what the product feels like.

How

Firestore governed by a heavily-audited security-rules file (the real API contract) plus 58 Cloud Functions v2 on Node 22 in europe-west1 for the privileged parts: webhooks, emails, billing, crons.