Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s
195 lines
5.8 KiB
TypeScript
195 lines
5.8 KiB
TypeScript
import { sharedAssetUrls } from '../data/shared-asset-urls';
|
|
import { PAGE_ITEM_IDS } from './page-item-ids';
|
|
|
|
export type ResponseChip = {
|
|
logoUrl: string;
|
|
name: string;
|
|
};
|
|
|
|
type ProductVisualSceneKind =
|
|
| 'leadCreation'
|
|
| 'opportunityReview'
|
|
| 'taskCreation'
|
|
| 'dashboardCreation'
|
|
| 'workflowCreation';
|
|
|
|
export type AgentToolIcon =
|
|
| 'search'
|
|
| 'filter'
|
|
| 'notes'
|
|
| 'tasks'
|
|
| 'record'
|
|
| 'workflow'
|
|
| 'mail';
|
|
|
|
export type AgentStep =
|
|
| { kind: 'thinking'; durationMs: number }
|
|
| {
|
|
kind: 'tool';
|
|
icon: AgentToolIcon;
|
|
running: string;
|
|
done: string;
|
|
durationMs: number;
|
|
};
|
|
|
|
export type ProductVisualSceneDefinition = {
|
|
initialPageItemId: string;
|
|
kind: ProductVisualSceneKind;
|
|
label: string;
|
|
responseChips: ResponseChip[];
|
|
responseText: string[];
|
|
sidebarMode?: 'collapsed' | 'expanded';
|
|
steps?: AgentStep[];
|
|
};
|
|
|
|
function companyLogo(domain: string): string {
|
|
const url = sharedAssetUrls.companyLogoForDomain(domain);
|
|
if (url === undefined) {
|
|
throw new Error(`Missing shared company logo for "${domain}"`);
|
|
}
|
|
return url;
|
|
}
|
|
|
|
export const PRODUCT_VISUAL_SCENES: ProductVisualSceneDefinition[] = [
|
|
{
|
|
initialPageItemId: PAGE_ITEM_IDS.companies,
|
|
kind: 'leadCreation',
|
|
label: 'Add a new lead',
|
|
responseText: [],
|
|
responseChips: [],
|
|
sidebarMode: 'expanded',
|
|
},
|
|
{
|
|
initialPageItemId: PAGE_ITEM_IDS.opportunities,
|
|
kind: 'opportunityReview',
|
|
label: 'Build a pipeline board grouped by stage',
|
|
responseText: [
|
|
'Organized your open deals into a **pipeline board** grouped by stage — **New**, **Screening**, **Meeting**, **Proposal**, and **Customer**.',
|
|
'Drag a card to move a deal forward, or open one to see the full history.',
|
|
],
|
|
responseChips: [
|
|
{ name: 'Anthropic', logoUrl: companyLogo('anthropic.com') },
|
|
{ name: 'Notion', logoUrl: companyLogo('notion.com') },
|
|
{ name: 'Github', logoUrl: companyLogo('github.com') },
|
|
{ name: 'Airbnb', logoUrl: companyLogo('airbnb.com') },
|
|
{ name: 'Figma', logoUrl: companyLogo('figma.com') },
|
|
{ name: 'Stripe', logoUrl: companyLogo('stripe.com') },
|
|
{ name: 'Mailchimp', logoUrl: companyLogo('mailchimp.com') },
|
|
],
|
|
sidebarMode: 'collapsed',
|
|
steps: [
|
|
{ kind: 'thinking', durationMs: 1200 },
|
|
{
|
|
kind: 'tool',
|
|
icon: 'search',
|
|
running: 'Reading your open deals',
|
|
done: 'Read 24 deals',
|
|
durationMs: 1000,
|
|
},
|
|
{
|
|
kind: 'tool',
|
|
icon: 'record',
|
|
running: 'Building the pipeline board',
|
|
done: 'Built the board',
|
|
durationMs: 800,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
initialPageItemId: PAGE_ITEM_IDS.tasks,
|
|
kind: 'taskCreation',
|
|
label:
|
|
'Generate follow-up tasks for my top 10 accounts using notes to gather context',
|
|
responseText: [
|
|
'Created **10 follow-up tasks** dated **Nov 1 through Nov 8**.',
|
|
'The first rows cover Anthropic, Slack, Figma, Notion, and Github, followed by Airbnb, Stripe, Sequoia, Accel, and Google.',
|
|
],
|
|
responseChips: [
|
|
{ name: 'Anthropic', logoUrl: companyLogo('anthropic.com') },
|
|
{ name: 'Slack', logoUrl: companyLogo('slack.com') },
|
|
{ name: 'Figma', logoUrl: companyLogo('figma.com') },
|
|
{ name: 'Notion', logoUrl: companyLogo('notion.com') },
|
|
{ name: 'Github', logoUrl: companyLogo('github.com') },
|
|
{ name: 'Airbnb', logoUrl: companyLogo('airbnb.com') },
|
|
{ name: 'Stripe', logoUrl: companyLogo('stripe.com') },
|
|
{ name: 'Sequoia', logoUrl: companyLogo('sequoia.com') },
|
|
{ name: 'Accel', logoUrl: companyLogo('accel.com') },
|
|
{ name: 'Google', logoUrl: companyLogo('google.com') },
|
|
],
|
|
sidebarMode: 'collapsed',
|
|
steps: [
|
|
{ kind: 'thinking', durationMs: 1200 },
|
|
{
|
|
kind: 'tool',
|
|
icon: 'notes',
|
|
running: 'Reading notes on your top 10 accounts',
|
|
done: 'Read 10 accounts',
|
|
durationMs: 1100,
|
|
},
|
|
{
|
|
kind: 'tool',
|
|
icon: 'tasks',
|
|
running: 'Creating 10 follow-up tasks',
|
|
done: 'Created 10 tasks',
|
|
durationMs: 900,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
initialPageItemId: PAGE_ITEM_IDS.salesDashboard,
|
|
kind: 'dashboardCreation',
|
|
label: 'Build a dashboard of pipeline by stage and ARR',
|
|
responseText: [
|
|
'Built a **Sales dashboard** with live KPIs — **$12.9M pipeline**, **$2.4M won this quarter**, and a **38% win rate** — plus charts for deals by stage and ARR over time.',
|
|
'It refreshes automatically as your data changes.',
|
|
],
|
|
responseChips: [],
|
|
sidebarMode: 'collapsed',
|
|
steps: [
|
|
{ kind: 'thinking', durationMs: 1200 },
|
|
{
|
|
kind: 'tool',
|
|
icon: 'search',
|
|
running: 'Aggregating pipeline and revenue',
|
|
done: 'Aggregated 24 deals',
|
|
durationMs: 1000,
|
|
},
|
|
{
|
|
kind: 'tool',
|
|
icon: 'record',
|
|
running: 'Assembling the dashboard',
|
|
done: 'Built the dashboard',
|
|
durationMs: 900,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
initialPageItemId: PAGE_ITEM_IDS.workflowEmailSequence,
|
|
kind: 'workflowCreation',
|
|
label: 'Draft a workflow that sends an email sequence',
|
|
responseText: [
|
|
'Created and activated a sequence with a **Manual trigger**, an **Iterator**, and a **Send Email** step.',
|
|
'It is ready to run now, and filters or email copy can be refined next.',
|
|
],
|
|
responseChips: [],
|
|
sidebarMode: 'collapsed',
|
|
steps: [
|
|
{ kind: 'thinking', durationMs: 1200 },
|
|
{
|
|
kind: 'tool',
|
|
icon: 'workflow',
|
|
running: 'Designing the workflow',
|
|
done: 'Designed 3 steps',
|
|
durationMs: 1000,
|
|
},
|
|
{
|
|
kind: 'tool',
|
|
icon: 'mail',
|
|
running: 'Activating the sequence',
|
|
done: 'Activated sequence',
|
|
durationMs: 800,
|
|
},
|
|
],
|
|
},
|
|
];
|