feat(templates): landing page templates workflow states

This commit is contained in:
Vikhyath Mondreti
2026-03-09 15:22:14 -07:00
parent 15db69231f
commit 2f2c2b05e8
18 changed files with 10186 additions and 79 deletions

View File

@@ -35,6 +35,8 @@ export interface PreviewWorkflow {
color: string
blocks: PreviewBlock[]
edges: Array<{ id: string; source: string; target: string }>
/** Public JSON export used to seed the landing-page import flow */
seedPath?: string
}
/**

View File

@@ -8,6 +8,7 @@ const OCR_INVOICE_WORKFLOW: PreviewWorkflow = {
id: 'tpl-ocr-invoice',
name: 'OCR Invoice to DB',
color: '#2ABBF8',
seedPath: '/landing-page-templates/ocr-invoice-db-d502887e-8750-40a3-a98b-fb2a4e725a4d.json',
blocks: [
{
id: 'starter-1',
@@ -57,6 +58,7 @@ const GITHUB_RELEASE_WORKFLOW: PreviewWorkflow = {
id: 'tpl-github-release',
name: 'GitHub Release Agent',
color: '#00F701',
seedPath: '/landing-page-templates/gh-release-agent-d3bed10e-fc87-4fdb-b458-80d8e43757d3.json',
blocks: [
{
id: 'github-1',
@@ -108,6 +110,8 @@ const MEETING_FOLLOWUP_WORKFLOW: PreviewWorkflow = {
id: 'tpl-meeting-followup',
name: 'Meeting Follow-up Agent',
color: '#FFCC02',
seedPath:
'/landing-page-templates/meeting-followup-agent-a2357a2f-67f7-40c1-8e64-301bcd604239.json',
blocks: [
{
id: 'gcal-1',
@@ -159,6 +163,7 @@ const CV_SCANNER_WORKFLOW: PreviewWorkflow = {
id: 'tpl-cv-scanner',
name: 'CV/Resume Scanner',
color: '#FA4EDF',
seedPath: '/landing-page-templates/resume-parser-d083c931-8788-4c6e-814c-0788830e164d.json',
blocks: [
{
id: 'starter-2',
@@ -208,6 +213,7 @@ const EMAIL_TRIAGE_WORKFLOW: PreviewWorkflow = {
id: 'tpl-email-triage',
name: 'Email Triage Agent',
color: '#FF6B2C',
seedPath: '/landing-page-templates/email-triage-57e84f83-c583-4e74-b73a-080d25f2074d.json',
blocks: [
{
id: 'gmail-2',
@@ -273,6 +279,7 @@ const COMPETITOR_MONITOR_WORKFLOW: PreviewWorkflow = {
id: 'tpl-competitor-monitor',
name: 'Competitor Monitor',
color: '#6366F1',
seedPath: '/landing-page-templates/competitor-monitor-52454688-49ae-4279-894a-aa6494f10e3a.json',
blocks: [
{
id: 'schedule-1',
@@ -325,6 +332,7 @@ const SOCIAL_LISTENING_WORKFLOW: PreviewWorkflow = {
id: 'tpl-social-listening',
name: 'Social Listening Agent',
color: '#F43F5E',
seedPath: '/landing-page-templates/brand-mention-d2578496-d153-4db1-8ef1-c738cfa94a96.json',
blocks: [
{
id: 'schedule-2',
@@ -377,6 +385,7 @@ const DATA_ENRICHMENT_WORKFLOW: PreviewWorkflow = {
id: 'tpl-data-enrichment',
name: 'Data Enrichment Pipeline',
color: '#14B8A6',
seedPath: '/landing-page-templates/lead-enricher-6ed8dede-1df6-4962-95f4-887abf524b38.json',
blocks: [
{
id: 'starter-3',
@@ -426,6 +435,8 @@ const FEEDBACK_DIGEST_WORKFLOW: PreviewWorkflow = {
id: 'tpl-feedback-digest',
name: 'Customer Feedback Digest',
color: '#F59E0B',
seedPath:
'/landing-page-templates/customer-feedback-digest-2a1c59de-fdcc-4ae0-b448-69a58b36c29a.json',
blocks: [
{
id: 'schedule-3',
@@ -478,6 +489,7 @@ const PR_REVIEW_WORKFLOW: PreviewWorkflow = {
id: 'tpl-pr-review',
name: 'PR Review Agent',
color: '#06B6D4',
seedPath: '/landing-page-templates/pr-review-cb5f2d92-a324-4958-8303-4710c572b71d.json',
blocks: [
{
id: 'github-2',
@@ -529,6 +541,7 @@ const KNOWLEDGE_QA_WORKFLOW: PreviewWorkflow = {
id: 'tpl-knowledge-qa',
name: 'Knowledge Base QA',
color: '#84CC16',
seedPath: '/landing-page-templates/knowledge-base-qa-e9dcd9f1-18bd-4163-b5d8-3e239a297526.json',
blocks: [
{
id: 'starter-4',

View File

@@ -1,13 +1,17 @@
'use client'
import { useRef, useState } from 'react'
import { useCallback, useRef, useState } from 'react'
import { createLogger } from '@sim/logger'
import { type MotionValue, motion, useScroll, useTransform } from 'framer-motion'
import dynamic from 'next/dynamic'
import Link from 'next/link'
import { useRouter } from 'next/navigation'
import { Badge, ChevronDown } from '@/components/emcn'
import { LandingWorkflowSeedStorage } from '@/lib/core/utils/browser-storage'
import { cn } from '@/lib/core/utils/cn'
import { TEMPLATE_WORKFLOWS } from '@/app/(home)/components/templates/template-workflows'
const logger = createLogger('LandingTemplates')
const LandingPreviewWorkflow = dynamic(
() =>
import(
@@ -344,6 +348,8 @@ const TEMPLATES_PANEL_ID = 'templates-panel'
export default function Templates() {
const sectionRef = useRef<HTMLDivElement>(null)
const [activeIndex, setActiveIndex] = useState(0)
const [isPreparingTemplate, setIsPreparingTemplate] = useState(false)
const router = useRouter()
const { scrollYProgress } = useScroll({
target: sectionRef,
@@ -353,6 +359,45 @@ export default function Templates() {
const activeWorkflow = TEMPLATE_WORKFLOWS[activeIndex]
const activeDepth = DEPTH_CONFIGS[activeWorkflow.id]
const handleUseTemplate = useCallback(async () => {
if (isPreparingTemplate) return
setIsPreparingTemplate(true)
try {
if (activeWorkflow.seedPath) {
const response = await fetch(activeWorkflow.seedPath)
if (!response.ok) {
throw new Error(`Failed to fetch template seed: ${response.status}`)
}
const workflowJson = await response.text()
LandingWorkflowSeedStorage.store({
templateId: activeWorkflow.id,
workflowName: activeWorkflow.name,
color: activeWorkflow.color,
workflowJson,
})
}
} catch (error) {
logger.error('Failed to prepare landing template workflow seed', {
templateId: activeWorkflow.id,
error,
})
} finally {
setIsPreparingTemplate(false)
router.push('/signup')
}
}, [
activeWorkflow.color,
activeWorkflow.id,
activeWorkflow.name,
activeWorkflow.seedPath,
isPreparingTemplate,
router,
])
return (
<section
ref={sectionRef}
@@ -508,11 +553,13 @@ export default function Templates() {
fitViewOptions={{ padding: 0.15, maxZoom: 1.3 }}
/>
</div>
<Link
href='/signup'
className='group/cta absolute top-[16px] right-[16px] z-10 inline-flex h-[32px] items-center gap-[6px] rounded-[5px] border border-[#33C482] bg-[#33C482] px-[10px] font-[430] font-season text-[14px] text-black transition-[filter] hover:brightness-110'
<button
type='button'
onClick={handleUseTemplate}
disabled={isPreparingTemplate}
className='group/cta absolute top-[16px] right-[16px] z-10 inline-flex h-[32px] cursor-pointer items-center gap-[6px] rounded-[5px] border border-[#33C482] bg-[#33C482] px-[10px] font-[430] font-season text-[14px] text-black transition-[filter] hover:brightness-110'
>
Use template
{isPreparingTemplate ? 'Preparing...' : 'Use template'}
<span className='relative h-[10px] w-[10px] shrink-0'>
<ChevronDown className='-rotate-90 absolute inset-0 h-[10px] w-[10px] transition-opacity duration-150 group-hover/cta:opacity-0' />
<svg
@@ -531,7 +578,7 @@ export default function Templates() {
/>
</svg>
</span>
</Link>
</button>
</div>
</div>

View File

@@ -2,8 +2,14 @@
import { useCallback, useEffect, useRef, useState } from 'react'
import { createLogger } from '@sim/logger'
import { useParams } from 'next/navigation'
import { LandingPromptStorage } from '@/lib/core/utils/browser-storage'
import { useParams, useRouter } from 'next/navigation'
import {
LandingPromptStorage,
LandingTemplateStorage,
type LandingWorkflowSeed,
LandingWorkflowSeedStorage,
} from '@/lib/core/utils/browser-storage'
import { persistImportedWorkflow } from '@/lib/workflows/operations/import-export'
import { MessageContent, MothershipView, UserInput } from './components'
import { useChat } from './hooks'
@@ -15,19 +21,80 @@ interface HomeProps {
export function Home({ chatId }: HomeProps = {}) {
const { workspaceId } = useParams<{ workspaceId: string }>()
const router = useRouter()
const [inputValue, setInputValue] = useState('')
const hasCheckedLandingPromptRef = useRef(false)
const hasCheckedLandingStorageRef = useRef(false)
const createWorkflowFromLandingSeed = useCallback(
async (seed: LandingWorkflowSeed) => {
try {
const result = await persistImportedWorkflow({
content: seed.workflowJson,
filename: `${seed.workflowName}.json`,
workspaceId,
nameOverride: seed.workflowName,
descriptionOverride: seed.workflowDescription || 'Imported from landing template',
colorOverride: seed.color,
createWorkflow: async ({ name, description, color, workspaceId }) => {
const response = await fetch('/api/workflows', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
name,
description,
color,
workspaceId,
}),
})
if (!response.ok) {
const errorData = await response.json().catch(() => ({}))
throw new Error(errorData.error || 'Failed to create workflow')
}
return response.json()
},
})
if (result?.workflowId) {
window.location.href = `/workspace/${workspaceId}/w/${result.workflowId}`
return
}
logger.warn('Landing workflow seed did not produce a workflow', {
templateId: seed.templateId,
})
} catch (error) {
logger.error('Error creating workflow from landing workflow seed:', error)
}
},
[workspaceId]
)
useEffect(() => {
if (hasCheckedLandingPromptRef.current) return
hasCheckedLandingPromptRef.current = true
if (hasCheckedLandingStorageRef.current) return
hasCheckedLandingStorageRef.current = true
const workflowSeed = LandingWorkflowSeedStorage.consume()
if (workflowSeed) {
logger.info('Retrieved landing page workflow seed, creating workflow in workspace')
void createWorkflowFromLandingSeed(workflowSeed)
return
}
const templateId = LandingTemplateStorage.consume()
if (templateId) {
logger.info('Retrieved landing page template, redirecting to template detail')
router.replace(`/workspace/${workspaceId}/templates/${templateId}?use=true`)
return
}
const prompt = LandingPromptStorage.consume()
if (prompt) {
logger.info('Retrieved landing page prompt, populating home input')
setInputValue(prompt)
}
}, [])
}, [createWorkflowFromLandingSeed, workspaceId, router])
const {
messages,

View File

@@ -3,10 +3,9 @@ import { createLogger } from '@sim/logger'
import { useQueryClient } from '@tanstack/react-query'
import { useRouter } from 'next/navigation'
import {
extractWorkflowName,
extractWorkflowsFromFiles,
extractWorkflowsFromZip,
parseWorkflowJson,
persistImportedWorkflow,
sanitizePathSegment,
} from '@/lib/workflows/operations/import-export'
import { folderKeys, useCreateFolder } from '@/hooks/queries/folders'
@@ -42,75 +41,25 @@ export function useImportWorkflow({ workspaceId }: UseImportWorkflowProps) {
*/
const importSingleWorkflow = useCallback(
async (content: string, filename: string, folderId?: string, sortOrder?: number) => {
const { data: workflowData, errors: parseErrors } = parseWorkflowJson(content)
if (!workflowData || parseErrors.length > 0) {
logger.warn(`Failed to parse ${filename}:`, parseErrors)
return null
}
const workflowName = extractWorkflowName(content, filename)
clearDiff()
const workflowColor =
(workflowData.metadata as { color?: string } | undefined)?.color || '#3972F6'
const result = await createWorkflowMutation.mutateAsync({
name: workflowName,
description: workflowData.metadata?.description || 'Imported from JSON',
const result = await persistImportedWorkflow({
content,
filename,
workspaceId,
folderId: folderId || undefined,
folderId,
sortOrder,
color: workflowColor,
})
const newWorkflowId = result.id
const stateResponse = await fetch(`/api/workflows/${newWorkflowId}/state`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(workflowData),
createWorkflow: async ({ name, description, color, workspaceId, folderId, sortOrder }) =>
createWorkflowMutation.mutateAsync({
name,
description,
color,
workspaceId,
folderId,
sortOrder,
}),
})
if (!stateResponse.ok) {
logger.error(`Failed to save workflow state for ${newWorkflowId}`)
}
if (workflowData.variables) {
const variablesArray = Array.isArray(workflowData.variables)
? workflowData.variables
: Object.values(workflowData.variables)
if (variablesArray.length > 0) {
const variablesRecord: Record<
string,
{ id: string; workflowId: string; name: string; type: string; value: unknown }
> = {}
for (const v of variablesArray) {
const id = typeof v.id === 'string' && v.id.trim() ? v.id : crypto.randomUUID()
variablesRecord[id] = {
id,
workflowId: newWorkflowId,
name: v.name,
type: v.type,
value: v.value,
}
}
const variablesResponse = await fetch(`/api/workflows/${newWorkflowId}/variables`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ variables: variablesRecord }),
})
if (!variablesResponse.ok) {
logger.error(`Failed to save variables for ${newWorkflowId}`)
}
}
}
logger.info(`Imported workflow: ${workflowName}`)
return newWorkflowId
return result?.workflowId ?? null
},
[clearDiff, createWorkflowMutation, workspaceId]
)

View File

@@ -104,6 +104,8 @@ export class BrowserStorage {
*/
export const STORAGE_KEYS = {
LANDING_PAGE_PROMPT: 'sim_landing_page_prompt',
LANDING_PAGE_TEMPLATE: 'sim_landing_page_template',
LANDING_PAGE_WORKFLOW_SEED: 'sim_landing_page_workflow_seed',
} as const
/**
@@ -187,3 +189,104 @@ export class LandingPromptStorage {
return BrowserStorage.removeItem(LandingPromptStorage.KEY)
}
}
/**
* Specialized utility for managing a template selection from the landing page.
* Stores the marketplace template ID so it can be consumed after signup.
*/
export class LandingTemplateStorage {
private static readonly KEY = STORAGE_KEYS.LANDING_PAGE_TEMPLATE
/**
* Store a template ID selected on the landing page
* @param templateId - The marketplace template UUID
*/
static store(templateId: string): boolean {
if (!templateId || templateId.trim().length === 0) {
return false
}
return BrowserStorage.setItem(LandingTemplateStorage.KEY, {
templateId: templateId.trim(),
timestamp: Date.now(),
})
}
/**
* Retrieve and consume the stored template ID
* @param maxAge - Maximum age in milliseconds (default: 24 hours)
*/
static consume(maxAge: number = 24 * 60 * 60 * 1000): string | null {
const data = BrowserStorage.getItem<{ templateId: string; timestamp: number } | null>(
LandingTemplateStorage.KEY,
null
)
if (!data || !data.templateId || !data.timestamp) {
return null
}
if (Date.now() - data.timestamp > maxAge) {
LandingTemplateStorage.clear()
return null
}
LandingTemplateStorage.clear()
return data.templateId
}
static clear(): boolean {
return BrowserStorage.removeItem(LandingTemplateStorage.KEY)
}
}
export interface LandingWorkflowSeed {
templateId: string
workflowName: string
workflowDescription?: string
color?: string
workflowJson: string
}
/**
* Specialized utility for managing a landing-page workflow seed.
* Stores a workflow export JSON so it can be imported after signup.
*/
export class LandingWorkflowSeedStorage {
private static readonly KEY = STORAGE_KEYS.LANDING_PAGE_WORKFLOW_SEED
static store(seed: LandingWorkflowSeed): boolean {
if (!seed.templateId || !seed.workflowName || !seed.workflowJson) {
return false
}
return BrowserStorage.setItem(LandingWorkflowSeedStorage.KEY, {
...seed,
timestamp: Date.now(),
})
}
static consume(maxAge: number = 24 * 60 * 60 * 1000): LandingWorkflowSeed | null {
const data = BrowserStorage.getItem<(LandingWorkflowSeed & { timestamp: number }) | null>(
LandingWorkflowSeedStorage.KEY,
null
)
if (!data || !data.templateId || !data.workflowName || !data.timestamp || !data.workflowJson) {
return null
}
if (Date.now() - data.timestamp > maxAge) {
LandingWorkflowSeedStorage.clear()
return null
}
LandingWorkflowSeedStorage.clear()
const { timestamp: _timestamp, ...seed } = data
return seed
}
static clear(): boolean {
return BrowserStorage.removeItem(LandingWorkflowSeedStorage.KEY)
}
}

View File

@@ -616,6 +616,114 @@ export function parseWorkflowJson(
}
}
interface CreateImportedWorkflowInput {
name: string
description: string
color: string
workspaceId: string
folderId?: string
sortOrder?: number
}
interface CreatedImportedWorkflow {
id: string
}
interface PersistImportedWorkflowOptions {
content: string
filename: string
workspaceId: string
folderId?: string
sortOrder?: number
nameOverride?: string
descriptionOverride?: string
colorOverride?: string
createWorkflow: (input: CreateImportedWorkflowInput) => Promise<CreatedImportedWorkflow>
}
export async function persistImportedWorkflow({
content,
filename,
workspaceId,
folderId,
sortOrder,
nameOverride,
descriptionOverride,
colorOverride,
createWorkflow,
}: PersistImportedWorkflowOptions): Promise<{ workflowId: string; workflowName: string } | null> {
const { data: workflowData, errors: parseErrors } = parseWorkflowJson(content)
if (!workflowData || parseErrors.length > 0) {
logger.warn(`Failed to parse imported workflow ${filename}:`, parseErrors)
return null
}
const workflowName = nameOverride || extractWorkflowName(content, filename)
const workflowColor =
colorOverride || (workflowData.metadata as { color?: string } | undefined)?.color || '#3972F6'
const createdWorkflow = await createWorkflow({
name: workflowName,
description: descriptionOverride || workflowData.metadata?.description || 'Imported from JSON',
workspaceId,
folderId,
sortOrder,
color: workflowColor,
})
const newWorkflowId = createdWorkflow.id
const stateResponse = await fetch(`/api/workflows/${newWorkflowId}/state`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(workflowData),
})
if (!stateResponse.ok) {
throw new Error(`Failed to save workflow state for ${newWorkflowId}`)
}
if (workflowData.variables) {
const variablesArray = Array.isArray(workflowData.variables)
? workflowData.variables
: Object.values(workflowData.variables)
if (variablesArray.length > 0) {
const variablesRecord: Record<
string,
{ id: string; workflowId: string; name: string; type: string; value: unknown }
> = {}
for (const variable of variablesArray) {
const id =
typeof variable.id === 'string' && variable.id.trim() ? variable.id : crypto.randomUUID()
variablesRecord[id] = {
id,
workflowId: newWorkflowId,
name: variable.name,
type: variable.type,
value: variable.value,
}
}
const variablesResponse = await fetch(`/api/workflows/${newWorkflowId}/variables`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ variables: variablesRecord }),
})
if (!variablesResponse.ok) {
throw new Error(`Failed to save variables for ${newWorkflowId}`)
}
}
}
logger.info(`Imported workflow: ${workflowName}`)
return { workflowId: newWorkflowId, workflowName }
}
export interface GenerateWorkflowJsonOptions {
workflowId: string
name?: string

View File

@@ -0,0 +1,467 @@
{
"version": "1.0",
"exportedAt": "2026-03-09T21:40:19.012Z",
"state": {
"blocks": {
"c08eabea-4a15-43dd-ab0e-324f8473cdda": {
"id": "c08eabea-4a15-43dd-ab0e-324f8473cdda",
"type": "schedule",
"name": "Schedule",
"position": {
"x": 150,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": true,
"height": 114,
"subBlocks": {
"timezone": {
"id": "timezone",
"type": "short-input",
"value": "UTC"
},
"inputFormat": {
"id": "inputFormat",
"type": "input-format",
"value": [
{
"id": "6bad8048-89f7-418a-8419-bd04b1783fc5",
"name": "",
"type": "string",
"value": "",
"collapsed": false
}
]
},
"hourlyMinute": {
"id": "hourlyMinute",
"type": "short-input",
"value": "0"
},
"scheduleType": {
"id": "scheduleType",
"type": "short-input",
"value": "hourly"
}
},
"outputs": {
"files": {
"type": "file[]",
"description": "User uploaded files"
},
"input": {
"type": "string",
"description": "Primary user input or message"
},
"conversationId": {
"type": "string",
"description": "Conversation thread identifier"
}
},
"data": {},
"locked": false
},
"a6d33ecb-4115-4979-9a3b-d3f1caf67288": {
"id": "a6d33ecb-4115-4979-9a3b-d3f1caf67288",
"type": "notion_v2",
"name": "Notion",
"position": {
"x": 1150,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 230,
"subBlocks": {
"query": {
"id": "query",
"type": "short-input",
"value": null
},
"sorts": {
"id": "sorts",
"type": "code",
"value": null
},
"title": {
"id": "title",
"type": "short-input",
"value": "Brand Mentions Report"
},
"filter": {
"id": "filter",
"type": "code",
"value": null
},
"pageId": {
"id": "pageId",
"type": "short-input",
"value": null
},
"content": {
"id": "content",
"type": "short-input",
"value": "<brandmentiontracker.summary>\n\nTotal Mentions: <brandmentiontracker.totalMentions>\n\nSentiment Breakdown:\n- Positive: <brandmentiontracker.sentimentBreakdown.positive>\n- Negative: <brandmentiontracker.sentimentBreakdown.negative>\n- Neutral: <brandmentiontracker.sentimentBreakdown.neutral>\n\nDetailed Mentions:\n<brandmentiontracker.mentions>"
},
"pageSize": {
"id": "pageSize",
"type": "short-input",
"value": null
},
"parentId": {
"id": "parentId",
"type": "short-input",
"value": "placeholder_database_id"
},
"operation": {
"id": "operation",
"type": "short-input",
"value": "notion_create_page"
},
"credential": {
"id": "credential",
"type": "oauth-input",
"value": null
},
"databaseId": {
"id": "databaseId",
"type": "short-input",
"value": null
},
"filterType": {
"id": "filterType",
"type": "dropdown",
"value": null
},
"properties": {
"id": "properties",
"type": "code",
"value": null
},
"pageSelector": {
"id": "pageSelector",
"type": "file-selector",
"value": null
},
"parentSelector": {
"id": "parentSelector",
"type": "file-selector",
"value": null
},
"databaseSelector": {
"id": "databaseSelector",
"type": "project-selector",
"value": null
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": ""
}
},
"outputs": {
"id": {
"type": "string",
"description": "Page UUID"
},
"url": {
"type": "string",
"description": "Notion page URL"
},
"title": {
"type": "string",
"description": "Page title"
},
"created_time": {
"type": "string",
"description": "ISO 8601 creation timestamp"
},
"last_edited_time": {
"type": "string",
"description": "ISO 8601 last edit timestamp"
}
},
"data": {
"canonicalModes": {
"pageId": "basic",
"parentId": "basic",
"databaseId": "basic",
"oauthCredential": "basic"
}
},
"locked": false
},
"e17ebe08-1e34-4a5a-920e-ebbc12e616c7": {
"id": "e17ebe08-1e34-4a5a-920e-ebbc12e616c7",
"type": "agent",
"name": "brandMentionTracker",
"position": {
"x": 650,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 259,
"subBlocks": {
"model": {
"id": "model",
"type": "short-input",
"value": "gemini-2.5-flash"
},
"tools": {
"id": "tools",
"type": "short-input",
"value": [
{
"type": "reddit",
"title": "Reddit Search",
"params": {
"credential": "cred_278965807788f2194a89d8926339c9bc"
},
"toolId": "reddit_search",
"operation": "search",
"isExpanded": true,
"usageControl": "auto"
},
{
"type": "x",
"title": "X Search",
"params": {
"sortOrder": "recency",
"credential": "cred_bca17ade6b5e43c6929f0716e239aa1d"
},
"toolId": "x_search",
"operation": "x_search_tweets",
"isExpanded": true,
"usageControl": "auto"
}
]
},
"apiKey": {
"id": "apiKey",
"type": "short-input",
"value": null
},
"skills": {
"id": "skills",
"type": "skill-input",
"value": null
},
"messages": {
"id": "messages",
"type": "short-input",
"value": "[{\"role\":\"user\",\"content\":\"Search for brand mentions on Reddit and X (Twitter). Find all recent mentions, discussions, and conversations about our brand. Compile a detailed report of what people are saying.\"}]"
},
"maxTokens": {
"id": "maxTokens",
"type": "short-input",
"value": null
},
"verbosity": {
"id": "verbosity",
"type": "dropdown",
"value": null
},
"memoryType": {
"id": "memoryType",
"type": "dropdown",
"value": "none"
},
"temperature": {
"id": "temperature",
"type": "short-input",
"value": 0.3
},
"azureEndpoint": {
"id": "azureEndpoint",
"type": "short-input",
"value": null
},
"bedrockRegion": {
"id": "bedrockRegion",
"type": "short-input",
"value": null
},
"thinkingLevel": {
"id": "thinkingLevel",
"type": "dropdown",
"value": null
},
"vertexProject": {
"id": "vertexProject",
"type": "short-input",
"value": null
},
"conversationId": {
"id": "conversationId",
"type": "short-input",
"value": null
},
"responseFormat": {
"id": "responseFormat",
"type": "short-input",
"value": "{\n \"name\": \"brand_mentions_report\",\n \"schema\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"mentions\": {\n \"description\": \"Array of individual brand mentions\",\n \"items\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"author\": {\n \"description\": \"Username of the person who posted\",\n \"type\": \"string\"\n },\n \"content\": {\n \"description\": \"Text content of the mention\",\n \"type\": \"string\"\n },\n \"engagement\": {\n \"description\": \"Engagement metrics like likes, retweets, upvotes\",\n \"type\": \"string\"\n },\n \"platform\": {\n \"description\": \"Platform where mention was found (Reddit or X)\",\n \"type\": \"string\"\n },\n \"sentiment\": {\n \"description\": \"Sentiment analysis (positive, negative, neutral)\",\n \"type\": \"string\"\n },\n \"timestamp\": {\n \"description\": \"When the mention was posted\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"URL link to the post\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"platform\",\n \"author\",\n \"content\",\n \"url\",\n \"sentiment\",\n \"engagement\",\n \"timestamp\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"sentimentBreakdown\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"negative\": {\n \"description\": \"Count of negative mentions\",\n \"type\": \"number\"\n },\n \"neutral\": {\n \"description\": \"Count of neutral mentions\",\n \"type\": \"number\"\n },\n \"positive\": {\n \"description\": \"Count of positive mentions\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"positive\",\n \"negative\",\n \"neutral\"\n ],\n \"type\": \"object\"\n },\n \"summary\": {\n \"description\": \"Executive summary of brand mentions found\",\n \"type\": \"string\"\n },\n \"totalMentions\": {\n \"description\": \"Total number of brand mentions found\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"summary\",\n \"totalMentions\",\n \"mentions\",\n \"sentimentBreakdown\"\n ],\n \"type\": \"object\"\n },\n \"strict\": true\n}"
},
"vertexLocation": {
"id": "vertexLocation",
"type": "short-input",
"value": null
},
"azureApiVersion": {
"id": "azureApiVersion",
"type": "short-input",
"value": null
},
"reasoningEffort": {
"id": "reasoningEffort",
"type": "dropdown",
"value": null
},
"bedrockSecretKey": {
"id": "bedrockSecretKey",
"type": "short-input",
"value": null
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": null
},
"vertexCredential": {
"id": "vertexCredential",
"type": "oauth-input",
"value": null
},
"slidingWindowSize": {
"id": "slidingWindowSize",
"type": "short-input",
"value": null
},
"bedrockAccessKeyId": {
"id": "bedrockAccessKeyId",
"type": "short-input",
"value": null
},
"slidingWindowTokens": {
"id": "slidingWindowTokens",
"type": "short-input",
"value": null
},
"previousInteractionId": {
"id": "previousInteractionId",
"type": "short-input",
"value": null
}
},
"outputs": {
"summary": {
"type": "string",
"description": "Executive summary of brand mentions found"
},
"mentions": {
"type": "array",
"description": "Array of individual brand mentions"
},
"totalMentions": {
"type": "number",
"description": "Total number of brand mentions found"
},
"sentimentBreakdown": {
"type": "object",
"description": "Field from Agent: sentimentBreakdown"
}
},
"data": {
"canonicalModes": {
"oauthCredential": "basic",
"reddit:oauthCredential": "basic"
}
},
"locked": false
},
"afb267b1-a20e-4755-8364-e4bb2ea99090": {
"id": "afb267b1-a20e-4755-8364-e4bb2ea99090",
"type": "note",
"name": "Agent Instructions",
"position": {
"x": 648.353914639655,
"y": -11.896402103479907
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 0,
"subBlocks": {
"content": {
"id": "content",
"type": "short-input",
"value": "**Connect Reddit OAuth and X (Twitter) OAuth** for the tools"
}
},
"outputs": {},
"data": {},
"locked": false
},
"197d74b5-3de0-4b52-af6c-a37d6b9eae5b": {
"id": "197d74b5-3de0-4b52-af6c-a37d6b9eae5b",
"type": "note",
"name": "Notion Instructions",
"position": {
"x": 1142.0546019340711,
"y": -5.948201051739943
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 0,
"subBlocks": {
"content": {
"id": "content",
"type": "short-input",
"value": "**Connect Notion OAuth** and set your Brand Mentions database ID"
}
},
"outputs": {},
"data": {},
"locked": false
}
},
"edges": [
{
"id": "2861a55b-5cbe-4a8c-a313-ffe55d6a7bbf",
"source": "c08eabea-4a15-43dd-ab0e-324f8473cdda",
"target": "e17ebe08-1e34-4a5a-920e-ebbc12e616c7",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
},
{
"id": "525229fd-2095-4bea-84bc-bdc3c38f57bc",
"source": "e17ebe08-1e34-4a5a-920e-ebbc12e616c7",
"target": "a6d33ecb-4115-4979-9a3b-d3f1caf67288",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
}
],
"loops": {},
"parallels": {},
"metadata": {
"name": "brand-mention",
"description": "New workflow",
"color": "#9333ea",
"exportedAt": "2026-03-09T21:40:19.012Z"
},
"variables": {}
}
}

View File

@@ -0,0 +1,985 @@
{
"version": "1.0",
"exportedAt": "2026-03-09T21:40:19.011Z",
"state": {
"blocks": {
"8c66431f-268e-4a9f-8a82-911a87852551": {
"id": "8c66431f-268e-4a9f-8a82-911a87852551",
"type": "schedule",
"name": "Schedule",
"position": {
"x": 150,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": true,
"height": 143,
"subBlocks": {
"timezone": {
"id": "timezone",
"type": "short-input",
"value": "UTC"
},
"dailyTime": {
"id": "dailyTime",
"type": "short-input",
"value": "09:00"
},
"inputFormat": {
"id": "inputFormat",
"type": "input-format",
"value": [
{
"id": "302f0e72-397c-447a-a606-7288ed3a4783",
"name": "",
"type": "string",
"value": "",
"collapsed": false
}
]
},
"scheduleType": {
"id": "scheduleType",
"type": "short-input",
"value": "daily"
}
},
"outputs": {
"files": {
"type": "file[]",
"description": "User uploaded files"
},
"input": {
"type": "string",
"description": "Primary user input or message"
},
"conversationId": {
"type": "string",
"description": "Conversation thread identifier"
}
},
"data": {},
"locked": false
},
"cc8cb3bb-ed7b-434e-b04e-8156ecf238af": {
"id": "cc8cb3bb-ed7b-434e-b04e-8156ecf238af",
"type": "slack",
"name": "Slack",
"position": {
"x": 1147.930096816991,
"y": 147.9300968169909
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 346,
"subBlocks": {
"text": {
"id": "text",
"type": "short-input",
"value": "<agent.content>"
},
"files": {
"id": "files",
"type": "short-input",
"value": null
},
"limit": {
"id": "limit",
"type": "short-input",
"value": null
},
"title": {
"id": "title",
"type": "short-input",
"value": null
},
"blocks": {
"id": "blocks",
"type": "code",
"value": null
},
"fileId": {
"id": "fileId",
"type": "short-input",
"value": null
},
"oldest": {
"id": "oldest",
"type": "short-input",
"value": null
},
"userId": {
"id": "userId",
"type": "user-selector",
"value": null
},
"viewId": {
"id": "viewId",
"type": "short-input",
"value": null
},
"channel": {
"id": "channel",
"type": "channel-selector",
"value": null
},
"content": {
"id": "content",
"type": "long-input",
"value": null
},
"botToken": {
"id": "botToken",
"type": "short-input",
"value": null
},
"dmUserId": {
"id": "dmUserId",
"type": "user-selector",
"value": null
},
"threadTs": {
"id": "threadTs",
"type": "short-input",
"value": null
},
"viewHash": {
"id": "viewHash",
"type": "short-input",
"value": null
},
"emojiName": {
"id": "emojiName",
"type": "short-input",
"value": null
},
"operation": {
"id": "operation",
"type": "short-input",
"value": "send"
},
"sectionId": {
"id": "sectionId",
"type": "short-input",
"value": null
},
"userLimit": {
"id": "userLimit",
"type": "short-input",
"value": null
},
"authMethod": {
"id": "authMethod",
"type": "short-input",
"value": "oauth"
},
"credential": {
"id": "credential",
"type": "oauth-input",
"value": null
},
"updateText": {
"id": "updateText",
"type": "long-input",
"value": null
},
"canvasTitle": {
"id": "canvasTitle",
"type": "short-input",
"value": null
},
"memberLimit": {
"id": "memberLimit",
"type": "short-input",
"value": null
},
"threadLimit": {
"id": "threadLimit",
"type": "short-input",
"value": null
},
"viewPayload": {
"id": "viewPayload",
"type": "code",
"value": null
},
"channelLimit": {
"id": "channelLimit",
"type": "short-input",
"value": null
},
"editCanvasId": {
"id": "editCanvasId",
"type": "short-input",
"value": null
},
"includeFiles": {
"id": "includeFiles",
"type": "switch",
"value": null
},
"manualUserId": {
"id": "manualUserId",
"type": "short-input",
"value": null
},
"canvasContent": {
"id": "canvasContent",
"type": "long-input",
"value": null
},
"ephemeralUser": {
"id": "ephemeralUser",
"type": "user-selector",
"value": null
},
"manualChannel": {
"id": "manualChannel",
"type": "short-input",
"value": ""
},
"messageFormat": {
"id": "messageFormat",
"type": "short-input",
"value": "text"
},
"publishUserId": {
"id": "publishUserId",
"type": "user-selector",
"value": null
},
"signingSecret": {
"id": "signingSecret",
"type": "short-input",
"value": null
},
"viewTriggerId": {
"id": "viewTriggerId",
"type": "short-input",
"value": null
},
"includeDeleted": {
"id": "includeDeleted",
"type": "dropdown",
"value": null
},
"includePrivate": {
"id": "includePrivate",
"type": "dropdown",
"value": null
},
"manualDmUserId": {
"id": "manualDmUserId",
"type": "short-input",
"value": null
},
"presenceUserId": {
"id": "presenceUserId",
"type": "user-selector",
"value": null
},
"viewExternalId": {
"id": "viewExternalId",
"type": "short-input",
"value": null
},
"attachmentFiles": {
"id": "attachmentFiles",
"type": "file-upload",
"value": null
},
"canvasOperation": {
"id": "canvasOperation",
"type": "dropdown",
"value": null
},
"deleteTimestamp": {
"id": "deleteTimestamp",
"type": "short-input",
"value": null
},
"destinationType": {
"id": "destinationType",
"type": "short-input",
"value": "channel"
},
"updateTimestamp": {
"id": "updateTimestamp",
"type": "short-input",
"value": null
},
"downloadFileName": {
"id": "downloadFileName",
"type": "short-input",
"value": null
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": null
},
"includeNumMembers": {
"id": "includeNumMembers",
"type": "dropdown",
"value": null
},
"reactionTimestamp": {
"id": "reactionTimestamp",
"type": "short-input",
"value": null
},
"webhookUrlDisplay": {
"id": "webhookUrlDisplay",
"type": "short-input",
"value": null
},
"channelCanvasTitle": {
"id": "channelCanvasTitle",
"type": "short-input",
"value": null
},
"getThreadTimestamp": {
"id": "getThreadTimestamp",
"type": "short-input",
"value": null
},
"getMessageTimestamp": {
"id": "getMessageTimestamp",
"type": "short-input",
"value": null
},
"manualEphemeralUser": {
"id": "manualEphemeralUser",
"type": "short-input",
"value": null
},
"manualPublishUserId": {
"id": "manualPublishUserId",
"type": "short-input",
"value": null
},
"triggerInstructions": {
"id": "triggerInstructions",
"type": "text",
"value": null
},
"channelCanvasContent": {
"id": "channelCanvasContent",
"type": "long-input",
"value": null
},
"manualPresenceUserId": {
"id": "manualPresenceUserId",
"type": "short-input",
"value": null
},
"viewInteractivityPointer": {
"id": "viewInteractivityPointer",
"type": "short-input",
"value": null
},
"samplePayload_slack_webhook": {
"id": "samplePayload_slack_webhook",
"type": "code",
"value": null
}
},
"outputs": {
"ts": {
"type": "string",
"description": "Message timestamp"
},
"files": {
"type": "file[]",
"description": "Files attached to the message"
},
"channel": {
"type": "string",
"description": "Channel ID where message was sent"
},
"message": {
"type": "object",
"properties": {
"ts": {
"type": "string",
"description": "Message timestamp (unique identifier)"
},
"team": {
"type": "string",
"optional": true,
"description": "Team/workspace ID"
},
"text": {
"type": "string",
"description": "Message text content"
},
"type": {
"type": "string",
"description": "Message type (usually \"message\")"
},
"user": {
"type": "string",
"optional": true,
"description": "User ID who sent the message"
},
"files": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique file identifier"
},
"mode": {
"type": "string",
"optional": true,
"description": "File mode (hosted, external, etc.)"
},
"name": {
"type": "string",
"description": "File name"
},
"size": {
"type": "number",
"description": "File size in bytes"
},
"mimetype": {
"type": "string",
"description": "MIME type of the file"
},
"permalink": {
"type": "string",
"optional": true,
"description": "Permanent link to the file"
},
"url_private": {
"type": "string",
"optional": true,
"description": "Private download URL (requires auth)"
}
}
},
"description": "Files attached to the message"
},
"blocks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Block type (section, divider, image, actions, etc.)"
},
"block_id": {
"type": "string",
"optional": true,
"description": "Unique block identifier"
}
}
},
"description": "Block Kit blocks in the message"
},
"bot_id": {
"type": "string",
"optional": true,
"description": "Bot ID if sent by a bot"
},
"edited": {
"type": "object",
"optional": true,
"properties": {
"ts": {
"type": "string",
"description": "Timestamp of the edit"
},
"user": {
"type": "string",
"description": "User ID who edited the message"
}
},
"description": "Edit information if message was edited"
},
"channel": {
"type": "string",
"optional": true,
"description": "Channel ID"
},
"subtype": {
"type": "string",
"optional": true,
"description": "Message subtype (bot_message, file_share, etc.)"
},
"username": {
"type": "string",
"optional": true,
"description": "Display username"
},
"last_read": {
"type": "string",
"optional": true,
"description": "Timestamp of last read message"
},
"permalink": {
"type": "string",
"optional": true,
"description": "Permanent URL to the message"
},
"pinned_to": {
"type": "array",
"items": {
"type": "string",
"description": "Channel ID"
},
"optional": true,
"description": "Channel IDs where message is pinned"
},
"reactions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Emoji name (without colons)"
},
"count": {
"type": "number",
"description": "Number of times this reaction was added"
},
"users": {
"type": "array",
"items": {
"type": "string",
"description": "User ID"
},
"description": "Array of user IDs who reacted"
}
}
},
"description": "Reactions on this message"
},
"thread_ts": {
"type": "string",
"optional": true,
"description": "Parent message timestamp (for threaded replies)"
},
"is_starred": {
"type": "boolean",
"optional": true,
"description": "Whether message is starred by user"
},
"subscribed": {
"type": "boolean",
"optional": true,
"description": "Whether user is subscribed to thread"
},
"attachments": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"optional": true,
"description": "Attachment ID"
},
"ts": {
"type": "string",
"optional": true,
"description": "Timestamp shown in footer"
},
"text": {
"type": "string",
"optional": true,
"description": "Main attachment text"
},
"color": {
"type": "string",
"optional": true,
"description": "Color bar hex code or preset"
},
"title": {
"type": "string",
"optional": true,
"description": "Attachment title"
},
"footer": {
"type": "string",
"optional": true,
"description": "Footer text"
},
"pretext": {
"type": "string",
"optional": true,
"description": "Text shown before attachment"
},
"fallback": {
"type": "string",
"optional": true,
"description": "Plain text summary"
},
"image_url": {
"type": "string",
"optional": true,
"description": "Image URL"
},
"thumb_url": {
"type": "string",
"optional": true,
"description": "Thumbnail URL"
},
"title_link": {
"type": "string",
"optional": true,
"description": "Title link URL"
},
"author_icon": {
"type": "string",
"optional": true,
"description": "Author icon URL"
},
"author_link": {
"type": "string",
"optional": true,
"description": "Author link URL"
},
"author_name": {
"type": "string",
"optional": true,
"description": "Author display name"
},
"footer_icon": {
"type": "string",
"optional": true,
"description": "Footer icon URL"
}
}
},
"description": "Legacy attachments on the message"
},
"reply_count": {
"type": "number",
"optional": true,
"description": "Total number of replies in thread"
},
"latest_reply": {
"type": "string",
"optional": true,
"description": "Timestamp of most recent reply"
},
"unread_count": {
"type": "number",
"optional": true,
"description": "Number of unread messages in thread"
},
"parent_user_id": {
"type": "string",
"optional": true,
"description": "User ID of thread parent message author"
},
"reply_users_count": {
"type": "number",
"optional": true,
"description": "Number of unique users who replied"
}
},
"description": "Complete message object with all properties returned by Slack"
},
"fileCount": {
"type": "number",
"description": "Number of files uploaded (when files are attached)"
}
},
"data": {
"canonicalModes": {
"files": "basic",
"userId": "basic",
"channel": "basic",
"dmUserId": "basic",
"ephemeralUser": "basic",
"publishUserId": "basic",
"presenceUserId": "basic",
"oauthCredential": "basic"
}
},
"locked": false
},
"1d05547e-1846-4049-9fc4-702f2f485ae6": {
"id": "1d05547e-1846-4049-9fc4-702f2f485ae6",
"type": "agent",
"name": "Agent",
"position": {
"x": 650,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 288,
"subBlocks": {
"model": {
"id": "model",
"type": "short-input",
"value": ""
},
"tools": {
"id": "tools",
"type": "short-input",
"value": [
{
"type": "airtable",
"title": "Airtable - List Records",
"params": {
"credential": "cred_0fe457b3f0f1dde225e2d8154ee805e7"
},
"toolId": "airtable_list",
"operation": "list",
"isExpanded": true,
"usageControl": "auto"
}
]
},
"apiKey": {
"id": "apiKey",
"type": "short-input",
"value": null
},
"skills": {
"id": "skills",
"type": "skill-input",
"value": null
},
"messages": {
"id": "messages",
"type": "messages-input",
"value": [
{
"role": "system",
"content": "Analyze customer feedback from Airtable and provide a summary of key themes, sentiment, and actionable insights."
},
{
"role": "user",
"content": "Please analyze the customer feedback data from Airtable. Use the Airtable tool to read records, then provide:\n1. Key themes and patterns\n2. Overall sentiment analysis\n3. Actionable insights and recommendations"
}
]
},
"maxTokens": {
"id": "maxTokens",
"type": "short-input",
"value": null
},
"verbosity": {
"id": "verbosity",
"type": "dropdown",
"value": null
},
"memoryType": {
"id": "memoryType",
"type": "dropdown",
"value": "none"
},
"temperature": {
"id": "temperature",
"type": "short-input",
"value": 0.3
},
"azureEndpoint": {
"id": "azureEndpoint",
"type": "short-input",
"value": null
},
"bedrockRegion": {
"id": "bedrockRegion",
"type": "short-input",
"value": null
},
"thinkingLevel": {
"id": "thinkingLevel",
"type": "dropdown",
"value": null
},
"vertexProject": {
"id": "vertexProject",
"type": "short-input",
"value": null
},
"conversationId": {
"id": "conversationId",
"type": "short-input",
"value": null
},
"responseFormat": {
"id": "responseFormat",
"type": "code",
"value": null
},
"vertexLocation": {
"id": "vertexLocation",
"type": "short-input",
"value": null
},
"azureApiVersion": {
"id": "azureApiVersion",
"type": "short-input",
"value": null
},
"reasoningEffort": {
"id": "reasoningEffort",
"type": "dropdown",
"value": null
},
"bedrockSecretKey": {
"id": "bedrockSecretKey",
"type": "short-input",
"value": null
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": null
},
"vertexCredential": {
"id": "vertexCredential",
"type": "oauth-input",
"value": null
},
"slidingWindowSize": {
"id": "slidingWindowSize",
"type": "short-input",
"value": null
},
"bedrockAccessKeyId": {
"id": "bedrockAccessKeyId",
"type": "short-input",
"value": null
},
"slidingWindowTokens": {
"id": "slidingWindowTokens",
"type": "short-input",
"value": null
},
"previousInteractionId": {
"id": "previousInteractionId",
"type": "short-input",
"value": null
}
},
"outputs": {
"cost": {
"type": "json",
"description": "Cost of the API call"
},
"model": {
"type": "string",
"description": "Model used for generation"
},
"tokens": {
"type": "json",
"description": "Token usage statistics"
},
"content": {
"type": "string",
"description": "Generated response content"
},
"toolCalls": {
"type": "json",
"description": "Tool calls made"
},
"providerTiming": {
"type": "json",
"description": "Provider timing information"
}
},
"data": {
"canonicalModes": {
"oauthCredential": "basic"
}
},
"locked": false
},
"d8d12249-8b91-4a3b-bbc8-1d51c67c092f": {
"id": "d8d12249-8b91-4a3b-bbc8-1d51c67c092f",
"type": "note",
"name": "Agent Setup",
"position": {
"x": 650.9694391022937,
"y": 11.624006617722983
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 0,
"subBlocks": {
"content": {
"id": "content",
"type": "long-input",
"value": "- Select Airtable Base, Table and any additional configuration "
}
},
"outputs": {},
"data": {},
"locked": false
},
"3e14e5e6-ff10-4898-a701-85248ab19835": {
"id": "3e14e5e6-ff10-4898-a701-85248ab19835",
"type": "note",
"name": "Slack Setup",
"position": {
"x": 1146.9403940050252,
"y": -6.047832905104045
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 114,
"subBlocks": {
"content": {
"id": "content",
"type": "long-input",
"value": "- Select Slack Account \n- Select Slack Channel"
}
},
"outputs": {},
"data": {},
"locked": false
}
},
"edges": [
{
"id": "a0c1c15f-3c37-4b59-93b4-7503f1ec7c62",
"source": "8c66431f-268e-4a9f-8a82-911a87852551",
"target": "1d05547e-1846-4049-9fc4-702f2f485ae6",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
},
{
"id": "19ed0fc8-5643-41e2-9025-3c7809572f33",
"source": "1d05547e-1846-4049-9fc4-702f2f485ae6",
"target": "cc8cb3bb-ed7b-434e-b04e-8156ecf238af",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
}
],
"loops": {},
"parallels": {},
"metadata": {
"name": "customer-feedback-digest",
"description": "New workflow",
"color": "#c92626",
"exportedAt": "2026-03-09T21:40:19.011Z"
},
"variables": {}
}
}

View File

@@ -0,0 +1,551 @@
{
"version": "1.0",
"exportedAt": "2026-03-09T21:40:19.013Z",
"state": {
"blocks": {
"9a5153ed-d5ae-40a1-a5c6-b17f1c4b8174": {
"id": "9a5153ed-d5ae-40a1-a5c6-b17f1c4b8174",
"type": "gmail_v2",
"name": "Gmail1",
"position": {
"x": 150,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": true,
"height": 230,
"subBlocks": {
"cc": {
"id": "cc",
"type": "short-input",
"value": null
},
"to": {
"id": "to",
"type": "short-input",
"value": null
},
"bcc": {
"id": "bcc",
"type": "short-input",
"value": null
},
"body": {
"id": "body",
"type": "long-input",
"value": null
},
"query": {
"id": "query",
"type": "short-input",
"value": null
},
"folder": {
"id": "folder",
"type": "folder-selector",
"value": null
},
"subject": {
"id": "subject",
"type": "short-input",
"value": null
},
"labelIds": {
"id": "labelIds",
"type": "dropdown",
"value": null
},
"threadId": {
"id": "threadId",
"type": "short-input",
"value": null
},
"messageId": {
"id": "messageId",
"type": "short-input",
"value": null
},
"operation": {
"id": "operation",
"type": "dropdown",
"value": null
},
"credential": {
"id": "credential",
"type": "oauth-input",
"value": null
},
"markAsRead": {
"id": "markAsRead",
"type": "short-input",
"value": false
},
"maxResults": {
"id": "maxResults",
"type": "short-input",
"value": null
},
"unreadOnly": {
"id": "unreadOnly",
"type": "switch",
"value": null
},
"attachments": {
"id": "attachments",
"type": "short-input",
"value": null
},
"contentType": {
"id": "contentType",
"type": "dropdown",
"value": null
},
"searchQuery": {
"id": "searchQuery",
"type": "short-input",
"value": null
},
"sourceLabel": {
"id": "sourceLabel",
"type": "folder-selector",
"value": null
},
"manualFolder": {
"id": "manualFolder",
"type": "short-input",
"value": null
},
"labelSelector": {
"id": "labelSelector",
"type": "folder-selector",
"value": null
},
"manualLabelId": {
"id": "manualLabelId",
"type": "short-input",
"value": null
},
"moveMessageId": {
"id": "moveMessageId",
"type": "short-input",
"value": null
},
"actionMessageId": {
"id": "actionMessageId",
"type": "short-input",
"value": null
},
"attachmentFiles": {
"id": "attachmentFiles",
"type": "file-upload",
"value": null
},
"destinationLabel": {
"id": "destinationLabel",
"type": "folder-selector",
"value": null
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": null
},
"replyToMessageId": {
"id": "replyToMessageId",
"type": "short-input",
"value": null
},
"manualSourceLabel": {
"id": "manualSourceLabel",
"type": "short-input",
"value": null
},
"includeAttachments": {
"id": "includeAttachments",
"type": "short-input",
"value": false
},
"triggerCredentials": {
"id": "triggerCredentials",
"type": "oauth-input",
"value": null
},
"labelFilterBehavior": {
"id": "labelFilterBehavior",
"type": "short-input",
"value": "INCLUDE"
},
"triggerInstructions": {
"id": "triggerInstructions",
"type": "text",
"value": null
},
"labelActionMessageId": {
"id": "labelActionMessageId",
"type": "short-input",
"value": null
},
"manualDestinationLabel": {
"id": "manualDestinationLabel",
"type": "short-input",
"value": null
},
"samplePayload_gmail_poller": {
"id": "samplePayload_gmail_poller",
"type": "code",
"value": null
}
},
"outputs": {
"email": {
"cc": {
"type": "string",
"description": "CC recipients"
},
"id": {
"type": "string",
"description": "Gmail message ID"
},
"to": {
"type": "string",
"description": "Recipient email address"
},
"date": {
"type": "string",
"description": "Email date in ISO format"
},
"from": {
"type": "string",
"description": "Sender email address"
},
"labels": {
"type": "string",
"description": "Email labels array"
},
"subject": {
"type": "string",
"description": "Email subject line"
},
"bodyHtml": {
"type": "string",
"description": "HTML email body"
},
"bodyText": {
"type": "string",
"description": "Plain text email body"
},
"threadId": {
"type": "string",
"description": "Gmail thread ID"
},
"attachments": {
"type": "file[]",
"description": "Array of email attachments as files (if includeAttachments is enabled)"
},
"hasAttachments": {
"type": "boolean",
"description": "Whether email has attachments"
}
},
"timestamp": {
"type": "string",
"description": "Event timestamp"
}
},
"data": {
"canonicalModes": {
"folder": "basic",
"addLabelIds": "basic",
"attachments": "basic",
"manageLabelId": "basic",
"removeLabelIds": "basic",
"oauthCredential": "basic"
}
},
"locked": false
},
"8b2cb83b-86ad-45c1-9af6-d03ea645128e": {
"id": "8b2cb83b-86ad-45c1-9af6-d03ea645128e",
"type": "note",
"name": "Gmail Setup",
"position": {
"x": 156.1976672520025,
"y": -43.44719468951199
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 114,
"subBlocks": {
"content": {
"id": "content",
"type": "short-input",
"value": "- Connect Gmail Account \n- Select Relevant Labels to Monitor (Optional)"
}
},
"outputs": {},
"data": {},
"locked": false
},
"73ccae2c-cdef-435e-a1d6-4fa2f8b798aa": {
"id": "73ccae2c-cdef-435e-a1d6-4fa2f8b798aa",
"type": "agent",
"name": "Agent1",
"position": {
"x": 650,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 288,
"subBlocks": {
"model": {
"id": "model",
"type": "short-input",
"value": "claude-sonnet-4-5"
},
"tools": {
"id": "tools",
"type": "tool-input",
"value": [
{
"type": "linear",
"title": "Linear",
"params": {
"priority": "0",
"manualTeamId": "",
"manualProjectId": ""
},
"toolId": "linear_create_issue",
"operation": "linear_create_issue",
"isExpanded": false,
"credentialId": "VASXEoZWRpOraVP2Exmm9X62lT3ofDmZ",
"usageControl": "auto"
},
{
"type": "slack",
"title": "Slack",
"params": {
"authMethod": "oauth",
"destinationType": "channel"
},
"toolId": "slack_message",
"operation": "send",
"isExpanded": false,
"usageControl": "auto"
}
]
},
"apiKey": {
"id": "apiKey",
"type": "short-input",
"value": null
},
"skills": {
"id": "skills",
"type": "skill-input",
"value": null
},
"messages": {
"id": "messages",
"type": "messages-input",
"value": [
{
"role": "system",
"content": "Classify and route incoming emails. You have access to tools for Slack notifications and Linear issue creation.\n\nWhen you determine an email is urgent, use the Slack tool to send a notification to the #urgent channel.\nWhen you determine an email needs a support issue, use the Linear tool to create an issue in the Support project.\n\nYou can use both tools if an email is both urgent AND needs a support issue."
},
{
"role": "user",
"content": "Classify this email:\n\nFrom: <gmail1.email.from>\nSubject: <gmail1.email.subject>\nBody: <gmail1.email.bodyText>\n\nDetermine if it is urgent (needs immediate Slack notification) or support-related (needs a Linear issue). Take appropriate action using your tools."
}
]
},
"maxTokens": {
"id": "maxTokens",
"type": "short-input",
"value": null
},
"verbosity": {
"id": "verbosity",
"type": "dropdown",
"value": null
},
"memoryType": {
"id": "memoryType",
"type": "dropdown",
"value": "none"
},
"temperature": {
"id": "temperature",
"type": "short-input",
"value": 0.3
},
"azureEndpoint": {
"id": "azureEndpoint",
"type": "short-input",
"value": null
},
"bedrockRegion": {
"id": "bedrockRegion",
"type": "short-input",
"value": null
},
"thinkingLevel": {
"id": "thinkingLevel",
"type": "dropdown",
"value": null
},
"vertexProject": {
"id": "vertexProject",
"type": "short-input",
"value": null
},
"conversationId": {
"id": "conversationId",
"type": "short-input",
"value": null
},
"responseFormat": {
"id": "responseFormat",
"type": "code",
"value": null
},
"vertexLocation": {
"id": "vertexLocation",
"type": "short-input",
"value": null
},
"azureApiVersion": {
"id": "azureApiVersion",
"type": "short-input",
"value": null
},
"reasoningEffort": {
"id": "reasoningEffort",
"type": "dropdown",
"value": null
},
"bedrockSecretKey": {
"id": "bedrockSecretKey",
"type": "short-input",
"value": null
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": null
},
"vertexCredential": {
"id": "vertexCredential",
"type": "oauth-input",
"value": null
},
"slidingWindowSize": {
"id": "slidingWindowSize",
"type": "short-input",
"value": null
},
"bedrockAccessKeyId": {
"id": "bedrockAccessKeyId",
"type": "short-input",
"value": null
},
"slidingWindowTokens": {
"id": "slidingWindowTokens",
"type": "short-input",
"value": null
},
"previousInteractionId": {
"id": "previousInteractionId",
"type": "short-input",
"value": null
}
},
"outputs": {
"cost": {
"type": "json",
"description": "Cost of the API call"
},
"model": {
"type": "string",
"description": "Model used for generation"
},
"tokens": {
"type": "json",
"description": "Token usage statistics"
},
"content": {
"type": "string",
"description": "Generated response content"
},
"toolCalls": {
"type": "json",
"description": "Tool calls made"
},
"providerTiming": {
"type": "json",
"description": "Provider timing information"
}
},
"data": {
"canonicalModes": {
"linear:teamId": "basic",
"slack:channel": "basic",
"oauthCredential": "basic",
"linear:projectId": "basic"
}
},
"locked": false
},
"74ce7030-0faf-4efd-9439-8a0d516871e2": {
"id": "74ce7030-0faf-4efd-9439-8a0d516871e2",
"type": "note",
"name": "Agent Setup",
"position": {
"x": 647.4883532288753,
"y": -66.95469058004684
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 114,
"subBlocks": {
"content": {
"id": "content",
"type": "short-input",
"value": "- Connect Linear Account \n- Connect Slack Account and select channel"
}
},
"outputs": {},
"data": {},
"locked": false
}
},
"edges": [
{
"id": "aa9449b6-2d66-4009-b931-682e45d841a0",
"source": "9a5153ed-d5ae-40a1-a5c6-b17f1c4b8174",
"target": "73ccae2c-cdef-435e-a1d6-4fa2f8b798aa",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
}
],
"loops": {},
"parallels": {},
"metadata": {
"name": "email-triage",
"description": "New workflow",
"color": "#048628",
"exportedAt": "2026-03-09T21:40:19.012Z"
},
"variables": {}
}
}

View File

@@ -0,0 +1,330 @@
{
"version": "1.0",
"exportedAt": "2026-03-09T21:40:19.010Z",
"state": {
"blocks": {
"9d182a31-8710-4651-8a85-cd432e7fecf7": {
"id": "9d182a31-8710-4651-8a85-cd432e7fecf7",
"type": "start_trigger",
"name": "Start",
"position": {
"x": 150,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 100,
"subBlocks": {
"inputFormat": {
"id": "inputFormat",
"type": "input-format",
"value": [
{
"id": "2b3539b5-b5c4-4d51-b570-4d90f6056f14",
"name": "input",
"type": "string",
"value": "",
"collapsed": false
},
{
"id": "aad8e667-b17d-435e-85a2-974a6bb10bb7",
"name": "conversationId",
"type": "string",
"value": "",
"collapsed": false
},
{
"id": "8658c06a-d84c-4ee3-bc5c-47b98f5b9d67",
"name": "files",
"type": "file[]",
"value": "",
"collapsed": false
}
]
}
},
"outputs": {
"files": {
"type": "file[]",
"description": "User uploaded files"
},
"input": {
"type": "string",
"description": "Primary user input or message"
},
"conversationId": {
"type": "string",
"description": "Conversation thread identifier"
}
},
"data": {},
"locked": false
},
"276feb2f-c809-4344-aee3-1ff0505e0459": {
"id": "276feb2f-c809-4344-aee3-1ff0505e0459",
"type": "agent",
"name": "Agent",
"position": {
"x": 580,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 0,
"subBlocks": {
"model": {
"id": "model",
"type": "short-input",
"value": "gemini-2.5-pro"
},
"tools": {
"id": "tools",
"type": "short-input",
"value": [
{
"type": "knowledge",
"title": "Knowledge Base",
"params": {
"topK": "5",
"knowledgeBaseId": "placeholder-kb-id"
},
"toolId": "knowledge_search",
"operation": "search",
"isExpanded": true,
"usageControl": "auto"
}
]
},
"apiKey": {
"id": "apiKey",
"type": "short-input",
"value": null
},
"skills": {
"id": "skills",
"type": "skill-input",
"value": null
},
"messages": {
"id": "messages",
"type": "messages-input",
"value": [
{
"role": "system",
"content": "Answer using knowledge base"
},
{
"role": "user",
"content": "<start.input>"
}
]
},
"maxTokens": {
"id": "maxTokens",
"type": "short-input",
"value": null
},
"verbosity": {
"id": "verbosity",
"type": "dropdown",
"value": null
},
"memoryType": {
"id": "memoryType",
"type": "dropdown",
"value": "none"
},
"temperature": {
"id": "temperature",
"type": "slider",
"value": null
},
"azureEndpoint": {
"id": "azureEndpoint",
"type": "short-input",
"value": null
},
"bedrockRegion": {
"id": "bedrockRegion",
"type": "short-input",
"value": null
},
"thinkingLevel": {
"id": "thinkingLevel",
"type": "dropdown",
"value": null
},
"vertexProject": {
"id": "vertexProject",
"type": "short-input",
"value": null
},
"conversationId": {
"id": "conversationId",
"type": "short-input",
"value": null
},
"responseFormat": {
"id": "responseFormat",
"type": "code",
"value": null
},
"vertexLocation": {
"id": "vertexLocation",
"type": "short-input",
"value": null
},
"azureApiVersion": {
"id": "azureApiVersion",
"type": "short-input",
"value": null
},
"reasoningEffort": {
"id": "reasoningEffort",
"type": "dropdown",
"value": null
},
"bedrockSecretKey": {
"id": "bedrockSecretKey",
"type": "short-input",
"value": null
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": null
},
"vertexCredential": {
"id": "vertexCredential",
"type": "oauth-input",
"value": null
},
"slidingWindowSize": {
"id": "slidingWindowSize",
"type": "short-input",
"value": null
},
"bedrockAccessKeyId": {
"id": "bedrockAccessKeyId",
"type": "short-input",
"value": null
},
"slidingWindowTokens": {
"id": "slidingWindowTokens",
"type": "short-input",
"value": null
},
"previousInteractionId": {
"id": "previousInteractionId",
"type": "short-input",
"value": null
}
},
"outputs": {
"cost": {
"type": "json",
"description": "Cost of the API call"
},
"model": {
"type": "string",
"description": "Model used for generation"
},
"tokens": {
"type": "json",
"description": "Token usage statistics"
},
"content": {
"type": "string",
"description": "Generated response content"
},
"toolCalls": {
"type": "json",
"description": "Tool calls made"
},
"providerTiming": {
"type": "json",
"description": "Provider timing information"
}
},
"data": {
"canonicalModes": {
"oauthCredential": "basic"
}
},
"locked": false
},
"d0eaf8bd-d234-4c52-a62a-d67d17ba617f": {
"id": "d0eaf8bd-d234-4c52-a62a-d67d17ba617f",
"type": "note",
"name": "Agent Setup",
"position": {
"x": 573.5022676225361,
"y": -72.17147114704349
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 0,
"subBlocks": {
"content": {
"id": "content",
"type": "long-input",
"value": "- Create a Knowledge Base in the Knowledge base tab and upload relevant documents \n- Select Knowledge Base in the tool here "
}
},
"outputs": {},
"data": {},
"locked": false
},
"3b06e171-145c-4118-b5e9-5362480dbc59": {
"id": "3b06e171-145c-4118-b5e9-5362480dbc59",
"type": "note",
"name": "Workflow Setup",
"position": {
"x": 153.7481407356546,
"y": -38.47285321350124
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 0,
"subBlocks": {
"content": {
"id": "content",
"type": "long-input",
"value": "- Deploy as Chat using the button on the top right\n- Select Chat Output as Agent's Content \n"
}
},
"outputs": {},
"data": {},
"locked": false
}
},
"edges": [
{
"id": "fcaefdd3-a4cc-4f08-9218-f5fbb1d90675",
"source": "9d182a31-8710-4651-8a85-cd432e7fecf7",
"target": "276feb2f-c809-4344-aee3-1ff0505e0459",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
}
],
"loops": {},
"parallels": {},
"metadata": {
"name": "knowledge-base-qa",
"description": "New workflow",
"color": "#b61717",
"exportedAt": "2026-03-09T21:40:19.009Z"
},
"variables": {}
}
}

View File

@@ -0,0 +1,520 @@
{
"version": "1.0",
"exportedAt": "2026-03-09T21:40:19.012Z",
"state": {
"blocks": {
"e146db47-fd1b-4823-8af4-eb3e078465c3": {
"id": "e146db47-fd1b-4823-8af4-eb3e078465c3",
"type": "start_trigger",
"name": "Start",
"position": {
"x": 220,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 100,
"subBlocks": {
"inputFormat": {
"id": "inputFormat",
"type": "input-format",
"value": [
{
"id": "40786453-e79e-4883-8ea2-b403ecbd617d",
"name": "Email",
"type": "string",
"value": "lead@company.com",
"collapsed": false
}
]
}
},
"outputs": {
"files": {
"type": "file[]",
"description": "User uploaded files"
},
"input": {
"type": "string",
"description": "Primary user input or message"
},
"conversationId": {
"type": "string",
"description": "Conversation thread identifier"
}
},
"data": {},
"locked": false
},
"7fcbdc64-a811-43dc-a6ef-ff9d3d66fe82": {
"id": "7fcbdc64-a811-43dc-a6ef-ff9d3d66fe82",
"type": "agent",
"name": "Agent",
"position": {
"x": 180,
"y": 100
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 259,
"subBlocks": {
"model": {
"id": "model",
"type": "short-input",
"value": ""
},
"tools": {
"id": "tools",
"type": "short-input",
"value": [
{
"type": "linkedin",
"params": {
"manualCredential": ""
},
"operation": "get_profile",
"isExpanded": true,
"usageControl": "auto"
}
]
},
"apiKey": {
"id": "apiKey",
"type": "short-input",
"value": null
},
"skills": {
"id": "skills",
"type": "skill-input",
"value": null
},
"messages": {
"id": "messages",
"type": "short-input",
"value": [
{
"role": "system",
"content": "Enrich lead data by looking up LinkedIn profile information for the given email address. Return structured data including name, title, company, location, and professional summary."
},
{
"role": "user",
"content": "<dataparallel.currentItem>"
}
]
},
"maxTokens": {
"id": "maxTokens",
"type": "short-input",
"value": null
},
"verbosity": {
"id": "verbosity",
"type": "dropdown",
"value": null
},
"memoryType": {
"id": "memoryType",
"type": "short-input",
"value": "none"
},
"temperature": {
"id": "temperature",
"type": "slider",
"value": null
},
"azureEndpoint": {
"id": "azureEndpoint",
"type": "short-input",
"value": null
},
"bedrockRegion": {
"id": "bedrockRegion",
"type": "short-input",
"value": null
},
"thinkingLevel": {
"id": "thinkingLevel",
"type": "dropdown",
"value": null
},
"vertexProject": {
"id": "vertexProject",
"type": "short-input",
"value": null
},
"conversationId": {
"id": "conversationId",
"type": "short-input",
"value": null
},
"responseFormat": {
"id": "responseFormat",
"type": "code",
"value": "{\n \"name\": \"enriched_lead_row\",\n \"schema\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"row\": {\n \"description\": \"A single row of enriched lead data as a 2D array [[email, name, title, company, location]]\",\n \"items\": {\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"maxItems\": 1,\n \"minItems\": 1,\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"row\"\n ],\n \"type\": \"object\"\n },\n \"strict\": true\n}"
},
"vertexLocation": {
"id": "vertexLocation",
"type": "short-input",
"value": null
},
"azureApiVersion": {
"id": "azureApiVersion",
"type": "short-input",
"value": null
},
"reasoningEffort": {
"id": "reasoningEffort",
"type": "dropdown",
"value": null
},
"bedrockSecretKey": {
"id": "bedrockSecretKey",
"type": "short-input",
"value": null
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": null
},
"vertexCredential": {
"id": "vertexCredential",
"type": "oauth-input",
"value": null
},
"slidingWindowSize": {
"id": "slidingWindowSize",
"type": "short-input",
"value": null
},
"bedrockAccessKeyId": {
"id": "bedrockAccessKeyId",
"type": "short-input",
"value": null
},
"slidingWindowTokens": {
"id": "slidingWindowTokens",
"type": "short-input",
"value": null
},
"previousInteractionId": {
"id": "previousInteractionId",
"type": "short-input",
"value": null
}
},
"outputs": {
"cost": {
"type": "json",
"description": "Cost of the API call"
},
"model": {
"type": "string",
"description": "Model used for generation"
},
"tokens": {
"type": "json",
"description": "Token usage statistics"
},
"content": {
"type": "string",
"description": "Generated response content"
},
"toolCalls": {
"type": "json",
"description": "Tool calls made"
},
"providerTiming": {
"type": "json",
"description": "Provider timing information"
}
},
"data": {
"extent": "parent",
"parentId": "567b9f45-eab6-4f34-8e0b-9342dae37717",
"canonicalModes": {
"oauthCredential": "basic",
"linkedin:oauthCredential": "basic"
}
},
"locked": false
},
"567b9f45-eab6-4f34-8e0b-9342dae37717": {
"id": "567b9f45-eab6-4f34-8e0b-9342dae37717",
"type": "parallel",
"name": "dataParallel",
"position": {
"x": 650,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 100,
"subBlocks": {
"collection": {
"id": "collection",
"type": "short-input",
"value": "<agent.content>"
},
"parallelType": {
"id": "parallelType",
"type": "short-input",
"value": "collection"
}
},
"outputs": {},
"data": {
"id": "567b9f45-eab6-4f34-8e0b-9342dae37717",
"type": "subflowNode",
"count": 5,
"nodes": ["7fcbdc64-a811-43dc-a6ef-ff9d3d66fe82", "9fdad60a-56f1-45ba-a1b5-ba4fcdee0988"],
"width": 953,
"height": 559,
"collection": "<start.emails>",
"distribution": "<start.emails>",
"parallelType": "collection"
},
"locked": false
},
"9fdad60a-56f1-45ba-a1b5-ba4fcdee0988": {
"id": "9fdad60a-56f1-45ba-a1b5-ba4fcdee0988",
"type": "google_sheets_v2",
"name": "GoogleSheets",
"position": {
"x": 583,
"y": 100
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 259,
"subBlocks": {
"title": {
"id": "title",
"type": "short-input",
"value": null
},
"ranges": {
"id": "ranges",
"type": "long-input",
"value": null
},
"values": {
"id": "values",
"type": "short-input",
"value": "<agent.row>"
},
"sheetId": {
"id": "sheetId",
"type": "short-input",
"value": null
},
"batchData": {
"id": "batchData",
"type": "long-input",
"value": null
},
"cellRange": {
"id": "cellRange",
"type": "short-input",
"value": null
},
"operation": {
"id": "operation",
"type": "short-input",
"value": "append"
},
"sheetName": {
"id": "sheetName",
"type": "sheet-selector",
"value": null
},
"credential": {
"id": "credential",
"type": "oauth-input",
"value": null
},
"filterValue": {
"id": "filterValue",
"type": "short-input",
"value": null
},
"sheetTitles": {
"id": "sheetTitles",
"type": "short-input",
"value": null
},
"filterColumn": {
"id": "filterColumn",
"type": "short-input",
"value": null
},
"spreadsheetId": {
"id": "spreadsheetId",
"type": "file-selector",
"value": null
},
"filterMatchType": {
"id": "filterMatchType",
"type": "dropdown",
"value": null
},
"manualSheetName": {
"id": "manualSheetName",
"type": "short-input",
"value": ""
},
"insertDataOption": {
"id": "insertDataOption",
"type": "short-input",
"value": "INSERT_ROWS"
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": ""
},
"valueInputOption": {
"id": "valueInputOption",
"type": "dropdown",
"value": null
},
"manualSpreadsheetId": {
"id": "manualSpreadsheetId",
"type": "short-input",
"value": ""
},
"destinationSpreadsheetId": {
"id": "destinationSpreadsheetId",
"type": "short-input",
"value": null
}
},
"outputs": {
"metadata": {
"type": "json",
"properties": {
"spreadsheetId": {
"type": "string",
"description": "Google Sheets spreadsheet ID"
},
"spreadsheetUrl": {
"type": "string",
"description": "Spreadsheet URL"
}
},
"description": "Spreadsheet metadata including ID and URL"
},
"tableRange": {
"type": "string",
"description": "Range of the table where data was appended"
},
"updatedRows": {
"type": "number",
"description": "Number of rows updated"
},
"updatedCells": {
"type": "number",
"description": "Number of cells updated"
},
"updatedRange": {
"type": "string",
"description": "Range of cells that were updated"
},
"updatedColumns": {
"type": "number",
"description": "Number of columns updated"
}
},
"data": {
"extent": "parent",
"parentId": "567b9f45-eab6-4f34-8e0b-9342dae37717",
"canonicalModes": {
"sheetName": "advanced",
"spreadsheetId": "basic",
"oauthCredential": "basic"
}
},
"locked": false
},
"96abf661-31f3-4fd3-9e7c-6cf5ac178fc0": {
"id": "96abf661-31f3-4fd3-9e7c-6cf5ac178fc0",
"type": "note",
"name": "Agent Setup",
"position": {
"x": 982.9212280313601,
"y": -20.17741919706892
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 114,
"subBlocks": {
"content": {
"id": "content",
"type": "long-input",
"value": "- Select a Model of your Choice \n- Connect Linkedin Account \n- Connect Google Sheets Account"
}
},
"outputs": {},
"data": {},
"locked": false
}
},
"edges": [
{
"id": "42aba092-b19a-49a8-b8d0-7e03ad70c2d4",
"source": "567b9f45-eab6-4f34-8e0b-9342dae37717",
"target": "7fcbdc64-a811-43dc-a6ef-ff9d3d66fe82",
"sourceHandle": "parallel-start-source",
"targetHandle": "target",
"type": "default",
"data": {}
},
{
"id": "e67a21d1-93b5-4bb7-993d-06160802abc8",
"source": "7fcbdc64-a811-43dc-a6ef-ff9d3d66fe82",
"target": "9fdad60a-56f1-45ba-a1b5-ba4fcdee0988",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
},
{
"id": "780e83b8-65ad-4561-950c-06b89d2a82f1",
"source": "e146db47-fd1b-4823-8af4-eb3e078465c3",
"target": "567b9f45-eab6-4f34-8e0b-9342dae37717",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
}
],
"loops": {},
"parallels": {
"567b9f45-eab6-4f34-8e0b-9342dae37717": {
"id": "567b9f45-eab6-4f34-8e0b-9342dae37717",
"nodes": ["7fcbdc64-a811-43dc-a6ef-ff9d3d66fe82", "9fdad60a-56f1-45ba-a1b5-ba4fcdee0988"],
"distribution": "<start.emails>",
"count": 5,
"parallelType": "collection",
"enabled": true
}
},
"metadata": {
"name": "lead-enricher",
"description": "New workflow",
"color": "#1486d1",
"exportedAt": "2026-03-09T21:40:19.011Z"
},
"variables": {}
}
}

View File

@@ -0,0 +1,813 @@
{
"version": "1.0",
"exportedAt": "2026-03-09T21:40:19.013Z",
"state": {
"blocks": {
"9f657d7a-b6d0-4a9d-aaac-ffc909df1b24": {
"id": "9f657d7a-b6d0-4a9d-aaac-ffc909df1b24",
"type": "schedule",
"name": "Start",
"position": {
"x": 150,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": true,
"height": 114,
"subBlocks": {
"timezone": {
"id": "timezone",
"type": "short-input",
"value": "America/New_York"
},
"inputFormat": {
"id": "inputFormat",
"type": "input-format",
"value": [
{
"id": "f7bc7ff9-8c98-4bc2-a193-8884ea3a203f",
"name": "",
"type": "string",
"value": "",
"collapsed": false
}
]
},
"scheduleType": {
"id": "scheduleType",
"type": "short-input",
"value": "minutes"
},
"minutesInterval": {
"id": "minutesInterval",
"type": "short-input",
"value": "15"
}
},
"outputs": {
"files": {
"type": "file[]",
"description": "User uploaded files"
},
"input": {
"type": "string",
"description": "Primary user input or message"
},
"conversationId": {
"type": "string",
"description": "Conversation thread identifier"
}
},
"data": {},
"locked": false
},
"b6030d6c-ad21-41b2-bd43-8e2ce9633ef1": {
"id": "b6030d6c-ad21-41b2-bd43-8e2ce9633ef1",
"type": "function",
"name": "parseAttendees",
"position": {
"x": 1588,
"y": 136
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 100,
"subBlocks": {
"code": {
"id": "code",
"type": "short-input",
"value": "const attendeesString = input.attendees || '';\nconst attendeesArray = attendeesString.split(',').map(email => email.trim()).filter(email => email.length > 0);\nreturn { attendees: attendeesArray };"
},
"language": {
"id": "language",
"type": "short-input",
"value": "javascript"
}
},
"outputs": {
"result": {
"type": "json",
"description": "Return value from the executed JavaScript function"
},
"stdout": {
"type": "string",
"description": "Console log output and debug messages from function execution"
}
},
"data": {},
"locked": false
},
"a2b4bbcb-aa56-46ce-9e42-2e4933c57f71": {
"id": "a2b4bbcb-aa56-46ce-9e42-2e4933c57f71",
"type": "loop",
"name": "attendeeLoop",
"position": {
"x": 2150,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 0,
"subBlocks": {
"loopType": {
"id": "loopType",
"type": "short-input",
"value": "forEach"
},
"collection": {
"id": "collection",
"type": "short-input",
"value": "<parseAttendees.result.attendees>"
}
},
"outputs": {},
"data": {
"width": 550,
"height": 588,
"loopType": "forEach",
"collection": "<parseAttendees.result.attendees>",
"whileCondition": "",
"doWhileCondition": ""
},
"locked": false
},
"663243e9-73ee-4efb-beae-65ddcbe480f8": {
"id": "663243e9-73ee-4efb-beae-65ddcbe480f8",
"type": "note",
"name": "Calendar Setup",
"position": {
"x": 648,
"y": -54
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 0,
"subBlocks": {
"content": {
"id": "content",
"type": "short-input",
"value": "- Connect Google Calendar Account \n- Select Calendar \n- Set Start and End Time Filters"
}
},
"outputs": {},
"data": {},
"locked": false
},
"ce6ca249-fcdf-45fc-824e-0511879469f2": {
"id": "ce6ca249-fcdf-45fc-824e-0511879469f2",
"type": "agent",
"name": "emailDrafter",
"position": {
"x": 1150,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 259,
"subBlocks": {
"model": {
"id": "model",
"type": "short-input",
"value": "gemini-2.5-pro"
},
"tools": {
"id": "tools",
"type": "tool-input",
"value": []
},
"apiKey": {
"id": "apiKey",
"type": "short-input",
"value": null
},
"skills": {
"id": "skills",
"type": "skill-input",
"value": null
},
"messages": {
"id": "messages",
"type": "messages-input",
"value": [
{
"role": "system",
"content": "Draft follow-up emails based on meeting details. Create a professional follow-up email summarizing the meeting and any action items.\n\nIMPORTANT: For the attendees field, you MUST return a comma-separated string of email addresses, NOT an array. Format example: \"john@example.com, jane@example.com, bob@example.com\""
},
{
"role": "user",
"content": "Meeting details:\nTitle: <calendarevents.events>\n\nPlease draft a professional follow-up email for this meeting. Include:\n1. Thank the attendees for their time\n2. Summarize key discussion points from the meeting title/description\n3. List any action items or next steps\n4. Professional sign-off\n\nRemember: Return attendees as a comma-separated string like \"email1@example.com, email2@example.com\""
}
]
},
"maxTokens": {
"id": "maxTokens",
"type": "short-input",
"value": null
},
"verbosity": {
"id": "verbosity",
"type": "dropdown",
"value": null
},
"memoryType": {
"id": "memoryType",
"type": "dropdown",
"value": "none"
},
"temperature": {
"id": "temperature",
"type": "short-input",
"value": 0.3
},
"azureEndpoint": {
"id": "azureEndpoint",
"type": "short-input",
"value": null
},
"bedrockRegion": {
"id": "bedrockRegion",
"type": "short-input",
"value": null
},
"thinkingLevel": {
"id": "thinkingLevel",
"type": "dropdown",
"value": null
},
"vertexProject": {
"id": "vertexProject",
"type": "short-input",
"value": null
},
"conversationId": {
"id": "conversationId",
"type": "short-input",
"value": null
},
"responseFormat": {
"id": "responseFormat",
"type": "short-input",
"value": "{\n \"json_schema\": {\n \"name\": \"email_output\",\n \"schema\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"attendees\": {\n \"description\": \"A comma-separated string of attendee email addresses. Format as: email1@example.com, email2@example.com (NOT an array, must be a single string with emails separated by commas)\",\n \"type\": \"string\"\n },\n \"body\": {\n \"description\": \"Email body content\",\n \"type\": \"string\"\n },\n \"subject\": {\n \"description\": \"Email subject line\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"subject\",\n \"body\",\n \"attendees\"\n ],\n \"type\": \"object\"\n },\n \"strict\": true\n },\n \"type\": \"json_schema\"\n}"
},
"vertexLocation": {
"id": "vertexLocation",
"type": "short-input",
"value": null
},
"azureApiVersion": {
"id": "azureApiVersion",
"type": "short-input",
"value": null
},
"reasoningEffort": {
"id": "reasoningEffort",
"type": "dropdown",
"value": null
},
"bedrockSecretKey": {
"id": "bedrockSecretKey",
"type": "short-input",
"value": null
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": null
},
"vertexCredential": {
"id": "vertexCredential",
"type": "oauth-input",
"value": null
},
"slidingWindowSize": {
"id": "slidingWindowSize",
"type": "short-input",
"value": null
},
"bedrockAccessKeyId": {
"id": "bedrockAccessKeyId",
"type": "short-input",
"value": null
},
"slidingWindowTokens": {
"id": "slidingWindowTokens",
"type": "short-input",
"value": null
},
"previousInteractionId": {
"id": "previousInteractionId",
"type": "short-input",
"value": null
}
},
"outputs": {
"cost": {
"type": "json",
"description": "Cost of the API call"
},
"model": {
"type": "string",
"description": "Model used for generation"
},
"tokens": {
"type": "json",
"description": "Token usage statistics"
},
"content": {
"type": "string",
"description": "Generated response content"
},
"toolCalls": {
"type": "json",
"description": "Tool calls made"
},
"providerTiming": {
"type": "json",
"description": "Provider timing information"
}
},
"data": {
"canonicalModes": {
"oauthCredential": "basic"
}
},
"locked": false
},
"ddb0094c-3f55-43e1-8198-8372a63c0a2c": {
"id": "ddb0094c-3f55-43e1-8198-8372a63c0a2c",
"type": "google_calendar_v2",
"name": "calendarEvents",
"position": {
"x": 649,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 230,
"subBlocks": {
"text": {
"id": "text",
"type": "long-input",
"value": null
},
"eventId": {
"id": "eventId",
"type": "short-input",
"value": null
},
"summary": {
"id": "summary",
"type": "short-input",
"value": null
},
"timeMax": {
"id": "timeMax",
"type": "short-input",
"value": ""
},
"timeMin": {
"id": "timeMin",
"type": "short-input",
"value": ""
},
"location": {
"id": "location",
"type": "short-input",
"value": null
},
"attendees": {
"id": "attendees",
"type": "short-input",
"value": null
},
"operation": {
"id": "operation",
"type": "short-input",
"value": "list"
},
"calendarId": {
"id": "calendarId",
"type": "file-selector",
"value": null
},
"credential": {
"id": "credential",
"type": "oauth-input",
"value": null
},
"maxResults": {
"id": "maxResults",
"type": "short-input",
"value": null
},
"description": {
"id": "description",
"type": "long-input",
"value": null
},
"endDateTime": {
"id": "endDateTime",
"type": "short-input",
"value": null
},
"sendUpdates": {
"id": "sendUpdates",
"type": "dropdown",
"value": null
},
"minAccessRole": {
"id": "minAccessRole",
"type": "dropdown",
"value": null
},
"startDateTime": {
"id": "startDateTime",
"type": "short-input",
"value": null
},
"replaceExisting": {
"id": "replaceExisting",
"type": "dropdown",
"value": null
},
"manualCalendarId": {
"id": "manualCalendarId",
"type": "short-input",
"value": ""
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": ""
},
"destinationCalendar": {
"id": "destinationCalendar",
"type": "file-selector",
"value": null
},
"manualDestinationCalendarId": {
"id": "manualDestinationCalendarId",
"type": "short-input",
"value": null
}
},
"outputs": {
"events": {
"type": "json",
"description": "List of events"
},
"timeZone": {
"type": "string",
"optional": true,
"description": "Calendar time zone"
},
"nextPageToken": {
"type": "string",
"optional": true,
"description": "Next page token"
}
},
"data": {
"canonicalModes": {
"calendarId": "basic",
"oauthCredential": "basic",
"destinationCalendarId": "basic"
}
},
"locked": false
},
"836f06e4-b3d3-47f5-977d-1d1e98d1f029": {
"id": "836f06e4-b3d3-47f5-977d-1d1e98d1f029",
"type": "gmail_v2",
"name": "sendEmail",
"position": {
"x": 180,
"y": 100
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 288,
"subBlocks": {
"cc": {
"id": "cc",
"type": "short-input",
"value": null
},
"to": {
"id": "to",
"type": "short-input",
"value": "<loop.currentItem>"
},
"bcc": {
"id": "bcc",
"type": "short-input",
"value": null
},
"body": {
"id": "body",
"type": "short-input",
"value": "<emailDrafter.content.body>"
},
"query": {
"id": "query",
"type": "short-input",
"value": null
},
"folder": {
"id": "folder",
"type": "folder-selector",
"value": null
},
"subject": {
"id": "subject",
"type": "short-input",
"value": "<emailDrafter.content.subject>"
},
"labelIds": {
"id": "labelIds",
"type": "dropdown",
"value": null
},
"threadId": {
"id": "threadId",
"type": "short-input",
"value": null
},
"messageId": {
"id": "messageId",
"type": "short-input",
"value": null
},
"operation": {
"id": "operation",
"type": "short-input",
"value": "send_gmail"
},
"credential": {
"id": "credential",
"type": "oauth-input",
"value": null
},
"markAsRead": {
"id": "markAsRead",
"type": "switch",
"value": null
},
"maxResults": {
"id": "maxResults",
"type": "short-input",
"value": null
},
"unreadOnly": {
"id": "unreadOnly",
"type": "switch",
"value": null
},
"attachments": {
"id": "attachments",
"type": "short-input",
"value": null
},
"contentType": {
"id": "contentType",
"type": "short-input",
"value": "text"
},
"searchQuery": {
"id": "searchQuery",
"type": "short-input",
"value": null
},
"sourceLabel": {
"id": "sourceLabel",
"type": "folder-selector",
"value": null
},
"manualFolder": {
"id": "manualFolder",
"type": "short-input",
"value": null
},
"labelSelector": {
"id": "labelSelector",
"type": "folder-selector",
"value": null
},
"manualLabelId": {
"id": "manualLabelId",
"type": "short-input",
"value": null
},
"moveMessageId": {
"id": "moveMessageId",
"type": "short-input",
"value": null
},
"actionMessageId": {
"id": "actionMessageId",
"type": "short-input",
"value": null
},
"attachmentFiles": {
"id": "attachmentFiles",
"type": "file-upload",
"value": null
},
"destinationLabel": {
"id": "destinationLabel",
"type": "folder-selector",
"value": null
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": ""
},
"replyToMessageId": {
"id": "replyToMessageId",
"type": "short-input",
"value": null
},
"manualSourceLabel": {
"id": "manualSourceLabel",
"type": "short-input",
"value": null
},
"includeAttachments": {
"id": "includeAttachments",
"type": "switch",
"value": null
},
"triggerCredentials": {
"id": "triggerCredentials",
"type": "oauth-input",
"value": null
},
"labelFilterBehavior": {
"id": "labelFilterBehavior",
"type": "dropdown",
"value": null
},
"triggerInstructions": {
"id": "triggerInstructions",
"type": "text",
"value": null
},
"labelActionMessageId": {
"id": "labelActionMessageId",
"type": "short-input",
"value": null
},
"manualDestinationLabel": {
"id": "manualDestinationLabel",
"type": "short-input",
"value": null
},
"samplePayload_gmail_poller": {
"id": "samplePayload_gmail_poller",
"type": "code",
"value": null
}
},
"outputs": {
"id": {
"type": "string",
"optional": true,
"description": "Gmail message ID"
},
"labelIds": {
"type": "array",
"items": {
"type": "string"
},
"optional": true,
"description": "Email labels"
},
"threadId": {
"type": "string",
"optional": true,
"description": "Gmail thread ID"
}
},
"data": {
"extent": "parent",
"parentId": "a2b4bbcb-aa56-46ce-9e42-2e4933c57f71",
"canonicalModes": {
"folder": "basic",
"addLabelIds": "basic",
"attachments": "basic",
"manageLabelId": "basic",
"removeLabelIds": "basic",
"oauthCredential": "basic"
}
},
"locked": false
},
"038cd27a-de0c-479a-a69b-f424b5da01b3": {
"id": "038cd27a-de0c-479a-a69b-f424b5da01b3",
"type": "note",
"name": "Gmail Setup",
"position": {
"x": 2275,
"y": 12.5
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 114,
"subBlocks": {
"content": {
"id": "content",
"type": "short-input",
"value": "- Connect Gmail Account"
}
},
"outputs": {},
"data": {},
"locked": false
}
},
"edges": [
{
"id": "be295f73-9393-4d40-8b01-38fcbcf11674",
"source": "9f657d7a-b6d0-4a9d-aaac-ffc909df1b24",
"target": "ddb0094c-3f55-43e1-8198-8372a63c0a2c",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
},
{
"id": "e9b031b1-6957-44f4-a6e6-a9886bb11fb0",
"source": "ddb0094c-3f55-43e1-8198-8372a63c0a2c",
"target": "ce6ca249-fcdf-45fc-824e-0511879469f2",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
},
{
"id": "f8b3242c-d811-4988-a56a-34b06b7afaeb",
"source": "ce6ca249-fcdf-45fc-824e-0511879469f2",
"target": "b6030d6c-ad21-41b2-bd43-8e2ce9633ef1",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
},
{
"id": "bc0b49f7-6b21-49e6-9469-17885ffa8996",
"source": "b6030d6c-ad21-41b2-bd43-8e2ce9633ef1",
"target": "a2b4bbcb-aa56-46ce-9e42-2e4933c57f71",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
},
{
"id": "05315d4f-81b4-464a-bfaf-5afef10d5608",
"source": "a2b4bbcb-aa56-46ce-9e42-2e4933c57f71",
"target": "836f06e4-b3d3-47f5-977d-1d1e98d1f029",
"sourceHandle": "loop-start-source",
"targetHandle": "target",
"type": "default",
"data": {}
}
],
"loops": {
"a2b4bbcb-aa56-46ce-9e42-2e4933c57f71": {
"id": "a2b4bbcb-aa56-46ce-9e42-2e4933c57f71",
"nodes": ["836f06e4-b3d3-47f5-977d-1d1e98d1f029"],
"iterations": 5,
"loopType": "forEach",
"enabled": true,
"forEachItems": "<parseAttendees.result.attendees>",
"whileCondition": "",
"doWhileCondition": ""
}
},
"parallels": {},
"metadata": {
"name": "meeting-followup-agent",
"description": "New workflow",
"color": "#2ed96a",
"exportedAt": "2026-03-09T21:40:19.013Z"
},
"variables": {}
}
}

View File

@@ -0,0 +1,821 @@
{
"version": "1.0",
"exportedAt": "2026-03-09T21:40:19.014Z",
"state": {
"blocks": {
"88c4fce8-e349-41ba-9dbd-ca63b6d34b60": {
"id": "88c4fce8-e349-41ba-9dbd-ca63b6d34b60",
"type": "supabase",
"name": "supabaseInvoices",
"position": {
"x": 1650,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 259,
"subBlocks": {
"data": {
"id": "data",
"type": "short-input",
"value": "<invoiceExtractor.content>"
},
"file": {
"id": "file",
"type": "file-upload",
"value": null
},
"path": {
"id": "path",
"type": "short-input",
"value": null
},
"limit": {
"id": "limit",
"type": "short-input",
"value": null
},
"paths": {
"id": "paths",
"type": "code",
"value": null
},
"query": {
"id": "query",
"type": "short-input",
"value": null
},
"table": {
"id": "table",
"type": "short-input",
"value": "invoices"
},
"apiKey": {
"id": "apiKey",
"type": "short-input",
"value": "{{SUPABASE_API_KEY}}"
},
"bucket": {
"id": "bucket",
"type": "short-input",
"value": null
},
"column": {
"id": "column",
"type": "short-input",
"value": null
},
"filter": {
"id": "filter",
"type": "short-input",
"value": null
},
"offset": {
"id": "offset",
"type": "short-input",
"value": null
},
"params": {
"id": "params",
"type": "code",
"value": null
},
"schema": {
"id": "schema",
"type": "short-input",
"value": null
},
"search": {
"id": "search",
"type": "short-input",
"value": null
},
"select": {
"id": "select",
"type": "short-input",
"value": null
},
"sortBy": {
"id": "sortBy",
"type": "dropdown",
"value": null
},
"toPath": {
"id": "toPath",
"type": "short-input",
"value": null
},
"upsert": {
"id": "upsert",
"type": "dropdown",
"value": null
},
"orderBy": {
"id": "orderBy",
"type": "short-input",
"value": null
},
"download": {
"id": "download",
"type": "dropdown",
"value": null
},
"fileName": {
"id": "fileName",
"type": "short-input",
"value": null
},
"fromPath": {
"id": "fromPath",
"type": "short-input",
"value": null
},
"isPublic": {
"id": "isPublic",
"type": "dropdown",
"value": null
},
"language": {
"id": "language",
"type": "short-input",
"value": null
},
"countType": {
"id": "countType",
"type": "dropdown",
"value": null
},
"expiresIn": {
"id": "expiresIn",
"type": "short-input",
"value": null
},
"operation": {
"id": "operation",
"type": "short-input",
"value": "insert"
},
"projectId": {
"id": "projectId",
"type": "short-input",
"value": null
},
"sortOrder": {
"id": "sortOrder",
"type": "dropdown",
"value": null
},
"matchCount": {
"id": "matchCount",
"type": "short-input",
"value": null
},
"searchType": {
"id": "searchType",
"type": "dropdown",
"value": null
},
"contentType": {
"id": "contentType",
"type": "short-input",
"value": null
},
"fileContent": {
"id": "fileContent",
"type": "short-input",
"value": null
},
"functionName": {
"id": "functionName",
"type": "short-input",
"value": null
},
"fileSizeLimit": {
"id": "fileSizeLimit",
"type": "short-input",
"value": null
},
"matchThreshold": {
"id": "matchThreshold",
"type": "short-input",
"value": null
},
"queryEmbedding": {
"id": "queryEmbedding",
"type": "code",
"value": null
},
"allowedMimeTypes": {
"id": "allowedMimeTypes",
"type": "code",
"value": null
}
},
"outputs": {
"message": {
"type": "string",
"description": "Operation status message"
},
"results": {
"type": "array",
"description": "Array of inserted records"
}
},
"data": {
"canonicalModes": {
"fileData": "basic"
}
},
"locked": false
},
"1fbe6757-baa6-4488-8b4d-e71afaea3bda": {
"id": "1fbe6757-baa6-4488-8b4d-e71afaea3bda",
"type": "file_v3",
"name": "File Parser",
"position": {
"x": 650,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 0,
"subBlocks": {
"file": {
"id": "file",
"type": "file-upload",
"value": null
},
"fileUrl": {
"id": "fileUrl",
"type": "short-input",
"value": "<gmailtrigger.email.attachments[0].url>"
}
},
"outputs": {
"files": {
"type": "file[]",
"description": "Parsed files as UserFile objects"
},
"combinedContent": {
"type": "string",
"description": "Combined content of all parsed files"
}
},
"data": {
"canonicalModes": {
"fileInput": "advanced"
}
},
"locked": false
},
"f9f5e591-70a5-46a6-9cc2-84078e7022e8": {
"id": "f9f5e591-70a5-46a6-9cc2-84078e7022e8",
"type": "agent",
"name": "invoiceExtractor",
"position": {
"x": 1150,
"y": 152.09459172294703
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 259,
"subBlocks": {
"model": {
"id": "model",
"type": "short-input",
"value": "gpt-5.2"
},
"tools": {
"id": "tools",
"type": "short-input",
"value": [
{
"type": "mistral_parse_v3",
"title": "Mistral Parser",
"params": {
"resultType": "markdown",
"fileReference": "<fileparser.files[0]>"
},
"toolId": "mistral_parser_v3",
"isExpanded": true,
"usageControl": "auto"
}
]
},
"apiKey": {
"id": "apiKey",
"type": "short-input",
"value": null
},
"skills": {
"id": "skills",
"type": "skill-input",
"value": null
},
"messages": {
"id": "messages",
"type": "messages-input",
"value": [
{
"role": "system",
"content": "Extract invoice fields from the provided PDF document"
},
{
"role": "user",
"content": "Extract all invoice fields from the PDF document attached to this email. The attachment URL is: <gmailtrigger.email.attachments[0].url>. Use the Textract tool to parse the document and extract the invoice data."
}
]
},
"maxTokens": {
"id": "maxTokens",
"type": "short-input",
"value": null
},
"verbosity": {
"id": "verbosity",
"type": "dropdown",
"value": null
},
"memoryType": {
"id": "memoryType",
"type": "dropdown",
"value": "none"
},
"temperature": {
"id": "temperature",
"type": "short-input",
"value": 0.3
},
"azureEndpoint": {
"id": "azureEndpoint",
"type": "short-input",
"value": null
},
"bedrockRegion": {
"id": "bedrockRegion",
"type": "short-input",
"value": null
},
"thinkingLevel": {
"id": "thinkingLevel",
"type": "dropdown",
"value": null
},
"vertexProject": {
"id": "vertexProject",
"type": "short-input",
"value": null
},
"conversationId": {
"id": "conversationId",
"type": "short-input",
"value": null
},
"responseFormat": {
"id": "responseFormat",
"type": "code",
"value": null
},
"vertexLocation": {
"id": "vertexLocation",
"type": "short-input",
"value": null
},
"azureApiVersion": {
"id": "azureApiVersion",
"type": "short-input",
"value": null
},
"reasoningEffort": {
"id": "reasoningEffort",
"type": "dropdown",
"value": null
},
"bedrockSecretKey": {
"id": "bedrockSecretKey",
"type": "short-input",
"value": null
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": null
},
"vertexCredential": {
"id": "vertexCredential",
"type": "oauth-input",
"value": null
},
"slidingWindowSize": {
"id": "slidingWindowSize",
"type": "short-input",
"value": null
},
"bedrockAccessKeyId": {
"id": "bedrockAccessKeyId",
"type": "short-input",
"value": null
},
"slidingWindowTokens": {
"id": "slidingWindowTokens",
"type": "short-input",
"value": null
},
"previousInteractionId": {
"id": "previousInteractionId",
"type": "short-input",
"value": null
}
},
"outputs": {
"cost": {
"type": "json",
"description": "Cost of the API call"
},
"model": {
"type": "string",
"description": "Model used for generation"
},
"tokens": {
"type": "json",
"description": "Token usage statistics"
},
"content": {
"type": "string",
"description": "Generated response content"
},
"toolCalls": {
"type": "json",
"description": "Tool calls made"
},
"providerTiming": {
"type": "json",
"description": "Provider timing information"
}
},
"data": {
"canonicalModes": {
"oauthCredential": "basic",
"mistral_parse_v3:document": "advanced"
}
},
"locked": false
},
"a1880fed-ec19-4720-bdd3-6856c4425bc2": {
"id": "a1880fed-ec19-4720-bdd3-6856c4425bc2",
"type": "gmail_v2",
"name": "gmailTrigger",
"position": {
"x": 150,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": true,
"height": 0,
"subBlocks": {
"cc": {
"id": "cc",
"type": "short-input",
"value": null
},
"to": {
"id": "to",
"type": "short-input",
"value": null
},
"bcc": {
"id": "bcc",
"type": "short-input",
"value": null
},
"body": {
"id": "body",
"type": "long-input",
"value": null
},
"query": {
"id": "query",
"type": "short-input",
"value": null
},
"folder": {
"id": "folder",
"type": "folder-selector",
"value": null
},
"subject": {
"id": "subject",
"type": "short-input",
"value": null
},
"labelIds": {
"id": "labelIds",
"type": "dropdown",
"value": null
},
"threadId": {
"id": "threadId",
"type": "short-input",
"value": null
},
"messageId": {
"id": "messageId",
"type": "short-input",
"value": null
},
"operation": {
"id": "operation",
"type": "dropdown",
"value": null
},
"credential": {
"id": "credential",
"type": "oauth-input",
"value": null
},
"markAsRead": {
"id": "markAsRead",
"type": "short-input",
"value": false
},
"maxResults": {
"id": "maxResults",
"type": "short-input",
"value": null
},
"unreadOnly": {
"id": "unreadOnly",
"type": "switch",
"value": null
},
"attachments": {
"id": "attachments",
"type": "short-input",
"value": null
},
"contentType": {
"id": "contentType",
"type": "dropdown",
"value": null
},
"searchQuery": {
"id": "searchQuery",
"type": "short-input",
"value": null
},
"sourceLabel": {
"id": "sourceLabel",
"type": "folder-selector",
"value": null
},
"manualFolder": {
"id": "manualFolder",
"type": "short-input",
"value": null
},
"labelSelector": {
"id": "labelSelector",
"type": "folder-selector",
"value": null
},
"manualLabelId": {
"id": "manualLabelId",
"type": "short-input",
"value": null
},
"moveMessageId": {
"id": "moveMessageId",
"type": "short-input",
"value": null
},
"actionMessageId": {
"id": "actionMessageId",
"type": "short-input",
"value": null
},
"attachmentFiles": {
"id": "attachmentFiles",
"type": "file-upload",
"value": null
},
"destinationLabel": {
"id": "destinationLabel",
"type": "folder-selector",
"value": null
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": null
},
"replyToMessageId": {
"id": "replyToMessageId",
"type": "short-input",
"value": null
},
"manualSourceLabel": {
"id": "manualSourceLabel",
"type": "short-input",
"value": null
},
"includeAttachments": {
"id": "includeAttachments",
"type": "short-input",
"value": true
},
"triggerCredentials": {
"id": "triggerCredentials",
"type": "short-input",
"value": null
},
"labelFilterBehavior": {
"id": "labelFilterBehavior",
"type": "short-input",
"value": "INCLUDE"
},
"triggerInstructions": {
"id": "triggerInstructions",
"type": "text",
"value": null
},
"labelActionMessageId": {
"id": "labelActionMessageId",
"type": "short-input",
"value": null
},
"manualDestinationLabel": {
"id": "manualDestinationLabel",
"type": "short-input",
"value": null
},
"samplePayload_gmail_poller": {
"id": "samplePayload_gmail_poller",
"type": "code",
"value": null
}
},
"outputs": {
"email": {
"cc": {
"type": "string",
"description": "CC recipients"
},
"id": {
"type": "string",
"description": "Gmail message ID"
},
"to": {
"type": "string",
"description": "Recipient email address"
},
"date": {
"type": "string",
"description": "Email date in ISO format"
},
"from": {
"type": "string",
"description": "Sender email address"
},
"labels": {
"type": "string",
"description": "Email labels array"
},
"subject": {
"type": "string",
"description": "Email subject line"
},
"bodyHtml": {
"type": "string",
"description": "HTML email body"
},
"bodyText": {
"type": "string",
"description": "Plain text email body"
},
"threadId": {
"type": "string",
"description": "Gmail thread ID"
},
"attachments": {
"type": "file[]",
"description": "Array of email attachments as files (if includeAttachments is enabled)"
},
"hasAttachments": {
"type": "boolean",
"description": "Whether email has attachments"
}
},
"timestamp": {
"type": "string",
"description": "Event timestamp"
}
},
"data": {
"canonicalModes": {
"folder": "basic",
"addLabelIds": "basic",
"attachments": "basic",
"manageLabelId": "basic",
"removeLabelIds": "basic",
"oauthCredential": "basic"
}
},
"locked": false
},
"6ca6a47e-36db-4728-aa23-635bdcb3fa70": {
"id": "6ca6a47e-36db-4728-aa23-635bdcb3fa70",
"type": "note",
"name": "Gmail Setup",
"position": {
"x": 147.09586673447242,
"y": 14.230452516160646
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 0,
"subBlocks": {
"content": {
"id": "content",
"type": "long-input",
"value": "- Connect Gmail Account \n- Select Relevant Labels if needed"
}
},
"outputs": {},
"data": {},
"locked": false
},
"16e2b354-2924-4022-9335-59bd929f1381": {
"id": "16e2b354-2924-4022-9335-59bd929f1381",
"type": "note",
"name": "Supabase Setup",
"position": {
"x": 1659.0192982175643,
"y": -65.81005643625652
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 114,
"subBlocks": {
"content": {
"id": "content",
"type": "long-input",
"value": "- Set Supabase Project Id in a Secret as {{SUPABASE_PROJECT_ID}}\n- Set service role secret as {{SUPABASE_API_KEY}}"
}
},
"outputs": {},
"data": {},
"locked": false
}
},
"edges": [
{
"id": "632109a8-f13f-482c-b24b-ae0078bc8834",
"source": "f9f5e591-70a5-46a6-9cc2-84078e7022e8",
"target": "88c4fce8-e349-41ba-9dbd-ca63b6d34b60",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
},
{
"id": "dd6a5faf-af38-4b5b-983a-4d9155b7dcb3",
"source": "1fbe6757-baa6-4488-8b4d-e71afaea3bda",
"target": "f9f5e591-70a5-46a6-9cc2-84078e7022e8",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
},
{
"id": "7780c36d-56c7-4349-bf32-df2911676dd3",
"source": "a1880fed-ec19-4720-bdd3-6856c4425bc2",
"target": "1fbe6757-baa6-4488-8b4d-e71afaea3bda",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
}
],
"loops": {},
"parallels": {},
"metadata": {
"name": "ocr-invoice-db",
"description": "Your first workflow - start building here!",
"color": "#3972F6",
"exportedAt": "2026-03-09T21:40:19.014Z"
},
"variables": {}
}
}

View File

@@ -0,0 +1,485 @@
{
"version": "1.0",
"exportedAt": "2026-03-09T21:40:19.013Z",
"state": {
"blocks": {
"1abd6f01-04a4-4c69-9344-4b5cc2afe816": {
"id": "1abd6f01-04a4-4c69-9344-4b5cc2afe816",
"type": "start_trigger",
"name": "Start",
"position": {
"x": 150,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 100,
"subBlocks": {
"inputFormat": {
"id": "inputFormat",
"type": "input-format",
"value": [
{
"id": "b2cc9328-2024-4ff0-862f-c0ecaafa0dff",
"name": "resumeFile",
"type": "file[]",
"description": "PDF Resume"
}
]
}
},
"outputs": {
"files": {
"type": "file[]",
"description": "User uploaded files"
},
"input": {
"type": "string",
"description": "Primary user input or message"
},
"conversationId": {
"type": "string",
"description": "Conversation thread identifier"
}
},
"data": {},
"locked": false
},
"015feca5-9044-4bc8-be1e-536454264ece": {
"id": "015feca5-9044-4bc8-be1e-536454264ece",
"type": "agent",
"name": "resumeParser",
"position": {
"x": 581.640625,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 288,
"subBlocks": {
"model": {
"id": "model",
"type": "short-input",
"value": ""
},
"tools": {
"id": "tools",
"type": "short-input",
"value": [
{
"type": "mistral_parse_v3",
"title": "Mistral Parser",
"params": {
"resultType": "markdown",
"fileReference": "<start.resumeFile>"
},
"toolId": "mistral_parser_v3",
"isExpanded": true,
"usageControl": "force"
}
]
},
"apiKey": {
"id": "apiKey",
"type": "short-input",
"value": null
},
"skills": {
"id": "skills",
"type": "skill-input",
"value": null
},
"messages": {
"id": "messages",
"type": "messages-input",
"value": [
{
"role": "system",
"content": "Parse resume fields"
}
]
},
"maxTokens": {
"id": "maxTokens",
"type": "short-input",
"value": null
},
"verbosity": {
"id": "verbosity",
"type": "dropdown",
"value": null
},
"memoryType": {
"id": "memoryType",
"type": "dropdown",
"value": "none"
},
"temperature": {
"id": "temperature",
"type": "slider",
"value": null
},
"azureEndpoint": {
"id": "azureEndpoint",
"type": "short-input",
"value": null
},
"bedrockRegion": {
"id": "bedrockRegion",
"type": "short-input",
"value": null
},
"thinkingLevel": {
"id": "thinkingLevel",
"type": "dropdown",
"value": null
},
"vertexProject": {
"id": "vertexProject",
"type": "short-input",
"value": null
},
"conversationId": {
"id": "conversationId",
"type": "short-input",
"value": null
},
"responseFormat": {
"id": "responseFormat",
"type": "short-input",
"value": "{\n \"name\": \"candidate_info\",\n \"schema\": {\n \"additionalProperties\": false,\n \"properties\": {\n \"education\": {\n \"description\": \"Education background\",\n \"type\": \"string\"\n },\n \"email\": {\n \"description\": \"Candidate's email address\",\n \"type\": \"string\"\n },\n \"experience\": {\n \"description\": \"Work experience summary\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Candidate's full name\",\n \"type\": \"string\"\n },\n \"phone\": {\n \"description\": \"Candidate's phone number\",\n \"type\": \"string\"\n },\n \"skills\": {\n \"description\": \"Key skills\",\n \"type\": \"string\"\n },\n \"summary\": {\n \"description\": \"Professional summary or objective\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"email\",\n \"phone\",\n \"summary\",\n \"experience\",\n \"education\",\n \"skills\"\n ],\n \"type\": \"object\"\n },\n \"strict\": true\n}"
},
"vertexLocation": {
"id": "vertexLocation",
"type": "short-input",
"value": null
},
"azureApiVersion": {
"id": "azureApiVersion",
"type": "short-input",
"value": null
},
"reasoningEffort": {
"id": "reasoningEffort",
"type": "dropdown",
"value": null
},
"bedrockSecretKey": {
"id": "bedrockSecretKey",
"type": "short-input",
"value": null
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": null
},
"vertexCredential": {
"id": "vertexCredential",
"type": "oauth-input",
"value": null
},
"slidingWindowSize": {
"id": "slidingWindowSize",
"type": "short-input",
"value": null
},
"bedrockAccessKeyId": {
"id": "bedrockAccessKeyId",
"type": "short-input",
"value": null
},
"slidingWindowTokens": {
"id": "slidingWindowTokens",
"type": "short-input",
"value": null
},
"previousInteractionId": {
"id": "previousInteractionId",
"type": "short-input",
"value": null
}
},
"outputs": {
"name": {
"type": "string",
"description": "Candidate's full name"
},
"email": {
"type": "string",
"description": "Candidate's email address"
},
"phone": {
"type": "string",
"description": "Candidate's phone number"
},
"skills": {
"type": "string",
"description": "Key skills"
},
"summary": {
"type": "string",
"description": "Professional summary or objective"
},
"education": {
"type": "string",
"description": "Education background"
},
"experience": {
"type": "string",
"description": "Work experience summary"
}
},
"data": {
"canonicalModes": {
"oauthCredential": "basic",
"reducto_v2:document": "advanced",
"mistral_parse_v3:document": "advanced"
}
},
"locked": false
},
"808dd734-31a6-4440-bfda-d1be028ac2f7": {
"id": "808dd734-31a6-4440-bfda-d1be028ac2f7",
"type": "note",
"name": "Google Sheets Setup",
"position": {
"x": 1001.6440011186405,
"y": -7.809815030718283
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 114,
"subBlocks": {
"content": {
"id": "content",
"type": "short-input",
"value": "- Connect Google Sheets Account \n- Select relevant spreadsheet \n"
}
},
"outputs": {},
"data": {},
"locked": false
},
"dfa14e2d-6071-4188-b5d8-c1f2ecb09d88": {
"id": "dfa14e2d-6071-4188-b5d8-c1f2ecb09d88",
"type": "google_sheets_v2",
"name": "candidatesSheet",
"position": {
"x": 1010,
"y": 150
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 0,
"subBlocks": {
"title": {
"id": "title",
"type": "short-input",
"value": null
},
"ranges": {
"id": "ranges",
"type": "long-input",
"value": null
},
"values": {
"id": "values",
"type": "short-input",
"value": "[[\"<resumeParser.content.name>\", \"<resumeParser.content.email>\", \"<resumeParser.content.phone>\", \"<resumeParser.content.summary>\", \"<resumeParser.content.experience>\", \"<resumeParser.content.education>\", \"<resumeParser.content.skills>\"]]"
},
"sheetId": {
"id": "sheetId",
"type": "short-input",
"value": null
},
"batchData": {
"id": "batchData",
"type": "long-input",
"value": null
},
"cellRange": {
"id": "cellRange",
"type": "short-input",
"value": null
},
"operation": {
"id": "operation",
"type": "short-input",
"value": "append"
},
"sheetName": {
"id": "sheetName",
"type": "sheet-selector",
"value": null
},
"credential": {
"id": "credential",
"type": "oauth-input",
"value": null
},
"filterValue": {
"id": "filterValue",
"type": "short-input",
"value": null
},
"sheetTitles": {
"id": "sheetTitles",
"type": "short-input",
"value": null
},
"filterColumn": {
"id": "filterColumn",
"type": "short-input",
"value": null
},
"spreadsheetId": {
"id": "spreadsheetId",
"type": "file-selector",
"value": null
},
"filterMatchType": {
"id": "filterMatchType",
"type": "dropdown",
"value": null
},
"manualSheetName": {
"id": "manualSheetName",
"type": "short-input",
"value": "Sheet1"
},
"insertDataOption": {
"id": "insertDataOption",
"type": "short-input",
"value": "INSERT_ROWS"
},
"manualCredential": {
"id": "manualCredential",
"type": "short-input",
"value": "9XZ3B8KDqUKwhQGwNJK7rJdIFX18VkeN"
},
"valueInputOption": {
"id": "valueInputOption",
"type": "dropdown",
"value": null
},
"manualSpreadsheetId": {
"id": "manualSpreadsheetId",
"type": "short-input",
"value": "Candidates"
},
"destinationSpreadsheetId": {
"id": "destinationSpreadsheetId",
"type": "short-input",
"value": null
}
},
"outputs": {
"metadata": {
"type": "json",
"properties": {
"spreadsheetId": {
"type": "string",
"description": "Google Sheets spreadsheet ID"
},
"spreadsheetUrl": {
"type": "string",
"description": "Spreadsheet URL"
}
},
"description": "Spreadsheet metadata including ID and URL"
},
"tableRange": {
"type": "string",
"description": "Range of the table where data was appended"
},
"updatedRows": {
"type": "number",
"description": "Number of rows updated"
},
"updatedCells": {
"type": "number",
"description": "Number of cells updated"
},
"updatedRange": {
"type": "string",
"description": "Range of cells that were updated"
},
"updatedColumns": {
"type": "number",
"description": "Number of columns updated"
}
},
"data": {
"canonicalModes": {
"sheetName": "advanced",
"spreadsheetId": "basic",
"oauthCredential": "basic"
}
},
"locked": false
},
"ca748c0f-eeb7-4ee7-b279-ceb4c1848ea8": {
"id": "ca748c0f-eeb7-4ee7-b279-ceb4c1848ea8",
"type": "note",
"name": "API Setup",
"position": {
"x": 153.14457477885225,
"y": -242.20344578716245
},
"enabled": true,
"horizontalHandles": true,
"advancedMode": false,
"triggerMode": false,
"height": 114,
"subBlocks": {
"content": {
"id": "content",
"type": "short-input",
"value": "\nThis Workflow is to be triggered via API. \n\n- Deploy using the button in the top right and call the workflow as an API using the endpoint in the instructions! \n\n- You can pass in files using the format: \n[{\n \"data\": \"<base64>\",\n \"type\": \"file\",\n \"name\": \"document.pdf\",\n \"mime\": \"application/pdf\"\n}]"
}
},
"outputs": {},
"data": {},
"locked": false
}
},
"edges": [
{
"id": "a79bb6c6-4afe-4082-9285-777ebe4101ed",
"source": "1abd6f01-04a4-4c69-9344-4b5cc2afe816",
"target": "015feca5-9044-4bc8-be1e-536454264ece",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
},
{
"id": "4b0791e8-fef4-4a27-b4e1-6a780511cb59",
"source": "015feca5-9044-4bc8-be1e-536454264ece",
"target": "dfa14e2d-6071-4188-b5d8-c1f2ecb09d88",
"sourceHandle": "source",
"targetHandle": "target",
"type": "default",
"data": {}
}
],
"loops": {},
"parallels": {},
"metadata": {
"name": "resume-parser",
"description": "New workflow",
"color": "#1e9de8",
"exportedAt": "2026-03-09T21:40:19.013Z"
},
"variables": {}
}
}