homeworkfun
linkedinresume
TARS

Designing the agent configuration platform and design system for Asimov

Resources uploaded (3)

What did we ship in the last release?

Release 4.2 added custom actions and faster syncs for Notion pages.

SourceProduct Wiki

TypePage
LocationAcmeProduct
Pages synced74Includes subpages
Last syncedIn progressStarted just now
TypePage
LocationAcmeSales
Pages synced96Includes subpages
Last synced2 days agoAuto-sync on
TypePage
LocationAcmeClients
Pages synced38Includes subpages
Last syncedYesterdayAuto-sync on

Add Knowledge

Knowledge TypeNotionAcme workspaceConnected

Shipped

Dec 2023 – Apr 2024 · 5 releases

Role

Product Designer · Founding designer, Asimov

Team

CTO · Eng lead · 4 developers · QA · Designer (me)

Key contributions

Research, product design, design system, design QA

What is Asimov?

Asimov is Tars’ AI agent that lives in Slack. It started as a thread summarizer for startups and grew into a teammate that could answer from company docs and kick off work in other tools.

I joined Tars as one of its first two designers, and owned Asimov, the new product line, alongside its founders.

5 capabilities

designed and shipped in 5 months, including knowledge sources, answer verification and custom actions

~74%

fewer repeat questions landing on teammates, now answered by Asimov

86%

of Asimov's answers rated helpful across Tars and the startup teams using it

My role

I owned design for a new AI product line at Tars

As Asimov’s founding designer, my scope went well past just UI design. I ran the research the PRD evolved from, designed the platform teams used to configure Asimov and built the design system behind it, which cut handoff-to-release time by ~60%.

Through detailed handoff documentation and thorough QA sessions, I kept every build true to the design.

The problem

Startup teams lost time digging through Slack and switching between tools

At the startups I talked to, most work began in Slack, and so did most of what people needed to know. Finding one detail meant scrolling back through long threads, because Slack’s search couldn’t surface it.

The same questions kept coming back as a result. A customer success rep might ask the engineering lead about the same API failure several times over a few months.

Once they found an answer, the work moved elsewhere. The rep would carry the context into HubSpot or a client report by hand, and every switch between tools cost time and focus.

# client-escalations

CS rep 10:42 AM

Acme’s API calls are failing again. Didn’t we fix this before?
1

Eng lead 10:58 AM

Yes, back in March. Let me find the thread…64 repliesLast reply 5 months ago
2

CS rep 11:20 AM

Thanks! Updating the client now.
3
  1. 1

    Repeat questions

    The same API failure, asked again months later

  2. 2

    Buried answers

    The fix lived in a long thread that Slack's search couldn't surface

  3. 3

    Context copied by hand

    The answer carried into HubSpot or a client report, one tool at a time

How might we give startup teams an AI assistant in Slack that can find answers across their conversations and docs and act in their other tools, while they decide what it can see and do?

Five releases

How Asimov grew, one release at a time

Each release took two and a half to three weeks from MVP design to launch. Of the four that came after the pilot in Release 1, I pushed for three.

Initial direction

One agent that held every team's context

Why: every team shared the pains above, but each wanted something different from an AI agent: engineering wanted GitHub workflows, sales wanted CRM updates and marketing wanted help with content.

My approach: my early designs gave each use-case its own Slack agent. A stakeholder review showed that several agents in one workspace would be hard to scale and manage, so I redesigned Asimov as one agent holding many contexts, with each team’s knowledge sources (the channels and docs it could read) managed separately.

Early direction

  • asimov-engineeringAPP
  • asimov-salesAPP
  • asimov-marketingAPP
  • asimov-customer-successAPP
  • asimov-designAPP

One agent per team, so five bots to set up, manage and choose between

What shipped

  • asimovAPP

One agent that held every team's context, with each team's sources managed separately

Release 1

Summaries and answers pulled from long Slack threads

Why: people had to scroll through long threads to find one detail, because Slack’s search couldn’t surface it.

My approach: the problem was already too many tools, so I kept the pilot entirely inside Slack. Anyone could ask Asimov to summarize a thread or pull out a specific answer with its context, much like today’s AI meeting notetakers.

No configuration hub in the pilot. Adding Asimov to a channel was the whole setup, so we could test whether its answers were useful before building anything around it.

Slack thread with Asimov summarizing the conversation
Example scenario of Asimov summarizing threads

Release 2

Admin-only setup and rules for what Asimov could reveal

Why: an AI agent reading team conversations needed guardrails from day one, so I pushed for permissions right after the pilot.

My approach: I split the problem in two. Who could change Asimov needed a fast answer: only Slack workspace admins, who were already accountable for the workspace. What Asimov should say was harder, since it could read things the person asking wasn’t allowed to see. I designed a response model in Slack for those cases, covering different roles and permission clashes.

The response model is the decision I’m proudest of. It set the base for handling roles once teams were ready to share more.

Admin settings modal for managing who has access to configure Asimov
Admin-only settings for Asimov's members, channels and prompt
Asimov telling a user privately that their answer is incomplete because it drew on channels they can't access, with Request Access and Dismiss options
Asimov flagging an incomplete answer privately, with a way to request access

Release 3

Connecting company docs as knowledge sources

Why: channel history only went so far. Research showed teams needed answers from company docs too, so I pushed for knowledge sources next.

My approach: I designed the first configuration flow around one idea: admins control what the agent can read and use. They picked sources and channels, saw each source’s sync status and could re-sync or schedule syncs. Each integration showed what data Asimov could read. My bet was that control would build confidence, and confidence would drive adoption.

I limited Asimov to public information. Teams in early 2024 were wary of giving an AI private data, so I parked private sources for later and let trust build first.

Integrations shipped alongside, since connecting an app like Notion is what makes it a knowledge source.

Knowledge dashboard

Adding knowledge sources and Slack channels

Integrations hub

What each integration can read

Release 4

Two ways to check every answer Asimov gave

Why: once Asimov answered from company docs, people needed to check it. AI interaction patterns were still forming in early 2024, and I was convinced an agent holding team information had to show its sources to be trusted. I pushed for this release.

My approach: I designed two ways to verify an answer: the sources Asimov used and the steps it took. Together they covered both ways an answer could go wrong. A hallucination got a thumbs down with optional feedback, and stale information got fixed by updating the source. The same thumbs up and down gave us the 86% helpful score.

This is where repeat questions dropped. Asked about a past API failure, Asimov linked the original thread, and the engineering lead didn’t have to explain it again.

Inspect Asimov Response panel listing the steps Asimov took to answer a request, with the first step expanded to show the tool and query it used
Inspecting the steps Asimov took to reach an answer

Release 5

Custom actions to trigger work in other tools from Slack

Why: research surfaced one clear automation opportunity: with a situation’s full context, Asimov could let teams trigger every related task from Slack. The CTO pushed for Actions next.

My approach: letting an AI act in other tools raised the stakes, so we piloted custom actions first and I kept them simple on purpose. Teams wrote their own through a configurable schema. Tars’ CEO set up /linkedin to have Asimov draft a LinkedIn post in his voice whenever a developer announced a release. This let us test whether Asimov acted safely before anyone connected their own tools and APIs.

I designed built-in actions for connected tools as the next step, so admins could switch actions on or off for each app. They never shipped, but they held to the principle behind every release: admins decide what Asimov can do.

Action configuration

Writing a custom action

Asimov pulling an answer from a connected app

Slack thread showing Asimov integrating with another app

Design system

Building the design system that cut handoff-to-release time by ~60%

I held off on a design system until Asimov needed its own interface. From then on, every release added more screens.

I started with the components: 20+ of them, with 90+ variants covering every state a screen could show. They carried the product’s rules too. The knowledge accordion had a variant for each Slack channel type, and sync and training status showed admins where each source stood. I later formalized the system into 100+ tokens.

Once it was built, a new design went from handoff to release in about two days, down from at least a week. Its core components later moved into Tars’ main product, restyled to match.

Asimov's design system: color and type foundations, then components (sync status pills, buttons and the accordion in its closed and open states), then the Manage Knowledge screen built from them

Reflections

What I'd take into the next project

Ship a first version of the future, even a small one

I parked access to private sources, with roles deciding who could see what, as future scope, and every required update pushed it further back. Next time I'd put a first version of that layer into the release cycle, even one that simply mirrored Slack's permissions, so it already had a place in the product.