Winston Legal Front Door — Project Writeup

Joe Chiusano · 16 September 2026 · Salesforce and integration contributor on a client's in-house legal-operations app · client name withheld
Production cutover proven 15 Sep 2026
61pull requests merged (of 68 opened)
66commits, 27 Aug – 16 Sep
20,407lines added · 1,934 removed
95open Cases imported silently at go-live
17offline test harnesses

Summary

Winston is the in-house legal-operations application of a client’s legal team, built and owned by their engineer on that team. Between 7 August and 16 September 2026 I joined it as the Salesforce and integration contributor and built the Legal Front Door’s back half: the layer that turns a Slack request into a Salesforce Case, keeps the two systems agreeing about owner and status, self-serves NDAs, DPAs and ESAs through Ironclad, and lets the app cut over from a sandbox to production behind one switch. Sixty-one of my pull requests merged in three weeks. The production cutover was proven on 15 September and the open Case backlog was imported the same day without paging a single lawyer.

What Winston is

Winston is a React single-page app on Firebase Hosting with roughly 25 Firestore collections, Cloud Functions for every privileged write, scheduled pollers, and an LLM-backed assistant behind a Cloud Run proxy. Google SSO limits it to the company’s domain. It integrates with Salesforce, Ironclad, DocuSign, Slack, Google Drive and Jira.

Thirteen modules sit in three tiers. The standard tier is Home, Deal Desk, Deal Brain and Deal Lifecycle. The premium tier adds Matters, Legal Brain, Legal Intake, Legal Front Door and Quote Integrity. The operator tier is the author’s console. My work lives almost entirely in the Legal Front Door and the Cloud Functions behind it.

The Legal Front Door is the intake product: a requester asks for legal help in Slack, Winston classifies it into one of 13 request types, files it, routes it to the right lawyer, and keeps the requester informed through to close. Before my involvement it filed into a sandbox only, nothing wrote Salesforce state back to Winston, and three of the request types had no automated path.

My role and timeline

Date Milestone
7 Aug Read-only architecture review of the app at v2.33.0. Six ranked findings delivered, including the “Needs attention” widget that silently scoped to the viewer’s own name and 318 of 377 active deals with no Legal Lead.
20 Aug Repo write access and a staging Firebase project. Local environment stood up; two setup traps documented for the next contributor.
21 Aug First Salesforce-side change in both orgs: a read-only permission set exposing account-level GenAI opt-in to the integration user.
27 Aug First merged pull request: the Salesforce-to-Winston Case mirror.
9 Sep Backend test pass on the intake pipeline; audit register delivered.
10–14 Sep The self-serve document lanes, reassignment, Chatter, and the Salesforce field contract. Forty-five pull requests merged in five days.
15 Sep Production cutover switch merged and exercised. Ninety-five open production Cases imported as Winston tickets, silently.
16 Sep Pre-go-live review: stop runbook, orphan-notification sweep, access matrix and routing matrix reconciled with main.

Throughout, the application’s author owned the product, the architecture, review and deployment. I opened pull requests; they merged and shipped them.

What I built

1. Salesforce as the system of record

2. Self-serve documents through Ironclad

3. Safety interlocks

4. Go-live operations

How I worked

By the numbers

Measured on origin/main and the GitHub pull request list on 16 September 2026.

Mine The author
Pull requests opened / merged 68 / 61 46 / 40
Commits, excluding merges 66 392
Lines added / removed 20,407 / 1,934 159,320 / 20,192
Active window 27 Aug – 16 Sep 2026 since inception

Total pull requests on the repo: 119. Files I touched most: lfd-intake.ts (33 commits), sf-demo.ts (17), lfd-triage.ts (16), ironclad-launch.ts (15), index.ts (15).

Findings worth keeping

Numbers measured on the repository's main branch and its pull request list, 16 September 2026.