← All projects

Internal toolsIn production

Sidekick + CS Dashboard

Building an AI assistant and the platform behind it.

Forge Notable Winner · US$10,000
Sidekick with a case-aware resolution draft, an Insert draft button, and Auto-draft, Rephrase, and Escalate modes.
Reply drafting in IntercomSanitized
Of human-handled tickets used Sidekick
47%
6,593 of 13,951 tickets · June 1–September 29, 2026; Fin-resolved tickets excluded.
Payment cases tracked in the shared CS and Operations pipeline
853
All-time total as of September 29, 2026, including cases logged before the July spreadsheet cutover.
To notify and close 74 incident tickets
7m 13s
July 29, 2026 · Zero failed items in this run. Execution time for one audited batch, not the whole incident.

The short version

The problem
Conversation context, payment cases, and reporting lived across separate tools.
What I built
Sidekick, a Chrome extension that drafts replies inside Intercom, and CS Dashboard, a web platform for payment cases, analytics, and controlled bulk actions. I own development, AI integration, rollout, and measurement.
CS Dashboard's Sidekick Analytics page with adoption and editing metrics, quality distribution, usage trend, draft lifecycle, and feature usage.
Sidekick Analytics, inside CS Dashboard

Live All Time view captured September 24, 2026, cropped to aggregate analytics; its drafting-time figure is modeled, not measured.

Screenshot viewer. Choose Actual size, then use the arrow keys or Page Up and Page Down to inspect the image.

Sidekick Analytics, inside CS Dashboard

Open original (opens in a new tab)Fitted to your screen.
Screenshot source & context

Live All Time view captured September 24, 2026, cropped to aggregate analytics; its drafting-time figure is modeled, not measured.

Sidekick: context handling and draft recovery

Sidekick is a Chrome extension that helps agents reply without leaving Intercom. It can draft a response from the active conversation, improve an existing draft, or prepare a structured escalation. The agent reviews the output and remains responsible for sending it.

Unfinished replies are preserved, and suggestions stay attached to the right case while agents switch conversations or keep typing during generation. Selected sensitive values are replaced in the browser before generation.

Sidekick has recorded 13,362 drafts sent as of September 29, 2026. Across all message sends, agents have sent 15,780 messages through Sidekick.

Sidekick with a case-aware resolution draft, an Insert draft button, and Auto-draft, Rephrase, and Escalate modes.
A draft beside the conversation

Sidekick prepares the reply, and the agent decides whether to insert, review, and send it in Intercom (LFG evidence packet, page 2).

Screenshot viewer. Choose Actual size, then use the arrow keys or Page Up and Page Down to inspect the image.

A draft beside the conversation

Open original (opens in a new tab)Fitted to your screen.
Screenshot source & context

Sidekick prepares the reply, and the agent decides whether to insert, review, and send it in Intercom (LFG evidence packet, page 2).

All five rostered agents used Sidekick in the 30 days to August 31. In that window, 84% of scored sends needed no or light editing: 3,522 of 4,201.

CS Dashboard: backend services and telemetry

A React interface connects agents, managers, and Operations to Fastify services, PostgreSQL, and Redis. Overview shows workload, coverage, and emerging issues. Performance tracks response times, resolution effort, quality signals, and service levels.

Sidekick Analytics connects drafting activity, captured sends, and editing behavior. AI Coach assembles coaching reports, and Monthly Pulse turns capacity, coverage, and quality into a leadership readout.

Payment cases: transactions and concurrency

Replaced the team's payment-tracking spreadsheet with a shared workflow for Customer Support and Operations. The pipeline has tracked 853 cases, including 372 created automatically, and connects case ownership, resolution notes, customer follow-up and completion in one place.

Payment Issues became the system of record at the July 2026 cutover. The case history reaches further back, so the cumulative total includes cases logged before the spreadsheet was retired. Cases move through visible stages with ownership, payment details, activity history, and Slack updates, and Operations can work them without an Intercom seat.

Case changes and audit history are committed together. Duplicate-case checks handle competing requests, and stale edits are rejected.

When Operations resolves an eligible refund case, automation handles the customer notification, closes the ticket, and moves the card to Completed. Some cases deliberately complete without sending a message. Other payment resolutions stay with an agent: Sidekick prepares a case-specific reply from the case data and Operations notes, and the agent reviews and sends it before confirming completion.

CS Dashboard payment pipeline with Awaiting Ops, Investigating, Sent to Provider, Awaiting Customer, and Resolved lanes. Cases use fictional customer details.
A shared payment workflow

Sanitized screenshot with fictional customer names, emails, and case IDs; workflow states, tags, counts, and timestamps are preserved (LFG evidence packet, page 3).

Screenshot viewer. Choose Actual size, then use the arrow keys or Page Up and Page Down to inspect the image.

A shared payment workflow

Open original (opens in a new tab)Fitted to your screen.
Screenshot source & context

Sanitized screenshot with fictional customer names, emails, and case IDs; workflow states, tags, counts, and timestamps are preserved (LFG evidence packet, page 3).

853 cases tracked as of September 29, 2026: 372 created automatically and 481 manually, so about 44% of recorded cases were created automatically. The operations dashboard shows 112 refund completion transitions: 67 notification outcomes and 45 automatic no-message skips.

Controlled automation for incident response

An incident first prompted a bulk-action script. I turned it into a dashboard workflow with marker-based selection, a mandatory preview, a per-run cap, duplicate-action controls, and audit records.

The largest audited run, on July 29, notified and closed 74 of 74 tickets with zero failed items in 7 minutes 13 seconds of execution time. Across three runs from June 30 through August 31, all 87 ticket work units reconciled.

From a one-off script to a controlled workflow
  1. SelectMarker-based ticket selection
  2. PreviewReview scope before execution
  3. ExecuteCapped, duplicate-controlled actions
  4. ReconcilePer-item results and audit records
Bulk Operations form with marker-based selection, Notify, Leave note, and Close options, a per-run cap, and a mandatory Preview matches step.
Preview before action

Selection, action scope, and a required preview are explicit before a run can proceed (LFG evidence packet, page 4).

Screenshot viewer. Choose Actual size, then use the arrow keys or Page Up and Page Down to inspect the image.

Preview before action

Open original (opens in a new tab)Fitted to your screen.
Screenshot source & context

Selection, action scope, and a required preview are explicit before a run can proceed (LFG evidence packet, page 4).

Analytics & reporting

I developed recurring Voice of the Customer reports from conversation data and followed up with targeted investigations. The July report reconciled 5,964 conversations against Intercom totals.

I also delivered a 90-day corpus of 9,642 categorized, PII-redacted messages to Growth, and a 94-record migration-risk snapshot that my manager made a standing CS workflow feeding Risk reporting.

Decisions & evidence

Engineering decisions

Keep assistance inside the workflow

Sidekick works in Intercom, operational updates reach Slack, and managers use shared reporting. The tools follow how the team already works.

Use explicit rules for operational actions

AI helps with language and synthesis. Payment state transitions, eligibility checks, audit records, and bulk-action controls use defined application logic.

Preserve human review

Agents review replies and escalations, managers review coaching reports, and higher-impact bulk operations require a preview before execution.

Redact before generation

The security review documents client-side tokenization, a server-side redaction backstop, and a reversal map kept in the browser. Pattern-based redaction has limits, so it is one layer alongside restricted access and human review.

Make audit logging a precondition

The documented backend wrappers record a redaction audit event before calling the model. If that write fails, the request is aborted. AI output has no autonomous operational write authority.

Treat safeguards as product

Team feedback shaped draft recovery, visible automation failures, and required previews. Those controls earn trust as much as the AI generation does.

Recognition & broader contribution

Forge Notable Winner

The combined Sidekick + CS Dashboard submission received a US$10,000 award.

Frontline delivery alongside the build

From January to August 2026 I also sent 4,088 customer replies, closed 2,879 conversations, and held a 4.8 dashboard CSAT while developing and operating these tools.

Documented security review

The security review records GREEN outcomes for both repositories on May 15, 2026, following remediation. Governance and employee-privacy workstreams are tracked separately.

Measurement & source notes

Ticket coverage

6,593 of 13,951 human-handled tickets (47%, rounded), June 1–September 29, 2026, excluding Fin-resolved tickets. This overlaps the earlier January–August 28% figure; it is not a before-and-after comparison.

Drafting figures

The 84% figure concerns scored sends, not all generated drafts or factual accuracy. Captured sends are events, not unique drafts or customers, and each measure uses its own denominator. The 13,362 drafts sent are reported separately from total message sends; neither count represents unique tickets. The 15,780 messages sent through Sidekick are an all-time count of send events as of September 29, 2026, not unique customers or tickets. Drafting time saved is modeled, not observed labor savings, and the live All Time screenshot covers a different range from these historical windows.

Payment case figures

The 853 cases are an all-time total as of September 29, 2026 and include cases from before the July cutover. The 44% share describes how cases were created, not how many were resolved automatically.

Refund automation figures

The 112 refund completion transitions come from the operations dashboard. Of those, 67 had a notification outcome and 45 were automatic no-message skips, so the transitions are not all customer notifications. These are workflow records, not confirmed inbox deliveries.

Bulk-run figures

7m 13s is the execution time for the audited July 29 batch, separate from the June 5 incident. It excludes surrounding incident and operator work. Counts are ticket work units, not unique customers.

Reporting figures

The Voice of the Customer report, Growth corpus, and migration-risk snapshot had different or overlapping populations, so they are not one combined reach figure.

Sources

My LFG 2026 Evidence Packet (pages 2–6, definitions on page 8) and Forge product submission. The packet's cutoff is August 31, 2026 at 21:10:30 UTC, so August 31 is partial. Ticket coverage and the drafts-sent total were updated with owner-supplied figures on September 29, 2026. Current payment and refund totals come from the CS Dashboard operations view on September 29, 2026.

Figures come from my LFG evidence packet, the Forge product submission, the security review, the September 24 case study, and the CS Dashboard operations view on September 29, 2026.

Let's
talk.

Looking for someone who can build the whole thing?

Software engineering, applied AI, and thoughtful product work. I'd like to hear what you're building.