Skip to content

Commit 8afc4f1

Browse files
authored
v0.7.22: competitor pages, seo fixes, billing usage table
2 parents 4fcfe76 + 759dddb commit 8afc4f1

180 files changed

Lines changed: 32428 additions & 4260 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 393 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,393 @@
1+
import type { PreviewWorkflow } from './workflow-data'
2+
3+
/**
4+
* Workflows shown in the academy videos, reproduced block-for-block so each
5+
* page's written supplement shows the same machine the video builds. Rows and
6+
* operation labels match the videos (which match the block registry).
7+
*/
8+
9+
/** files/intro + files/object — the invoice intake machine. */
10+
export const AV_INVOICE_INTAKE_WORKFLOW: PreviewWorkflow = {
11+
id: 'av-invoice-intake',
12+
name: 'Invoice intake',
13+
blocks: [
14+
{
15+
id: 'gmailtrigger',
16+
name: 'Gmail Email Trigger',
17+
type: 'gmail',
18+
bgColor: '#E0E0E0',
19+
position: { x: 0, y: 0 },
20+
hideTargetHandle: true,
21+
rows: [{ title: 'Include Attachments', value: 'Enabled' }],
22+
},
23+
{
24+
id: 'file',
25+
name: 'File',
26+
type: 'file',
27+
bgColor: '#40916C',
28+
position: { x: 340, y: 0 },
29+
rows: [
30+
{ title: 'Operation', value: 'Read' },
31+
{ title: 'Files', value: '<gmailtrigger.attachments[0]>' },
32+
],
33+
},
34+
{
35+
id: 'agent',
36+
name: 'Agent',
37+
type: 'agent',
38+
bgColor: '#33C482',
39+
position: { x: 680, y: 0 },
40+
rows: [
41+
{ title: 'Messages', value: 'Extract the invoice fields' },
42+
{ title: 'Model', value: 'claude-sonnet-4-6' },
43+
{ title: 'Files', value: '<file.files[0]>' },
44+
],
45+
},
46+
{
47+
id: 'supabase',
48+
name: 'Supabase',
49+
type: 'supabase',
50+
bgColor: '#1C1C1C',
51+
position: { x: 1020, y: 0 },
52+
rows: [
53+
{ title: 'Operation', value: 'Create a Row' },
54+
{ title: 'Table', value: 'invoices' },
55+
{ title: 'Data', value: '<agent.content>' },
56+
],
57+
},
58+
],
59+
edges: [
60+
{ id: 'trigger-file', source: 'gmailtrigger', target: 'file' },
61+
{ id: 'file-agent', source: 'file', target: 'agent' },
62+
{ id: 'agent-supabase', source: 'agent', target: 'supabase' },
63+
],
64+
}
65+
66+
/** agents/block — the Qualify agent the camera rides through. */
67+
export const AV_QUALIFY_WORKFLOW: PreviewWorkflow = {
68+
id: 'av-qualify',
69+
name: 'Qualify a lead',
70+
blocks: [
71+
{
72+
id: 'start',
73+
name: 'Start',
74+
type: 'start_trigger',
75+
bgColor: '#2FB3FF',
76+
position: { x: 0, y: 0 },
77+
hideTargetHandle: true,
78+
rows: [{ title: 'Input', value: 'Lead' }],
79+
},
80+
{
81+
id: 'qualify',
82+
name: 'Qualify',
83+
type: 'agent',
84+
bgColor: '#33C482',
85+
position: { x: 340, y: 0 },
86+
rows: [
87+
{ title: 'Messages', value: 'Qualify this lead: <start.input>' },
88+
{ title: 'Model', value: 'claude-sonnet-4-6' },
89+
],
90+
},
91+
{
92+
id: 'response',
93+
name: 'Response',
94+
type: 'response',
95+
bgColor: '#2F55FF',
96+
position: { x: 680, y: 0 },
97+
rows: [{ title: 'Data', value: '<qualify.content>' }],
98+
},
99+
],
100+
edges: [
101+
{ id: 'start-qualify', source: 'start', target: 'qualify' },
102+
{ id: 'qualify-response', source: 'qualify', target: 'response' },
103+
],
104+
}
105+
106+
/** agents/memory — the Support agent with Memory set to Conversation. */
107+
export const AV_MEMORY_WORKFLOW: PreviewWorkflow = {
108+
id: 'av-memory',
109+
name: 'Support agent with memory',
110+
blocks: [
111+
{
112+
id: 'start',
113+
name: 'Start',
114+
type: 'start_trigger',
115+
bgColor: '#2FB3FF',
116+
position: { x: 0, y: 0 },
117+
hideTargetHandle: true,
118+
rows: [{ title: 'Input', value: 'Customer message' }],
119+
},
120+
{
121+
id: 'support',
122+
name: 'Support',
123+
type: 'agent',
124+
bgColor: '#33C482',
125+
position: { x: 340, y: 0 },
126+
rows: [
127+
{ title: 'Messages', value: '<start.input>' },
128+
{ title: 'Model', value: 'claude-sonnet-4-6' },
129+
{ title: 'Memory', value: 'Conversation · user-123' },
130+
],
131+
},
132+
],
133+
edges: [{ id: 'start-support', source: 'start', target: 'support' }],
134+
}
135+
136+
/** tables/operations — the Table block with a filtered query. */
137+
export const AV_TABLE_OPS_WORKFLOW: PreviewWorkflow = {
138+
id: 'av-table-ops',
139+
name: 'Query the tickets table',
140+
blocks: [
141+
{
142+
id: 'start',
143+
name: 'Start',
144+
type: 'start_trigger',
145+
bgColor: '#2FB3FF',
146+
position: { x: 0, y: 0 },
147+
hideTargetHandle: true,
148+
rows: [{ title: 'Input', value: 'Run' }],
149+
},
150+
{
151+
id: 'table',
152+
name: 'Table 1',
153+
type: 'table',
154+
bgColor: '#10B981',
155+
position: { x: 340, y: 0 },
156+
rows: [
157+
{ title: 'Operation', value: 'Query Rows' },
158+
{ title: 'Table', value: 'tickets' },
159+
{ title: 'Filter Conditions', value: 'priority equals high' },
160+
],
161+
},
162+
],
163+
edges: [{ id: 'start-table', source: 'start', target: 'table' }],
164+
}
165+
166+
/** agents/tool-calling — the Qualify agent with research tools attached. */
167+
export const AV_TOOLS_WORKFLOW: PreviewWorkflow = {
168+
id: 'av-tools',
169+
name: 'Qualify with tools',
170+
blocks: [
171+
{
172+
id: 'start',
173+
name: 'Start',
174+
type: 'start_trigger',
175+
bgColor: '#2FB3FF',
176+
position: { x: 0, y: 0 },
177+
hideTargetHandle: true,
178+
rows: [{ title: 'Input', value: 'Lead' }],
179+
},
180+
{
181+
id: 'qualify',
182+
name: 'Qualify',
183+
type: 'agent',
184+
bgColor: '#33C482',
185+
position: { x: 340, y: 0 },
186+
rows: [
187+
{ title: 'Messages', value: 'Qualify this lead: <start.input>' },
188+
{ title: 'Model', value: 'claude-sonnet-4-6' },
189+
],
190+
tools: [
191+
{ type: 'exa', name: 'Search', bgColor: '#1F40ED' },
192+
{ type: 'github', name: 'GitHub', bgColor: '#181717' },
193+
{ type: 'hubspot', name: 'CRM', bgColor: '#FF7A59' },
194+
],
195+
},
196+
{
197+
id: 'response',
198+
name: 'Response',
199+
type: 'response',
200+
bgColor: '#2F55FF',
201+
position: { x: 680, y: 0 },
202+
rows: [{ title: 'Data', value: '<qualify.content>' }],
203+
},
204+
],
205+
edges: [
206+
{ id: 'start-qualify', source: 'start', target: 'qualify' },
207+
{ id: 'qualify-response', source: 'qualify', target: 'response' },
208+
],
209+
}
210+
211+
/** agents/skills — the same agent with a skill attached. */
212+
export const AV_SKILLS_WORKFLOW: PreviewWorkflow = {
213+
id: 'av-skills',
214+
name: 'Qualify with a skill',
215+
blocks: [
216+
{
217+
id: 'start',
218+
name: 'Start',
219+
type: 'start_trigger',
220+
bgColor: '#2FB3FF',
221+
position: { x: 0, y: 0 },
222+
hideTargetHandle: true,
223+
rows: [{ title: 'Input', value: 'Lead' }],
224+
},
225+
{
226+
id: 'qualify',
227+
name: 'Qualify',
228+
type: 'agent',
229+
bgColor: '#33C482',
230+
position: { x: 340, y: 0 },
231+
rows: [
232+
{ title: 'Messages', value: 'Qualify this lead: <start.input>' },
233+
{ title: 'Model', value: 'claude-sonnet-4-6' },
234+
{ title: 'Skills', value: 'answer-with-citations' },
235+
],
236+
tools: [{ type: 'exa', name: 'Search', bgColor: '#1F40ED' }],
237+
},
238+
],
239+
edges: [{ id: 'start-qualify', source: 'start', target: 'qualify' }],
240+
}
241+
242+
/** chat/intro — the support-desk workflow the chat operates. */
243+
export const AV_SUPPORT_DESK_WORKFLOW: PreviewWorkflow = {
244+
id: 'av-support-desk',
245+
name: 'support-desk',
246+
blocks: [
247+
{
248+
id: 'start',
249+
name: 'Start',
250+
type: 'start_trigger',
251+
bgColor: '#2FB3FF',
252+
position: { x: 0, y: 60 },
253+
hideTargetHandle: true,
254+
rows: [{ title: 'Input', value: 'Ticket' }],
255+
},
256+
{
257+
id: 'triage',
258+
name: 'Triage',
259+
type: 'agent',
260+
bgColor: '#33C482',
261+
position: { x: 320, y: 60 },
262+
rows: [
263+
{ title: 'Messages', value: '<start.input>' },
264+
{ title: 'Model', value: 'claude-sonnet-4-6' },
265+
],
266+
tools: [{ type: 'knowledge', name: 'Help Center', bgColor: '#00B0B0' }],
267+
},
268+
{
269+
id: 'condition',
270+
name: 'Urgent?',
271+
type: 'condition',
272+
bgColor: '#FF752F',
273+
position: { x: 660, y: 60 },
274+
rows: [],
275+
branches: [
276+
{ id: 'condition-if', label: 'If', value: '<triage.urgent>' },
277+
{ id: 'condition-else', label: 'else' },
278+
],
279+
},
280+
{
281+
id: 'escalate',
282+
name: 'Escalate',
283+
type: 'slack',
284+
bgColor: '#611F69',
285+
position: { x: 1000, y: -40 },
286+
rows: [{ title: 'Channel', value: '#support-urgent' }],
287+
},
288+
{
289+
id: 'reply',
290+
name: 'Reply',
291+
type: 'agent',
292+
bgColor: '#33C482',
293+
position: { x: 1000, y: 160 },
294+
rows: [{ title: 'Messages', value: 'Draft the reply' }],
295+
},
296+
{
297+
id: 'log',
298+
name: 'Log',
299+
type: 'table',
300+
bgColor: '#10B981',
301+
position: { x: 1340, y: 60 },
302+
rows: [
303+
{ title: 'Operation', value: 'Insert Row' },
304+
{ title: 'Table', value: 'tickets' },
305+
],
306+
},
307+
],
308+
edges: [
309+
{ id: 'start-triage', source: 'start', target: 'triage' },
310+
{ id: 'triage-condition', source: 'triage', target: 'condition' },
311+
{
312+
id: 'condition-escalate',
313+
source: 'condition',
314+
target: 'escalate',
315+
sourceHandle: 'condition-if',
316+
},
317+
{ id: 'condition-reply', source: 'condition', target: 'reply', sourceHandle: 'condition-else' },
318+
{ id: 'escalate-log', source: 'escalate', target: 'log' },
319+
{ id: 'reply-log', source: 'reply', target: 'log' },
320+
],
321+
}
322+
323+
/** chat/building — the content-agent the chat builds: candidates drafted in
324+
* parallel, media generated, an evaluator scoring, results kept. */
325+
export const AV_CONTENT_AGENT_WORKFLOW: PreviewWorkflow = {
326+
id: 'av-content-agent',
327+
name: 'content-agent',
328+
blocks: [
329+
{
330+
id: 'start',
331+
name: 'Start',
332+
type: 'start_trigger',
333+
bgColor: '#2FB3FF',
334+
position: { x: 0, y: 95 },
335+
hideTargetHandle: true,
336+
rows: [{ title: 'Input', value: 'Idea' }],
337+
},
338+
{
339+
id: 'candidates',
340+
name: 'Candidates',
341+
type: 'parallel',
342+
bgColor: '#1D1C1A',
343+
position: { x: 320, y: 30 },
344+
size: { width: 430, height: 170 },
345+
rows: [],
346+
},
347+
{
348+
id: 'writer',
349+
name: 'Writer',
350+
type: 'agent',
351+
bgColor: '#33C482',
352+
position: { x: 150, y: 62 },
353+
parentId: 'candidates',
354+
rows: [
355+
{ title: 'Messages', value: '<start.input>' },
356+
{ title: 'Model', value: 'claude-sonnet-4-6' },
357+
],
358+
},
359+
{
360+
id: 'evaluator',
361+
name: 'Evaluator',
362+
type: 'evaluator',
363+
bgColor: '#8B5CF6',
364+
position: { x: 840, y: 95 },
365+
rows: [
366+
{ title: 'Metrics', value: 'Voice · Hook' },
367+
{ title: 'Content', value: '<writer.content>' },
368+
],
369+
},
370+
{
371+
id: 'scores',
372+
name: 'Scores',
373+
type: 'table',
374+
bgColor: '#10B981',
375+
position: { x: 1180, y: 95 },
376+
rows: [
377+
{ title: 'Operation', value: 'Insert Row' },
378+
{ title: 'Table', value: 'scores' },
379+
],
380+
},
381+
],
382+
edges: [
383+
{ id: 'start-candidates', source: 'start', target: 'candidates' },
384+
{
385+
id: 'candidates-writer',
386+
source: 'candidates',
387+
target: 'writer',
388+
sourceHandle: 'parallel-start-source',
389+
},
390+
{ id: 'candidates-evaluator', source: 'candidates', target: 'evaluator' },
391+
{ id: 'evaluator-scores', source: 'evaluator', target: 'scores' },
392+
],
393+
}

0 commit comments

Comments
 (0)