diff --git a/apps/sim/app/(landing)/careers/components/job-board/job-groups.tsx b/apps/sim/app/(landing)/careers/components/job-board/job-groups.tsx index 8962a59843d..dbce8d1b8c9 100644 --- a/apps/sim/app/(landing)/careers/components/job-board/job-groups.tsx +++ b/apps/sim/app/(landing)/careers/components/job-board/job-groups.tsx @@ -4,7 +4,7 @@ import type { CareerPosting } from '@/lib/ashby/jobs' import type { DepartmentGroup } from '@/app/(landing)/careers/components/job-board/utils' /** Empty-state copy: distinguishes a truly empty board from a filtered-to-zero view. */ -const NO_OPEN_ROLES_MESSAGE = 'No open roles right now — check back soon.' +const NO_OPEN_ROLES_MESSAGE = 'No open roles right now. Check back soon.' const NO_MATCHING_ROLES_MESSAGE = 'No roles match these filters right now. Try clearing them, or check back soon.' diff --git a/apps/sim/app/(landing)/components/features/components/build-callout/components/build-chat-animation/build-chat-animation.tsx b/apps/sim/app/(landing)/components/features/components/build-callout/components/build-chat-animation/build-chat-animation.tsx index e005ab6de22..d8334668478 100644 --- a/apps/sim/app/(landing)/components/features/components/build-callout/components/build-chat-animation/build-chat-animation.tsx +++ b/apps/sim/app/(landing)/components/features/components/build-callout/components/build-chat-animation/build-chat-animation.tsx @@ -8,7 +8,7 @@ import { ThinkingLoader } from '@/components/ui' const PROMPT = 'Build a workflow to schedule and publish posts to my X account.' const REPLY = - 'On it — building a workflow with a schedule trigger, a drafting agent, and an X publish step.' + 'On it. Building a workflow with a schedule trigger, a drafting agent, and an X publish step.' const REPLY_WORDS = REPLY.split(' ') const TYPE_START_MS = 900 diff --git a/apps/sim/app/(landing)/components/features/features.tsx b/apps/sim/app/(landing)/components/features/features.tsx index 8c089c58377..fe8fb8351d4 100644 --- a/apps/sim/app/(landing)/components/features/features.tsx +++ b/apps/sim/app/(landing)/components/features/features.tsx @@ -54,7 +54,7 @@ export function Features() { @@ -65,7 +65,7 @@ export function Features() { @@ -76,7 +76,7 @@ export function Features() { - Sim is your AI workspace
- for building agentic workflows. + Sim is the AI workspace
+ for building AI agents. } - description='The open-source workspace where teams build, deploy, and manage AI agents.' + description='Open source, with 1,000+ integrations and every major LLM. Build, deploy, and manage agents visually, conversationally, or with code.' />
`, OG/Twitter cards (`page.tsx`), and the JSON-LD + * `WebPage.description` below, so the three surfaces never drift. + */ +export const HOME_PAGE_DESCRIPTION = + 'Sim is the open-source AI workspace where teams build, deploy, and manage AI agents across 1,000+ integrations and every major LLM, visually or with code.' + const HOME_JSON_LD = { '@context': 'https://schema.org', '@graph': [ @@ -27,8 +35,7 @@ const HOME_JSON_LD = { isPartOf: { '@id': `${SITE_URL}#website` }, about: { '@id': `${SITE_URL}#software` }, datePublished: '2024-01-01T00:00:00+00:00', - description: - 'Sim is the open-source AI workspace where teams build, deploy, and manage AI agents. Connect 1,000+ integrations and every major LLM to create agents that automate real work.', + description: HOME_PAGE_DESCRIPTION, breadcrumb: { '@id': `${SITE_URL}#breadcrumb` }, inLanguage: 'en-US', speakable: { @@ -93,7 +100,7 @@ const HOME_JSON_LD = { ], featureList: [ 'AI workspace for teams', - 'Mothership: natural language agent creation', + 'Chat: build and manage agents in natural language', 'Visual workflow builder', '1,000+ integrations', 'LLM orchestration (OpenAI, Anthropic, Google, xAI, Mistral, Perplexity)', diff --git a/apps/sim/app/(landing)/components/home-structured-data/index.ts b/apps/sim/app/(landing)/components/home-structured-data/index.ts index b1087e43528..61d458f204c 100644 --- a/apps/sim/app/(landing)/components/home-structured-data/index.ts +++ b/apps/sim/app/(landing)/components/home-structured-data/index.ts @@ -1 +1 @@ -export { HomeStructuredData } from './home-structured-data' +export { HOME_PAGE_DESCRIPTION, HomeStructuredData } from './home-structured-data' diff --git a/apps/sim/app/(landing)/components/mothership/mothership.tsx b/apps/sim/app/(landing)/components/mothership/mothership.tsx index 648fffb8da9..62f0d9d34f5 100644 --- a/apps/sim/app/(landing)/components/mothership/mothership.tsx +++ b/apps/sim/app/(landing)/components/mothership/mothership.tsx @@ -45,7 +45,7 @@ const AREAS: Area[] = [ size: 180, definition: ( <> - One catalog of 1,000+ integrations + Sim's catalog of 1,000+ integrations
your agents act through. @@ -55,7 +55,7 @@ const AREAS: Area[] = [ word: 'Context', Mark: IsoIngestIllustration, size: 170, - definition: 'Your data, stored semantically as the memory your agents reason over.', + definition: 'Your data, stored semantically in Sim as the memory your agents reason over.', }, { word: 'Build', @@ -67,7 +67,7 @@ const AREAS: Area[] = [ word: 'Monitor', Mark: IsoMonitorIllustration, size: 174, - definition: 'See inside every run with live traces, logs, and real cost.', + definition: 'See inside every run in Sim: live traces, logs, and real cost.', }, ] diff --git a/apps/sim/app/(landing)/components/product-demo/product-demo.tsx b/apps/sim/app/(landing)/components/product-demo/product-demo.tsx index 5515f151c81..10d1f030024 100644 --- a/apps/sim/app/(landing)/components/product-demo/product-demo.tsx +++ b/apps/sim/app/(landing)/components/product-demo/product-demo.tsx @@ -46,7 +46,7 @@ export function ProductDemo() {

Tell Sim what you need in plain English and it wires blocks, models, and integrations - into a working agent, ready to run. + into a working agent.

diff --git a/apps/sim/app/(landing)/components/solutions-page/components/solutions-structured-data/solutions-structured-data.tsx b/apps/sim/app/(landing)/components/solutions-page/components/solutions-structured-data/solutions-structured-data.tsx index fb314970350..04b53f84fd9 100644 --- a/apps/sim/app/(landing)/components/solutions-page/components/solutions-structured-data/solutions-structured-data.tsx +++ b/apps/sim/app/(landing)/components/solutions-page/components/solutions-structured-data/solutions-structured-data.tsx @@ -22,7 +22,7 @@ interface SolutionsStructuredDataProps { } export function SolutionsStructuredData({ config }: SolutionsStructuredDataProps) { - const { module, path, hero, rows } = config + const { module, path, seoDescription, offersFreeTier = true, hero, rows } = config const url = `${SITE_URL}${path}` const featureList = Array.from( new Set(rows.flatMap((row) => row.cards.map((card) => card.title))) @@ -36,7 +36,7 @@ export function SolutionsStructuredData({ config }: SolutionsStructuredDataProps '@id': `${url}#webpage`, url, name: hero.heading, - description: hero.summary, + description: seoDescription ?? hero.summary, isPartOf: { '@id': `${SITE_URL}#website` }, about: { '@id': `${url}#application` }, breadcrumb: { '@id': `${url}#breadcrumb` }, @@ -59,7 +59,9 @@ export function SolutionsStructuredData({ config }: SolutionsStructuredDataProps operatingSystem: 'Web', url, featureList, - offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' }, + ...(offersFreeTier && { + offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' }, + }), }, ], } diff --git a/apps/sim/app/(landing)/components/solutions-page/types.ts b/apps/sim/app/(landing)/components/solutions-page/types.ts index 127536852eb..1e02a27653a 100644 --- a/apps/sim/app/(landing)/components/solutions-page/types.ts +++ b/apps/sim/app/(landing)/components/solutions-page/types.ts @@ -112,6 +112,18 @@ export interface SolutionsPageConfig { module: string /** Canonical path, e.g. "/workflows" - used to build the JSON-LD `url`/breadcrumb. */ path: string + /** + * The page's meta description, shared with `page.tsx` so the JSON-LD + * `WebPage.description` and the `` never drift. + * Falls back to `hero.summary` when absent. + */ + seoDescription?: string + /** + * Whether the JSON-LD `WebApplication` advertises the free tier as an + * `Offer`. Defaults to true; sales-led pages (Enterprise) set false so a + * rich result never claims a $0 price for a quoted product. + */ + offersFreeTier?: boolean /** The hero (the page's only `

`). */ hero: SolutionsHeroConfig /** Card rows rendered in order beneath the logos row. */ diff --git a/apps/sim/app/(landing)/enterprise/components/feature-graphics/build-methods-graphic.tsx b/apps/sim/app/(landing)/enterprise/components/feature-graphics/build-methods-graphic.tsx index d9d6ce9fa17..0d369e19cdc 100644 --- a/apps/sim/app/(landing)/enterprise/components/feature-graphics/build-methods-graphic.tsx +++ b/apps/sim/app/(landing)/enterprise/components/feature-graphics/build-methods-graphic.tsx @@ -62,7 +62,7 @@ const CODE_TOTAL_CHARS = CODE_LINE_LENGTHS.reduce((total, length) => total + len const PROMPT = 'Create a support agent that answers customer questions' const REPLY = - 'On it — scaffolding a support agent with Zendesk and Slack that answers customer questions.' + 'On it. Scaffolding a support agent with Zendesk and Slack that answers customer questions.' const REPLY_WORDS = REPLY.split(' ') const CODE_START_MS = 500 diff --git a/apps/sim/app/(landing)/enterprise/enterprise.tsx b/apps/sim/app/(landing)/enterprise/enterprise.tsx index 41e8131a621..15acbe4bcd3 100644 --- a/apps/sim/app/(landing)/enterprise/enterprise.tsx +++ b/apps/sim/app/(landing)/enterprise/enterprise.tsx @@ -44,14 +44,25 @@ import { * (each card), never skipped. Server Component; the interactive leaves live in * the shared landing components. */ +/** + * The enterprise page's canonical description - shared by `page.tsx` (the + * `` and OG/Twitter cards) and the JSON-LD + * `WebPage.description` via {@link SolutionsPageConfig.seoDescription}. + */ +export const ENTERPRISE_SEO_DESCRIPTION = + 'Sim is the AI workspace where teams build, deploy, and govern enterprise AI agents with SOC2, role-based access, audit trails, and 1,000+ integrations.' + const ENTERPRISE_CONFIG: SolutionsPageConfig = { module: 'Enterprise', path: '/enterprise', + seoDescription: ENTERPRISE_SEO_DESCRIPTION, + offersFreeTier: false, hero: { - heading: 'The AI Agent Platform for Enterprise Teams', - description: 'Build, deploy, and govern enterprise AI agents in one workspace.', + heading: 'Sim is the AI workspace for enterprise AI agents.', + description: + 'IT, operations, and technical teams build, deploy, and govern agents in Sim, with SOC2, role-based access, approvals, and full audit trails.', summary: - 'Sim is the open-source enterprise AI agent platform where IT, operations, and technical teams build, deploy, and govern enterprise AI agents in one AI workspace. Connect 1,000+ integrations and every major LLM, with security, role-based access, approvals, observability, versioning, and audit trails for reliable deployment across teams.', + 'Sim is the open-source AI workspace where IT, operations, and technical teams build, deploy, and govern enterprise AI agents. Connect 1,000+ integrations and every major LLM, with role-based access, approvals, versioning, and full audit trails.', /** * The shared {@link PlatformHeroVisual} backdrop-plus-demo-window * composition, filled by the {@link EnterprisePlatformLoop} - a sibling of @@ -69,14 +80,14 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = { rows: [ { id: 'build', - title: 'Build, Deploy, and Manage Enterprise AI Agents in One Workspace', + title: 'Build, Deploy, and Manage AI Agents in One Workspace', subtitle: - 'Build enterprise AI agents, ship to production, and manage every version from one workspace.', + 'Sim carries agents from first draft to production, with versioning and monitoring built in.', cta: { label: 'Start building', href: SIGNUP_HREF }, cards: [ { title: 'Build visually or with code', - description: 'Create agents in the visual builder, through chat, or directly in code.', + description: "Create agents in Sim's visual builder, through chat, or directly in code.", visual: , }, { @@ -89,7 +100,7 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = { }, { title: 'Manage the full lifecycle', - description: 'Version, monitor, and edit every agent as your workflows evolve.', + description: 'Version, monitor, and edit every agent in Sim as your workflows evolve.', visual: , }, ], @@ -98,7 +109,7 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = { id: 'governance', title: 'Governance and Security for Enterprise AI Agents', subtitle: - 'Security, approvals, and controls keep enterprise AI agents trusted in production.', + 'Sim gives security teams role-based access, approval paths, and a complete audit trail for every deployment.', cta: { label: 'See security', href: DEMO_HREF }, cards: [ { @@ -109,13 +120,13 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = { }, { title: 'Prove every action', - description: 'Trace every run block by block with a complete audit trail.', + description: 'Sim traces every run block by block with a complete audit trail.', visual: , }, { title: 'Meet enterprise standards', description: - 'SOC2 compliance and open source give security teams a clear path to review.', + 'Sim is SOC2 compliant and open source, giving security teams a clear path to review.', visual: , featureTileTone: 'dark', featureTileDescriptionTone: 'soft', @@ -125,7 +136,8 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = { { id: 'deploy', title: 'Deploy Enterprise Workflow Agents with Confidence', - subtitle: 'Stage, observe, and version workflow agents before they reach production.', + subtitle: + 'Test in staging, watch live runs, and roll back in seconds. Sim versions every deployment.', cta: { label: 'Explore deployment', href: SIGNUP_HREF }, cards: [ { @@ -135,12 +147,12 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = { }, { title: 'Watch every run', - description: 'See live logs, run history, and monitoring in one place.', + description: 'Sim shows live logs, run history, and monitoring in one place.', visual: , }, { title: 'Roll back safely', - description: 'Version workflows and roll back production agents in seconds.', + description: 'Sim versions workflows so you can roll back production agents in seconds.', visual: , }, ], @@ -149,7 +161,7 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = { id: 'teams', title: 'Built for Enterprise Teams', subtitle: - 'Built for the teams that own enterprise AI agents across IT, operations, and engineering.', + 'IT, operations, and engineering teams share one Sim workspace, each with the controls their role needs.', cta: { label: 'Talk to sales', href: DEMO_HREF }, cards: [ { @@ -166,7 +178,7 @@ const ENTERPRISE_CONFIG: SolutionsPageConfig = { }, { title: 'Technical teams', - description: 'Let technical teams ship, review, and maintain agents together.', + description: 'Technical teams ship, review, and maintain agents together in Sim.', visual: , }, ], diff --git a/apps/sim/app/(landing)/enterprise/page.tsx b/apps/sim/app/(landing)/enterprise/page.tsx index 8fa995cc5e0..ebd457b6281 100644 --- a/apps/sim/app/(landing)/enterprise/page.tsx +++ b/apps/sim/app/(landing)/enterprise/page.tsx @@ -1,15 +1,13 @@ import { buildLandingMetadata } from '@/lib/landing/seo' -import EnterprisePage from '@/app/(landing)/enterprise/enterprise' +import EnterprisePage, { ENTERPRISE_SEO_DESCRIPTION } from '@/app/(landing)/enterprise/enterprise' export const revalidate = 3600 -const TITLE = 'Enterprise AI Agent Platform | Sim AI' -const DESCRIPTION = - 'Build, deploy, and govern enterprise AI agents in one workspace with security, approvals, observability, and collaboration.' +const TITLE = 'Enterprise AI Agent Platform | Sim' export const metadata = buildLandingMetadata({ title: TITLE, - description: DESCRIPTION, + description: ENTERPRISE_SEO_DESCRIPTION, path: '/enterprise', keywords: 'enterprise ai agents, enterprise ai agent, enterprise ai agent platform, enterprise workflow agents', diff --git a/apps/sim/app/(landing)/files/files.tsx b/apps/sim/app/(landing)/files/files.tsx index 0144b1d7fc9..ccf2123ed40 100644 --- a/apps/sim/app/(landing)/files/files.tsx +++ b/apps/sim/app/(landing)/files/files.tsx @@ -28,16 +28,21 @@ import { DocumentDraftGraphic } from '@/app/(landing)/solutions/components/featu * document draft retold for file routing, file history, parse runs, and * agent-written reports. */ +/** Shared meta + JSON-LD description for the Files page (one string, zero drift). */ +export const FILES_PAGE_DESCRIPTION = + 'Files is the file storage for AI agents and teams in Sim. Upload, create, and share in one store, and agents read files as inputs and write outputs back.' + const FILES_CONFIG: SolutionsPageConfig = { module: 'Files', path: '/files', + seoDescription: FILES_PAGE_DESCRIPTION, hero: { eyebrow: 'Files', heading: 'One file store for your team and every agent in Sim.', description: - 'Upload, create, and share in Files, the file store in Sim, the open-source AI workspace. Agents read files as inputs, produce files as outputs, and share them with your team in one place.', + 'Files is the file storage for teams and every AI agent in Sim, the open-source AI workspace. Upload, create, and share. Agents read files as inputs and produce new files as outputs.', summary: - 'Files is the file store in Sim, the open-source AI workspace where teams build, deploy, and manage AI agents. Teams upload, create, and share files in one place, and Sim agents read those files as inputs, parse them, and produce new files as outputs shared with everyone.', + 'Files is the file storage for teams and AI agents in Sim, the open-source AI workspace where teams build, deploy, and manage AI agents. Teams upload, create, and share files, and agents read them as inputs, parse them, and produce new files as outputs.', visual: ( diff --git a/apps/sim/app/(landing)/files/page.tsx b/apps/sim/app/(landing)/files/page.tsx index cefb4ff6bc9..28b5adfe6c1 100644 --- a/apps/sim/app/(landing)/files/page.tsx +++ b/apps/sim/app/(landing)/files/page.tsx @@ -1,15 +1,13 @@ import { buildLandingMetadata } from '@/lib/landing/seo' -import Files from '@/app/(landing)/files/files' +import Files, { FILES_PAGE_DESCRIPTION } from '@/app/(landing)/files/files' export const revalidate = 3600 -const TITLE = 'Files | One File Store for Teams and Agents in Sim, the AI Workspace' -const DESCRIPTION = - 'Files is the file store in Sim, the open-source AI workspace. Upload, create, and share files in one place — agents read them as inputs and produce them as outputs.' +const TITLE = 'File Storage for AI Agents and Your Team | Sim' export const metadata = buildLandingMetadata({ title: TITLE, - description: DESCRIPTION, + description: FILES_PAGE_DESCRIPTION, path: '/files', keywords: 'AI workspace, file store for AI agents, shared file storage, AI agents read files, agents generate files, document parsing agents, AI file management, open-source AI workspace', diff --git a/apps/sim/app/(landing)/knowledge/knowledge.tsx b/apps/sim/app/(landing)/knowledge/knowledge.tsx index e2937fca2a6..f70d1f06e41 100644 --- a/apps/sim/app/(landing)/knowledge/knowledge.tsx +++ b/apps/sim/app/(landing)/knowledge/knowledge.tsx @@ -31,14 +31,19 @@ import { KnowledgeAnswerGraphic } from '@/app/(landing)/solutions/components/fea * to the platform page's (`WebPage` + `BreadcrumbList` + * `WebApplication`), so the feature-tile treatment is SEO-neutral. */ +/** Shared meta + JSON-LD description for the Knowledge Base page (one string, zero drift). */ +export const KNOWLEDGE_PAGE_DESCRIPTION = + 'Give AI agents a knowledge base in Sim. Upload docs, sync Notion, Google Drive, and Confluence, and get answers grounded in your data, with citations.' + const KNOWLEDGE_CONFIG: SolutionsPageConfig = { module: 'Knowledge Base', path: '/knowledge', + seoDescription: KNOWLEDGE_PAGE_DESCRIPTION, hero: { eyebrow: 'Knowledge Base', - heading: "Give your agents memory of your company's data in Sim.", + heading: "Give AI agents memory of your data with Sim's knowledge base.", description: - "Knowledge Base is your agents' memory in Sim, the open-source AI workspace. Upload docs, sync sources like Notion and Google Drive, and get answers grounded in your own data, with citations.", + "Knowledge Base is your agents' memory in Sim, the open-source AI workspace. Upload docs, sync sources like Notion and Google Drive, and get answers grounded in your data, with citations.", summary: 'Knowledge Base is the agent-memory module in Sim, the open-source AI workspace where teams build, deploy, and manage AI agents. Teams upload docs or sync sources like Notion, Google Drive, and Confluence, and every agent answers from that data with citations, kept fresh automatically.', visual: ( @@ -68,7 +73,7 @@ const KNOWLEDGE_CONFIG: SolutionsPageConfig = { visual: ( @@ -155,7 +160,7 @@ const KNOWLEDGE_CONFIG: SolutionsPageConfig = { { title: 'One memory for every agent', description: - 'Every agent in Sim reads from the same knowledge base — in Chat, in workflows, and in deployed agents — so answers stay consistent.', + 'Every agent in Sim reads from the same knowledge base, in Chat, in workflows, and in deployed agents, so answers stay consistent.', featureTileTone: 'dark', featureTileDescriptionTone: 'soft', visual: ( diff --git a/apps/sim/app/(landing)/knowledge/page.tsx b/apps/sim/app/(landing)/knowledge/page.tsx index a011534dd47..2fbd30797c1 100644 --- a/apps/sim/app/(landing)/knowledge/page.tsx +++ b/apps/sim/app/(landing)/knowledge/page.tsx @@ -1,15 +1,13 @@ import { buildLandingMetadata } from '@/lib/landing/seo' -import Knowledge from '@/app/(landing)/knowledge/knowledge' +import Knowledge, { KNOWLEDGE_PAGE_DESCRIPTION } from '@/app/(landing)/knowledge/knowledge' export const revalidate = 3600 -const TITLE = 'Knowledge Base | Agent Memory in Sim, the AI Workspace' -const DESCRIPTION = - "Knowledge Base is your agents' memory in Sim, the open-source AI workspace. Upload docs, sync sources like Notion and Google Drive, and get answers grounded in your own data, with citations." +const TITLE = 'Knowledge Base for AI Agents: Memory & Citations | Sim' export const metadata = buildLandingMetadata({ title: TITLE, - description: DESCRIPTION, + description: KNOWLEDGE_PAGE_DESCRIPTION, path: '/knowledge', keywords: 'AI workspace, knowledge base for AI agents, agent memory, ground AI answers in company data, sync documents to AI agents, AI answers with citations, open-source AI workspace', diff --git a/apps/sim/app/(landing)/logs/logs.tsx b/apps/sim/app/(landing)/logs/logs.tsx index aff975a556b..b3755a2973f 100644 --- a/apps/sim/app/(landing)/logs/logs.tsx +++ b/apps/sim/app/(landing)/logs/logs.tsx @@ -33,16 +33,21 @@ import { LogsHeroLoop } from '@/app/(landing)/logs/components/logs-hero-loop' * to the platform page's (`WebPage` + `BreadcrumbList` + * `WebApplication`), so the feature-tile treatment is SEO-neutral. */ +/** Shared meta + JSON-LD description for the Logs page (one string, zero drift). */ +export const LOGS_PAGE_DESCRIPTION = + 'Sim gives teams AI agent observability: trace every run step by step, search and filter across runs, and catch failures with alerts.' + const LOGS_CONFIG: SolutionsPageConfig = { module: 'Logs', path: '/logs', + seoDescription: LOGS_PAGE_DESCRIPTION, hero: { eyebrow: 'Logs', - heading: 'Trace every agent decision, block by block, in Sim.', + heading: 'Trace every agent run with full observability in Sim.', description: - 'Logs give teams full visibility into every run in Sim, the open-source AI workspace. Follow each agent run block by block, filter and search across every run, and catch failures the moment they happen.', + 'Logs is the AI agent observability layer in Sim, the open-source AI workspace. Follow each run block by block, search across every run, and catch failures with alerts.', summary: - 'Logs is the visibility layer in Sim, the open-source AI workspace where teams build, deploy, and manage AI agents. Sim records every agent run block by block, so teams trace each decision, tool call, and output, filter and search across every run, and catch failures with alerts.', + 'Logs is the AI agent observability layer in Sim, the open-source AI workspace where teams build, deploy, and manage AI agents. Sim records every step of every run, so teams trace each decision, tool call, and output, and catch failures with alerts.', visual: ( @@ -54,13 +59,13 @@ const LOGS_CONFIG: SolutionsPageConfig = { id: 'trace', title: 'See exactly what every agent did.', subtitle: - 'Sim records every agent run block by block, so teams can follow each decision, tool call, and output on one timeline.', + 'Sim records every step of every agent run, so teams can follow each decision, tool call, and output on one timeline.', cta: { label: 'Explore Logs in Sim', href: '/signup' }, cards: [ { title: 'Trace runs block by block', description: - 'Sim captures every step of a run, each block, tool call, and model response with its duration, so no agent decision is a black box.', + 'Sim captures every step of a run: each block, tool call, and model response, with its duration.', featureTileTone: 'dark', featureTileDescriptionTone: 'soft', visual: , @@ -135,13 +140,13 @@ const LOGS_CONFIG: SolutionsPageConfig = { { title: 'Filter to the runs that matter', description: - 'Search and filter every run in Sim by workflow, status, trigger, and time, so one failure is never buried under a thousand successes.', + 'Search and filter every run in Sim by workflow, status, trigger, and time, so failed runs surface fast.', visual: , }, { title: 'Debug with full context', description: - 'Sim snapshots each run, so teams open a failed run with its inputs, outputs, and trace intact and see exactly which block broke.', + 'Sim snapshots each run, so teams open a failed run with inputs, outputs, and trace intact and see which block broke.', visual: ( @@ -51,7 +56,7 @@ const SCHEDULED_TASKS_CONFIG: SolutionsPageConfig = { rows: [ { id: 'schedule', - title: 'Put any agent on a cadence.', + title: 'Put any agent on a schedule.', subtitle: 'Sim turns a workflow into a scheduled task with one trigger, from 15-minute intervals to monthly closes, in your timezone.', cta: { label: 'Schedule your first agent', href: '/signup' }, @@ -132,7 +137,7 @@ const SCHEDULED_TASKS_CONFIG: SolutionsPageConfig = { { title: 'Keep it running', description: - 'Schedules stay live in production. Pause, resume, or retune the cadence without redeploying.', + 'Schedules stay live in production. Pause, resume, or retune the timing without redeploying.', featureTileTone: 'dark', featureTileDescriptionTone: 'soft', visual: ( diff --git a/apps/sim/app/(landing)/solutions/compliance/compliance.tsx b/apps/sim/app/(landing)/solutions/compliance/compliance.tsx index 96720d1dc34..f99c3ac6c00 100644 --- a/apps/sim/app/(landing)/solutions/compliance/compliance.tsx +++ b/apps/sim/app/(landing)/solutions/compliance/compliance.tsx @@ -25,16 +25,21 @@ import { DocumentDraftGraphic } from '@/app/(landing)/solutions/components/featu * framework monitoring, policy review) - so the page shares the enterprise * design language without any new visual vocabulary. */ +/** Meta description shared between the page metadata and the page JSON-LD. */ +export const COMPLIANCE_PAGE_DESCRIPTION = + 'AI agents for compliance teams: automate evidence collection, control monitoring, and audit reports. Built in Sim, the open-source AI workspace.' + const COMPLIANCE_CONFIG: SolutionsPageConfig = { module: 'Compliance', path: '/solutions/compliance', + seoDescription: COMPLIANCE_PAGE_DESCRIPTION, hero: { eyebrow: 'Compliance', - heading: 'Automate evidence, control checks, and audit reports with Sim agents.', + heading: 'Automate evidence, control checks, and audit reports with AI agents in Sim.', description: - 'Compliance teams build AI agents in Sim, the open-source AI workspace, that monitor controls and assemble a clean, defensible record, keeping the organization continuously audit-ready instead of scrambling once a year.', + 'Sim is the open-source AI workspace where compliance teams build AI agents for evidence collection and control monitoring. Stay audit-ready year-round, across 1,000+ integrations.', summary: - 'Sim is the open-source AI workspace where compliance teams build, deploy, and manage AI agents that automate evidence collection, control monitoring, and reporting, keeping the organization continuously audit-ready across 1,000+ integrations.', + 'Sim is the open-source AI workspace where compliance teams build, deploy, and manage AI agents for evidence collection, control monitoring, and audit reports. Agents keep the organization audit-ready year-round across 1,000+ integrations.', visual: ( diff --git a/apps/sim/app/(landing)/solutions/compliance/page.tsx b/apps/sim/app/(landing)/solutions/compliance/page.tsx index f3c7b914933..f36ad50dba6 100644 --- a/apps/sim/app/(landing)/solutions/compliance/page.tsx +++ b/apps/sim/app/(landing)/solutions/compliance/page.tsx @@ -1,15 +1,15 @@ import { buildLandingMetadata } from '@/lib/landing/seo' -import ComplianceSolution from '@/app/(landing)/solutions/compliance/compliance' +import ComplianceSolution, { + COMPLIANCE_PAGE_DESCRIPTION, +} from '@/app/(landing)/solutions/compliance/compliance' export const revalidate = 3600 -const TITLE = 'AI Agents for Continuous Compliance & Audit | Sim' -const DESCRIPTION = - 'Compliance teams use Sim, the open-source AI workspace, to build and deploy AI agents that automate evidence collection, control monitoring, and reporting.' +const TITLE = 'AI Agents for Compliance: Evidence & Audit Reports | Sim' export const metadata = buildLandingMetadata({ title: TITLE, - description: DESCRIPTION, + description: COMPLIANCE_PAGE_DESCRIPTION, path: '/solutions/compliance', keywords: 'AI workspace, AI agents for compliance, compliance automation, evidence collection, control monitoring, audit readiness, open-source AI agent platform', diff --git a/apps/sim/app/(landing)/solutions/components/feature-graphics/knowledge-answer-graphic.tsx b/apps/sim/app/(landing)/solutions/components/feature-graphics/knowledge-answer-graphic.tsx index 044b3566bf7..3ee65aab484 100644 --- a/apps/sim/app/(landing)/solutions/components/feature-graphics/knowledge-answer-graphic.tsx +++ b/apps/sim/app/(landing)/solutions/components/feature-graphics/knowledge-answer-graphic.tsx @@ -46,7 +46,7 @@ interface KnowledgeAnswerGraphicProps { export function KnowledgeAnswerGraphic({ question = 'How do I reset my SSO password?', - answer = 'Head to id.acme.com, choose "Forgot password", and follow the email link — no ticket needed.', + answer = 'Head to id.acme.com, choose "Forgot password", and follow the email link. No ticket needed.', sourceLabel = 'IT handbook', sourceDetail = 'Answered from your docs', }: KnowledgeAnswerGraphicProps = {}) { diff --git a/apps/sim/app/(landing)/solutions/engineering/engineering.tsx b/apps/sim/app/(landing)/solutions/engineering/engineering.tsx index cf72717bbdf..c143859cdc6 100644 --- a/apps/sim/app/(landing)/solutions/engineering/engineering.tsx +++ b/apps/sim/app/(landing)/solutions/engineering/engineering.tsx @@ -25,16 +25,21 @@ import { EngineeringHeroLoop } from '@/app/(landing)/solutions/engineering/compo * CI/CD deploys, runbook docs) - so the page shares the enterprise design * language without any new visual vocabulary. */ +/** Meta description shared between the page metadata and the page JSON-LD. */ +export const ENGINEERING_PAGE_DESCRIPTION = + 'AI agents for engineering teams: automate code review, on-call triage, and documentation. Built in Sim, the open-source AI workspace.' + const ENGINEERING_CONFIG: SolutionsPageConfig = { module: 'Engineering', path: '/solutions/engineering', + seoDescription: ENGINEERING_PAGE_DESCRIPTION, hero: { eyebrow: 'Engineering', - heading: 'Automate code review, on-call, and docs with Sim agents.', + heading: 'Automate code review, on-call, and docs with AI agents in Sim.', description: - 'Engineering teams build AI agents in Sim, the open-source AI workspace, wired into GitHub, CI/CD, and 1,000+ integrations, visually, conversationally, or with code.', + 'Sim is the open-source AI workspace where engineering teams build AI agents for code review, on-call, and docs. Agents wire into GitHub, CI/CD, and 1,000+ integrations across the software lifecycle.', summary: - 'Sim is the open-source AI workspace where engineering teams build, deploy, and manage AI agents across the software lifecycle, automating code review, on-call triage, and documentation, wired into GitHub, CI/CD, and 1,000+ integrations.', + 'Sim is the open-source AI workspace where engineering teams build, deploy, and manage AI agents for code review, on-call triage, and documentation. Agents wire into GitHub, CI/CD, and 1,000+ integrations across the software lifecycle.', visual: ( diff --git a/apps/sim/app/(landing)/solutions/engineering/page.tsx b/apps/sim/app/(landing)/solutions/engineering/page.tsx index 7b52ba1bf5f..7b063484d40 100644 --- a/apps/sim/app/(landing)/solutions/engineering/page.tsx +++ b/apps/sim/app/(landing)/solutions/engineering/page.tsx @@ -1,15 +1,15 @@ import { buildLandingMetadata } from '@/lib/landing/seo' -import EngineeringSolution from '@/app/(landing)/solutions/engineering/engineering' +import EngineeringSolution, { + ENGINEERING_PAGE_DESCRIPTION, +} from '@/app/(landing)/solutions/engineering/engineering' export const revalidate = 3600 -const TITLE = 'AI Agents for Code Review & On-Call | Sim' -const DESCRIPTION = - 'Engineering teams use Sim, the open-source AI workspace, to build and deploy AI agents that automate code review, on-call triage, and documentation.' +const TITLE = 'AI Agents for Engineering: Code Review & On-Call | Sim' export const metadata = buildLandingMetadata({ title: TITLE, - description: DESCRIPTION, + description: ENGINEERING_PAGE_DESCRIPTION, path: '/solutions/engineering', keywords: 'AI workspace, AI agents for engineering, automated code review, on-call automation, CI/CD agents, developer automation, open-source AI agent platform', diff --git a/apps/sim/app/(landing)/solutions/finance/finance.tsx b/apps/sim/app/(landing)/solutions/finance/finance.tsx index 79017fc9484..edfea0f4614 100644 --- a/apps/sim/app/(landing)/solutions/finance/finance.tsx +++ b/apps/sim/app/(landing)/solutions/finance/finance.tsx @@ -24,16 +24,21 @@ import { FinanceHeroLoop } from '@/app/(landing)/solutions/finance/components/fi * routing, approval gates, spend monitoring, the finance audit ledger), * plus one finance-specific vignette, the reconciliation match ledger. */ +/** Meta description shared between the page metadata and the page JSON-LD. */ +export const FINANCE_PAGE_DESCRIPTION = + 'AI agents for finance teams: automate invoice processing, reconciliation, and financial reporting. Built in Sim, the open-source AI workspace.' + const FINANCE_CONFIG: SolutionsPageConfig = { module: 'Finance', path: '/solutions/finance', + seoDescription: FINANCE_PAGE_DESCRIPTION, hero: { eyebrow: 'Finance', - heading: 'Automate invoice processing, reconciliation, and close with Sim agents.', + heading: 'Automate invoice processing, reconciliation, and close with AI agents in Sim.', description: - 'Finance teams build AI agents in Sim, the open-source AI workspace, with human approvals, anomaly detection, and full audit trails, across 1,000+ integrations and every major LLM.', + 'Sim is the open-source AI workspace where finance teams build AI agents for invoice processing, reconciliation, and close. Human approvals, anomaly detection, and full audit trails guard every run.', summary: - 'Sim is the open-source AI workspace where finance teams build, deploy, and manage AI agents that automate reconciliation, invoice processing, and reporting, with human approvals, anomaly detection, and full audit trails across 1,000+ integrations.', + 'Sim is the open-source AI workspace where finance teams build, deploy, and manage AI agents for invoice processing, reconciliation, and financial reporting. Agents run with human approvals, anomaly detection, and full audit trails across 1,000+ integrations.', visual: ( diff --git a/apps/sim/app/(landing)/solutions/finance/page.tsx b/apps/sim/app/(landing)/solutions/finance/page.tsx index 38a1e7e2196..b6d019fd543 100644 --- a/apps/sim/app/(landing)/solutions/finance/page.tsx +++ b/apps/sim/app/(landing)/solutions/finance/page.tsx @@ -1,15 +1,15 @@ import { buildLandingMetadata } from '@/lib/landing/seo' -import FinanceSolution from '@/app/(landing)/solutions/finance/finance' +import FinanceSolution, { + FINANCE_PAGE_DESCRIPTION, +} from '@/app/(landing)/solutions/finance/finance' export const revalidate = 3600 -const TITLE = 'AI Agents for Invoice Processing & Reconciliation | Sim' -const DESCRIPTION = - 'Finance teams use Sim, the open-source AI workspace, to build and deploy AI agents that automate reconciliation, invoice processing, and reporting.' +const TITLE = 'AI Agents for Finance: Invoicing & Reconciliation | Sim' export const metadata = buildLandingMetadata({ title: TITLE, - description: DESCRIPTION, + description: FINANCE_PAGE_DESCRIPTION, path: '/solutions/finance', keywords: 'AI workspace, AI agents for finance, finance automation, invoice processing, account reconciliation, financial reporting, open-source AI agent platform', diff --git a/apps/sim/app/(landing)/solutions/hr/hr.tsx b/apps/sim/app/(landing)/solutions/hr/hr.tsx index e186162b636..c5653af28eb 100644 --- a/apps/sim/app/(landing)/solutions/hr/hr.tsx +++ b/apps/sim/app/(landing)/solutions/hr/hr.tsx @@ -26,16 +26,21 @@ import { HrHeroLoop } from '@/app/(landing)/solutions/hr/components/hr-hero-loop * systems, a benefits answer grounded in the team's docs, offer-letter * drafting, PTO approvals, surveys, and people reports. */ +/** Meta description shared between the page metadata and the page JSON-LD. */ +export const HR_PAGE_DESCRIPTION = + 'AI agents for HR teams: automate onboarding, employee questions, and approvals. Built in Sim, the open-source AI workspace.' + const HR_CONFIG: SolutionsPageConfig = { module: 'HR', path: '/solutions/hr', + seoDescription: HR_PAGE_DESCRIPTION, hero: { eyebrow: 'HR', - heading: 'Automate onboarding, employee questions, and approvals with Sim agents.', + heading: 'Automate onboarding, employee questions, and approvals with AI agents in Sim.', description: - 'HR teams build AI agents in Sim, the open-source AI workspace, wired into your HRIS and 1,000+ integrations, so the team spends time on people, not paperwork.', + 'Sim is the open-source AI workspace where HR teams build AI agents for onboarding, employee questions, and approvals. Agents wire into your HRIS and 1,000+ integrations to keep people operations moving.', summary: - 'Sim is the open-source AI workspace where HR teams build, deploy, and manage AI agents that automate onboarding, employee questions, and approvals, connecting your HRIS and 1,000+ integrations so the team focuses on people, not paperwork.', + 'Sim is the open-source AI workspace where HR teams build, deploy, and manage AI agents for onboarding, employee questions, and approvals. Agents connect your HRIS and 1,000+ integrations so people operations keep moving.', visual: ( diff --git a/apps/sim/app/(landing)/solutions/hr/page.tsx b/apps/sim/app/(landing)/solutions/hr/page.tsx index ca278dd0825..665b91c96a0 100644 --- a/apps/sim/app/(landing)/solutions/hr/page.tsx +++ b/apps/sim/app/(landing)/solutions/hr/page.tsx @@ -1,15 +1,13 @@ import { buildLandingMetadata } from '@/lib/landing/seo' -import HrSolution from '@/app/(landing)/solutions/hr/hr' +import HrSolution, { HR_PAGE_DESCRIPTION } from '@/app/(landing)/solutions/hr/hr' export const revalidate = 3600 -const TITLE = 'AI Agents for Onboarding & People Operations | Sim' -const DESCRIPTION = - 'HR teams use Sim, the open-source AI workspace, to build and deploy AI agents that automate onboarding, employee questions, and approvals.' +const TITLE = 'AI Agents for HR: Onboarding & Employee Operations | Sim' export const metadata = buildLandingMetadata({ title: TITLE, - description: DESCRIPTION, + description: HR_PAGE_DESCRIPTION, path: '/solutions/hr', keywords: 'AI workspace, AI agents for HR, HR automation, employee onboarding, people operations, HRIS automation, open-source AI agent platform', diff --git a/apps/sim/app/(landing)/solutions/it/it.tsx b/apps/sim/app/(landing)/solutions/it/it.tsx index 8361e12edd2..a6ec5fa1780 100644 --- a/apps/sim/app/(landing)/solutions/it/it.tsx +++ b/apps/sim/app/(landing)/solutions/it/it.tsx @@ -25,16 +25,21 @@ import { ItHeroLoop } from '@/app/(landing)/solutions/it/components/it-hero-loop * runbooks, infrastructure monitors) - so the page shares the enterprise * design language without any new visual vocabulary. */ +/** Meta description shared between the page metadata and the page JSON-LD. */ +export const IT_PAGE_DESCRIPTION = + 'AI agents for IT teams: automate ticket triage, access provisioning, and infrastructure monitoring. Built in Sim, the open-source AI workspace.' + const IT_CONFIG: SolutionsPageConfig = { module: 'IT', path: '/solutions/it', + seoDescription: IT_PAGE_DESCRIPTION, hero: { eyebrow: 'IT', - heading: 'Automate ticket triage, access, and monitoring with Sim agents.', + heading: 'Automate ticket triage, access, and monitoring with AI agents in Sim.', description: - 'IT teams build AI agents in Sim, the open-source AI workspace, with the governance, access controls, and audit trails IT needs, across 1,000+ integrations and every major LLM.', + 'Sim is the open-source AI workspace where IT teams build AI agents for ticket triage, access, and monitoring. Agents run with governance, access controls, and audit trails across 1,000+ integrations.', summary: - 'Sim is the open-source AI workspace where IT teams build, deploy, and manage AI agents that automate ticket triage, access provisioning, and infrastructure monitoring, connecting 1,000+ integrations and every major LLM under IT-grade governance.', + 'Sim is the open-source AI workspace where IT teams build, deploy, and manage AI agents for ticket triage, access provisioning, and infrastructure monitoring. Agents run with IT-grade governance and audit trails across 1,000+ integrations and every major LLM.', visual: ( diff --git a/apps/sim/app/(landing)/solutions/it/page.tsx b/apps/sim/app/(landing)/solutions/it/page.tsx index f3d01a5a274..afd2c7fdc7a 100644 --- a/apps/sim/app/(landing)/solutions/it/page.tsx +++ b/apps/sim/app/(landing)/solutions/it/page.tsx @@ -1,15 +1,13 @@ import { buildLandingMetadata } from '@/lib/landing/seo' -import ItSolution from '@/app/(landing)/solutions/it/it' +import ItSolution, { IT_PAGE_DESCRIPTION } from '@/app/(landing)/solutions/it/it' export const revalidate = 3600 -const TITLE = 'AI Agents for Ticket Triage & Access | Sim' -const DESCRIPTION = - 'IT teams use Sim, the open-source AI workspace, to build and deploy AI agents that automate ticket triage, access provisioning, and monitoring.' +const TITLE = 'AI Agents for IT: Ticket Triage & Access Provisioning | Sim' export const metadata = buildLandingMetadata({ title: TITLE, - description: DESCRIPTION, + description: IT_PAGE_DESCRIPTION, path: '/solutions/it', keywords: 'AI workspace, IT automation, AI agents for IT, IT service desk automation, access provisioning, infrastructure monitoring, open-source AI agent platform', diff --git a/apps/sim/app/(landing)/solutions/sales/page.tsx b/apps/sim/app/(landing)/solutions/sales/page.tsx index 15b36cec945..10abc9481f3 100644 --- a/apps/sim/app/(landing)/solutions/sales/page.tsx +++ b/apps/sim/app/(landing)/solutions/sales/page.tsx @@ -1,15 +1,13 @@ import { buildLandingMetadata } from '@/lib/landing/seo' -import SalesSolution from '@/app/(landing)/solutions/sales/sales' +import SalesSolution, { SALES_PAGE_DESCRIPTION } from '@/app/(landing)/solutions/sales/sales' export const revalidate = 3600 -const TITLE = 'AI Agents for Lead Research & CRM Updates | Sim' -const DESCRIPTION = - 'Sales teams use Sim, the open-source AI workspace, to build and deploy AI agents that automate lead research, personalized outreach, and CRM updates.' +const TITLE = 'AI Agents for Sales: Lead Research & CRM Updates | Sim' export const metadata = buildLandingMetadata({ title: TITLE, - description: DESCRIPTION, + description: SALES_PAGE_DESCRIPTION, path: '/solutions/sales', keywords: 'AI workspace, AI agents for sales, sales automation, lead research, CRM automation, pipeline reporting, open-source AI agent platform', diff --git a/apps/sim/app/(landing)/solutions/sales/sales.tsx b/apps/sim/app/(landing)/solutions/sales/sales.tsx index 5fb08b5d3c8..7428239b833 100644 --- a/apps/sim/app/(landing)/solutions/sales/sales.tsx +++ b/apps/sim/app/(landing)/solutions/sales/sales.tsx @@ -27,16 +27,21 @@ import { SalesHeroLoop } from '@/app/(landing)/solutions/sales/components/sales- * outreach drafting, CRM stage updates, meeting prep, and the pipeline * digest. */ +/** Meta description shared between the page metadata and the page JSON-LD. */ +export const SALES_PAGE_DESCRIPTION = + 'AI agents for sales teams: automate lead research, personalized outreach, and CRM updates. Built in Sim, the open-source AI workspace.' + const SALES_CONFIG: SolutionsPageConfig = { module: 'Sales', path: '/solutions/sales', + seoDescription: SALES_PAGE_DESCRIPTION, hero: { eyebrow: 'Sales', - heading: 'Automate lead research, outreach, and CRM updates with Sim agents.', + heading: 'Automate lead research, outreach, and CRM updates with AI agents in Sim.', description: - 'Sales teams build AI agents in Sim, the open-source AI workspace, wired into Salesforce, HubSpot, and 1,000+ integrations, so reps spend their time selling, not updating records.', + 'Sim is the open-source AI workspace where sales teams build AI agents for lead research, outreach, and CRM updates. Agents wire into Salesforce, HubSpot, and 1,000+ integrations to keep the pipeline current.', summary: - 'Sim is the open-source AI workspace where sales teams build, deploy, and manage AI agents that automate lead research, personalized outreach, and CRM updates, wired into Salesforce, HubSpot, and 1,000+ integrations so the pipeline stays current and reps spend their time selling.', + 'Sim is the open-source AI workspace where sales teams build, deploy, and manage AI agents for lead research, personalized outreach, and CRM updates. Agents wire into Salesforce, HubSpot, and 1,000+ integrations so the pipeline stays current.', visual: ( diff --git a/apps/sim/app/(landing)/tables/page.tsx b/apps/sim/app/(landing)/tables/page.tsx index 39e84fac5fd..1d8f62945cf 100644 --- a/apps/sim/app/(landing)/tables/page.tsx +++ b/apps/sim/app/(landing)/tables/page.tsx @@ -1,18 +1,16 @@ import { buildLandingMetadata } from '@/lib/landing/seo' -import Tables from '@/app/(landing)/tables/tables' +import Tables, { TABLES_PAGE_DESCRIPTION } from '@/app/(landing)/tables/tables' export const revalidate = 3600 -const TITLE = 'Tables | Structured Data for Agents in Sim, the AI Workspace' -const DESCRIPTION = - 'Tables is the database built into Sim, the open-source AI workspace. Store, query, and wire structured data into agent runs — records, enrichments, and state between runs.' +const TITLE = 'AI Agent Database: Tables for Structured Data | Sim' export const metadata = buildLandingMetadata({ title: TITLE, - description: DESCRIPTION, + description: TABLES_PAGE_DESCRIPTION, path: '/tables', keywords: - 'AI workspace, built-in database, structured data for AI agents, AI agent memory, data enrichment, agent state between runs, open-source AI agent platform, tables for agents', + 'AI agent database, AI workspace, built-in database, structured data for AI agents, AI agent memory, data enrichment, agent state between runs, open-source AI agent platform, tables for agents', }) export default function Page() { diff --git a/apps/sim/app/(landing)/tables/tables.tsx b/apps/sim/app/(landing)/tables/tables.tsx index 7ddf7da8287..8921d827660 100644 --- a/apps/sim/app/(landing)/tables/tables.tsx +++ b/apps/sim/app/(landing)/tables/tables.tsx @@ -32,16 +32,21 @@ import { TablesHeroLoop } from '@/app/(landing)/tables/components/tables-hero-lo * to the platform page's (`WebPage` + `BreadcrumbList` + * `WebApplication`), so the switch to feature tiles is SEO-neutral. */ +/** Shared meta + JSON-LD description for the Tables page (one string, zero drift). */ +export const TABLES_PAGE_DESCRIPTION = + 'Tables is the AI agent database built into Sim. Store leads, tickets, and invoices as rows agents read and write, and carry state from one run to the next.' + const TABLES_CONFIG: SolutionsPageConfig = { module: 'Tables', path: '/tables', + seoDescription: TABLES_PAGE_DESCRIPTION, hero: { eyebrow: 'Tables', - heading: 'Power agents with structured data in Sim.', + heading: 'Give AI agents a database built into Sim.', description: - 'Tables is the database built into Sim, the open-source AI workspace. Store the records agents read and write, let enrichments fill empty cells, and carry state from one run to the next.', + 'Tables is the database built into Sim, the open-source AI workspace. Store the records agents read and write, fill empty cells with enrichments, and keep state between runs.', summary: - 'Tables is the built-in database in Sim, the open-source AI workspace where teams build, deploy, and manage AI agents. Teams store records agents read and write, run enrichments that fill cells automatically, query rows from agent logic, and keep state between runs, all in one workspace.', + 'Tables is the AI agent database built into Sim, the open-source AI workspace where teams build, deploy, and manage AI agents. Teams store records agents read and write, run enrichments that fill cells automatically, query rows from agent logic, and keep state between runs, all in one workspace.', visual: ( @@ -53,7 +58,7 @@ const TABLES_CONFIG: SolutionsPageConfig = { id: 'records', title: 'Give agents structured data to act on.', subtitle: - 'Sim stores the records agents work with, leads, tickets, and invoices, as tables that live in the same workspace as the agents themselves.', + 'Sim stores the leads, tickets, and invoices agents work with as tables in the same workspace as the agents.', cta: { label: 'Explore Tables', href: '/signup' }, cards: [ { diff --git a/apps/sim/app/(landing)/workflows/page.tsx b/apps/sim/app/(landing)/workflows/page.tsx index 532feccdc5b..5d9384432b5 100644 --- a/apps/sim/app/(landing)/workflows/page.tsx +++ b/apps/sim/app/(landing)/workflows/page.tsx @@ -1,18 +1,16 @@ import { buildLandingMetadata } from '@/lib/landing/seo' -import Workflows from '@/app/(landing)/workflows/workflows' +import Workflows, { WORKFLOWS_PAGE_DESCRIPTION } from '@/app/(landing)/workflows/workflows' export const revalidate = 3600 -const TITLE = 'Workflows | The Visual Builder in Sim, the AI Workspace' -const DESCRIPTION = - 'Workflows is the visual builder in Sim, the open-source AI workspace. Connect blocks, every major LLM, and 1,000+ integrations into agent logic.' +const TITLE = 'AI Workflow Builder for Agents and Teams | Sim' export const metadata = buildLandingMetadata({ title: TITLE, - description: DESCRIPTION, + description: WORKFLOWS_PAGE_DESCRIPTION, path: '/workflows', keywords: - 'AI workspace, visual workflow builder, build AI agents, AI agent workflow builder, LLM orchestration, AI integrations, open-source AI agent platform, agentic workflows', + 'AI workflow builder, AI workspace, visual workflow builder, build AI agents, AI agent workflow builder, LLM orchestration, AI integrations, open-source AI agent platform, agentic workflows', }) export default function Page() { diff --git a/apps/sim/app/(landing)/workflows/workflows.tsx b/apps/sim/app/(landing)/workflows/workflows.tsx index b87557e4619..8edf9c34431 100644 --- a/apps/sim/app/(landing)/workflows/workflows.tsx +++ b/apps/sim/app/(landing)/workflows/workflows.tsx @@ -34,16 +34,21 @@ import { WorkflowsEditorLoop } from '@/app/(landing)/workflows/components/workfl * to the platform page's (`WebPage` + `BreadcrumbList` + * `WebApplication`), so the switch to feature tiles is SEO-neutral. */ +/** Shared meta + JSON-LD description for the Workflows page (one string, zero drift). */ +export const WORKFLOWS_PAGE_DESCRIPTION = + "Sim's AI workflow builder connects blocks, every major LLM, and 1,000+ integrations into agents. Build Slack bots and data pipelines visually or in code." + const WORKFLOWS_CONFIG: SolutionsPageConfig = { module: 'Workflows', path: '/workflows', + seoDescription: WORKFLOWS_PAGE_DESCRIPTION, hero: { eyebrow: 'Workflows', - heading: 'Build Slack bots, compliance agents, and data pipelines in Sim.', + heading: 'Build AI agent workflows visually in Sim.', description: - 'Connect blocks, every major LLM, and 1,000+ integrations into agent logic, the visual builder in Sim, the open-source AI workspace. Build visually, conversationally, or with code.', + 'Workflows is the visual AI workflow builder in Sim, the open-source AI workspace. Connect blocks, every major LLM, and 1,000+ integrations into Slack bots, compliance agents, and data pipelines.', summary: - 'Workflows is the visual builder in Sim, the open-source AI workspace where teams build, deploy, and manage AI agents. Wire blocks, every major LLM, and 1,000+ integrations into agent logic, then deploy and run it without leaving Sim, visually, conversationally, or with code.', + 'Workflows is the visual AI workflow builder in Sim, the open-source AI workspace where teams build, deploy, and manage AI agents. Teams wire blocks, every major LLM, and 1,000+ integrations into agent logic, then deploy and trace every run without leaving Sim.', visual: ( @@ -114,7 +119,7 @@ const WORKFLOWS_CONFIG: SolutionsPageConfig = { visual: (