@elevasis/ui 2.29.0 → 2.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/dist/{CoreAuthKitInner-QC62UHTZ.js → CoreAuthKitInner-KSEGSB67.js} +1 -1
  2. package/dist/api/index.js +3 -3
  3. package/dist/app/index.d.ts +176 -1
  4. package/dist/app/index.js +11 -11
  5. package/dist/auth/context.js +1 -1
  6. package/dist/auth/index.js +5 -5
  7. package/dist/charts/index.d.ts +2 -1
  8. package/dist/charts/index.js +9 -9
  9. package/dist/{chunk-XTVZFT7U.js → chunk-2Q2JQSQO.js} +1 -1
  10. package/dist/{chunk-LH4GPYDX.js → chunk-3BAPR3KA.js} +19 -3
  11. package/dist/{chunk-HLFFKKT3.js → chunk-3FV6HBXS.js} +17 -17
  12. package/dist/{chunk-WKJ47GIW.js → chunk-533DUEQY.js} +1 -1
  13. package/dist/{chunk-SZWXQHKO.js → chunk-542WPQU2.js} +9 -8
  14. package/dist/{chunk-5CW2HXQA.js → chunk-5LJAEZMA.js} +7 -28
  15. package/dist/{chunk-V3HUIZJX.js → chunk-6IXOKUBC.js} +1 -1
  16. package/dist/{chunk-VKMNWHTL.js → chunk-6YT4IKJ7.js} +3 -3
  17. package/dist/{chunk-CEHUFNAL.js → chunk-7HMCB26R.js} +12 -12
  18. package/dist/chunk-7KC4P3AU.js +357 -0
  19. package/dist/{chunk-OWESKPTJ.js → chunk-CQZ3DNQY.js} +30 -11
  20. package/dist/{chunk-ROSMICXG.js → chunk-CXY7FMUM.js} +35 -20
  21. package/dist/{chunk-I2KLQ2HA.js → chunk-DZTG5IAC.js} +7 -1
  22. package/dist/{chunk-JCGD4GM6.js → chunk-GRDLB6LM.js} +1 -0
  23. package/dist/{chunk-FGDUK74A.js → chunk-HQGF4ATG.js} +10 -56
  24. package/dist/{chunk-HOIT677G.js → chunk-HUJCU55S.js} +1 -1
  25. package/dist/{chunk-OIMPGKDB.js → chunk-HYNYEBHM.js} +4 -4
  26. package/dist/{chunk-GESXCQWY.js → chunk-JA5ECJJB.js} +1 -1
  27. package/dist/{chunk-KU7ZDWQ7.js → chunk-JBWJ6WHZ.js} +1 -1
  28. package/dist/{chunk-HNFQCOD2.js → chunk-JKSUN5GN.js} +1107 -370
  29. package/dist/{chunk-5WWZXCS5.js → chunk-KJ3QUBNU.js} +9 -2
  30. package/dist/{chunk-OHGNCWJP.js → chunk-L2NVFLXU.js} +3 -3
  31. package/dist/{chunk-6WXDE5LZ.js → chunk-L3BVJWML.js} +1 -1
  32. package/dist/{chunk-3DUOPXOJ.js → chunk-MVFCLZSK.js} +691 -222
  33. package/dist/{chunk-A7R2URMV.js → chunk-ND42LPY4.js} +44 -10
  34. package/dist/{chunk-CLUP5H3C.js → chunk-O2QOPJI5.js} +360 -126
  35. package/dist/{chunk-VMJVQAFZ.js → chunk-OAVTMITG.js} +1 -1
  36. package/dist/{chunk-X2SUMO3P.js → chunk-P55BJZZW.js} +2 -1
  37. package/dist/{chunk-QNL7UI5G.js → chunk-Q6OYNEGR.js} +6 -6
  38. package/dist/{chunk-Y3YJKKEB.js → chunk-QDEETKYT.js} +5 -2
  39. package/dist/{chunk-XBMCDGHA.js → chunk-QHEWXU7I.js} +1 -1
  40. package/dist/chunk-R2XR4FCV.js +48 -0
  41. package/dist/chunk-R66W5UDG.js +26 -0
  42. package/dist/{chunk-65RQE3XF.js → chunk-SHQXMW4F.js} +1051 -380
  43. package/dist/{chunk-AK5E6ILJ.js → chunk-T3IPHEYJ.js} +1893 -305
  44. package/dist/{chunk-7E3FUTND.js → chunk-TOIXUWR6.js} +1 -1
  45. package/dist/{chunk-FFDAE2QI.js → chunk-TVRQ6AQI.js} +172 -26
  46. package/dist/{chunk-CN2HC4D4.js → chunk-UFTM5SZZ.js} +2 -2
  47. package/dist/{chunk-WFTNY755.js → chunk-VKIZUUPM.js} +1 -1
  48. package/dist/{chunk-KVJ3LFH2.js → chunk-VNFR57DF.js} +4 -24
  49. package/dist/{chunk-S66IQSSR.js → chunk-WF227UBV.js} +1 -1
  50. package/dist/{chunk-6NHCE7JM.js → chunk-Y4FWCG7Y.js} +159 -314
  51. package/dist/components/chat/index.d.ts +2 -1
  52. package/dist/components/chat/index.js +2 -2
  53. package/dist/components/index.d.ts +205 -11
  54. package/dist/components/index.js +51 -48
  55. package/dist/components/navigation/index.js +9 -9
  56. package/dist/execution/index.d.ts +2 -1
  57. package/dist/execution/index.js +1 -1
  58. package/dist/features/auth/index.d.ts +121 -0
  59. package/dist/features/auth/index.js +6 -6
  60. package/dist/features/clients/index.css +611 -0
  61. package/dist/features/clients/index.d.ts +86 -0
  62. package/dist/features/clients/index.js +719 -0
  63. package/dist/features/crm/index.d.ts +148 -2
  64. package/dist/features/crm/index.js +27 -25
  65. package/dist/features/dashboard/index.d.ts +36 -1
  66. package/dist/features/dashboard/index.js +23 -23
  67. package/dist/features/delivery/index.d.ts +121 -0
  68. package/dist/features/delivery/index.js +27 -25
  69. package/dist/features/knowledge/index.js +52 -29
  70. package/dist/features/lead-gen/index.d.ts +116 -12
  71. package/dist/features/lead-gen/index.js +28 -26
  72. package/dist/features/monitoring/index.js +26 -25
  73. package/dist/features/monitoring/requests/index.js +23 -22
  74. package/dist/features/operations/index.d.ts +38 -2
  75. package/dist/features/operations/index.js +32 -31
  76. package/dist/features/seo/index.js +1 -1
  77. package/dist/features/settings/index.d.ts +121 -0
  78. package/dist/features/settings/index.js +25 -24
  79. package/dist/graph/index.js +1 -1
  80. package/dist/hooks/delivery/index.d.ts +140 -0
  81. package/dist/hooks/delivery/index.js +4 -4
  82. package/dist/hooks/index.d.ts +844 -21
  83. package/dist/hooks/index.js +21 -21
  84. package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +82 -1
  85. package/dist/hooks/operations/command-view/utils/transformCommandViewData.js +1 -1
  86. package/dist/hooks/published.d.ts +844 -21
  87. package/dist/hooks/published.js +21 -21
  88. package/dist/index.d.ts +1056 -27
  89. package/dist/index.js +22 -22
  90. package/dist/initialization/index.d.ts +121 -0
  91. package/dist/initialization/index.js +5 -5
  92. package/dist/knowledge/index.d.ts +151 -1
  93. package/dist/knowledge/index.js +1692 -1039
  94. package/dist/layout/index.d.ts +6 -0
  95. package/dist/layout/index.js +4 -4
  96. package/dist/organization/index.js +5 -5
  97. package/dist/profile/index.d.ts +121 -0
  98. package/dist/profile/index.js +3 -3
  99. package/dist/provider/ElevasisServiceContext.d.ts +11 -5
  100. package/dist/provider/ElevasisServiceContext.js +2 -2
  101. package/dist/provider/index.d.ts +337 -7
  102. package/dist/provider/index.js +18 -18
  103. package/dist/provider/published.d.ts +337 -7
  104. package/dist/provider/published.js +14 -14
  105. package/dist/router/context.js +1 -1
  106. package/dist/router/index.js +1 -1
  107. package/dist/sse/index.js +1 -1
  108. package/dist/supabase/index.d.ts +232 -0
  109. package/dist/supabase/index.js +1 -1
  110. package/dist/test-utils/index.d.ts +3 -0
  111. package/dist/test-utils/index.js +31 -7
  112. package/dist/test-utils/setup-integration.js +1 -1
  113. package/dist/test-utils/setup.js +2 -2
  114. package/dist/theme/index.js +4 -4
  115. package/dist/theme/presets/index.js +2 -2
  116. package/dist/typeform/index.js +1 -1
  117. package/dist/typeform/schemas.js +1 -1
  118. package/dist/types/index.d.ts +204 -1
  119. package/dist/utils/index.d.ts +36 -1
  120. package/dist/utils/index.js +2 -2
  121. package/dist/vite/index.js +3 -3
  122. package/dist/vite-plugin-knowledge/index.js +2 -2
  123. package/dist/zustand/index.js +1 -1
  124. package/package.json +14 -5
  125. /package/dist/{chunk-HXZQWMKE.js → chunk-XQHZBA65.js} +0 -0
@@ -1,14 +1,14 @@
1
- import { NodeDescribeShell, NodeMetadataFooter, EdgeRelationshipGroup, NodeHeader, getKnowledgeIconToken, KindChip, KeyField, EdgeChip, EdgeGroup } from '../chunk-CLUP5H3C.js';
2
- export { EdgeRelationshipGroup, KNOWLEDGE_ICON_TOKEN_BY_KIND, KindChip, KnowledgeSearchBar, KnowledgeTree, NodeDescribeShell, NodeHeader, NodeMetadataFooter, RelatedKnowledgeSection, getKnowledgeIconToken } from '../chunk-CLUP5H3C.js';
3
- import '../chunk-X2SUMO3P.js';
1
+ import { NodeDescribeShell, NodeMetadataFooter, EdgeRelationshipGroup, NodeHeader, getKnowledgeIconToken, KindChip, KeyField, EdgeChip, EdgeGroup } from '../chunk-O2QOPJI5.js';
2
+ export { EdgeRelationshipGroup, KNOWLEDGE_ICON_TOKEN_BY_KIND, KindChip, KnowledgeSearchBar, KnowledgeTree, NodeDescribeShell, NodeHeader, NodeMetadataFooter, RelatedKnowledgeSection, getKnowledgeIconToken } from '../chunk-O2QOPJI5.js';
3
+ import '../chunk-P55BJZZW.js';
4
4
  import '../chunk-JDNEWB5F.js';
5
- import { SemanticIcon } from '../chunk-JCGD4GM6.js';
6
- export { SemanticIcon, extendSemanticIconRegistry, getSemanticIconComponent, resolveSemanticIconComponent } from '../chunk-JCGD4GM6.js';
5
+ import { SemanticIcon } from '../chunk-GRDLB6LM.js';
6
+ export { SemanticIcon, extendSemanticIconRegistry, getSemanticIconComponent, resolveSemanticIconComponent } from '../chunk-GRDLB6LM.js';
7
7
  import '../chunk-XQQEKWTL.js';
8
- import '../chunk-RYTEQBAO.js';
9
- import { PageContainer } from '../chunk-BZZCNLT6.js';
10
8
  import { SubshellNavItem } from '../chunk-X4WBGKJQ.js';
11
9
  import { SubshellSidebarSection } from '../chunk-IIMU5YAJ.js';
10
+ import '../chunk-RYTEQBAO.js';
11
+ import { PageContainer } from '../chunk-BZZCNLT6.js';
12
12
  import '../chunk-WLOQ4IBG.js';
13
13
  import '../chunk-TKAYX2SP.js';
14
14
  import '../chunk-NYBEU5TE.js';
@@ -16,7 +16,7 @@ import '../chunk-2IFYDILW.js';
16
16
  import { useRouterContext } from '../chunk-Q7DJKLEN.js';
17
17
  import '../chunk-E565XMTQ.js';
18
18
  import '../chunk-DT3QYZVU.js';
19
- import '../chunk-I2KLQ2HA.js';
19
+ import '../chunk-DZTG5IAC.js';
20
20
  import { createContext, Children, isValidElement, cloneElement, useMemo, useContext, useRef, useState, useEffect } from 'react';
21
21
  import { Card, Text, SimpleGrid, Group, Stack, Alert, Tabs, Box, Table, Paper, CopyButton, Tooltip, ActionIcon, TableOfContents, ThemeIcon, Title, Badge, Divider, UnstyledButton } from '@mantine/core';
22
22
  import { IconBook, IconCheck, IconCopy, IconCircleX, IconAlertTriangle, IconInfoCircle } from '@tabler/icons-react';
@@ -1463,277 +1463,268 @@ return {
1463
1463
  default: MDXContent
1464
1464
  };
1465
1465
  `),
1466
- "knowledge.new-vertical-launch-playbook": makeKnowledgeComponent(`"use strict";
1466
+ "knowledge.what-is-elevasis": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n h3: "h3",\n li: "li",\n p: "p",\n strong: "strong",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Executive Summary"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Company:"\n }), " Bootstrapped AI orchestration platform for done-for-you business automation"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Founder:"\n }), " Solo (Alex, 34), bootstrapped"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Market:"\n }), " Service-based SMBs that need practical AI automation without building internal AI teams"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "GTM:"\n }), " Content-led marketing, proof assets, consultative sales, and land-and-expand pricing"]\n }), "\\n", _jsx(_components.h2, {\n children: "Company Overview"\n }), "\\n", _jsx(_components.h3, {\n children: "Current Status"\n }), "\\n", _jsx(_components.p, {\n children: "The platform core is production-ready enough to support client-facing demonstrations and implementation work. Current business focus is client acquisition, proof-building, and turning the platform into a repeatable service delivery system."\n }), "\\n", _jsx(_components.h3, {\n children: "Founder Profile"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Alex, 34"\n }), " \u2014 Solo founder with software engineering background (BSCS degree). Previous: Ecommerce platforms, Streaming technology. No formal AI background \u2014 practitioner, not academic."]\n }), "\\n", _jsx(_components.h3, {\n children: "What We Are"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Operating layer for AI automation."\n }), " We help SMBs operate with closed-loop feedback, decision capture, and continuous learning \u2014 at SMB pricing with done-for-you implementation (NOT self-service)."]\n }), "\\n", _jsx(_components.h3, {\n children: "Target Market"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "ICP:"\n }), " Service-based SMBs (2-50 employees, USA, $200K-$5M revenue)"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Core Pain:"\n }), " Capacity crisis, pipeline problems, operational chaos, growth blockers \u2014 too busy serving clients to grow their own business."]\n }), "\\n", _jsx(_components.h3, {\n children: "Pricing (Land-and-Expand)"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Tier 1 \u2014 Foundation (1-2 workflows): $500-2k/mo"\n }), "\\n", _jsx(_components.li, {\n children: "Tier 2 \u2014 Scaled Operations (3-5 workflows): $2k-5k/mo"\n }), "\\n", _jsx(_components.li, {\n children: "Tier 3 \u2014 AI-Powered Systems (6+ workflows): $5k-15k+/mo"\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Additional workflows cost less due to shared infrastructure."\n }), "\\n", _jsx(_components.h3, {\n children: "Value Proposition"\n }), "\\n", _jsx(_components.p, {\n children: "\\"We find one bottleneck in your business, build an AI solution to fix it, and you only pay if it actually saves you time or makes you money.\\""\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
1467
+ "knowledge.platform-capabilities": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n h3: "h3",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "Elevasis is a production AI orchestration platform that coordinates workflows, autonomous agents, and human approvals into a unified operating layer for SMBs. Everything described below is implemented and running in production."\n }), "\\n", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: "Core Architecture:"\n })\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Layer"\n }), _jsx(_components.th, {\n children: "What It Does"\n }), _jsx(_components.th, {\n children: "Key Components"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Execution"\n })\n }), _jsx(_components.td, {\n children: "Runs workflows and agents with schema validation"\n }), _jsx(_components.td, {\n children: "Workflow Engine, Agent Framework, Execution Runner"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Control"\n })\n }), _jsx(_components.td, {\n children: "Human oversight, approvals, and decision capture"\n }), _jsx(_components.td, {\n children: "Command Queue (HITL), Dynamic Forms, Action System"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Intelligence"\n })\n }), _jsx(_components.td, {\n children: "Autonomous reasoning, tool use, and memory management"\n }), _jsx(_components.td, {\n children: "ReAct Agents, Knowledge Map, Session Memory"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Observability"\n })\n }), _jsx(_components.td, {\n children: "Real-time visibility into cost, performance, and health"\n }), _jsx(_components.td, {\n children: "Cost Tracking, Metrics, Activity Log, SSE Streaming"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Platform"\n })\n }), _jsx(_components.td, {\n children: "Multi-tenancy, security, scheduling, integrations"\n }), _jsx(_components.td, {\n children: "Registry, RLS, Scheduler, Credential Vault, SDK"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Execution Engine"\n }), "\\n", _jsx(_components.h3, {\n children: "AI Workflows"\n }), "\\n", _jsx(_components.p, {\n children: "Graph-based workflow execution with schema-validated steps and conditional routing. Steps define explicit routing: linear, conditional (rule-based branching), or terminal. Context flows through the entire workflow."\n }), "\\n", _jsx(_components.h3, {\n children: "Autonomous Agents"\n }), "\\n", _jsx(_components.p, {\n children: "Production-grade ReAct-style agents with tool use, memory management, and security hardening."\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "LLM Provider Support:"\n }), " OpenAI (GPT-5), Google (Gemini 3 Flash), Anthropic (Claude Sonnet 4.5), OpenRouter (GLM-5)"]\n }), "\\n", _jsx(_components.h2, {\n children: "Human-in-the-Loop (HITL)"\n }), "\\n", _jsx(_components.p, {\n children: "The Command Queue surfaces pending approvals as structured tasks. Admin reviews, approves or edits, and the workflow continues. Every critical decision \u2014 sending emails to prospects, updating customer records, publishing content \u2014 requires human approval."\n }), "\\n", _jsx(_components.h2, {\n children: "Knowledge Map"\n }), "\\n", _jsx(_components.p, {\n children: "Organizational knowledge loaded lazily into agent context. 80-95% token savings vs. always-loading full context. Nodes link to features, teams, and other nodes."\n }), "\\n", _jsx(_components.h2, {\n children: "Integrations (13 active)"\n }), "\\n", _jsx(_components.p, {\n children: "Attio CRM, Cal.com, Instantly (cold email), Resend, Apify, Google Maps, Tomba, Mails.so, Supabase, Stripe, OpenAI, Google Gemini, Anthropic Claude."\n }), "\\n", _jsx(_components.h2, {\n children: "SDK"\n }), "\\n", _jsxs(_components.p, {\n children: ["TypeScript-based resource development with local testing, validation, and deployment pipeline. External consumers define workflows and agents in their own repos and deploy via ", _jsx(_components.code, {\n children: "elevasis-sdk deploy"\n }), "."]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
1468
+ "knowledge.client-testimonials": makeKnowledgeComponent(`"use strict";
1467
1469
  const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
1468
1470
  function _createMdxContent(props) {
1469
1471
  const _components = {
1470
- code: "code",
1472
+ blockquote: "blockquote",
1471
1473
  h2: "h2",
1472
1474
  h3: "h3",
1473
1475
  li: "li",
1474
1476
  ol: "ol",
1475
1477
  p: "p",
1476
- pre: "pre",
1478
+ strong: "strong",
1477
1479
  ul: "ul",
1478
1480
  ...props.components
1479
1481
  };
1480
1482
  return _jsxs(_Fragment, {
1481
- children: [_jsx(_components.h2, {
1482
- children: "Overview"
1483
- }), "\\n", _jsx(_components.p, {
1484
- children: "Use this playbook when launching a new acquisition vertical from zero to first campaign. A vertical launch turns an audience hypothesis such as independent dental practices, auto repair shops, or bookkeeping firms into a tracked lead generation batch, qualified contacts, a draft Instantly campaign, and an active monitoring loop."
1485
- }), "\\n", _jsx(_components.p, {
1486
- children: "The workflow has five phases:"
1487
- }), "\\n", _jsxs(_components.ol, {
1488
- children: ["\\n", _jsx(_components.li, {
1489
- children: "Define the batch and qualification rules."
1490
- }), "\\n", _jsx(_components.li, {
1491
- children: "Create the batch tracker."
1492
- }), "\\n", _jsx(_components.li, {
1493
- children: "Run the lead generation pipeline."
1494
- }), "\\n", _jsx(_components.li, {
1495
- children: "Launch the outreach campaign."
1496
- }), "\\n", _jsx(_components.li, {
1497
- children: "Monitor replies and campaign quality."
1498
- }), "\\n"]
1483
+ children: [_jsxs(_components.p, {
1484
+ children: [_jsx(_components.strong, {
1485
+ children: "Status:"
1486
+ }), " 4 testimonials from 2 clients | ", _jsx(_components.strong, {
1487
+ children: "Source:"
1488
+ }), " Upwork client work (2024)"]
1499
1489
  }), "\\n", _jsx(_components.h2, {
1500
- children: "Define the Batch"
1490
+ children: "Testimonials"
1491
+ }), "\\n", _jsx(_components.h3, {
1492
+ children: "Xero Automation \u2014 The Invoice Chase That Disappeared"
1501
1493
  }), "\\n", _jsxs(_components.p, {
1502
- children: ["Choose a batch ID using the acquisition naming convention: ", _jsx(_components.code, {
1503
- children: "{vertical}-{number}"
1504
- }), ", for example ", _jsx(_components.code, {
1505
- children: "dental-1"
1506
- }), ", ", _jsx(_components.code, {
1507
- children: "auto-1"
1508
- }), ", or ", _jsx(_components.code, {
1509
- children: "home-1"
1510
- }), "."]
1511
- }), "\\n", _jsx(_components.p, {
1512
- children: "Record the batch configuration in the tracker before running pipeline stages. At minimum, capture:"
1513
- }), "\\n", _jsxs(_components.ul, {
1514
- children: ["\\n", _jsx(_components.li, {
1515
- children: "Target description, such as \\"independent dental practices in Orange County, California\\"."
1516
- }), "\\n", _jsx(_components.li, {
1517
- children: "Search queries for the initial source pull."
1518
- }), "\\n", _jsx(_components.li, {
1519
- children: "Region: county, state, country, or other geography accepted by the scraper workflow."
1520
- }), "\\n", _jsx(_components.li, {
1521
- children: "Minimum review count and minimum rating, when Google Maps quality thresholds matter."
1522
- }), "\\n", _jsx(_components.li, {
1523
- children: "Custom disqualification rules, such as excluding chains, franchises, pediatric-only practices, or irrelevant subcategories."
1524
- }), "\\n", _jsxs(_components.li, {
1525
- children: ["Website crawl keywords, such as ", _jsx(_components.code, {
1526
- children: "about"
1527
- }), ", ", _jsx(_components.code, {
1528
- children: "team"
1529
- }), ", ", _jsx(_components.code, {
1530
- children: "staff"
1531
- }), ", ", _jsx(_components.code, {
1532
- children: "contact"
1533
- }), ", ", _jsx(_components.code, {
1534
- children: "services"
1535
- }), ", or vertical-specific service pages."]
1494
+ children: [_jsx(_components.strong, {
1495
+ children: "Client:"
1496
+ }), " Word of Mouth Agency"]
1497
+ }), "\\n", _jsxs(_components.p, {
1498
+ children: [_jsx(_components.strong, {
1499
+ children: "Result:"
1500
+ }), " 10+ hours/week saved. Zero manual follow-up emails."]
1501
+ }), "\\n", _jsxs(_components.blockquote, {
1502
+ children: ["\\n", _jsx(_components.p, {
1503
+ children: "\\"Working with Alex at Elevasis to automate our Xero follow-ups has been a game-changer. We're set to save over 5 hours a week, but more importantly, it has completely removed the stress of chasing invoices. The process was smooth and professional.\\""
1536
1504
  }), "\\n"]
1537
1505
  }), "\\n", _jsxs(_components.p, {
1538
- children: ["Use ", _jsx(_components.code, {
1539
- children: "packages/elevasis-operations/src/sales/prospecting/constants.ts"
1540
- }), " as the batch registry. Current launch work should keep the tracker as the human-readable source and pass qualification criteria through the workflow input, list qualification metadata, or the registered batch config for the stage being run."]
1541
- }), "\\n", _jsx(_components.h2, {
1542
- children: "Create the Batch Tracker"
1543
- }), "\\n", _jsx(_components.p, {
1544
- children: "Create a tracker from the acquisition batch template:"
1545
- }), "\\n", _jsx(_components.pre, {
1546
- children: _jsx(_components.code, {
1547
- className: "language-text",
1548
- children: "apps/docs/content/docs/operations/client-acquisition/outreach/batches/_template.mdx\\n"
1549
- })
1550
- }), "\\n", _jsx(_components.p, {
1551
- children: "Place the new tracker in the pending batch directory:"
1552
- }), "\\n", _jsx(_components.pre, {
1553
- children: _jsx(_components.code, {
1554
- className: "language-text",
1555
- children: "apps/docs/content/docs/operations/client-acquisition/outreach/batches/pending/{batch-id}.mdx\\n"
1556
- })
1506
+ children: [_jsx(_components.strong, {
1507
+ children: "Permission:"
1508
+ }), " Case study approved with company name."]
1509
+ }), "\\n", _jsx(_components.h3, {
1510
+ children: "Influencer Discovery \u2014 From Spreadsheet Hell to Strategic Decisions"
1557
1511
  }), "\\n", _jsxs(_components.p, {
1558
- children: ["Fill in the frontmatter with ", _jsx(_components.code, {
1559
- children: "status: in-progress"
1560
- }), ", then complete the batch configuration table before running pipeline work. The tracker should make it possible to reconstruct the vertical, region, search inputs, disqualification rules, and campaign state without reading execution logs."]
1561
- }), "\\n", _jsx(_components.h2, {
1562
- children: "Run Lead Generation"
1512
+ children: [_jsx(_components.strong, {
1513
+ children: "Client:"
1514
+ }), " Word of Mouth Agency (Perth, Australia)"]
1563
1515
  }), "\\n", _jsxs(_components.p, {
1564
- children: ["Run the lead generation stages with the platform CLI from the monorepo root so ", _jsx(_components.code, {
1565
- children: ".env.development"
1566
- }), " and ", _jsx(_components.code, {
1567
- children: ".env.production"
1568
- }), " resolve correctly."]
1569
- }), "\\n", _jsx(_components.h3, {
1570
- children: "Stage 01: Google Maps Scrape"
1571
- }), "\\n", _jsx(_components.p, {
1572
- children: "Use the Google Maps scrape workflow to acquire initial companies:"
1573
- }), "\\n", _jsx(_components.pre, {
1574
- children: _jsx(_components.code, {
1575
- className: "language-bash",
1576
- children: "pnpm exec elevasis exec Elevasis/lgn-01a-google-maps-scrape-workflow --input '{\\"searchQueries\\":[\\"dentist\\",\\"dental clinic\\"],\\"county\\":\\"Orange County\\",\\"state\\":\\"California\\"}' --async\\n"
1577
- })
1578
- }), "\\n", _jsx(_components.p, {
1579
- children: "After the execution starts, record the execution ID and source counts in the batch tracker."
1580
- }), "\\n", _jsx(_components.h3, {
1581
- children: "Local Website Crawl"
1582
- }), "\\n", _jsx(_components.p, {
1583
- children: "Run the local website crawler against the batch:"
1584
- }), "\\n", _jsx(_components.pre, {
1585
- children: _jsx(_components.code, {
1586
- className: "language-bash",
1587
- children: "pnpm -C scripts/web-scraper run crawl -- {batch-id}\\n"
1588
- })
1589
- }), "\\n", _jsx(_components.p, {
1590
- children: "The crawl should capture relevant sub-pages for LLM extraction. If vertical-specific keywords are not available in the active code path, use the default crawl coverage and note any manual crawl gaps in the tracker before extraction."
1591
- }), "\\n", _jsx(_components.h3, {
1592
- children: "Stage 02: Website Extract"
1593
- }), "\\n", _jsx(_components.p, {
1594
- children: "Extract structured company profile data from crawl output:"
1595
- }), "\\n", _jsx(_components.pre, {
1596
- children: _jsx(_components.code, {
1597
- className: "language-bash",
1598
- children: "pnpm exec elevasis exec Elevasis/lgn-02-website-extract-workflow --input '{\\"batchId\\":\\"{batch-id}\\"}' --async\\n"
1599
- })
1600
- }), "\\n", _jsx(_components.h3, {
1601
- children: "Stage 03: Company Qualification"
1602
- }), "\\n", _jsx(_components.p, {
1603
- children: "Qualify companies using the target description, review thresholds, rating thresholds, and custom rules captured in the tracker. If the workflow does not resolve criteria automatically for the batch, pass the criteria explicitly in the input or attach them through the list qualification surface before running the stage."
1604
- }), "\\n", _jsx(_components.pre, {
1605
- children: _jsx(_components.code, {
1606
- className: "language-bash",
1607
- children: "pnpm exec elevasis exec Elevasis/lgn-03-company-qualification-workflow --input '{\\"batchId\\":\\"{batch-id}\\",\\"criteria\\":{\\"targetDescription\\":\\"Independent dental practices in Orange County, California\\",\\"minimumReviewCount\\":5,\\"minimumRating\\":3,\\"customRules\\":\\"Disqualify franchises and chains. Disqualify orthodontics-only and pediatric-only practices.\\"}}' --async\\n"
1608
- })
1516
+ children: [_jsx(_components.strong, {
1517
+ children: "Result:"
1518
+ }), " 10+ hours/week saved. Research scope: 50 to 200+ influencers. Team focus shifted from data to strategy."]
1519
+ }), "\\n", _jsxs(_components.blockquote, {
1520
+ children: ["\\n", _jsx(_components.p, {
1521
+ children: "\\"Working with Alex at Elevasis to automate our Influencer Discovery has been a game-changer. We're set to save over 5 hours a week...\\""
1522
+ }), "\\n"]
1609
1523
  }), "\\n", _jsxs(_components.p, {
1610
- children: ["For list-oriented runs, use ", _jsx(_components.code, {
1611
- children: "listId"
1612
- }), " instead of ", _jsx(_components.code, {
1613
- children: "batchId"
1614
- }), "; list configuration takes priority over the batch registry unless an explicit ", _jsx(_components.code, {
1615
- children: "criteria"
1616
- }), " override is provided."]
1617
- }), "\\n", _jsx(_components.h3, {
1618
- children: "Stage 04: Email Discovery"
1619
- }), "\\n", _jsx(_components.p, {
1620
- children: "Discover contacts for qualified companies:"
1621
- }), "\\n", _jsx(_components.pre, {
1622
- children: _jsx(_components.code, {
1623
- className: "language-bash",
1624
- children: "pnpm exec elevasis exec Elevasis/lgn-04-email-discovery-workflow --input '{\\"batchId\\":\\"{batch-id}\\"}' --async\\n"
1625
- })
1524
+ children: [_jsx(_components.strong, {
1525
+ children: "Permission:"
1526
+ }), " Case study approved with company name."]
1626
1527
  }), "\\n", _jsx(_components.h3, {
1627
- children: "Stage 05: Email Verification"
1628
- }), "\\n", _jsx(_components.p, {
1629
- children: "Verify discovered emails before campaign upload:"
1630
- }), "\\n", _jsx(_components.pre, {
1631
- children: _jsx(_components.code, {
1632
- className: "language-bash",
1633
- children: "pnpm exec elevasis exec Elevasis/lgn-05-email-verification-workflow --input '{\\"batchId\\":\\"{batch-id}\\"}' --async\\n"
1634
- })
1528
+ children: "EMRG Media \u2014 4 Automations for NYC's Premier Events Firm"
1635
1529
  }), "\\n", _jsxs(_components.p, {
1636
- children: ["When verification completes, update the tracker with company counts, contact counts, usable email counts, and set the batch status to ", _jsx(_components.code, {
1637
- children: "ready"
1638
- }), " if campaign launch prerequisites are satisfied."]
1639
- }), "\\n", _jsx(_components.h2, {
1640
- children: "Launch the Campaign"
1530
+ children: [_jsx(_components.strong, {
1531
+ children: "Client:"
1532
+ }), " EMRG Media (NYC, est. 2001). Clients include Google, YouTube, Sony Music, Fiverr, Equinox."]
1641
1533
  }), "\\n", _jsx(_components.p, {
1642
- children: "Use the acquisition outreach workflow to move a ready batch into Instantly:"
1534
+ children: _jsx(_components.strong, {
1535
+ children: "What We Built:"
1536
+ })
1643
1537
  }), "\\n", _jsxs(_components.ol, {
1644
1538
  children: ["\\n", _jsxs(_components.li, {
1645
- children: ["Check account inventory with ", _jsx(_components.code, {
1646
- children: "ist-account-inventory-workflow"
1647
- }), "."]
1648
- }), "\\n", _jsxs(_components.li, {
1649
- children: ["Personalize contacts with ", _jsx(_components.code, {
1650
- children: "ist-personalization-workflow"
1651
- }), "."]
1652
- }), "\\n", _jsxs(_components.li, {
1653
- children: ["Create a draft campaign with ", _jsx(_components.code, {
1654
- children: "ist-campaign-create-workflow"
1655
- }), " and ", _jsx(_components.code, {
1656
- children: "activate: false"
1657
- }), "."]
1658
- }), "\\n", _jsxs(_components.li, {
1659
- children: ["Create the tracking list with ", _jsx(_components.code, {
1660
- children: "ist-campaign-list-workflow"
1661
- }), "."]
1539
+ children: [_jsx(_components.strong, {
1540
+ children: "Case Study Generator"
1541
+ }), " \u2014 7-10 hours \u2192 2 hours. Publication rate: 1/quarter \u2192 2/month."]
1662
1542
  }), "\\n", _jsxs(_components.li, {
1663
- children: ["Upload contacts with ", _jsx(_components.code, {
1664
- children: "ist-upload-workflow"
1665
- }), ", dry run first and then real."]
1543
+ children: [_jsx(_components.strong, {
1544
+ children: "EMRG Follow-Up Generator"
1545
+ }), " \u2014 Automated post-event follow-ups with signature management."]
1666
1546
  }), "\\n", _jsxs(_components.li, {
1667
- children: ["Activate with ", _jsx(_components.code, {
1668
- children: "ist-campaign-activate-workflow"
1669
- }), "."]
1547
+ children: [_jsx(_components.strong, {
1548
+ children: "Event Sponsor Tracker"
1549
+ }), " \u2014 Automated sponsor pipeline tracking and communications."]
1670
1550
  }), "\\n", _jsxs(_components.li, {
1671
- children: ["Update the tracker to ", _jsx(_components.code, {
1672
- children: "status: active"
1673
- }), " and fill in campaign metadata."]
1551
+ children: [_jsx(_components.strong, {
1552
+ children: "Lead Scraper"
1553
+ }), " \u2014 Automated discovery of event planning prospects."]
1674
1554
  }), "\\n"]
1675
1555
  }), "\\n", _jsx(_components.p, {
1676
- children: "Keep the first campaign small enough to evaluate copy and deliverability. Prefer 100-200 contacts per segment, 1-2 contacts per company, and conservative sending volume until benchmarks are visible."
1677
- }), "\\n", _jsx(_components.h2, {
1678
- children: "Monitor and Optimize"
1679
- }), "\\n", _jsx(_components.p, {
1680
- children: "After launch, monitor both campaign metrics and inbound replies:"
1556
+ children: _jsx(_components.strong, {
1557
+ children: "Fame Stats:"
1558
+ })
1681
1559
  }), "\\n", _jsxs(_components.ul, {
1682
- children: ["\\n", _jsxs(_components.li, {
1683
- children: ["Use ", _jsx(_components.code, {
1684
- children: "/acquisition --outreach"
1685
- }), " for campaign review and analytics."]
1686
- }), "\\n", _jsxs(_components.li, {
1687
- children: ["Use ", _jsx(_components.code, {
1688
- children: "/acquisition --inbound status"
1689
- }), " for reply handling and active deal state."]
1690
- }), "\\n", _jsx(_components.li, {
1691
- children: "Watch open rate, reply rate, positive reply rate, and bounce rate."
1560
+ children: ["\\n", _jsx(_components.li, {
1561
+ children: "3,500+ attendees at The Event Planner Expo"
1692
1562
  }), "\\n", _jsx(_components.li, {
1693
- children: "Pause or repair the campaign if bounce rate rises above the accepted threshold."
1563
+ children: "25+ year track record"
1694
1564
  }), "\\n", _jsx(_components.li, {
1695
- children: "Rework subject lines, personalization, or offer framing when reply rate is below target."
1565
+ children: "Fortune 500 client roster"
1696
1566
  }), "\\n"]
1697
- }), "\\n", _jsx(_components.p, {
1698
- children: "Every optimization pass should write back to the tracker: what changed, why it changed, and what result would justify scaling the vertical."
1567
+ }), "\\n", _jsxs(_components.p, {
1568
+ children: [_jsx(_components.strong, {
1569
+ children: "Permission:"
1570
+ }), " Case study approved with company name."]
1571
+ })]
1572
+ });
1573
+ }
1574
+ function MDXContent(props = {}) {
1575
+ const {wrapper: MDXLayout} = props.components || ({});
1576
+ return MDXLayout ? _jsx(MDXLayout, {
1577
+ ...props,
1578
+ children: _jsx(_createMdxContent, {
1579
+ ...props
1580
+ })
1581
+ }) : _createMdxContent(props);
1582
+ }
1583
+ return {
1584
+ default: MDXContent
1585
+ };
1586
+ `),
1587
+ "knowledge.understanding-elevasis": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n li: "li",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: "Lean documentation explaining what Elevasis is and what the platform can do. This section provides the foundational context for business conversations and technical evaluation."\n }), "\\n", _jsx(_components.p, {\n children: "Elevasis is a done-for-you AI automation service backed by a production-grade platform. The company targets service-based SMBs (2-50 employees, $200K-$5M revenue) who are too busy serving clients to grow their own business."\n }), "\\n", _jsx(_components.h2, {\n children: "Key Facts"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Stage:"\n }), " Pre-revenue, platform 100% complete, client acquisition active"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Offer:"\n }), " Done-for-you AI automation -- we build and maintain the workflows, no coding required"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "ICP:"\n }), " Service-based SMBs (2-50 employees, $200K-$5M revenue, USA)"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Pricing:"\n }), " $500-$2k/mo (Foundation) \u2192 $2k-$5k/mo (Scaled) \u2192 $5k-$15k+/mo (AI-Powered)"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Market:"\n }), " Early Adopters stage, $23.77B TAM growing to $87.7B by 2032"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Competitive position:"\n }), " No dominant done-for-you SMB AI provider exists; blue ocean"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "When to Use Each Document"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Situation"\n }), _jsx(_components.th, {\n children: "Document"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "First conversation with any audience"\n }), _jsx(_components.td, {\n children: "What is Elevasis"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Technical evaluation or demo prep"\n }), _jsx(_components.td, {\n children: "Platform Capabilities"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Documentation"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "What is Elevasis"\n }), " \u2014 AI orchestration platform overview, company stage, value proposition, and pricing tiers"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Platform Capabilities"\n }), " \u2014 Authoritative overview of what is built, what it does, and how the pieces fit together"]\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
1588
+ "knowledge.marketing-overview": makeKnowledgeComponent(`"use strict";
1589
+ const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
1590
+ function _createMdxContent(props) {
1591
+ const _components = {
1592
+ h2: "h2",
1593
+ h3: "h3",
1594
+ li: "li",
1595
+ p: "p",
1596
+ strong: "strong",
1597
+ ul: "ul",
1598
+ ...props.components
1599
+ };
1600
+ return _jsxs(_Fragment, {
1601
+ children: [_jsx(_components.p, {
1602
+ children: "Welcome to the Elevasis marketing documentation. This section covers marketing strategy, website implementation, and content systems."
1699
1603
  }), "\\n", _jsx(_components.h2, {
1700
- children: "Launch Checklist"
1604
+ children: "Documentation"
1605
+ }), "\\n", _jsx(_components.h3, {
1606
+ children: "Strategy"
1701
1607
  }), "\\n", _jsxs(_components.ul, {
1702
1608
  children: ["\\n", _jsxs(_components.li, {
1703
- children: ["Batch ID selected with ", _jsx(_components.code, {
1704
- children: "{vertical}-{number}"
1705
- }), " naming."]
1706
- }), "\\n", _jsx(_components.li, {
1707
- children: "Batch tracker created from the template."
1708
- }), "\\n", _jsx(_components.li, {
1709
- children: "Target description, geography, search queries, thresholds, and custom rules recorded."
1710
- }), "\\n", _jsx(_components.li, {
1711
- children: "Stage 01 scrape execution complete."
1609
+ children: [_jsx(_components.strong, {
1610
+ children: "Overview"
1611
+ }), " \u2014 Channel strategy, inbound content system, and proof-led demand generation"]
1612
+ }), "\\n"]
1613
+ }), "\\n", _jsx(_components.h3, {
1614
+ children: "Website"
1615
+ }), "\\n", _jsx(_components.p, {
1616
+ children: "The marketing website's technical infrastructure, setup, and SEO docs now live under Architecture \u2192 Website."
1617
+ })]
1618
+ });
1619
+ }
1620
+ function MDXContent(props = {}) {
1621
+ const {wrapper: MDXLayout} = props.components || ({});
1622
+ return MDXLayout ? _jsx(MDXLayout, {
1623
+ ...props,
1624
+ children: _jsx(_createMdxContent, {
1625
+ ...props
1626
+ })
1627
+ }) : _createMdxContent(props);
1628
+ }
1629
+ return {
1630
+ default: MDXContent
1631
+ };
1632
+ `),
1633
+ "knowledge.ai-orchestration-principles": makeKnowledgeComponent(`"use strict";
1634
+ const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
1635
+ function _createMdxContent(props) {
1636
+ const _components = {
1637
+ h2: "h2",
1638
+ h3: "h3",
1639
+ li: "li",
1640
+ p: "p",
1641
+ strong: "strong",
1642
+ ul: "ul",
1643
+ ...props.components
1644
+ };
1645
+ return _jsxs(_Fragment, {
1646
+ children: [_jsx(_components.p, {
1647
+ children: "Most AI automation fails. Not because the technology is bad, but because it's implemented without the principles that make AI systems work in production."
1648
+ }), "\\n", _jsx(_components.p, {
1649
+ children: "These four principles separate toy automation from AI systems that actually run businesses."
1650
+ }), "\\n", _jsx(_components.h2, {
1651
+ children: "The 4 Principles"
1652
+ }), "\\n", _jsx(_components.h3, {
1653
+ children: "1. Integrated: Works With Your Existing Systems"
1654
+ }), "\\n", _jsxs(_components.p, {
1655
+ children: [_jsx(_components.strong, {
1656
+ children: "Principle:"
1657
+ }), " AI must work with your existing tools, not replace them."]
1658
+ }), "\\n", _jsx(_components.p, {
1659
+ children: "AI that doesn't connect to your CRM, your email, your calendar, your existing workflows is a toy. Real AI automation works WITH what you already have \u2014 not instead of it."
1660
+ }), "\\n", _jsxs(_components.ul, {
1661
+ children: ["\\n", _jsx(_components.li, {
1662
+ children: "Your 50 Zapier workflows keep running"
1712
1663
  }), "\\n", _jsx(_components.li, {
1713
- children: "Website crawl complete or crawl gaps documented."
1664
+ children: "Your CRM stays your CRM"
1714
1665
  }), "\\n", _jsx(_components.li, {
1715
- children: "Stage 02 extraction complete."
1666
+ children: "AI adds intelligence on top, not a rip-and-replace"
1667
+ }), "\\n"]
1668
+ }), "\\n", _jsxs(_components.p, {
1669
+ children: [_jsx(_components.strong, {
1670
+ children: "The anti-pattern:"
1671
+ }), " \\"Use our AI instead of everything else.\\" Creates vendor lock-in and throws away your existing investment."]
1672
+ }), "\\n", _jsx(_components.h3, {
1673
+ children: "2. Improving: Gets Smarter Over Time"
1674
+ }), "\\n", _jsxs(_components.p, {
1675
+ children: [_jsx(_components.strong, {
1676
+ children: "Principle:"
1677
+ }), " AI must learn from every decision and improve continuously."]
1678
+ }), "\\n", _jsx(_components.p, {
1679
+ children: "Static automation is just fancy if-then logic. Real AI captures every approval, rejection, and edit \u2014 then uses that data to get smarter."
1680
+ }), "\\n", _jsxs(_components.p, {
1681
+ children: [_jsx(_components.strong, {
1682
+ children: "The anti-pattern:"
1683
+ }), " \\"Set it and forget it.\\" Systems that don't learn stay dumb forever."]
1684
+ }), "\\n", _jsx(_components.h3, {
1685
+ children: "3. Observable: You See What AI Is Doing"
1686
+ }), "\\n", _jsxs(_components.p, {
1687
+ children: [_jsx(_components.strong, {
1688
+ children: "Principle:"
1689
+ }), " You must be able to see what AI systems are doing in real-time."]
1690
+ }), "\\n", _jsx(_components.p, {
1691
+ children: "Black-box automation is unacceptable for business operations. You need to see every action, every decision, every cost \u2014 as it happens."
1692
+ }), "\\n", _jsxs(_components.ul, {
1693
+ children: ["\\n", _jsx(_components.li, {
1694
+ children: "Real-time activity feeds showing what's executing"
1716
1695
  }), "\\n", _jsx(_components.li, {
1717
- children: "Stage 03 qualification complete with explicit criteria source."
1696
+ children: "Cost tracking per workflow, per execution"
1718
1697
  }), "\\n", _jsx(_components.li, {
1719
- children: "Stage 04 email discovery complete."
1698
+ children: "Token usage visibility"
1720
1699
  }), "\\n", _jsx(_components.li, {
1721
- children: "Stage 05 email verification complete."
1722
- }), "\\n", _jsxs(_components.li, {
1723
- children: ["Tracker status set to ", _jsx(_components.code, {
1724
- children: "ready"
1725
- }), "."]
1700
+ children: "Execution logs for debugging"
1701
+ }), "\\n"]
1702
+ }), "\\n", _jsxs(_components.p, {
1703
+ children: [_jsx(_components.strong, {
1704
+ children: "The anti-pattern:"
1705
+ }), " \\"It just works, trust us.\\" Systems without observability create anxiety and prevent adoption."]
1706
+ }), "\\n", _jsx(_components.h3, {
1707
+ children: "4. Governed: Humans Control What Matters"
1708
+ }), "\\n", _jsxs(_components.p, {
1709
+ children: [_jsx(_components.strong, {
1710
+ children: "Principle:"
1711
+ }), " Humans must approve important actions before execution."]
1712
+ }), "\\n", _jsx(_components.p, {
1713
+ children: "AI should handle the grunt work. But critical decisions \u2014 sending emails to prospects, updating customer records, publishing content \u2014 require human approval."
1714
+ }), "\\n", _jsxs(_components.ul, {
1715
+ children: ["\\n", _jsx(_components.li, {
1716
+ children: "AI researches 50 prospects and drafts personalized emails"
1726
1717
  }), "\\n", _jsx(_components.li, {
1727
- children: "Draft Instantly campaign created."
1718
+ children: "Before anything sends, it lands in your approval queue"
1728
1719
  }), "\\n", _jsx(_components.li, {
1729
- children: "Tracking list created and contacts uploaded."
1720
+ children: "You spend 10 minutes reviewing, approve or tweak"
1730
1721
  }), "\\n", _jsx(_components.li, {
1731
- children: "Campaign activated."
1732
- }), "\\n", _jsxs(_components.li, {
1733
- children: ["Tracker status set to ", _jsx(_components.code, {
1734
- children: "active"
1735
- }), " with campaign metadata."]
1722
+ children: "Only then does it execute"
1736
1723
  }), "\\n"]
1724
+ }), "\\n", _jsxs(_components.p, {
1725
+ children: [_jsx(_components.strong, {
1726
+ children: "The anti-pattern:"
1727
+ }), " \\"Fully autonomous AI.\\" Systems without governance create risk and erode trust."]
1737
1728
  })]
1738
1729
  });
1739
1730
  }
@@ -1750,22 +1741,17 @@ return {
1750
1741
  default: MDXContent
1751
1742
  };
1752
1743
  `),
1753
- "knowledge.upwork-calibration-strategy": makeKnowledgeComponent(`"use strict";
1744
+ "knowledge.new-vertical-launch-playbook": makeKnowledgeComponent(`"use strict";
1754
1745
  const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
1755
1746
  function _createMdxContent(props) {
1756
1747
  const _components = {
1757
1748
  code: "code",
1758
1749
  h2: "h2",
1750
+ h3: "h3",
1759
1751
  li: "li",
1760
1752
  ol: "ol",
1761
1753
  p: "p",
1762
1754
  pre: "pre",
1763
- table: "table",
1764
- tbody: "tbody",
1765
- td: "td",
1766
- th: "th",
1767
- thead: "thead",
1768
- tr: "tr",
1769
1755
  ul: "ul",
1770
1756
  ...props.components
1771
1757
  };
@@ -1773,23 +1759,315 @@ function _createMdxContent(props) {
1773
1759
  children: [_jsx(_components.h2, {
1774
1760
  children: "Overview"
1775
1761
  }), "\\n", _jsx(_components.p, {
1776
- children: "Use this playbook when running a deep calibration scan for one or more Upwork queries. Calibration is separate from daily scanning: it evaluates query quality, competition, uniqueness, and noise patterns so the active saved-query set stays healthy."
1762
+ children: "Use this playbook when launching a new acquisition vertical from zero to first campaign. A vertical launch turns an audience hypothesis such as independent dental practices, auto repair shops, or bookkeeping firms into a tracked lead generation batch, qualified contacts, a draft Instantly campaign, and an active monitoring loop."
1777
1763
  }), "\\n", _jsx(_components.p, {
1778
- children: "Use calibration when:"
1764
+ children: "The workflow has five phases:"
1765
+ }), "\\n", _jsxs(_components.ol, {
1766
+ children: ["\\n", _jsx(_components.li, {
1767
+ children: "Define the batch and qualification rules."
1768
+ }), "\\n", _jsx(_components.li, {
1769
+ children: "Create the batch tracker."
1770
+ }), "\\n", _jsx(_components.li, {
1771
+ children: "Run the lead generation pipeline."
1772
+ }), "\\n", _jsx(_components.li, {
1773
+ children: "Launch the outreach campaign."
1774
+ }), "\\n", _jsx(_components.li, {
1775
+ children: "Monitor replies and campaign quality."
1776
+ }), "\\n"]
1777
+ }), "\\n", _jsx(_components.h2, {
1778
+ children: "Define the Batch"
1779
+ }), "\\n", _jsxs(_components.p, {
1780
+ children: ["Choose a batch ID using the acquisition naming convention: ", _jsx(_components.code, {
1781
+ children: "{vertical}-{number}"
1782
+ }), ", for example ", _jsx(_components.code, {
1783
+ children: "dental-1"
1784
+ }), ", ", _jsx(_components.code, {
1785
+ children: "auto-1"
1786
+ }), ", or ", _jsx(_components.code, {
1787
+ children: "home-1"
1788
+ }), "."]
1789
+ }), "\\n", _jsx(_components.p, {
1790
+ children: "Record the batch configuration in the tracker before running pipeline stages. At minimum, capture:"
1779
1791
  }), "\\n", _jsxs(_components.ul, {
1780
1792
  children: ["\\n", _jsx(_components.li, {
1781
- children: "Testing a new query candidate before adding it to active scans."
1793
+ children: "Target description, such as \\"independent dental practices in Orange County, California\\"."
1782
1794
  }), "\\n", _jsx(_components.li, {
1783
- children: "Re-evaluating an active query whose health score has declined."
1795
+ children: "Search queries for the initial source pull."
1784
1796
  }), "\\n", _jsx(_components.li, {
1785
- children: "Running periodic re-calibration of the full active query set. Quarterly is the default cadence."
1797
+ children: "Region: county, state, country, or other geography accepted by the scraper workflow."
1798
+ }), "\\n", _jsx(_components.li, {
1799
+ children: "Minimum review count and minimum rating, when Google Maps quality thresholds matter."
1800
+ }), "\\n", _jsx(_components.li, {
1801
+ children: "Custom disqualification rules, such as excluding chains, franchises, pediatric-only practices, or irrelevant subcategories."
1802
+ }), "\\n", _jsxs(_components.li, {
1803
+ children: ["Website crawl keywords, such as ", _jsx(_components.code, {
1804
+ children: "about"
1805
+ }), ", ", _jsx(_components.code, {
1806
+ children: "team"
1807
+ }), ", ", _jsx(_components.code, {
1808
+ children: "staff"
1809
+ }), ", ", _jsx(_components.code, {
1810
+ children: "contact"
1811
+ }), ", ", _jsx(_components.code, {
1812
+ children: "services"
1813
+ }), ", or vertical-specific service pages."]
1786
1814
  }), "\\n"]
1787
1815
  }), "\\n", _jsxs(_components.p, {
1788
1816
  children: ["Use ", _jsx(_components.code, {
1789
- children: "knowledge.upwork-query-strategy"
1790
- }), " for the active query table and ", _jsx(_components.code, {
1791
- children: "knowledge.upwork-scanning-playbook"
1792
- }), " for the daily scan workflow."]
1817
+ children: "packages/elevasis-operations/src/sales/prospecting/constants.ts"
1818
+ }), " as the batch registry. Current launch work should keep the tracker as the human-readable source and pass qualification criteria through the workflow input, list qualification metadata, or the registered batch config for the stage being run."]
1819
+ }), "\\n", _jsx(_components.h2, {
1820
+ children: "Create the Batch Tracker"
1821
+ }), "\\n", _jsx(_components.p, {
1822
+ children: "Create a tracker from the acquisition batch template:"
1823
+ }), "\\n", _jsx(_components.pre, {
1824
+ children: _jsx(_components.code, {
1825
+ className: "language-text",
1826
+ children: "apps/docs/content/docs/operations/client-acquisition/outreach/batches/_template.mdx\\n"
1827
+ })
1828
+ }), "\\n", _jsx(_components.p, {
1829
+ children: "Place the new tracker in the pending batch directory:"
1830
+ }), "\\n", _jsx(_components.pre, {
1831
+ children: _jsx(_components.code, {
1832
+ className: "language-text",
1833
+ children: "apps/docs/content/docs/operations/client-acquisition/outreach/batches/pending/{batch-id}.mdx\\n"
1834
+ })
1835
+ }), "\\n", _jsxs(_components.p, {
1836
+ children: ["Fill in the frontmatter with ", _jsx(_components.code, {
1837
+ children: "status: in-progress"
1838
+ }), ", then complete the batch configuration table before running pipeline work. The tracker should make it possible to reconstruct the vertical, region, search inputs, disqualification rules, and campaign state without reading execution logs."]
1839
+ }), "\\n", _jsx(_components.h2, {
1840
+ children: "Run Lead Generation"
1841
+ }), "\\n", _jsxs(_components.p, {
1842
+ children: ["Run the lead generation stages with the platform CLI from the monorepo root so ", _jsx(_components.code, {
1843
+ children: ".env.development"
1844
+ }), " and ", _jsx(_components.code, {
1845
+ children: ".env.production"
1846
+ }), " resolve correctly."]
1847
+ }), "\\n", _jsx(_components.h3, {
1848
+ children: "Stage 01: Google Maps Scrape"
1849
+ }), "\\n", _jsx(_components.p, {
1850
+ children: "Use the Google Maps scrape workflow to acquire initial companies:"
1851
+ }), "\\n", _jsx(_components.pre, {
1852
+ children: _jsx(_components.code, {
1853
+ className: "language-bash",
1854
+ children: "pnpm exec elevasis exec Elevasis/lgn-01a-google-maps-scrape-workflow --input '{\\"searchQueries\\":[\\"dentist\\",\\"dental clinic\\"],\\"county\\":\\"Orange County\\",\\"state\\":\\"California\\"}' --async\\n"
1855
+ })
1856
+ }), "\\n", _jsx(_components.p, {
1857
+ children: "After the execution starts, record the execution ID and source counts in the batch tracker."
1858
+ }), "\\n", _jsx(_components.h3, {
1859
+ children: "Local Website Crawl"
1860
+ }), "\\n", _jsx(_components.p, {
1861
+ children: "Run the local website crawler against the batch:"
1862
+ }), "\\n", _jsx(_components.pre, {
1863
+ children: _jsx(_components.code, {
1864
+ className: "language-bash",
1865
+ children: "pnpm -C scripts/web-scraper run crawl -- {batch-id}\\n"
1866
+ })
1867
+ }), "\\n", _jsx(_components.p, {
1868
+ children: "The crawl should capture relevant sub-pages for LLM extraction. If vertical-specific keywords are not available in the active code path, use the default crawl coverage and note any manual crawl gaps in the tracker before extraction."
1869
+ }), "\\n", _jsx(_components.h3, {
1870
+ children: "Stage 02: Website Extract"
1871
+ }), "\\n", _jsx(_components.p, {
1872
+ children: "Extract structured company profile data from crawl output:"
1873
+ }), "\\n", _jsx(_components.pre, {
1874
+ children: _jsx(_components.code, {
1875
+ className: "language-bash",
1876
+ children: "pnpm exec elevasis exec Elevasis/lgn-02-website-extract-workflow --input '{\\"batchId\\":\\"{batch-id}\\"}' --async\\n"
1877
+ })
1878
+ }), "\\n", _jsx(_components.h3, {
1879
+ children: "Stage 03: Company Qualification"
1880
+ }), "\\n", _jsx(_components.p, {
1881
+ children: "Qualify companies using the target description, review thresholds, rating thresholds, and custom rules captured in the tracker. If the workflow does not resolve criteria automatically for the batch, pass the criteria explicitly in the input or attach them through the list qualification surface before running the stage."
1882
+ }), "\\n", _jsx(_components.pre, {
1883
+ children: _jsx(_components.code, {
1884
+ className: "language-bash",
1885
+ children: "pnpm exec elevasis exec Elevasis/lgn-03-company-qualification-workflow --input '{\\"batchId\\":\\"{batch-id}\\",\\"criteria\\":{\\"targetDescription\\":\\"Independent dental practices in Orange County, California\\",\\"minimumReviewCount\\":5,\\"minimumRating\\":3,\\"customRules\\":\\"Disqualify franchises and chains. Disqualify orthodontics-only and pediatric-only practices.\\"}}' --async\\n"
1886
+ })
1887
+ }), "\\n", _jsxs(_components.p, {
1888
+ children: ["For list-oriented runs, use ", _jsx(_components.code, {
1889
+ children: "listId"
1890
+ }), " instead of ", _jsx(_components.code, {
1891
+ children: "batchId"
1892
+ }), "; list configuration takes priority over the batch registry unless an explicit ", _jsx(_components.code, {
1893
+ children: "criteria"
1894
+ }), " override is provided."]
1895
+ }), "\\n", _jsx(_components.h3, {
1896
+ children: "Stage 04: Email Discovery"
1897
+ }), "\\n", _jsx(_components.p, {
1898
+ children: "Discover contacts for qualified companies:"
1899
+ }), "\\n", _jsx(_components.pre, {
1900
+ children: _jsx(_components.code, {
1901
+ className: "language-bash",
1902
+ children: "pnpm exec elevasis exec Elevasis/lgn-04-email-discovery-workflow --input '{\\"batchId\\":\\"{batch-id}\\"}' --async\\n"
1903
+ })
1904
+ }), "\\n", _jsx(_components.h3, {
1905
+ children: "Stage 05: Email Verification"
1906
+ }), "\\n", _jsx(_components.p, {
1907
+ children: "Verify discovered emails before campaign upload:"
1908
+ }), "\\n", _jsx(_components.pre, {
1909
+ children: _jsx(_components.code, {
1910
+ className: "language-bash",
1911
+ children: "pnpm exec elevasis exec Elevasis/lgn-05-email-verification-workflow --input '{\\"batchId\\":\\"{batch-id}\\"}' --async\\n"
1912
+ })
1913
+ }), "\\n", _jsxs(_components.p, {
1914
+ children: ["When verification completes, update the tracker with company counts, contact counts, usable email counts, and set the batch status to ", _jsx(_components.code, {
1915
+ children: "ready"
1916
+ }), " if campaign launch prerequisites are satisfied."]
1917
+ }), "\\n", _jsx(_components.h2, {
1918
+ children: "Launch the Campaign"
1919
+ }), "\\n", _jsx(_components.p, {
1920
+ children: "Use the acquisition outreach workflow to move a ready batch into Instantly:"
1921
+ }), "\\n", _jsxs(_components.ol, {
1922
+ children: ["\\n", _jsxs(_components.li, {
1923
+ children: ["Check account inventory with ", _jsx(_components.code, {
1924
+ children: "ist-account-inventory-workflow"
1925
+ }), "."]
1926
+ }), "\\n", _jsxs(_components.li, {
1927
+ children: ["Personalize contacts with ", _jsx(_components.code, {
1928
+ children: "ist-personalization-workflow"
1929
+ }), "."]
1930
+ }), "\\n", _jsxs(_components.li, {
1931
+ children: ["Create a draft campaign with ", _jsx(_components.code, {
1932
+ children: "ist-campaign-create-workflow"
1933
+ }), " and ", _jsx(_components.code, {
1934
+ children: "activate: false"
1935
+ }), "."]
1936
+ }), "\\n", _jsxs(_components.li, {
1937
+ children: ["Create the tracking list with ", _jsx(_components.code, {
1938
+ children: "ist-campaign-list-workflow"
1939
+ }), "."]
1940
+ }), "\\n", _jsxs(_components.li, {
1941
+ children: ["Upload contacts with ", _jsx(_components.code, {
1942
+ children: "ist-upload-workflow"
1943
+ }), ", dry run first and then real."]
1944
+ }), "\\n", _jsxs(_components.li, {
1945
+ children: ["Activate with ", _jsx(_components.code, {
1946
+ children: "ist-campaign-activate-workflow"
1947
+ }), "."]
1948
+ }), "\\n", _jsxs(_components.li, {
1949
+ children: ["Update the tracker to ", _jsx(_components.code, {
1950
+ children: "status: active"
1951
+ }), " and fill in campaign metadata."]
1952
+ }), "\\n"]
1953
+ }), "\\n", _jsx(_components.p, {
1954
+ children: "Keep the first campaign small enough to evaluate copy and deliverability. Prefer 100-200 contacts per segment, 1-2 contacts per company, and conservative sending volume until benchmarks are visible."
1955
+ }), "\\n", _jsx(_components.h2, {
1956
+ children: "Monitor and Optimize"
1957
+ }), "\\n", _jsx(_components.p, {
1958
+ children: "After launch, monitor both campaign metrics and inbound replies:"
1959
+ }), "\\n", _jsxs(_components.ul, {
1960
+ children: ["\\n", _jsxs(_components.li, {
1961
+ children: ["Use ", _jsx(_components.code, {
1962
+ children: "/acquisition --outreach"
1963
+ }), " for campaign review and analytics."]
1964
+ }), "\\n", _jsxs(_components.li, {
1965
+ children: ["Use ", _jsx(_components.code, {
1966
+ children: "/acquisition --inbound status"
1967
+ }), " for reply handling and active deal state."]
1968
+ }), "\\n", _jsx(_components.li, {
1969
+ children: "Watch open rate, reply rate, positive reply rate, and bounce rate."
1970
+ }), "\\n", _jsx(_components.li, {
1971
+ children: "Pause or repair the campaign if bounce rate rises above the accepted threshold."
1972
+ }), "\\n", _jsx(_components.li, {
1973
+ children: "Rework subject lines, personalization, or offer framing when reply rate is below target."
1974
+ }), "\\n"]
1975
+ }), "\\n", _jsx(_components.p, {
1976
+ children: "Every optimization pass should write back to the tracker: what changed, why it changed, and what result would justify scaling the vertical."
1977
+ }), "\\n", _jsx(_components.h2, {
1978
+ children: "Launch Checklist"
1979
+ }), "\\n", _jsxs(_components.ul, {
1980
+ children: ["\\n", _jsxs(_components.li, {
1981
+ children: ["Batch ID selected with ", _jsx(_components.code, {
1982
+ children: "{vertical}-{number}"
1983
+ }), " naming."]
1984
+ }), "\\n", _jsx(_components.li, {
1985
+ children: "Batch tracker created from the template."
1986
+ }), "\\n", _jsx(_components.li, {
1987
+ children: "Target description, geography, search queries, thresholds, and custom rules recorded."
1988
+ }), "\\n", _jsx(_components.li, {
1989
+ children: "Stage 01 scrape execution complete."
1990
+ }), "\\n", _jsx(_components.li, {
1991
+ children: "Website crawl complete or crawl gaps documented."
1992
+ }), "\\n", _jsx(_components.li, {
1993
+ children: "Stage 02 extraction complete."
1994
+ }), "\\n", _jsx(_components.li, {
1995
+ children: "Stage 03 qualification complete with explicit criteria source."
1996
+ }), "\\n", _jsx(_components.li, {
1997
+ children: "Stage 04 email discovery complete."
1998
+ }), "\\n", _jsx(_components.li, {
1999
+ children: "Stage 05 email verification complete."
2000
+ }), "\\n", _jsxs(_components.li, {
2001
+ children: ["Tracker status set to ", _jsx(_components.code, {
2002
+ children: "ready"
2003
+ }), "."]
2004
+ }), "\\n", _jsx(_components.li, {
2005
+ children: "Draft Instantly campaign created."
2006
+ }), "\\n", _jsx(_components.li, {
2007
+ children: "Tracking list created and contacts uploaded."
2008
+ }), "\\n", _jsx(_components.li, {
2009
+ children: "Campaign activated."
2010
+ }), "\\n", _jsxs(_components.li, {
2011
+ children: ["Tracker status set to ", _jsx(_components.code, {
2012
+ children: "active"
2013
+ }), " with campaign metadata."]
2014
+ }), "\\n"]
2015
+ })]
2016
+ });
2017
+ }
2018
+ function MDXContent(props = {}) {
2019
+ const {wrapper: MDXLayout} = props.components || ({});
2020
+ return MDXLayout ? _jsx(MDXLayout, {
2021
+ ...props,
2022
+ children: _jsx(_createMdxContent, {
2023
+ ...props
2024
+ })
2025
+ }) : _createMdxContent(props);
2026
+ }
2027
+ return {
2028
+ default: MDXContent
2029
+ };
2030
+ `),
2031
+ "knowledge.upwork-calibration-strategy": makeKnowledgeComponent(`"use strict";
2032
+ const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
2033
+ function _createMdxContent(props) {
2034
+ const _components = {
2035
+ code: "code",
2036
+ h2: "h2",
2037
+ li: "li",
2038
+ ol: "ol",
2039
+ p: "p",
2040
+ pre: "pre",
2041
+ table: "table",
2042
+ tbody: "tbody",
2043
+ td: "td",
2044
+ th: "th",
2045
+ thead: "thead",
2046
+ tr: "tr",
2047
+ ul: "ul",
2048
+ ...props.components
2049
+ };
2050
+ return _jsxs(_Fragment, {
2051
+ children: [_jsx(_components.h2, {
2052
+ children: "Overview"
2053
+ }), "\\n", _jsx(_components.p, {
2054
+ children: "Use this playbook when running a deep calibration scan for one or more Upwork queries. Calibration is separate from daily scanning: it evaluates query quality, competition, uniqueness, and noise patterns so the active saved-query set stays healthy."
2055
+ }), "\\n", _jsx(_components.p, {
2056
+ children: "Use calibration when:"
2057
+ }), "\\n", _jsxs(_components.ul, {
2058
+ children: ["\\n", _jsx(_components.li, {
2059
+ children: "Testing a new query candidate before adding it to active scans."
2060
+ }), "\\n", _jsx(_components.li, {
2061
+ children: "Re-evaluating an active query whose health score has declined."
2062
+ }), "\\n", _jsx(_components.li, {
2063
+ children: "Running periodic re-calibration of the full active query set. Quarterly is the default cadence."
2064
+ }), "\\n"]
2065
+ }), "\\n", _jsxs(_components.p, {
2066
+ children: ["Use ", _jsx(_components.code, {
2067
+ children: "knowledge.upwork-query-strategy"
2068
+ }), " for the active query table and ", _jsx(_components.code, {
2069
+ children: "knowledge.upwork-scanning-playbook"
2070
+ }), " for the daily scan workflow."]
1793
2071
  }), "\\n", _jsx(_components.h2, {
1794
2072
  children: "Scan Parameters"
1795
2073
  }), "\\n", _jsxs(_components.table, {
@@ -2279,407 +2557,642 @@ return {
2279
2557
  `),
2280
2558
  "knowledge.upwork-query-strategy": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n li: "li",\n p: "p",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "Use this reference to choose which Upwork saved searches to scan, understand why each query is active, and avoid repeating failed discovery work. The active query set targets niche operations and business-process automation jobs rather than broad \\"AI automation\\" searches, which are usually saturated."\n }), "\\n", _jsxs(_components.p, {\n children: ["Use ", _jsx(_components.code, {\n children: "knowledge.upwork-scanning-playbook"\n }), " for the scan workflow and ", _jsx(_components.code, {\n children: "knowledge.upwork-calibration-strategy"\n }), " for deep query calibration."]\n }), "\\n", _jsx(_components.h2, {\n children: "Active Saved Queries"\n }), "\\n", _jsx(_components.p, {\n children: "The active saved-query set has 14 queries as of 2026-03-31. Q1-Q7 were kept after the full calibration scan of the original 16 queries. Q8 Pipedrive was added after SaaS platform calibration. Q9-Q14 are formerly monitor-tier queries moved into active scanning with stricter freshness and competition discipline."\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Tier"\n }), _jsx(_components.th, {\n children: "#"\n }), _jsx(_components.th, {\n children: "Query"\n }), _jsx(_components.th, {\n children: "Relevance"\n }), _jsx(_components.th, {\n children: "Unique Rel"\n }), _jsx(_components.th, {\n children: "Rationale"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "T1"\n }), _jsx(_components.td, {\n children: "1"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "(\\"booking system\\" OR \\"intake form\\" OR \\"scheduling system\\" OR \\"ticketing system\\" OR \\"tracking system\\" OR \\"reservation system\\" OR \\"billing system\\" OR \\"payment system\\") AND (build OR automate OR custom)"\n })\n }), _jsx(_components.td, {\n children: "60%"\n }), _jsx(_components.td, {\n children: "30%"\n }), _jsx(_components.td, {\n children: "Best query. SMB owners describe systems they need built. Lowest competition and highest ROI per connect."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "T1"\n }), _jsx(_components.td, {\n children: "2"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "(\\"GoHighLevel\\" OR \\"GHL\\") AND (build OR setup OR integration OR workflow OR automate)"\n })\n }), _jsx(_components.td, {\n children: "50%"\n }), _jsx(_components.td, {\n children: "45%"\n }), _jsx(_components.td, {\n children: "GHL niche with high unique relevance. \\"Funnel\\" was removed because it pulled marketing noise; \\"automate\\" replaced it."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "T2"\n }), _jsx(_components.td, {\n children: "3"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "(\\"accounts receivable\\" OR \\"accounts payable\\" OR \\"collections\\") AND automate"\n })\n }), _jsx(_components.td, {\n children: "40%"\n }), _jsx(_components.td, {\n children: "30%"\n }), _jsx(_components.td, {\n children: "\\"Automate\\" catches real builds and maps to the Xero testimonial. Some overlap with Q1 and Q7."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "T2"\n }), _jsx(_components.td, {\n children: "4"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "\\"inventory\\" AND (\\"automation\\" OR \\"integration\\" OR \\"sync\\")"\n })\n }), _jsx(_components.td, {\n children: "40%"\n }), _jsx(_components.td, {\n children: "35%"\n }), _jsx(_components.td, {\n children: "Inventory system builds are unique to this query. Low cross-query overlap."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "T3"\n }), _jsx(_components.td, {\n children: "5"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "(\\"invoice\\" OR \\"billing\\") AND (\\"automate\\" OR \\"integration\\")"\n })\n }), _jsx(_components.td, {\n children: "55%"\n }), _jsx(_components.td, {\n children: "30%"\n }), _jsx(_components.td, {\n children: "Finds healthcare EDI, Stripe Connect, and Power Automate AP work. Heavy Q3 overlap."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "T3"\n }), _jsx(_components.td, {\n children: "6"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "\\"CRM\\" AND (\\"integration\\" OR \\"automate\\" OR \\"migrate\\")"\n })\n }), _jsx(_components.td, {\n children: "40%"\n }), _jsx(_components.td, {\n children: "20%"\n }), _jsx(_components.td, {\n children: "Finds Twenty CRM, HubSpot Service Hub, and Zoho automation. Noisy and high-volume."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "T3"\n }), _jsx(_components.td, {\n children: "7"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "\\"integrate\\" AND \\"API\\" AND (build OR develop OR custom)"\n })\n }), _jsx(_components.td, {\n children: "40%"\n }), _jsx(_components.td, {\n children: "15%"\n }), _jsx(_components.td, {\n children: "Finds strong integration work such as Authorize.Net webhooks and Email-to-ERP pipelines. Competition is often high."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "T3"\n }), _jsx(_components.td, {\n children: "8"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "\\"Pipedrive\\" AND (build OR setup OR integration OR workflow OR automate)"\n })\n }), _jsx(_components.td, {\n children: "40%"\n }), _jsx(_components.td, {\n children: "~30%"\n }), _jsx(_components.td, {\n children: "CRM setup and automation builds. Only platform query besides GHL to pass calibration. Trial query; evaluate after 3 scans."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "T4"\n }), _jsx(_components.td, {\n children: "9"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "(\\"Zapier\\" OR \\"Make.com\\" OR \\"n8n\\") AND (automate OR build OR workflow)"\n })\n }), _jsx(_components.td, {\n children: "Very high"\n }), _jsx(_components.td, {\n children: "--"\n }), _jsx(_components.td, {\n children: "High relevance but competition risk. Apply only to posts with fewer than 10 proposals."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "T4"\n }), _jsx(_components.td, {\n children: "10"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "\\"SaaS\\" AND (\\"MVP\\" OR \\"prototype\\") AND (build OR develop)"\n })\n }), _jsx(_components.td, {\n children: "High"\n }), _jsx(_components.td, {\n children: "--"\n }), _jsx(_components.td, {\n children: "Bimodal competition: some low-proposal gems, some flooded posts. Skip flooded posts."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "T4"\n }), _jsx(_components.td, {\n children: "11"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "\\"Google Sheets\\" AND (automate OR app OR dashboard OR replace)"\n })\n }), _jsx(_components.td, {\n children: "~40%"\n }), _jsx(_components.td, {\n children: "--"\n }), _jsx(_components.td, {\n children: "Fresh and even competition spread. Good posts get flooded quickly, so prioritize speed."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "T4"\n }), _jsx(_components.td, {\n children: "12"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "\\"chatbot\\" AND (build OR custom OR develop)"\n })\n }), _jsx(_components.td, {\n children: "~25%"\n }), _jsx(_components.td, {\n children: "--"\n }), _jsx(_components.td, {\n children: "Low relevance baseline. Pulls AI engineering hiring and chat UI work, but occasional SMB gems exist."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "T4"\n }), _jsx(_components.td, {\n children: "13"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "(\\"voice agent\\" OR \\"AI receptionist\\") AND (build OR develop OR custom)"\n })\n }), _jsx(_components.td, {\n children: "High"\n }), _jsx(_components.td, {\n children: "--"\n }), _jsx(_components.td, {\n children: "Very low volume, often 1-2 results. High quality when fresh posts appear."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "T4"\n }), _jsx(_components.td, {\n children: "14"\n }), _jsx(_components.td, {\n children: _jsx(_components.code, {\n children: "\\"sales funnel\\" AND (automate OR build OR system OR custom)"\n })\n }), _jsx(_components.td, {\n children: "~40%"\n }), _jsx(_components.td, {\n children: "--"\n }), _jsx(_components.td, {\n children: "Fresh GHL integrations and CRM builds mixed with affiliate-funnel noise. Filter hard."\n })]\n })]\n })]\n }), "\\n", _jsx(_components.p, {\n children: "All active queries use the Upwork proposal-count filters \\"Less than 5\\" and \\"5 to 10\\". Tier 1 queries are the primary scan focus. Tier 2 queries are solid contributors. Tier 3 queries are borderline and should be dropped if health scores decline across 3 or more scans. Tier 4 queries have higher competition risk and should only be applied to fresh, low-proposal posts."\n }), "\\n", _jsx(_components.h2, {\n children: "Query Design Principles"\n }), "\\n", _jsx(_components.p, {\n children: "Strong Upwork queries describe the system the buyer needs, not the freelancer category they think they are hiring."\n }), "\\n", _jsx(_components.p, {\n children: "Use:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Specific operational system nouns such as booking system, intake form, scheduling system, ticketing system, tracking system, reservation system, billing system, and payment system."\n }), "\\n", _jsx(_components.li, {\n children: "Action verbs such as build, automate, custom, develop, setup, integration, and workflow."\n }), "\\n", _jsx(_components.li, {\n children: "Platform-specific searches when system-build intent overlaps with implementation work, such as GoHighLevel, Pipedrive, CRM, API integration, and inventory sync."\n }), "\\n", _jsx(_components.li, {\n children: "The Q1 pattern: specific system noun plus action verb. This catches clients describing the thing they need built."\n }), "\\n", _jsx(_components.li, {\n children: "The proposal-count filter from 0-10 proposals. Competition control is non-negotiable."\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Avoid:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Vertical keywords such as clinic, contractor, salon, or real estate. On Upwork these usually pull marketing or hiring posts for that industry, not system buyers from that industry."\n }), "\\n", _jsx(_components.li, {\n children: "Pain-signal phrases such as \\"hours per week\\", \\"manual\\", \\"repetitive\\", or \\"bottleneck\\". On Upwork these usually mean the client is hiring humans to perform the work."\n }), "\\n", _jsx(_components.li, {\n children: "Migration terms such as migrate, replace, or switch unless tied to a concrete platform or system. Generic migration queries pull website and email platform changes."\n }), "\\n", _jsx(_components.li, {\n children: "Broad tool or category nouns such as portal, dashboard, tool, or custom without a specific system type."\n }), "\\n", _jsx(_components.li, {\n children: "Solution-first keywords such as AI automation, AI agent, and workflow automation. They attract the saturated AI freelancer crowd."\n }), "\\n", _jsx(_components.li, {\n children: "Revenue-proximity service terms such as cold email, outbound, nurture, appointment setting, and qualify leads. These are proposal-positioning angles, not good Upwork query filters."\n }), "\\n", _jsx(_components.li, {\n children: "Professional-service terms such as contract review, due diligence, or reputation management. They pull human professionals rather than system builds."\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Query Evolution"\n }), "\\n", _jsx(_components.p, {\n children: "Discovery is complete for the current strategy: 127 queries were tested across 18 rounds and calibrated to 14 active queries. The current ROI lever is execution quality: faster scans, stronger proposal targeting, and query-health monitoring."\n }), "\\n", _jsx(_components.p, {\n children: "Q1 has 8 proven system nouns:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Booking system."\n }), "\\n", _jsx(_components.li, {\n children: "Intake form."\n }), "\\n", _jsx(_components.li, {\n children: "Scheduling system."\n }), "\\n", _jsx(_components.li, {\n children: "Ticketing system."\n }), "\\n", _jsx(_components.li, {\n children: "Tracking system."\n }), "\\n", _jsx(_components.li, {\n children: "Reservation system."\n }), "\\n", _jsx(_components.li, {\n children: "Billing system."\n }), "\\n", _jsx(_components.li, {\n children: "Payment system."\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Twenty-three other system nouns were tested and failed. Before testing any new query, check the Upwork query registry in the operations docs for prior verdicts and failure modes."\n }), "\\n", _jsx(_components.h2, {\n children: "Known Limitations"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "The \\"U.S. only\\" checkbox does not persist with saved searches. It is a session-only filter and must be manually checked each time a saved search loads."\n }), "\\n", _jsxs(_components.li, {\n children: ["Upwork search is not strict phrase matching. A quoted phrase such as ", _jsx(_components.code, {\n children: "\\"client portal\\""\n }), " can still match posts containing the words separately."]\n }), "\\n", _jsx(_components.li, {\n children: "Relevance percentages are from the expanded 2026-03-29 evaluation: 147 jobs across 15 queries plus 32-query discovery analysis. Re-evaluate monthly as job mix shifts."\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Live Reference Docs"\n }), "\\n", _jsx(_components.p, {\n children: "Preserve these operations docs because they remain live working references rather than migrated Knowledge Map content:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "apps/docs/content/docs/operations/client-acquisition/upwork/query-registry.mdx"\n }), " tracks all 127 tested queries, verdicts, and failure modes."]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: "apps/docs/content/docs/operations/client-acquisition/upwork/scripts.mdx"\n }), " stores runnable browser extraction scripts and current Upwork DOM notes."]\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
2281
2559
  "knowledge.upwork-scanning-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n h3: "h3",\n li: "li",\n ol: "ol",\n p: "p",\n pre: "pre",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "Use this playbook to run the Upwork acquisition scanning loop. The goal is to find fresh, low-competition jobs where Elevasis can deliver a real business system, score them consistently, and turn the best opportunities into proposals through the Upwork proposal playbook."\n }), "\\n", _jsx(_components.p, {\n children: "The scanning loop has six phases:"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsx(_components.li, {\n children: "Confirm browser and login readiness."\n }), "\\n", _jsx(_components.li, {\n children: "Run saved search queries with the right filters."\n }), "\\n", _jsx(_components.li, {\n children: "Extract fresh job cards."\n }), "\\n", _jsx(_components.li, {\n children: "Deduplicate, score, and enrich strong candidates."\n }), "\\n", _jsx(_components.li, {\n children: "Write the scan output."\n }), "\\n", _jsx(_components.li, {\n children: "Review query health before the next scan."\n }), "\\n"]\n }), "\\n", _jsxs(_components.p, {\n children: ["Proposal copy and response handling are intentionally separate. Use ", _jsx(_components.code, {\n children: "knowledge.upwork-proposal-playbook"\n }), " for proposal strategy and ", _jsx(_components.code, {\n children: "knowledge.upwork-response-templates"\n }), " for client replies."]\n }), "\\n", _jsx(_components.h2, {\n children: "Preconditions"\n }), "\\n", _jsx(_components.p, {\n children: "Before scanning, verify the browser automation surface is available and Upwork is logged in."\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Chrome tooling must be available through the active browser automation tools."\n }), "\\n", _jsxs(_components.li, {\n children: ["The Upwork search page must load at ", _jsx(_components.code, {\n children: "https://www.upwork.com/nx/search/jobs/"\n }), "."]\n }), "\\n", _jsx(_components.li, {\n children: "The page must show the job search interface, not a login prompt."\n }), "\\n", _jsx(_components.li, {\n children: "If login is required, stop and log in manually before scanning again."\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Do not try to work around a missing browser session by inventing scan results. The scan depends on live Upwork search pages, current saved-search filters, and the visible result cards."\n }), "\\n", _jsx(_components.h2, {\n children: "Scan Surface"\n }), "\\n", _jsx(_components.p, {\n children: "Run scans from the Upwork search page:"\n }), "\\n", _jsx(_components.pre, {\n children: _jsx(_components.code, {\n className: "language-text",\n children: "https://www.upwork.com/nx/search/jobs/\\n"\n })\n }), "\\n", _jsx(_components.p, {\n children: "Each saved query is run individually. Apply the filters every time, because Upwork search state is session-dependent and not always persisted across queries."\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Filter"\n }), _jsx(_components.th, {\n children: "Value"\n }), _jsx(_components.th, {\n children: "Reason"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "U.S. only"\n }), _jsx(_components.td, {\n children: "Checked"\n }), _jsx(_components.td, {\n children: "Higher-quality clients, stronger timezone fit, more verified payments."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Sort by"\n }), _jsx(_components.td, {\n children: "Most Recent"\n }), _jsx(_components.td, {\n children: "Freshness is the strongest conversion lever."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Proposals"\n }), _jsxs(_components.td, {\n children: [_jsx(_components.code, {\n children: "\\\\<5"\n }), ", 5-10"]\n }), _jsx(_components.td, {\n children: "Low competition is required before spending connects."\n })]\n })]\n })]\n }), "\\n", _jsx(_components.p, {\n children: "Use saved queries as the primary scan source. The strategy targets operational system-build terms, not generic \\"AI automation\\" searches that attract high competition."\n }), "\\n", _jsx(_components.h2, {\n children: "Freshness Rule"\n }), "\\n", _jsx(_components.p, {\n children: "Only collect posts from the last 12 hours. Results should be sorted by Most Recent, so stop extracting for a query once the visible posts are older than 12 hours. Do not do catch-up windows."\n }), "\\n", _jsx(_components.p, {\n children: "Freshness priority:"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Post age"\n }), _jsx(_components.th, {\n children: "Action"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "0-1 hour"\n }), _jsx(_components.td, {\n children: "Highest priority. Client is most likely active and shortlisting."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "1-12 hours"\n }), _jsx(_components.td, {\n children: "Valid scan window. Still worth scoring if competition is low."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "12+ hours"\n }), _jsx(_components.td, {\n children: "Skip. The client has usually already formed the shortlist."\n })]\n })]\n })]\n }), "\\n", _jsxs(_components.p, {\n children: ["Record the scan timestamp as ", _jsx(_components.code, {\n children: "last_scanned"\n }), " in the daily scan doc frontmatter. This timestamp helps avoid reprocessing posts from prior scans, but the hard 12-hour cap still applies."]\n }), "\\n", _jsx(_components.h2, {\n children: "Run Each Query"\n }), "\\n", _jsx(_components.p, {\n children: "For each active saved query:"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsx(_components.li, {\n children: "Clear the search box."\n }), "\\n", _jsx(_components.li, {\n children: "Enter the query string and submit."\n }), "\\n", _jsx(_components.li, {\n children: "Apply U.S. only, Most Recent, and proposal-count filters."\n }), "\\n", _jsx(_components.li, {\n children: "Wait for results to render."\n }), "\\n", _jsx(_components.li, {\n children: "Extract visible job cards from the search page."\n }), "\\n", _jsx(_components.li, {\n children: "Stop once a post exceeds the freshness cutoff."\n }), "\\n", _jsx(_components.li, {\n children: "Tag each job with the source query."\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "The first page of most-recent, low-proposal results is the high-value slice. Do not paginate unless a specific investigation requires it."\n }), "\\n", _jsx(_components.p, {\n children: "While scanning the API integration query, flag custom dashboard opportunities where a custom build is likely better than Power BI, Looker, Tableau, or a spreadsheet. Strong signs include 3+ data sources, live dashboard requirements, AI-generated summaries, anomaly detection, or workflow triggers."\n }), "\\n", _jsx(_components.h2, {\n children: "Extract Job Card Data"\n }), "\\n", _jsx(_components.p, {\n children: "The search-card extraction should capture the fields needed for initial triage:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Title."\n }), "\\n", _jsx(_components.li, {\n children: "Upwork job URL path."\n }), "\\n", _jsx(_components.li, {\n children: "Posted age."\n }), "\\n", _jsx(_components.li, {\n children: "Proposal count."\n }), "\\n", _jsx(_components.li, {\n children: "Budget or hourly range."\n }), "\\n", _jsx(_components.li, {\n children: "Payment verification."\n }), "\\n", _jsx(_components.li, {\n children: "Client rating."\n }), "\\n", _jsx(_components.li, {\n children: "Total client spend."\n }), "\\n", _jsx(_components.li, {\n children: "Description snippet."\n }), "\\n", _jsx(_components.li, {\n children: "Source query."\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Deduplicate by Upwork job URL path after all queries finish. If a job appears under multiple queries, keep one row and note the overlap."\n }), "\\n", _jsx(_components.h2, {\n children: "Score and Enrich"\n }), "\\n", _jsx(_components.p, {\n children: "Scoring has two stages."\n }), "\\n", _jsx(_components.h3, {\n children: "Stage 1: Relevance"\n }), "\\n", _jsx(_components.p, {\n children: "Score relevance from 0 to 100 by asking whether the client needs a system, workflow, integration, automation, or operational build that Elevasis can deliver."\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Range"\n }), _jsx(_components.th, {\n children: "Label"\n }), _jsx(_components.th, {\n children: "Criteria"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "75-100"\n }), _jsx(_components.td, {\n children: "Strong fit"\n }), _jsx(_components.td, {\n children: "Clear build intent, specific business workflow, named tools or outputs."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "50-74"\n }), _jsx(_components.td, {\n children: "Possible fit"\n }), _jsx(_components.td, {\n children: "Some build signals, but scope or buyer intent is ambiguous."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "25-49"\n }), _jsx(_components.td, {\n children: "Weak fit"\n }), _jsx(_components.td, {\n children: "Marginally related, mostly noise, low business-system signal."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "0-24"\n }), _jsx(_components.td, {\n children: "Irrelevant"\n }), _jsx(_components.td, {\n children: "Hiring, marketing, design, manual VA work, personal projects, or errands."\n })]\n })]\n })]\n }), "\\n", _jsx(_components.p, {\n children: "Disqualify posts that are clearly hiring a role, outsourcing manual work, asking for generic marketing/design help, or describing a personal/non-business project."\n }), "\\n", _jsx(_components.h3, {\n children: "Stage 2: Application Priority"\n }), "\\n", _jsx(_components.p, {\n children: "Apply tactical modifiers after relevance scoring. The final score determines whether to draft a proposal."\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Signal"\n }), _jsx(_components.th, {\n children: "Positive indicators"\n }), _jsx(_components.th, {\n children: "Negative indicators"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Freshness"\n }), _jsxs(_components.td, {\n children: [_jsx(_components.code, {\n children: "\\\\<1h"\n }), " or same-session post."]\n }), _jsx(_components.td, {\n children: "8-12h old, or outside the scan window."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Competition"\n }), _jsxs(_components.td, {\n children: [_jsx(_components.code, {\n children: "\\\\<5"\n }), " proposals, or 5-10 with strong fit."]\n }), _jsx(_components.td, {\n children: "10+ proposals, especially 20+."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Client quality"\n }), _jsx(_components.td, {\n children: "Payment verified, spend history, good rating, hires."\n }), _jsx(_components.td, {\n children: "Unverified, no history, 0% hire rate."\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Budget"\n }), _jsxs(_components.td, {\n children: ["Fixed ", _jsx(_components.code, {\n children: "\\\\>$5K"\n }), " or hourly ", _jsx(_components.code, {\n children: "\\\\>$75/hr"\n }), "."]\n }), _jsxs(_components.td, {\n children: ["Fixed ", _jsx(_components.code, {\n children: "\\\\<$1K"\n }), " or hourly ", _jsx(_components.code, {\n children: "\\\\<$40/hr"\n }), "."]\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Fit"\n }), _jsx(_components.td, {\n children: "Workflow, integration, dashboard, CRM, operations."\n }), _jsx(_components.td, {\n children: "Copywriting, funnels, ads, hiring, support."\n })]\n })]\n })]\n }), "\\n", _jsx(_components.p, {\n children: "Only enrich posts with a strong enough relevance score to matter, usually 65+. For those posts, open the job detail view and capture:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Hire rate."\n }), "\\n", _jsx(_components.li, {\n children: "Jobs posted."\n }), "\\n", _jsx(_components.li, {\n children: "Member since."\n }), "\\n", _jsx(_components.li, {\n children: "Company size."\n }), "\\n", _jsx(_components.li, {\n children: "Last viewed by client."\n }), "\\n", _jsx(_components.li, {\n children: "Interviewing count."\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Use this data to avoid over-ranking stale or low-quality clients that have a good-sounding job description but weak application ROI."\n }), "\\n", _jsx(_components.h2, {\n children: "Write the Scan Output"\n }), "\\n", _jsx(_components.p, {\n children: "Write scan docs under:"\n }), "\\n", _jsx(_components.pre, {\n children: _jsx(_components.code, {\n className: "language-text",\n children: "apps/docs/content/docs/operations/client-acquisition/upwork/scans/{YYYY-MM-DD}.mdx\\n"\n })\n }), "\\n", _jsx(_components.p, {\n children: "If a scan doc already exists for the day, append the new scan as a later section instead of creating a second daily file."\n }), "\\n", _jsx(_components.p, {\n children: "Each scan output should include:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Date and timestamp."\n }), "\\n", _jsx(_components.li, {\n children: "Freshness cutoff."\n }), "\\n", _jsx(_components.li, {\n children: "Queries scanned."\n }), "\\n", _jsx(_components.li, {\n children: "Total posts collected."\n }), "\\n", _jsx(_components.li, {\n children: "Deduplicated count."\n }), "\\n", _jsx(_components.li, {\n children: "Top opportunities only."\n }), "\\n", _jsx(_components.li, {\n children: "Comparison table."\n }), "\\n", _jsx(_components.li, {\n children: "Query health table."\n }), "\\n", _jsx(_components.li, {\n children: "Draft proposals section, when proposals are generated."\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Keep scan docs as decision tools, not archives. Include the top 10 ranked opportunities rather than every collected post."\n }), "\\n", _jsx(_components.h2, {\n children: "Query Health"\n }), "\\n", _jsx(_components.p, {\n children: "After scoring, compute a query-health score so weak searches can be removed over time."\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Metric"\n }), _jsx(_components.th, {\n children: "Measurement"\n }), _jsx(_components.th, {\n children: "Weight"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Fresh posts"\n }), _jsx(_components.td, {\n children: "Count within cutoff, normalized against 5 posts."\n }), _jsx(_components.td, {\n children: "25%"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Low competition"\n }), _jsx(_components.td, {\n children: "Percent with fewer than 10 proposals."\n }), _jsx(_components.td, {\n children: "25%"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Relevance"\n }), _jsx(_components.td, {\n children: "Percent actionable after deduplication and disqualification."\n }), _jsx(_components.td, {\n children: "30%"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Client quality"\n }), _jsx(_components.td, {\n children: "Percent with verified payment and useful spend or rating signals."\n }), _jsx(_components.td, {\n children: "20%"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.p, {\n children: "Queries that score 0 across 3+ consecutive scans are drop candidates. Compare the latest query-health table with the previous scan before changing the active query set."\n }), "\\n", _jsx(_components.h2, {\n children: "Active Query Principles"\n }), "\\n", _jsx(_components.p, {\n children: "Strong Upwork queries describe the system the buyer needs, not the freelancer category they think they are hiring."\n }), "\\n", _jsx(_components.p, {\n children: "Use:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Specific operational system nouns such as booking system, intake form, scheduling system, ticketing system, tracking system, reservation system, billing system, and payment system."\n }), "\\n", _jsx(_components.li, {\n children: "Action verbs such as build, automate, custom, develop, setup, integration, and workflow."\n }), "\\n", _jsx(_components.li, {\n children: "Platform-specific searches where system-build intent overlaps with implementation work, such as GoHighLevel, Pipedrive, CRM, API integration, or inventory sync."\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Avoid:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Broad solution-first terms such as AI automation, AI agent, workflow automation, portal, dashboard, tool, or custom without a specific system noun."\n }), "\\n", _jsx(_components.li, {\n children: "Vertical keywords such as clinic, contractor, salon, or real estate unless paired with concrete system intent."\n }), "\\n", _jsx(_components.li, {\n children: "Pain-signal phrases that usually mean the client is hiring a human to perform manual work."\n }), "\\n", _jsx(_components.li, {\n children: "Revenue-proximity service terms such as cold email, appointment setting, outbound specialist, or funnel work."\n }), "\\n"]\n }), "\\n", _jsxs(_components.p, {\n children: ["Before testing a new query, read ", _jsx(_components.code, {\n children: "knowledge.upwork-query-strategy"\n }), " and check the Upwork query registry in the operations docs so old failure modes are not repeated. Use ", _jsx(_components.code, {\n children: "knowledge.upwork-calibration-strategy"\n }), " when promoting, dropping, or re-evaluating saved searches."]\n }), "\\n", _jsx(_components.h2, {\n children: "Proposal Handoff"\n }), "\\n", _jsx(_components.p, {\n children: "After the scan, draft proposals only for opportunities that remain strong after relevance, tactical modifiers, and client-quality checks."\n }), "\\n", _jsx(_components.p, {\n children: "For proposal drafting:"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsxs(_components.li, {\n children: ["Load ", _jsx(_components.code, {\n children: "knowledge.upwork-proposal-playbook"\n }), "."]\n }), "\\n", _jsx(_components.li, {\n children: "Read the top opportunities from the latest scan doc."\n }), "\\n", _jsx(_components.li, {\n children: "Select the right proposal template by scope, budget, and relevance."\n }), "\\n", _jsx(_components.li, {\n children: "Tailor the opening, proof point, plan, and two discovery questions."\n }), "\\n", _jsxs(_components.li, {\n children: ["Append draft proposals to the scan doc under ", _jsx(_components.code, {\n children: "## Draft Proposals"\n }), "."]\n }), "\\n"]\n }), "\\n", _jsxs(_components.p, {\n children: ["Use ", _jsx(_components.code, {\n children: "knowledge.upwork-response-templates"\n }), " after a client replies or sends an offer."]\n }), "\\n", _jsx(_components.h2, {\n children: "Scan Checklist"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Browser tooling available."\n }), "\\n", _jsx(_components.li, {\n children: "Upwork logged in."\n }), "\\n", _jsx(_components.li, {\n children: "Search page loaded."\n }), "\\n", _jsx(_components.li, {\n children: "U.S. only filter applied."\n }), "\\n", _jsx(_components.li, {\n children: "Sort set to Most Recent."\n }), "\\n", _jsx(_components.li, {\n children: "Proposal-count filters applied."\n }), "\\n", _jsx(_components.li, {\n children: "All active saved queries scanned."\n }), "\\n", _jsx(_components.li, {\n children: "Posts older than 12 hours skipped."\n }), "\\n", _jsx(_components.li, {\n children: "Jobs deduplicated by URL path."\n }), "\\n", _jsx(_components.li, {\n children: "Relevance scores assigned."\n }), "\\n", _jsx(_components.li, {\n children: "Strong candidates enriched from detail view."\n }), "\\n", _jsx(_components.li, {\n children: "Final scores sorted descending."\n }), "\\n", _jsx(_components.li, {\n children: "Daily scan doc created or appended."\n }), "\\n", _jsx(_components.li, {\n children: "Query health table written."\n }), "\\n", _jsxs(_components.li, {\n children: ["Top proposal candidates handed to ", _jsx(_components.code, {\n children: "knowledge.upwork-proposal-playbook"\n }), "."]\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
2282
- "knowledge.youtube-obs-recording-setup": makeKnowledgeComponent(`"use strict";
2560
+ "knowledge.client-cli-overview": makeKnowledgeComponent(`"use strict";
2283
2561
  const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
2284
2562
  function _createMdxContent(props) {
2285
2563
  const _components = {
2286
2564
  code: "code",
2287
2565
  h2: "h2",
2288
- h3: "h3",
2289
2566
  li: "li",
2290
2567
  ol: "ol",
2291
2568
  p: "p",
2292
2569
  pre: "pre",
2293
- table: "table",
2294
- tbody: "tbody",
2295
- td: "td",
2296
- th: "th",
2297
- thead: "thead",
2298
- tr: "tr",
2570
+ strong: "strong",
2299
2571
  ul: "ul",
2300
2572
  ...props.components
2301
2573
  };
2302
2574
  return _jsxs(_Fragment, {
2303
2575
  children: [_jsx(_components.h2, {
2304
2576
  children: "Overview"
2577
+ }), "\\n", _jsxs(_components.p, {
2578
+ children: ["The ", _jsx(_components.code, {
2579
+ children: "client:*"
2580
+ }), " commands expose the clients hub through the SDK CLI. Use them to paginate clients, inspect individual client lineage, check org-wide status rollups, resolve a fuzzy name to a client ID, and mutate clients with create, update, and delete operations."]
2581
+ }), "\\n", _jsxs(_components.p, {
2582
+ children: ["All examples below use the canonical monorepo invocation pattern. Tenant projects inside their own ", _jsx(_components.code, {
2583
+ children: "operations/"
2584
+ }), " directory drop the ", _jsx(_components.code, {
2585
+ children: "-C packages/elevasis-operations"
2586
+ }), " prefix and run ", _jsx(_components.code, {
2587
+ children: "pnpm exec elevasis-sdk <cmd>"
2588
+ }), " directly."]
2589
+ }), "\\n", _jsx(_components.h2, {
2590
+ children: "client:list"
2305
2591
  }), "\\n", _jsx(_components.p, {
2306
- children: "Use this setup for Elevasis YouTube recordings that combine a short face-camera intro with Command Center or workflow screen capture. The target output is a clean 1080p60 source file that YouTube can re-encode without avoidable motion, audio, or color artifacts."
2592
+ children: "Lists clients for the authenticated organization with optional filtering and pagination."
2593
+ }), "\\n", _jsxs(_components.p, {
2594
+ children: [_jsx(_components.strong, {
2595
+ children: "Purpose:"
2596
+ }), " Paginate all clients or narrow by status or search term to find the right client ID before drilling in with ", _jsx(_components.code, {
2597
+ children: "client:get"
2598
+ }), "."]
2307
2599
  }), "\\n", _jsx(_components.p, {
2308
- children: "Baseline configuration:"
2600
+ children: _jsx(_components.strong, {
2601
+ children: "Monorepo invocation:"
2602
+ })
2309
2603
  }), "\\n", _jsx(_components.pre, {
2310
2604
  children: _jsx(_components.code, {
2311
- className: "language-text",
2312
- children: "Video: 1920x1080, 60fps, NV12, Rec. 709 Partial\\nEncode: NVENC H.264, CQP 18, P5 preset, High profile\\nFormat: MKV with automatic remux to MP4\\nAudio: 48 kHz stereo, 320 kbps AAC, mixed plus mic-only tracks\\nCamera: Insta360 Link 2C at 1080p60 with circle mask\\nScenes: Face + Screen on F5, Screen Only on F6\\n"
2605
+ className: "language-bash",
2606
+ children: "pnpm -C packages/elevasis-operations exec elevasis-sdk client:list\\n"
2313
2607
  })
2314
2608
  }), "\\n", _jsx(_components.p, {
2315
- children: "Prefer 1080p60 over 4K30 for screen recordings. Smooth cursor motion, scrolling, typing, and app transitions matter more than pixel density, and most viewers watch at 1080p or below. 4K30 produces larger files, slower editing, and visibly choppier screen motion."
2609
+ children: _jsxs(_components.strong, {
2610
+ children: ["Tenant invocation (from inside ", _jsx(_components.code, {
2611
+ children: "operations/"
2612
+ }), "):"]
2613
+ })
2614
+ }), "\\n", _jsx(_components.pre, {
2615
+ children: _jsx(_components.code, {
2616
+ className: "language-bash",
2617
+ children: "pnpm exec elevasis-sdk client:list\\n"
2618
+ })
2619
+ }), "\\n", _jsx(_components.p, {
2620
+ children: _jsx(_components.strong, {
2621
+ children: "Key flags:"
2622
+ })
2623
+ }), "\\n", _jsxs(_components.ul, {
2624
+ children: ["\\n", _jsxs(_components.li, {
2625
+ children: [_jsx(_components.code, {
2626
+ children: "--status <value>"
2627
+ }), " -- filter by client status (e.g. ", _jsx(_components.code, {
2628
+ children: "active"
2629
+ }), ", ", _jsx(_components.code, {
2630
+ children: "inactive"
2631
+ }), ", ", _jsx(_components.code, {
2632
+ children: "prospect"
2633
+ }), ")"]
2634
+ }), "\\n", _jsxs(_components.li, {
2635
+ children: [_jsx(_components.code, {
2636
+ children: "--search <term>"
2637
+ }), " -- full-text search against client name"]
2638
+ }), "\\n", _jsxs(_components.li, {
2639
+ children: [_jsx(_components.code, {
2640
+ children: "--limit <n>"
2641
+ }), " -- maximum rows to return (default varies by server)"]
2642
+ }), "\\n", _jsxs(_components.li, {
2643
+ children: [_jsx(_components.code, {
2644
+ children: "--offset <n>"
2645
+ }), " -- pagination offset"]
2646
+ }), "\\n", _jsxs(_components.li, {
2647
+ children: [_jsx(_components.code, {
2648
+ children: "--pretty"
2649
+ }), " -- pretty-print JSON output"]
2650
+ }), "\\n"]
2651
+ }), "\\n", _jsx(_components.p, {
2652
+ children: _jsx(_components.strong, {
2653
+ children: "Drill-down recipe:"
2654
+ })
2655
+ }), "\\n", _jsxs(_components.ol, {
2656
+ children: ["\\n", _jsxs(_components.li, {
2657
+ children: ["Run ", _jsx(_components.code, {
2658
+ children: "client:list --pretty"
2659
+ }), " to scan names and IDs."]
2660
+ }), "\\n", _jsxs(_components.li, {
2661
+ children: ["Use ", _jsx(_components.code, {
2662
+ children: "--search"
2663
+ }), " to narrow when the list is long."]
2664
+ }), "\\n", _jsxs(_components.li, {
2665
+ children: ["Copy the ", _jsx(_components.code, {
2666
+ children: "id"
2667
+ }), " from a row and pass it to ", _jsx(_components.code, {
2668
+ children: "client:get <id>"
2669
+ }), " for the full lineage payload (linked deal, primary company, primary contact, projects)."]
2670
+ }), "\\n"]
2316
2671
  }), "\\n", _jsx(_components.h2, {
2317
- children: "Recording Output"
2672
+ children: "client:get"
2318
2673
  }), "\\n", _jsx(_components.p, {
2319
- children: "Record to MKV, not MP4. MKV writes continuously, so a crash usually leaves the file usable. MP4 writes its index at the end, so a crash can corrupt the recording."
2674
+ children: "Fetches a single client record with its full lineage payload."
2675
+ }), "\\n", _jsxs(_components.p, {
2676
+ children: [_jsx(_components.strong, {
2677
+ children: "Purpose:"
2678
+ }), " Inspect one client in detail -- its associated deal, primary company, primary contact, and linked projects. Use this to confirm linkage after wiring a project to a client via ", _jsx(_components.code, {
2679
+ children: "project:update --client"
2680
+ }), "."]
2320
2681
  }), "\\n", _jsx(_components.p, {
2321
- children: "Enable automatic remux:"
2682
+ children: _jsx(_components.strong, {
2683
+ children: "Monorepo invocation:"
2684
+ })
2322
2685
  }), "\\n", _jsx(_components.pre, {
2323
2686
  children: _jsx(_components.code, {
2324
- className: "language-text",
2325
- children: "Settings > Advanced > Recording > Automatically remux to mp4\\n"
2687
+ className: "language-bash",
2688
+ children: "pnpm -C packages/elevasis-operations exec elevasis-sdk client:get <clientId>\\n"
2326
2689
  })
2327
2690
  }), "\\n", _jsx(_components.p, {
2328
- children: "After each recording, upload the remuxed MP4 and keep the MKV as the backup."
2329
- }), "\\n", _jsx(_components.p, {
2330
- children: "Use the advanced recording output mode:"
2691
+ children: _jsx(_components.strong, {
2692
+ children: "Tenant invocation:"
2693
+ })
2331
2694
  }), "\\n", _jsx(_components.pre, {
2332
2695
  children: _jsx(_components.code, {
2333
- className: "language-text",
2334
- children: "Settings > Output > Output Mode: Advanced\\nRecording Tab:\\n Type: Standard\\n Recording Format: mkv\\n Encoder: NVIDIA NVENC H.264\\n Rate Control: CQP\\n CQ Level: 18\\n Keyframe Interval: 2\\n Preset: P5 (Slow)\\n Profile: high\\n Look-ahead: checked\\n Psycho Visual Tuning: checked\\n Max B-frames: 2\\n"
2696
+ className: "language-bash",
2697
+ children: "pnpm exec elevasis-sdk client:get <clientId>\\n"
2335
2698
  })
2336
2699
  }), "\\n", _jsx(_components.p, {
2337
- children: "CQP 18 is the stable quality target for screen content. It is visually lossless for this use case and gives YouTube a high-quality source before its VP9 or AV1 re-encode."
2338
- }), "\\n", _jsx(_components.p, {
2339
- children: "Fallback encoders:"
2700
+ children: _jsx(_components.strong, {
2701
+ children: "Key flags:"
2702
+ })
2340
2703
  }), "\\n", _jsxs(_components.ul, {
2341
- children: ["\\n", _jsx(_components.li, {
2342
- children: "AMD GPU: use AMD HW H.264 (AMF) with equivalent CQP settings."
2704
+ children: ["\\n", _jsxs(_components.li, {
2705
+ children: [_jsx(_components.code, {
2706
+ children: "--pretty"
2707
+ }), " -- pretty-print JSON output"]
2708
+ }), "\\n"]
2709
+ }), "\\n", _jsx(_components.p, {
2710
+ children: _jsx(_components.strong, {
2711
+ children: "Drill-down recipe:"
2712
+ })
2713
+ }), "\\n", _jsxs(_components.ol, {
2714
+ children: ["\\n", _jsxs(_components.li, {
2715
+ children: ["Obtain ", _jsx(_components.code, {
2716
+ children: "<clientId>"
2717
+ }), " from ", _jsx(_components.code, {
2718
+ children: "client:list"
2719
+ }), " or ", _jsx(_components.code, {
2720
+ children: "client:resolve"
2721
+ }), "."]
2343
2722
  }), "\\n", _jsxs(_components.li, {
2344
- children: ["No dedicated GPU: use x264, CRF 18, CPU preset ", _jsx(_components.code, {
2345
- children: "slow"
2346
- }), ", or ", _jsx(_components.code, {
2347
- children: "medium"
2348
- }), " if the CPU struggles."]
2723
+ children: ["Run ", _jsx(_components.code, {
2724
+ children: "client:get <clientId> --pretty"
2725
+ }), "."]
2726
+ }), "\\n", _jsxs(_components.li, {
2727
+ children: ["Check ", _jsx(_components.code, {
2728
+ children: "projects"
2729
+ }), " array to confirm which projects are linked."]
2730
+ }), "\\n", _jsxs(_components.li, {
2731
+ children: ["If ", _jsx(_components.code, {
2732
+ children: "projects"
2733
+ }), " is empty and a linkage was expected, run ", _jsx(_components.code, {
2734
+ children: "project:update <projectId> --client <clientId>"
2735
+ }), " to attach it."]
2736
+ }), "\\n", _jsxs(_components.li, {
2737
+ children: ["Re-run ", _jsx(_components.code, {
2738
+ children: "client:get"
2739
+ }), " to verify the lineage updated."]
2349
2740
  }), "\\n"]
2741
+ }), "\\n", _jsx(_components.h2, {
2742
+ children: "client:status"
2350
2743
  }), "\\n", _jsx(_components.p, {
2351
- children: "Set audio bitrates:"
2744
+ children: "Returns an org-wide rollup of client counts grouped by status."
2745
+ }), "\\n", _jsxs(_components.p, {
2746
+ children: [_jsx(_components.strong, {
2747
+ children: "Purpose:"
2748
+ }), " High-level health check -- how many clients are active, how many are in each pipeline stage -- without enumerating every record."]
2749
+ }), "\\n", _jsx(_components.p, {
2750
+ children: _jsx(_components.strong, {
2751
+ children: "Monorepo invocation:"
2752
+ })
2352
2753
  }), "\\n", _jsx(_components.pre, {
2353
2754
  children: _jsx(_components.code, {
2354
- className: "language-text",
2355
- children: "Output > Advanced > Audio:\\n Track 1: 320 kbps\\n Track 2: 320 kbps\\n"
2755
+ className: "language-bash",
2756
+ children: "pnpm -C packages/elevasis-operations exec elevasis-sdk client:status\\n"
2757
+ })
2758
+ }), "\\n", _jsx(_components.p, {
2759
+ children: _jsx(_components.strong, {
2760
+ children: "Tenant invocation:"
2761
+ })
2762
+ }), "\\n", _jsx(_components.pre, {
2763
+ children: _jsx(_components.code, {
2764
+ className: "language-bash",
2765
+ children: "pnpm exec elevasis-sdk client:status\\n"
2766
+ })
2767
+ }), "\\n", _jsx(_components.p, {
2768
+ children: _jsx(_components.strong, {
2769
+ children: "Key flags:"
2356
2770
  })
2771
+ }), "\\n", _jsxs(_components.ul, {
2772
+ children: ["\\n", _jsxs(_components.li, {
2773
+ children: [_jsx(_components.code, {
2774
+ children: "--pretty"
2775
+ }), " -- pretty-print JSON output"]
2776
+ }), "\\n"]
2777
+ }), "\\n", _jsx(_components.p, {
2778
+ children: _jsx(_components.strong, {
2779
+ children: "Drill-down recipe:"
2780
+ })
2781
+ }), "\\n", _jsxs(_components.ol, {
2782
+ children: ["\\n", _jsxs(_components.li, {
2783
+ children: ["Run ", _jsx(_components.code, {
2784
+ children: "client:status --pretty"
2785
+ }), " to see counts per status bucket."]
2786
+ }), "\\n", _jsxs(_components.li, {
2787
+ children: ["If a bucket looks unexpectedly large or small, run ", _jsx(_components.code, {
2788
+ children: "client:list --status <value>"
2789
+ }), " to enumerate the records in that bucket."]
2790
+ }), "\\n", _jsxs(_components.li, {
2791
+ children: ["Use ", _jsx(_components.code, {
2792
+ children: "client:get <id>"
2793
+ }), " on specific records to investigate lineage gaps."]
2794
+ }), "\\n"]
2357
2795
  }), "\\n", _jsx(_components.h2, {
2358
- children: "Video Settings"
2796
+ children: "client:resolve"
2359
2797
  }), "\\n", _jsx(_components.p, {
2360
- children: "Use a 1080p canvas and output:"
2798
+ children: "Fuzzy-resolves a client name to a client ID."
2799
+ }), "\\n", _jsxs(_components.p, {
2800
+ children: [_jsx(_components.strong, {
2801
+ children: "Purpose:"
2802
+ }), " Convert a partial or approximate name to the canonical UUID before passing ", _jsx(_components.code, {
2803
+ children: "--client"
2804
+ }), " to project commands. Mirrors ", _jsx(_components.code, {
2805
+ children: "project:resolve"
2806
+ }), " in shape."]
2807
+ }), "\\n", _jsx(_components.p, {
2808
+ children: _jsx(_components.strong, {
2809
+ children: "Monorepo invocation:"
2810
+ })
2361
2811
  }), "\\n", _jsx(_components.pre, {
2362
2812
  children: _jsx(_components.code, {
2363
- className: "language-text",
2364
- children: "Settings > Video:\\n Base (Canvas) Resolution: 1920x1080\\n Output (Scaled) Resolution: 1920x1080\\n Downscale Filter: Lanczos (36 samples)\\n Common FPS Values: 60\\n"
2813
+ className: "language-bash",
2814
+ children: "pnpm -C packages/elevasis-operations exec elevasis-sdk client:resolve \\"<query>\\"\\n"
2365
2815
  })
2366
2816
  }), "\\n", _jsx(_components.p, {
2367
- children: "Use Rec. 709 limited-range color:"
2817
+ children: _jsx(_components.strong, {
2818
+ children: "Tenant invocation:"
2819
+ })
2368
2820
  }), "\\n", _jsx(_components.pre, {
2369
2821
  children: _jsx(_components.code, {
2370
- className: "language-text",
2371
- children: "Settings > Advanced:\\n Color Format: NV12\\n Color Space: 709\\n Color Range: Partial\\n"
2822
+ className: "language-bash",
2823
+ children: "pnpm exec elevasis-sdk client:resolve \\"<query>\\"\\n"
2372
2824
  })
2373
2825
  }), "\\n", _jsx(_components.p, {
2374
- children: "YouTube expects Rec. 709 limited range. Full range can produce washed-out or overly contrasty results after processing."
2826
+ children: _jsx(_components.strong, {
2827
+ children: "Key flags:"
2828
+ })
2829
+ }), "\\n", _jsxs(_components.p, {
2830
+ children: ["None beyond the positional ", _jsx(_components.code, {
2831
+ children: "<query>"
2832
+ }), " argument. Output is the resolved client ID (or a ranked list if multiple matches exist)."]
2375
2833
  }), "\\n", _jsx(_components.p, {
2376
- children: "For a 3440x1440 ultrawide monitor, crop the display capture to the center 16:9 region before it is downscaled:"
2834
+ children: _jsx(_components.strong, {
2835
+ children: "Drill-down recipe:"
2836
+ })
2377
2837
  }), "\\n", _jsxs(_components.ol, {
2378
- children: ["\\n", _jsx(_components.li, {
2379
- children: "Add Display Capture for the primary monitor."
2380
- }), "\\n", _jsxs(_components.li, {
2381
- children: ["Right-click the source and open ", _jsx(_components.code, {
2382
- children: "Transform > Edit Transform"
2383
- }), "."]
2838
+ children: ["\\n", _jsxs(_components.li, {
2839
+ children: ["Run ", _jsx(_components.code, {
2840
+ children: "client:resolve \\"partial name\\""
2841
+ }), " -- the command returns the best-match client ID."]
2384
2842
  }), "\\n", _jsxs(_components.li, {
2385
- children: ["Set ", _jsx(_components.code, {
2386
- children: "Crop Left"
2387
- }), " to ", _jsx(_components.code, {
2388
- children: "440"
2389
- }), " and ", _jsx(_components.code, {
2390
- children: "Crop Right"
2391
- }), " to ", _jsx(_components.code, {
2392
- children: "440"
2843
+ children: ["Pass the returned ID to ", _jsx(_components.code, {
2844
+ children: "project:create --client <id>"
2845
+ }), ", ", _jsx(_components.code, {
2846
+ children: "project:update --client <id>"
2847
+ }), ", or ", _jsx(_components.code, {
2848
+ children: "project:list --client <id>"
2393
2849
  }), "."]
2394
2850
  }), "\\n", _jsxs(_components.li, {
2395
- children: ["Right-click the source again and select ", _jsx(_components.code, {
2396
- children: "Transform > Fit to Screen"
2397
- }), "."]
2851
+ children: ["If multiple matches are returned, refine the query or use ", _jsx(_components.code, {
2852
+ children: "client:list --search \\"<term>\\""
2853
+ }), " to inspect candidates before committing."]
2398
2854
  }), "\\n"]
2855
+ }), "\\n", _jsx(_components.h2, {
2856
+ children: "client:create"
2399
2857
  }), "\\n", _jsx(_components.p, {
2400
- children: "This crops the capture to the center 2560x1440 region. Keep recorded windows inside that center area. A Windows 11 FancyZones center 16:9 zone is useful for keeping Command Center, browser, and terminal windows inside the captured area."
2858
+ children: "Creates a new client record for the authenticated organization."
2859
+ }), "\\n", _jsxs(_components.p, {
2860
+ children: [_jsx(_components.strong, {
2861
+ children: "Purpose:"
2862
+ }), " Provision a client directly from the CLI -- useful for scripted onboarding or bulk imports where no source deal exists yet. The only required field is ", _jsx(_components.code, {
2863
+ children: "--name"
2864
+ }), "; all relationship IDs are optional and can be set later via ", _jsx(_components.code, {
2865
+ children: "client:update"
2866
+ }), "."]
2401
2867
  }), "\\n", _jsx(_components.p, {
2402
- children: "Use Window Capture only when the recording is limited to one browser window. Display Capture is better for tutorials that switch windows, show the taskbar, or tile terminal and browser views."
2403
- }), "\\n", _jsx(_components.h2, {
2404
- children: "Audio Settings"
2868
+ children: _jsx(_components.strong, {
2869
+ children: "Monorepo invocation:"
2870
+ })
2871
+ }), "\\n", _jsx(_components.pre, {
2872
+ children: _jsx(_components.code, {
2873
+ className: "language-bash",
2874
+ children: "pnpm -C packages/elevasis-operations exec elevasis-sdk client:create --name \\"Acme Corp\\"\\n"
2875
+ })
2405
2876
  }), "\\n", _jsx(_components.p, {
2406
- children: "Global audio settings:"
2877
+ children: _jsxs(_components.strong, {
2878
+ children: ["Tenant invocation (from inside ", _jsx(_components.code, {
2879
+ children: "operations/"
2880
+ }), "):"]
2881
+ })
2407
2882
  }), "\\n", _jsx(_components.pre, {
2408
2883
  children: _jsx(_components.code, {
2409
- className: "language-text",
2410
- children: "Settings > Audio:\\n Sample Rate: 48 kHz\\n Channels: Stereo\\n Desktop Audio: Default\\n Mic/Auxiliary Audio: Focusrite USB Audio (Scarlett 2i2)\\n"
2884
+ className: "language-bash",
2885
+ children: "pnpm exec elevasis-sdk client:create --name \\"Acme Corp\\"\\n"
2411
2886
  })
2412
2887
  }), "\\n", _jsx(_components.p, {
2413
- children: "Set the Focusrite input in Windows before recording:"
2414
- }), "\\n", _jsxs(_components.ol, {
2415
- children: ["\\n", _jsx(_components.li, {
2416
- children: "Open Windows Sound Settings."
2417
- }), "\\n", _jsx(_components.li, {
2418
- children: "Select the Focusrite USB Audio input."
2419
- }), "\\n", _jsx(_components.li, {
2420
- children: "Set format to 48000 Hz, 24-bit."
2888
+ children: _jsx(_components.strong, {
2889
+ children: "Key flags:"
2890
+ })
2891
+ }), "\\n", _jsxs(_components.ul, {
2892
+ children: ["\\n", _jsxs(_components.li, {
2893
+ children: [_jsx(_components.code, {
2894
+ children: "--name <name>"
2895
+ }), " -- (required) client display name"]
2896
+ }), "\\n", _jsxs(_components.li, {
2897
+ children: [_jsx(_components.code, {
2898
+ children: "--status <value>"
2899
+ }), " -- initial status: ", _jsx(_components.code, {
2900
+ children: "active"
2901
+ }), " | ", _jsx(_components.code, {
2902
+ children: "onboarding"
2903
+ }), " | ", _jsx(_components.code, {
2904
+ children: "paused"
2905
+ }), " | ", _jsx(_components.code, {
2906
+ children: "completed"
2907
+ }), " | ", _jsx(_components.code, {
2908
+ children: "churned"
2909
+ })]
2910
+ }), "\\n", _jsxs(_components.li, {
2911
+ children: [_jsx(_components.code, {
2912
+ children: "--source-deal-id <uuid>"
2913
+ }), " -- UUID of the originating deal"]
2914
+ }), "\\n", _jsxs(_components.li, {
2915
+ children: [_jsx(_components.code, {
2916
+ children: "--primary-company-id <uuid>"
2917
+ }), " -- UUID of the primary company record"]
2918
+ }), "\\n", _jsxs(_components.li, {
2919
+ children: [_jsx(_components.code, {
2920
+ children: "--primary-contact-id <uuid>"
2921
+ }), " -- UUID of the primary contact record"]
2922
+ }), "\\n", _jsxs(_components.li, {
2923
+ children: [_jsx(_components.code, {
2924
+ children: "--metadata <json>"
2925
+ }), " -- arbitrary metadata as a JSON string (e.g. ", _jsx(_components.code, {
2926
+ children: "'{\\"tier\\":\\"enterprise\\"}'"
2927
+ }), ")"]
2928
+ }), "\\n", _jsxs(_components.li, {
2929
+ children: [_jsx(_components.code, {
2930
+ children: "--pretty"
2931
+ }), " -- render a human-readable summary instead of raw JSON"]
2421
2932
  }), "\\n"]
2422
2933
  }), "\\n", _jsx(_components.p, {
2423
- children: "Physical Focusrite setup:"
2424
- }), "\\n", _jsxs(_components.ul, {
2425
- children: ["\\n", _jsx(_components.li, {
2426
- children: "Turn 48V phantom power on for the Lewitt LCT 240 PRO condenser."
2427
- }), "\\n", _jsx(_components.li, {
2428
- children: "Start input gain at 12 o'clock and adjust so peaks land around -12 dB."
2429
- }), "\\n", _jsx(_components.li, {
2430
- children: "Keep Direct Monitor off to avoid double-monitoring."
2934
+ children: _jsx(_components.strong, {
2935
+ children: "Drill-down recipe:"
2936
+ })
2937
+ }), "\\n", _jsxs(_components.ol, {
2938
+ children: ["\\n", _jsxs(_components.li, {
2939
+ children: ["Run ", _jsx(_components.code, {
2940
+ children: "client:create --name \\"Acme Corp\\" --status onboarding --pretty"
2941
+ }), " to create and confirm the new record."]
2942
+ }), "\\n", _jsxs(_components.li, {
2943
+ children: ["Copy the ", _jsx(_components.code, {
2944
+ children: "ID"
2945
+ }), " from the pretty output (or ", _jsx(_components.code, {
2946
+ children: "id"
2947
+ }), " from raw JSON) for subsequent commands."]
2948
+ }), "\\n", _jsxs(_components.li, {
2949
+ children: ["Run ", _jsx(_components.code, {
2950
+ children: "client:get <id> --pretty"
2951
+ }), " to verify the full lineage payload was initialized correctly."]
2952
+ }), "\\n", _jsxs(_components.li, {
2953
+ children: ["If a source deal exists, pass ", _jsx(_components.code, {
2954
+ children: "--source-deal-id <uuid>"
2955
+ }), " at create time or backfill with ", _jsx(_components.code, {
2956
+ children: "client:update <id> --source-deal-id <uuid>"
2957
+ }), "."]
2431
2958
  }), "\\n"]
2959
+ }), "\\n", _jsx(_components.h2, {
2960
+ children: "client:update"
2961
+ }), "\\n", _jsxs(_components.p, {
2962
+ children: ["Updates one or more fields on an existing client. Accepts a UUID or fuzzy name as the ", _jsx(_components.code, {
2963
+ children: "\\\\<id\\\\>"
2964
+ }), " argument."]
2965
+ }), "\\n", _jsxs(_components.p, {
2966
+ children: [_jsx(_components.strong, {
2967
+ children: "Purpose:"
2968
+ }), " Rename a client, change its status, swap or clear relationship IDs, or patch arbitrary metadata -- without leaving the CLI. The command enforces a client-side \\"at-least-one-field\\" guard and rejects mutually exclusive flag pairs before making any API call."]
2432
2969
  }), "\\n", _jsx(_components.p, {
2433
- children: "Apply OBS mic filters to the Mic/Aux source in this exact order:"
2434
- }), "\\n", _jsxs(_components.table, {
2435
- children: [_jsx(_components.thead, {
2436
- children: _jsxs(_components.tr, {
2437
- children: [_jsx(_components.th, {
2438
- children: "Order"
2439
- }), _jsx(_components.th, {
2440
- children: "Filter"
2441
- }), _jsx(_components.th, {
2442
- children: "Settings"
2443
- })]
2444
- })
2445
- }), _jsxs(_components.tbody, {
2446
- children: [_jsxs(_components.tr, {
2447
- children: [_jsx(_components.td, {
2448
- children: "1"
2449
- }), _jsx(_components.td, {
2450
- children: "Noise Suppression"
2451
- }), _jsx(_components.td, {
2452
- children: "RNNoise"
2453
- })]
2454
- }), _jsxs(_components.tr, {
2455
- children: [_jsx(_components.td, {
2456
- children: "2"
2457
- }), _jsx(_components.td, {
2458
- children: "Noise Gate"
2459
- }), _jsx(_components.td, {
2460
- children: "Close -40 dB, Open -35 dB, Attack 10 ms, Hold 200 ms, Release 100 ms"
2461
- })]
2462
- }), _jsxs(_components.tr, {
2463
- children: [_jsx(_components.td, {
2464
- children: "3"
2465
- }), _jsx(_components.td, {
2466
- children: "Compressor"
2467
- }), _jsx(_components.td, {
2468
- children: "Ratio 3:1, Threshold -18 dB, Attack 6 ms, Release 60 ms, Output Gain 6 dB"
2469
- })]
2470
- }), _jsxs(_components.tr, {
2471
- children: [_jsx(_components.td, {
2472
- children: "4"
2473
- }), _jsx(_components.td, {
2474
- children: "Limiter"
2475
- }), _jsx(_components.td, {
2476
- children: "Threshold -3 dB, Release 60 ms"
2477
- })]
2478
- })]
2479
- })]
2480
- }), "\\n", _jsx(_components.p, {
2481
- children: "This order removes steady noise first, gates silence-period noise second, evens speech dynamics third, and catches peaks last. Do not add a Gain filter unless the signal is still too quiet after setting the Scarlett gain."
2482
- }), "\\n", _jsx(_components.h2, {
2483
- children: "Multi-Track Audio"
2484
- }), "\\n", _jsx(_components.p, {
2485
- children: "Record mixed audio and isolated mic audio:"
2970
+ children: _jsx(_components.strong, {
2971
+ children: "Monorepo invocation:"
2972
+ })
2486
2973
  }), "\\n", _jsx(_components.pre, {
2487
2974
  children: _jsx(_components.code, {
2488
- className: "language-text",
2489
- children: "Settings > Output > Advanced > Recording Tab:\\n Audio Track: check 1 and 2\\n"
2975
+ className: "language-bash",
2976
+ children: "pnpm -C packages/elevasis-operations exec elevasis-sdk client:update <id> --status active\\n"
2490
2977
  })
2491
- }), "\\n", _jsxs(_components.p, {
2492
- children: ["Route tracks in ", _jsx(_components.code, {
2493
- children: "Audio Mixer > Advanced Audio Properties"
2494
- }), ":"]
2495
- }), "\\n", _jsxs(_components.table, {
2496
- children: [_jsx(_components.thead, {
2497
- children: _jsxs(_components.tr, {
2498
- children: [_jsx(_components.th, {
2499
- children: "Source"
2500
- }), _jsx(_components.th, {
2501
- children: "Track 1"
2502
- }), _jsx(_components.th, {
2503
- children: "Track 2"
2504
- })]
2505
- })
2506
- }), _jsxs(_components.tbody, {
2507
- children: [_jsxs(_components.tr, {
2508
- children: [_jsx(_components.td, {
2509
- children: "Desktop Audio"
2510
- }), _jsx(_components.td, {
2511
- children: "checked"
2512
- }), _jsx(_components.td, {
2513
- children: "empty"
2514
- })]
2515
- }), _jsxs(_components.tr, {
2516
- children: [_jsx(_components.td, {
2517
- children: "Mic/Aux"
2518
- }), _jsx(_components.td, {
2519
- children: "checked"
2520
- }), _jsx(_components.td, {
2521
- children: "checked"
2522
- })]
2523
- })]
2524
- })]
2525
2978
  }), "\\n", _jsx(_components.p, {
2526
- children: "Track 1 is YouTube-ready mixed audio. Track 2 is mic-only audio for cleanup or editing."
2527
- }), "\\n", _jsx(_components.h2, {
2528
- children: "Scene Setup"
2529
- }), "\\n", _jsx(_components.p, {
2530
- children: "Create two scenes."
2531
- }), "\\n", _jsx(_components.h3, {
2532
- children: "Face + Screen"
2979
+ children: _jsx(_components.strong, {
2980
+ children: "Tenant invocation:"
2981
+ })
2982
+ }), "\\n", _jsx(_components.pre, {
2983
+ children: _jsx(_components.code, {
2984
+ className: "language-bash",
2985
+ children: "pnpm exec elevasis-sdk client:update <id> --status active\\n"
2986
+ })
2533
2987
  }), "\\n", _jsx(_components.p, {
2534
- children: "Use this scene for the intro and occasional commentary call-ins."
2988
+ children: _jsx(_components.strong, {
2989
+ children: "Key flags:"
2990
+ })
2991
+ }), "\\n", _jsxs(_components.ul, {
2992
+ children: ["\\n", _jsxs(_components.li, {
2993
+ children: [_jsx(_components.code, {
2994
+ children: "--name <name>"
2995
+ }), " -- new client display name"]
2996
+ }), "\\n", _jsxs(_components.li, {
2997
+ children: [_jsx(_components.code, {
2998
+ children: "--status <value>"
2999
+ }), " -- new status: ", _jsx(_components.code, {
3000
+ children: "active"
3001
+ }), " | ", _jsx(_components.code, {
3002
+ children: "onboarding"
3003
+ }), " | ", _jsx(_components.code, {
3004
+ children: "paused"
3005
+ }), " | ", _jsx(_components.code, {
3006
+ children: "completed"
3007
+ }), " | ", _jsx(_components.code, {
3008
+ children: "churned"
3009
+ })]
3010
+ }), "\\n", _jsxs(_components.li, {
3011
+ children: [_jsx(_components.code, {
3012
+ children: "--source-deal-id <uuid>"
3013
+ }), " -- set or replace the source deal link"]
3014
+ }), "\\n", _jsxs(_components.li, {
3015
+ children: [_jsx(_components.code, {
3016
+ children: "--clear-source-deal"
3017
+ }), " -- remove the source deal link (sets ", _jsx(_components.code, {
3018
+ children: "sourceDealId"
3019
+ }), " to null; mutually exclusive with ", _jsx(_components.code, {
3020
+ children: "--source-deal-id"
3021
+ }), ")"]
3022
+ }), "\\n", _jsxs(_components.li, {
3023
+ children: [_jsx(_components.code, {
3024
+ children: "--primary-company-id <uuid>"
3025
+ }), " -- set or replace the primary company"]
3026
+ }), "\\n", _jsxs(_components.li, {
3027
+ children: [_jsx(_components.code, {
3028
+ children: "--clear-primary-company"
3029
+ }), " -- remove the primary company link (mutually exclusive with ", _jsx(_components.code, {
3030
+ children: "--primary-company-id"
3031
+ }), ")"]
3032
+ }), "\\n", _jsxs(_components.li, {
3033
+ children: [_jsx(_components.code, {
3034
+ children: "--primary-contact-id <uuid>"
3035
+ }), " -- set or replace the primary contact"]
3036
+ }), "\\n", _jsxs(_components.li, {
3037
+ children: [_jsx(_components.code, {
3038
+ children: "--clear-primary-contact"
3039
+ }), " -- remove the primary contact link (mutually exclusive with ", _jsx(_components.code, {
3040
+ children: "--primary-contact-id"
3041
+ }), ")"]
3042
+ }), "\\n", _jsxs(_components.li, {
3043
+ children: [_jsx(_components.code, {
3044
+ children: "--metadata <json>"
3045
+ }), " -- replace metadata with the provided JSON string"]
3046
+ }), "\\n", _jsxs(_components.li, {
3047
+ children: [_jsx(_components.code, {
3048
+ children: "--pretty"
3049
+ }), " -- render a human-readable summary instead of raw JSON"]
3050
+ }), "\\n"]
2535
3051
  }), "\\n", _jsx(_components.p, {
2536
- children: "Sources from bottom to top:"
3052
+ children: _jsx(_components.strong, {
3053
+ children: "Drill-down recipe:"
3054
+ })
2537
3055
  }), "\\n", _jsxs(_components.ol, {
2538
3056
  children: ["\\n", _jsxs(_components.li, {
2539
- children: ["Display Capture named ", _jsx(_components.code, {
2540
- children: "Screen"
2541
- }), "."]
2542
- }), "\\n", _jsxs(_components.li, {
2543
- children: ["Video Capture Device named ", _jsx(_components.code, {
2544
- children: "Facecam"
3057
+ children: ["Obtain ", _jsx(_components.code, {
3058
+ children: "\\\\<id\\\\>"
3059
+ }), " from ", _jsx(_components.code, {
3060
+ children: "client:list"
3061
+ }), ", ", _jsx(_components.code, {
3062
+ children: "client:resolve"
3063
+ }), ", or the output of ", _jsx(_components.code, {
3064
+ children: "client:create"
2545
3065
  }), "."]
2546
3066
  }), "\\n", _jsx(_components.li, {
2547
- children: "Optional image source for a circle border or glow."
3067
+ children: "Pass only the fields to change -- the command patches rather than replaces the record."
3068
+ }), "\\n", _jsxs(_components.li, {
3069
+ children: ["To unlink a relationship (e.g. remove the source deal), use ", _jsx(_components.code, {
3070
+ children: "--clear-source-deal"
3071
+ }), " rather than omitting the flag; omitting leaves the existing value unchanged."]
3072
+ }), "\\n", _jsxs(_components.li, {
3073
+ children: ["After update, run ", _jsx(_components.code, {
3074
+ children: "client:get <id> --pretty"
3075
+ }), " to confirm all fields reflect the expected state."]
3076
+ }), "\\n", _jsxs(_components.li, {
3077
+ children: ["If the command exits with ", _jsx(_components.code, {
3078
+ children: "CONFLICTING_FLAGS"
3079
+ }), " on stderr, you passed both a set flag and its ", _jsx(_components.code, {
3080
+ children: "--clear-*"
3081
+ }), " counterpart -- remove one and retry."]
2548
3082
  }), "\\n"]
3083
+ }), "\\n", _jsx(_components.h2, {
3084
+ children: "client:delete"
3085
+ }), "\\n", _jsxs(_components.p, {
3086
+ children: ["Deletes a client record. Accepts a UUID or fuzzy name as the ", _jsx(_components.code, {
3087
+ children: "\\\\<id\\\\>"
3088
+ }), " argument."]
3089
+ }), "\\n", _jsxs(_components.p, {
3090
+ children: [_jsx(_components.strong, {
3091
+ children: "Purpose:"
3092
+ }), " Remove a client that was created in error or is no longer relevant. The API enforces a 409 Conflict when the client has linked rows (deals, projects, companies, contacts). The CLI surfaces the API error message verbatim so you know which links to resolve first."]
2549
3093
  }), "\\n", _jsx(_components.p, {
2550
- children: "Display Capture settings:"
2551
- }), "\\n", _jsx(_components.pre, {
2552
- children: _jsx(_components.code, {
2553
- className: "language-text",
2554
- children: "Source: Display Capture\\nDisplay: Primary monitor\\nCapture Method: Windows 10 (1903 and later)\\nCapture Cursor: checked\\n"
3094
+ children: _jsx(_components.strong, {
3095
+ children: "Monorepo invocation:"
2555
3096
  })
2556
- }), "\\n", _jsx(_components.p, {
2557
- children: "Apply the ultrawide crop to this source when recording from the 3440x1440 monitor."
2558
- }), "\\n", _jsx(_components.p, {
2559
- children: "Facecam settings:"
2560
3097
  }), "\\n", _jsx(_components.pre, {
2561
3098
  children: _jsx(_components.code, {
2562
- className: "language-text",
2563
- children: "Device: Insta360 Link 2C\\nResolution: 1920x1080\\nFPS: 60\\nVideo Format: MJPEG or default\\n"
3099
+ className: "language-bash",
3100
+ children: "pnpm -C packages/elevasis-operations exec elevasis-sdk client:delete <id>\\n"
2564
3101
  })
2565
3102
  }), "\\n", _jsx(_components.p, {
2566
- children: "Create a 512x512 PNG with a white circle on a black background and store it permanently, for example:"
2567
- }), "\\n", _jsx(_components.pre, {
2568
- children: _jsx(_components.code, {
2569
- className: "language-text",
2570
- children: "E:\\\\OBS\\\\circle-mask.png\\n"
3103
+ children: _jsx(_components.strong, {
3104
+ children: "Tenant invocation:"
2571
3105
  })
2572
- }), "\\n", _jsx(_components.p, {
2573
- children: "Apply it to the Facecam source:"
2574
3106
  }), "\\n", _jsx(_components.pre, {
2575
3107
  children: _jsx(_components.code, {
2576
- className: "language-text",
2577
- children: "Filters > Image Mask/Blend:\\n Type: Alpha Mask (Colour Channel)\\n Path: E:\\\\OBS\\\\circle-mask.png\\n"
3108
+ className: "language-bash",
3109
+ children: "pnpm exec elevasis-sdk client:delete <id>\\n"
2578
3110
  })
2579
3111
  }), "\\n", _jsx(_components.p, {
2580
- children: "Resize the facecam source to roughly 300-400 px diameter and place it in a lower corner."
2581
- }), "\\n", _jsx(_components.h3, {
2582
- children: "Screen Only"
2583
- }), "\\n", _jsx(_components.p, {
2584
- children: "Use this scene for the main tutorial content."
2585
- }), "\\n", _jsxs(_components.p, {
2586
- children: ["Add the existing ", _jsx(_components.code, {
2587
- children: "Screen"
2588
- }), " source from the Face + Screen scene. Do not duplicate the display capture source."]
2589
- }), "\\n", _jsx(_components.p, {
2590
- children: "Hotkeys:"
2591
- }), "\\n", _jsx(_components.pre, {
2592
- children: _jsx(_components.code, {
2593
- className: "language-text",
2594
- children: "Settings > Hotkeys:\\n Switch to Scene \\"Face + Screen\\": F5\\n Switch to Scene \\"Screen Only\\": F6\\n Start Recording: Ctrl+F9\\n Stop Recording: Ctrl+F10\\n"
3112
+ children: _jsx(_components.strong, {
3113
+ children: "Key flags:"
2595
3114
  })
3115
+ }), "\\n", _jsxs(_components.ul, {
3116
+ children: ["\\n", _jsxs(_components.li, {
3117
+ children: [_jsx(_components.code, {
3118
+ children: "--pretty"
3119
+ }), " -- render a human-readable confirmation instead of raw JSON"]
3120
+ }), "\\n", _jsxs(_components.li, {
3121
+ children: [_jsx(_components.code, {
3122
+ children: "--api-url <url>"
3123
+ }), " -- override the API base URL (advanced; rarely needed)"]
3124
+ }), "\\n"]
2596
3125
  }), "\\n", _jsx(_components.p, {
2597
- children: "Avoid hotkeys that collide with the app being recorded. If using F5 inside a browser-heavy recording, choose a different key because F5 refreshes the page."
2598
- }), "\\n", _jsx(_components.p, {
2599
- children: "Recording flow:"
3126
+ children: _jsx(_components.strong, {
3127
+ children: "Drill-down recipe:"
3128
+ })
2600
3129
  }), "\\n", _jsxs(_components.ol, {
2601
3130
  children: ["\\n", _jsxs(_components.li, {
2602
- children: ["Start on ", _jsx(_components.code, {
2603
- children: "Face + Screen"
2604
- }), "."]
3131
+ children: ["Run ", _jsx(_components.code, {
3132
+ children: "client:get <id> --pretty"
3133
+ }), " to confirm which projects and deal links are attached before attempting deletion."]
2605
3134
  }), "\\n", _jsxs(_components.li, {
2606
- children: ["Press ", _jsx(_components.code, {
2607
- children: "Ctrl+F9"
3135
+ children: ["Run ", _jsx(_components.code, {
3136
+ children: "client:delete <id> --pretty"
2608
3137
  }), "."]
2609
- }), "\\n", _jsx(_components.li, {
2610
- children: "Record a 15-30 second face-camera intro."
2611
3138
  }), "\\n", _jsxs(_components.li, {
2612
- children: ["Press ", _jsx(_components.code, {
2613
- children: "F6"
2614
- }), " for ", _jsx(_components.code, {
2615
- children: "Screen Only"
2616
- }), "."]
2617
- }), "\\n", _jsx(_components.li, {
2618
- children: "Record the screen walkthrough."
3139
+ children: ["If the API returns a 409, the error message lists the linked record counts (deals, projects, companies, contacts). Unlink or reassign those records first:", "\\n", _jsxs(_components.ul, {
3140
+ children: ["\\n", _jsxs(_components.li, {
3141
+ children: ["Projects: ", _jsx(_components.code, {
3142
+ children: "project:update <projectId> --clear-client"
3143
+ }), " (or reassign with ", _jsx(_components.code, {
3144
+ children: "--client <otherId>"
3145
+ }), ")"]
3146
+ }), "\\n", _jsx(_components.li, {
3147
+ children: "Deals: handled via the acquisition domain; no dedicated CLI command today"
3148
+ }), "\\n"]
3149
+ }), "\\n"]
2619
3150
  }), "\\n", _jsxs(_components.li, {
2620
- children: ["Optionally press ", _jsx(_components.code, {
2621
- children: "F5"
2622
- }), " to bring face-camera back for commentary."]
3151
+ children: ["Retry ", _jsx(_components.code, {
3152
+ children: "client:delete <id> --pretty"
3153
+ }), " once all links are resolved."]
2623
3154
  }), "\\n", _jsxs(_components.li, {
2624
- children: ["Press ", _jsx(_components.code, {
2625
- children: "Ctrl+F10"
2626
- }), " to stop."]
2627
- }), "\\n"]
2628
- }), "\\n", _jsx(_components.p, {
2629
- children: "For a fade, set Scene Transitions to Fade with a 300 ms duration."
2630
- }), "\\n", _jsx(_components.h2, {
2631
- children: "Windows 11 Checks"
2632
- }), "\\n", _jsx(_components.p, {
2633
- children: "Before a recording session:"
2634
- }), "\\n", _jsxs(_components.ul, {
2635
- children: ["\\n", _jsx(_components.li, {
2636
- children: "Disable Xbox Game Bar."
2637
- }), "\\n", _jsx(_components.li, {
2638
- children: "Leave GPU scheduling enabled."
2639
- }), "\\n", _jsx(_components.li, {
2640
- children: "Run OBS as Administrator if frame drops or black-screen capture occur."
2641
- }), "\\n", _jsx(_components.li, {
2642
- children: "Set OBS process priority to Above Normal if the recording drops frames."
2643
- }), "\\n", _jsx(_components.li, {
2644
- children: "Use the High Performance power plan during recording."
3155
+ children: ["Confirm deletion with ", _jsx(_components.code, {
3156
+ children: "client:list --search \\"<name>\\""
3157
+ }), " -- the record should no longer appear."]
2645
3158
  }), "\\n"]
2646
3159
  }), "\\n", _jsx(_components.h2, {
2647
- children: "Upload Quality"
2648
- }), "\\n", _jsx(_components.p, {
2649
- children: "YouTube re-encodes every upload. The goal is to provide clean source material."
2650
- }), "\\n", _jsxs(_components.ul, {
2651
- children: ["\\n", _jsx(_components.li, {
2652
- children: "Do not upload at YouTube's minimum recommended bitrate."
2653
- }), "\\n", _jsx(_components.li, {
2654
- children: "Do not run the recording through HandBrake or another extra encode just to save space."
2655
- }), "\\n", _jsx(_components.li, {
2656
- children: "Upload the OBS-remuxed MP4 directly unless the video was edited."
2657
- }), "\\n", _jsx(_components.li, {
2658
- children: "If editing in DaVinci Resolve or Premiere, render H.264 at 50 Mbps CBR for 1080p60 or use the YouTube preset."
2659
- }), "\\n"]
3160
+ children: "Typical Workflow"
2660
3161
  }), "\\n", _jsx(_components.p, {
2661
- children: "The OBS output should match YouTube's expected upload shape: MP4 container, H.264 video, AAC-LC audio, 48 kHz stereo, Rec. 709 limited range."
2662
- }), "\\n", _jsx(_components.h2, {
2663
- children: "Pre-Recording Checklist"
2664
- }), "\\n", _jsxs(_components.ul, {
2665
- children: ["\\n", _jsx(_components.li, {
2666
- children: "Scarlett 2i2 phantom power is on and voice peaks around -12 dB."
3162
+ children: "A common session combining read and write commands:"
3163
+ }), "\\n", _jsxs(_components.ol, {
3164
+ children: ["\\n", _jsxs(_components.li, {
3165
+ children: [_jsx(_components.code, {
3166
+ children: "client:status --pretty"
3167
+ }), " -- check org-wide distribution."]
2667
3168
  }), "\\n", _jsxs(_components.li, {
2668
- children: ["Correct OBS scene is selected, usually ", _jsx(_components.code, {
2669
- children: "Face + Screen"
2670
- }), "."]
2671
- }), "\\n", _jsx(_components.li, {
2672
- children: "Insta360 Link Controller has AI tracking and HDR enabled when needed."
2673
- }), "\\n", _jsx(_components.li, {
2674
- children: "Door is closed, fan or AC is off, and the room is controlled."
2675
- }), "\\n", _jsx(_components.li, {
2676
- children: "OBS mic meter peaks in green or yellow, never red."
2677
- }), "\\n", _jsx(_components.li, {
2678
- children: "A 10-second test recording has been played back for audio, video quality, and facecam position."
3169
+ children: [_jsx(_components.code, {
3170
+ children: "client:resolve \\"Acme\\""
3171
+ }), " -- get the Acme client ID."]
2679
3172
  }), "\\n", _jsxs(_components.li, {
2680
- children: ["The 12-minute warm-up from ", _jsx(_components.code, {
2681
- children: "knowledge.youtube-mental-prep"
2682
- }), " is complete when recording on camera."]
3173
+ children: [_jsx(_components.code, {
3174
+ children: "client:get <id> --pretty"
3175
+ }), " -- confirm lineage (deal, company, contact, projects)."]
3176
+ }), "\\n", _jsxs(_components.li, {
3177
+ children: [_jsx(_components.code, {
3178
+ children: "project:update <projectId> --client <id>"
3179
+ }), " -- link a project if missing."]
3180
+ }), "\\n", _jsxs(_components.li, {
3181
+ children: [_jsx(_components.code, {
3182
+ children: "client:get <id> --pretty"
3183
+ }), " -- verify the linkage appears in the projects array."]
3184
+ }), "\\n", _jsxs(_components.li, {
3185
+ children: [_jsx(_components.code, {
3186
+ children: "client:create --name \\"New Corp\\" --status onboarding --pretty"
3187
+ }), " -- provision a new client."]
3188
+ }), "\\n", _jsxs(_components.li, {
3189
+ children: [_jsx(_components.code, {
3190
+ children: "client:update <id> --status active --pretty"
3191
+ }), " -- transition a client to active."]
3192
+ }), "\\n", _jsxs(_components.li, {
3193
+ children: [_jsx(_components.code, {
3194
+ children: "client:delete <id> --pretty"
3195
+ }), " -- remove a client (API rejects with 409 if linked rows exist)."]
2683
3196
  }), "\\n"]
2684
3197
  })]
2685
3198
  });
@@ -2697,8 +3210,7 @@ return {
2697
3210
  default: MDXContent
2698
3211
  };
2699
3212
  `),
2700
- "knowledge.finance-operations-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n li: "li",\n ol: "ol",\n p: "p",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "Elevasis finance operations run through Xero, with Stripe handling payment collection. Xero is the single source of truth for financial records: business checking bank feeds, Stripe payouts, contractor payments, expenses, invoices, receivables, and year-end exports."\n }), "\\n", _jsx(_components.p, {\n children: "The finance loop has three connected parts:"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsx(_components.li, {\n children: "Invoicing captures client revenue through monthly retainers and Stripe Checkout."\n }), "\\n", _jsx(_components.li, {\n children: "Accounting records and reconciles bank transactions, Stripe payouts, contractor payments, and operating expenses."\n }), "\\n", _jsx(_components.li, {\n children: "Taxes use accurate Xero records for quarterly estimates, deductions, 1099s, and annual filing."\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Accounting and Reconciliation"\n }), "\\n", _jsx(_components.p, {\n children: "Reconcile bank transactions in Xero weekly. Match each bank feed entry to its real-world source before month end."\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Stripe payouts should match against Stripe bank feed activity."\n }), "\\n", _jsx(_components.li, {\n children: "Contractor payments should match checking account transfers."\n }), "\\n", _jsx(_components.li, {\n children: "Software subscriptions such as Railway, Vercel, Supabase, WorkOS, and OpenAI should be categorized as operating expenses."\n }), "\\n", _jsx(_components.li, {\n children: "Unmatched or ambiguous transactions should be flagged for manual review before monthly close."\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Maintain the core chart of accounts around revenue, cost of sales, operating expenses, and owner draws. Revenue includes client retainers and one-time project fees. Cost of sales covers contractor labor directly tied to client work. Operating expenses cover SaaS tools, hosting, banking fees, and professional services. Owner draws track business distributions."\n }), "\\n", _jsx(_components.p, {\n children: "Configure Xero with the connected business checking account, the default tax rate for the business jurisdiction, and the correct financial year end in organization settings."\n }), "\\n", _jsx(_components.h2, {\n children: "Invoicing and Accounts Receivable"\n }), "\\n", _jsx(_components.p, {\n children: "Client billing runs on a monthly retainer model. Create invoices in Xero at the start of each billing period, send them by Xero email or Stripe Checkout link, record payment after Stripe confirms checkout completion, and reconcile the Stripe payout in Xero."\n }), "\\n", _jsx(_components.p, {\n children: "Use Xero repeating invoices for monthly retainers:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Frequency: monthly."\n }), "\\n", _jsx(_components.li, {\n children: "Start date: billing cycle start date."\n }), "\\n", _jsx(_components.li, {\n children: "Approval: automatic approval where the billing terms are stable."\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Configure invoice reminders around the due date: a courtesy reminder 3 days before due date, an overdue notice 1 day after due date, and an escalation notice 7 days after due date."\n }), "\\n", _jsx(_components.p, {\n children: "For invoices more than 14 days overdue, contact the client directly through the active communication channel, pause active work pending payment confirmation, and resolve the balance before the next billing cycle."\n }), "\\n", _jsx(_components.h2, {\n children: "Taxes"\n }), "\\n", _jsx(_components.p, {\n children: "Tax work depends on accurate Xero records throughout the year. As a pass-through entity, Elevasis business income flows to the owner personal return, so quarterly estimates reduce underpayment risk and year-end exports should be clean enough for a CPA or tax preparer."\n }), "\\n", _jsx(_components.p, {\n children: "Quarterly estimated payment targets:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Q1: April 15."\n }), "\\n", _jsx(_components.li, {\n children: "Q2: June 15."\n }), "\\n", _jsx(_components.li, {\n children: "Q3: September 15."\n }), "\\n", _jsx(_components.li, {\n children: "Q4: January 15 of the following year."\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Estimate payments as roughly 25-30% of net profit for the quarter and pay via IRS Direct Pay or EFTPS."\n }), "\\n", _jsx(_components.p, {\n children: "Track deductible expenses in Xero during the year: SaaS subscriptions, contractor payments, home office expenses where applicable, professional development, courses, and business banking fees. Keep digital receipts organized by year in the business records folder."\n }), "\\n", _jsx(_components.p, {\n children: "Issue 1099-NEC forms to US-based contractors paid more than $600 in a calendar year. Collect a W-9 before first payment, track annual contractor totals in Xero, file 1099-NEC forms by January 31 of the following year, and file the 1096 summary with the IRS when required."\n }), "\\n", _jsx(_components.p, {\n children: "At year end, export the Xero profit and loss statement and balance sheet. Provide them to the CPA or tax preparer with issued 1099s, bank statements for the business year, mileage logs if applicable, and home office documentation if applicable."\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
2701
- "knowledge.platform-command-view": makeKnowledgeComponent(`"use strict";
3213
+ "knowledge.youtube-obs-recording-setup": makeKnowledgeComponent(`"use strict";
2702
3214
  const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
2703
3215
  function _createMdxContent(props) {
2704
3216
  const _components = {
@@ -2709,7 +3221,6 @@ function _createMdxContent(props) {
2709
3221
  ol: "ol",
2710
3222
  p: "p",
2711
3223
  pre: "pre",
2712
- strong: "strong",
2713
3224
  table: "table",
2714
3225
  tbody: "tbody",
2715
3226
  td: "td",
@@ -2723,380 +3234,800 @@ function _createMdxContent(props) {
2723
3234
  children: [_jsx(_components.h2, {
2724
3235
  children: "Overview"
2725
3236
  }), "\\n", _jsx(_components.p, {
2726
- children: "Command View visualizes an organization's automation landscape: agents, workflows, triggers, integrations, external resources, and human checkpoints, plus the relationships between them."
3237
+ children: "Use this setup for Elevasis YouTube recordings that combine a short face-camera intro with Command Center or workflow screen capture. The target output is a clean 1080p60 source file that YouTube can re-encode without avoidable motion, audio, or color artifacts."
2727
3238
  }), "\\n", _jsx(_components.p, {
2728
- children: "It answers operational questions such as:"
3239
+ children: "Baseline configuration:"
3240
+ }), "\\n", _jsx(_components.pre, {
3241
+ children: _jsx(_components.code, {
3242
+ className: "language-text",
3243
+ children: "Video: 1920x1080, 60fps, NV12, Rec. 709 Partial\\nEncode: NVENC H.264, CQP 18, P5 preset, High profile\\nFormat: MKV with automatic remux to MP4\\nAudio: 48 kHz stereo, 320 kbps AAC, mixed plus mic-only tracks\\nCamera: Insta360 Link 2C at 1080p60 with circle mask\\nScenes: Face + Screen on F5, Screen Only on F6\\n"
3244
+ })
3245
+ }), "\\n", _jsx(_components.p, {
3246
+ children: "Prefer 1080p60 over 4K30 for screen recordings. Smooth cursor motion, scrolling, typing, and app transitions matter more than pixel density, and most viewers watch at 1080p or below. 4K30 produces larger files, slower editing, and visibly choppier screen motion."
3247
+ }), "\\n", _jsx(_components.h2, {
3248
+ children: "Recording Output"
3249
+ }), "\\n", _jsx(_components.p, {
3250
+ children: "Record to MKV, not MP4. MKV writes continuously, so a crash usually leaves the file usable. MP4 writes its index at the end, so a crash can corrupt the recording."
3251
+ }), "\\n", _jsx(_components.p, {
3252
+ children: "Enable automatic remux:"
3253
+ }), "\\n", _jsx(_components.pre, {
3254
+ children: _jsx(_components.code, {
3255
+ className: "language-text",
3256
+ children: "Settings > Advanced > Recording > Automatically remux to mp4\\n"
3257
+ })
3258
+ }), "\\n", _jsx(_components.p, {
3259
+ children: "After each recording, upload the remuxed MP4 and keep the MKV as the backup."
3260
+ }), "\\n", _jsx(_components.p, {
3261
+ children: "Use the advanced recording output mode:"
3262
+ }), "\\n", _jsx(_components.pre, {
3263
+ children: _jsx(_components.code, {
3264
+ className: "language-text",
3265
+ children: "Settings > Output > Output Mode: Advanced\\nRecording Tab:\\n Type: Standard\\n Recording Format: mkv\\n Encoder: NVIDIA NVENC H.264\\n Rate Control: CQP\\n CQ Level: 18\\n Keyframe Interval: 2\\n Preset: P5 (Slow)\\n Profile: high\\n Look-ahead: checked\\n Psycho Visual Tuning: checked\\n Max B-frames: 2\\n"
3266
+ })
3267
+ }), "\\n", _jsx(_components.p, {
3268
+ children: "CQP 18 is the stable quality target for screen content. It is visually lossless for this use case and gives YouTube a high-quality source before its VP9 or AV1 re-encode."
3269
+ }), "\\n", _jsx(_components.p, {
3270
+ children: "Fallback encoders:"
2729
3271
  }), "\\n", _jsxs(_components.ul, {
2730
3272
  children: ["\\n", _jsx(_components.li, {
2731
- children: "What does this agent talk to?"
2732
- }), "\\n", _jsx(_components.li, {
2733
- children: "If a provider goes down, what breaks?"
2734
- }), "\\n", _jsx(_components.li, {
2735
- children: "What is connected to the CRM?"
2736
- }), "\\n", _jsx(_components.li, {
2737
- children: "Which resources are hidden, diagnostic-only, or currently relevant to this trace?"
3273
+ children: "AMD GPU: use AMD HW H.264 (AMF) with equivalent CQP settings."
3274
+ }), "\\n", _jsxs(_components.li, {
3275
+ children: ["No dedicated GPU: use x264, CRF 18, CPU preset ", _jsx(_components.code, {
3276
+ children: "slow"
3277
+ }), ", or ", _jsx(_components.code, {
3278
+ children: "medium"
3279
+ }), " if the CPU struggles."]
2738
3280
  }), "\\n"]
2739
- }), "\\n", _jsxs(_components.p, {
2740
- children: ["Access Command View through the Knowledge area at ", _jsx(_components.code, {
2741
- children: "/knowledge/command-view"
2742
- }), "."]
3281
+ }), "\\n", _jsx(_components.p, {
3282
+ children: "Set audio bitrates:"
3283
+ }), "\\n", _jsx(_components.pre, {
3284
+ children: _jsx(_components.code, {
3285
+ className: "language-text",
3286
+ children: "Output > Advanced > Audio:\\n Track 1: 320 kbps\\n Track 2: 320 kbps\\n"
3287
+ })
2743
3288
  }), "\\n", _jsx(_components.h2, {
2744
- children: "How Command View Works"
3289
+ children: "Video Settings"
2745
3290
  }), "\\n", _jsx(_components.p, {
2746
- children: "Command View is a visualization layer over the organization deployment manifest."
3291
+ children: "Use a 1080p canvas and output:"
2747
3292
  }), "\\n", _jsx(_components.pre, {
2748
3293
  children: _jsx(_components.code, {
2749
- className: "language-typescript",
2750
- children: "const yourOrgRegistry: DeploymentSpec = {\\n agents: [],\\n workflows: [],\\n triggers: [],\\n integrations: [],\\n humanCheckpoints: [],\\n relationships: {},\\n externalResources: []\\n}\\n"
3294
+ className: "language-text",
3295
+ children: "Settings > Video:\\n Base (Canvas) Resolution: 1920x1080\\n Output (Scaled) Resolution: 1920x1080\\n Downscale Filter: Lanczos (36 samples)\\n Common FPS Values: 60\\n"
2751
3296
  })
2752
3297
  }), "\\n", _jsx(_components.p, {
2753
- children: "Architecture:"
3298
+ children: "Use Rec. 709 limited-range color:"
3299
+ }), "\\n", _jsx(_components.pre, {
3300
+ children: _jsx(_components.code, {
3301
+ className: "language-text",
3302
+ children: "Settings > Advanced:\\n Color Format: NV12\\n Color Space: 709\\n Color Range: Partial\\n"
3303
+ })
3304
+ }), "\\n", _jsx(_components.p, {
3305
+ children: "YouTube expects Rec. 709 limited range. Full range can produce washed-out or overly contrasty results after processing."
3306
+ }), "\\n", _jsx(_components.p, {
3307
+ children: "For a 3440x1440 ultrawide monitor, crop the display capture to the center 16:9 region before it is downscaled:"
2754
3308
  }), "\\n", _jsxs(_components.ol, {
2755
3309
  children: ["\\n", _jsx(_components.li, {
2756
- children: "Manifest declares resources and relationships."
3310
+ children: "Add Display Capture for the primary monitor."
3311
+ }), "\\n", _jsxs(_components.li, {
3312
+ children: ["Right-click the source and open ", _jsx(_components.code, {
3313
+ children: "Transform > Edit Transform"
3314
+ }), "."]
3315
+ }), "\\n", _jsxs(_components.li, {
3316
+ children: ["Set ", _jsx(_components.code, {
3317
+ children: "Crop Left"
3318
+ }), " to ", _jsx(_components.code, {
3319
+ children: "440"
3320
+ }), " and ", _jsx(_components.code, {
3321
+ children: "Crop Right"
3322
+ }), " to ", _jsx(_components.code, {
3323
+ children: "440"
3324
+ }), "."]
3325
+ }), "\\n", _jsxs(_components.li, {
3326
+ children: ["Right-click the source again and select ", _jsx(_components.code, {
3327
+ children: "Transform > Fit to Screen"
3328
+ }), "."]
3329
+ }), "\\n"]
3330
+ }), "\\n", _jsx(_components.p, {
3331
+ children: "This crops the capture to the center 2560x1440 region. Keep recorded windows inside that center area. A Windows 11 FancyZones center 16:9 zone is useful for keeping Command Center, browser, and terminal windows inside the captured area."
3332
+ }), "\\n", _jsx(_components.p, {
3333
+ children: "Use Window Capture only when the recording is limited to one browser window. Display Capture is better for tutorials that switch windows, show the taskbar, or tile terminal and browser views."
3334
+ }), "\\n", _jsx(_components.h2, {
3335
+ children: "Audio Settings"
3336
+ }), "\\n", _jsx(_components.p, {
3337
+ children: "Global audio settings:"
3338
+ }), "\\n", _jsx(_components.pre, {
3339
+ children: _jsx(_components.code, {
3340
+ className: "language-text",
3341
+ children: "Settings > Audio:\\n Sample Rate: 48 kHz\\n Channels: Stereo\\n Desktop Audio: Default\\n Mic/Auxiliary Audio: Focusrite USB Audio (Scarlett 2i2)\\n"
3342
+ })
3343
+ }), "\\n", _jsx(_components.p, {
3344
+ children: "Set the Focusrite input in Windows before recording:"
3345
+ }), "\\n", _jsxs(_components.ol, {
3346
+ children: ["\\n", _jsx(_components.li, {
3347
+ children: "Open Windows Sound Settings."
2757
3348
  }), "\\n", _jsx(_components.li, {
2758
- children: "SDK deploy and API registration validate declared references."
3349
+ children: "Select the Focusrite USB Audio input."
2759
3350
  }), "\\n", _jsx(_components.li, {
2760
- children: "Pre-serialization computes graph data once."
3351
+ children: "Set format to 48000 Hz, 24-bit."
3352
+ }), "\\n"]
3353
+ }), "\\n", _jsx(_components.p, {
3354
+ children: "Physical Focusrite setup:"
3355
+ }), "\\n", _jsxs(_components.ul, {
3356
+ children: ["\\n", _jsx(_components.li, {
3357
+ children: "Turn 48V phantom power on for the Lewitt LCT 240 PRO condenser."
2761
3358
  }), "\\n", _jsx(_components.li, {
2762
- children: "Frontend visualizes cached graph data."
3359
+ children: "Start input gain at 12 o'clock and adjust so peaks land around -12 dB."
3360
+ }), "\\n", _jsx(_components.li, {
3361
+ children: "Keep Direct Monitor off to avoid double-monitoring."
2763
3362
  }), "\\n"]
2764
3363
  }), "\\n", _jsx(_components.p, {
2765
- children: "Command View does not create routing. It displays declarations and runtime topology data."
2766
- }), "\\n", _jsx(_components.h2, {
2767
- children: "Node Types"
3364
+ children: "Apply OBS mic filters to the Mic/Aux source in this exact order:"
2768
3365
  }), "\\n", _jsxs(_components.table, {
2769
3366
  children: [_jsx(_components.thead, {
2770
3367
  children: _jsxs(_components.tr, {
2771
3368
  children: [_jsx(_components.th, {
2772
- children: "Type"
3369
+ children: "Order"
2773
3370
  }), _jsx(_components.th, {
2774
- children: "Purpose"
3371
+ children: "Filter"
2775
3372
  }), _jsx(_components.th, {
2776
- children: "Badge info"
3373
+ children: "Settings"
2777
3374
  })]
2778
3375
  })
2779
3376
  }), _jsxs(_components.tbody, {
2780
3377
  children: [_jsxs(_components.tr, {
2781
3378
  children: [_jsx(_components.td, {
2782
- children: "Triggers"
2783
- }), _jsx(_components.td, {
2784
- children: "Entry points such as webhook, schedule, manual, or event triggers"
2785
- }), _jsx(_components.td, {
2786
- children: "Trigger type"
2787
- })]
2788
- }), _jsxs(_components.tr, {
2789
- children: [_jsx(_components.td, {
2790
- children: "Agents"
2791
- }), _jsx(_components.td, {
2792
- children: "Autonomous AI resources"
2793
- }), _jsx(_components.td, {
2794
- children: "Tool count, Knowledge Map, memory"
2795
- })]
2796
- }), _jsxs(_components.tr, {
2797
- children: [_jsx(_components.td, {
2798
- children: "Workflows"
3379
+ children: "1"
2799
3380
  }), _jsx(_components.td, {
2800
- children: "Multi-step orchestrations"
3381
+ children: "Noise Suppression"
2801
3382
  }), _jsx(_components.td, {
2802
- children: "Step count"
3383
+ children: "RNNoise"
2803
3384
  })]
2804
3385
  }), _jsxs(_components.tr, {
2805
3386
  children: [_jsx(_components.td, {
2806
- children: "Integrations"
3387
+ children: "2"
2807
3388
  }), _jsx(_components.td, {
2808
- children: "External service connections"
3389
+ children: "Noise Gate"
2809
3390
  }), _jsx(_components.td, {
2810
- children: "Connection status"
3391
+ children: "Close -40 dB, Open -35 dB, Attack 10 ms, Hold 200 ms, Release 100 ms"
2811
3392
  })]
2812
3393
  }), _jsxs(_components.tr, {
2813
3394
  children: [_jsx(_components.td, {
2814
- children: "External resources"
3395
+ children: "3"
2815
3396
  }), _jsx(_components.td, {
2816
- children: "Third-party platforms such as n8n, Make, or Zapier"
3397
+ children: "Compressor"
2817
3398
  }), _jsx(_components.td, {
2818
- children: "Platform name"
3399
+ children: "Ratio 3:1, Threshold -18 dB, Attack 6 ms, Release 60 ms, Output Gain 6 dB"
2819
3400
  })]
2820
3401
  }), _jsxs(_components.tr, {
2821
3402
  children: [_jsx(_components.td, {
2822
- children: "Human checkpoints"
3403
+ children: "4"
2823
3404
  }), _jsx(_components.td, {
2824
- children: "Human decision points"
3405
+ children: "Limiter"
2825
3406
  }), _jsx(_components.td, {
2826
- children: "Approval required"
3407
+ children: "Threshold -3 dB, Release 60 ms"
2827
3408
  })]
2828
3409
  })]
2829
3410
  })]
2830
3411
  }), "\\n", _jsx(_components.p, {
2831
- children: "Node badges:"
2832
- }), "\\n", _jsxs(_components.ul, {
2833
- children: ["\\n", _jsx(_components.li, {
2834
- children: "Agents show tool count, Knowledge Map, and memory."
2835
- }), "\\n", _jsx(_components.li, {
2836
- children: "Workflows show step count."
2837
- }), "\\n", _jsx(_components.li, {
2838
- children: "Integrations show connection status."
2839
- }), "\\n", _jsx(_components.li, {
2840
- children: "Triggers show webhook, schedule, manual, or event type."
2841
- }), "\\n", _jsx(_components.li, {
2842
- children: "External resources show platform."
2843
- }), "\\n"]
3412
+ children: "This order removes steady noise first, gates silence-period noise second, evens speech dynamics third, and catches peaks last. Do not add a Gain filter unless the signal is still too quiet after setting the Scarlett gain."
2844
3413
  }), "\\n", _jsx(_components.h2, {
2845
- children: "Edge Types"
3414
+ children: "Multi-Track Audio"
3415
+ }), "\\n", _jsx(_components.p, {
3416
+ children: "Record mixed audio and isolated mic audio:"
3417
+ }), "\\n", _jsx(_components.pre, {
3418
+ children: _jsx(_components.code, {
3419
+ className: "language-text",
3420
+ children: "Settings > Output > Advanced > Recording Tab:\\n Audio Track: check 1 and 2\\n"
3421
+ })
3422
+ }), "\\n", _jsxs(_components.p, {
3423
+ children: ["Route tracks in ", _jsx(_components.code, {
3424
+ children: "Audio Mixer > Advanced Audio Properties"
3425
+ }), ":"]
2846
3426
  }), "\\n", _jsxs(_components.table, {
2847
3427
  children: [_jsx(_components.thead, {
2848
3428
  children: _jsxs(_components.tr, {
2849
3429
  children: [_jsx(_components.th, {
2850
- children: "Type"
3430
+ children: "Source"
2851
3431
  }), _jsx(_components.th, {
2852
- children: "Meaning"
3432
+ children: "Track 1"
3433
+ }), _jsx(_components.th, {
3434
+ children: "Track 2"
2853
3435
  })]
2854
3436
  })
2855
3437
  }), _jsxs(_components.tbody, {
2856
3438
  children: [_jsxs(_components.tr, {
2857
3439
  children: [_jsx(_components.td, {
2858
- children: "Triggers"
3440
+ children: "Desktop Audio"
2859
3441
  }), _jsx(_components.td, {
2860
- children: "A trigger initiates a resource"
2861
- })]
2862
- }), _jsxs(_components.tr, {
2863
- children: [_jsx(_components.td, {
2864
- children: "Invokes"
3442
+ children: "checked"
2865
3443
  }), _jsx(_components.td, {
2866
- children: "A resource calls another resource"
3444
+ children: "empty"
2867
3445
  })]
2868
3446
  }), _jsxs(_components.tr, {
2869
3447
  children: [_jsx(_components.td, {
2870
- children: "Uses"
3448
+ children: "Mic/Aux"
2871
3449
  }), _jsx(_components.td, {
2872
- children: "A resource uses an integration"
2873
- })]
2874
- }), _jsxs(_components.tr, {
2875
- children: [_jsx(_components.td, {
2876
- children: "Approval"
3450
+ children: "checked"
2877
3451
  }), _jsx(_components.td, {
2878
- children: "A resource requests human approval"
3452
+ children: "checked"
2879
3453
  })]
2880
3454
  })]
2881
3455
  })]
3456
+ }), "\\n", _jsx(_components.p, {
3457
+ children: "Track 1 is YouTube-ready mixed audio. Track 2 is mic-only audio for cleanup or editing."
2882
3458
  }), "\\n", _jsx(_components.h2, {
2883
- children: "Declaring Relationships"
3459
+ children: "Scene Setup"
3460
+ }), "\\n", _jsx(_components.p, {
3461
+ children: "Create two scenes."
2884
3462
  }), "\\n", _jsx(_components.h3, {
2885
- children: "Internal Resources"
2886
- }), "\\n", _jsxs(_components.p, {
2887
- children: ["Use ", _jsx(_components.code, {
2888
- children: "relationships"
2889
- }), " to declare what agents and workflows invoke or use."]
3463
+ children: "Face + Screen"
3464
+ }), "\\n", _jsx(_components.p, {
3465
+ children: "Use this scene for the intro and occasional commentary call-ins."
3466
+ }), "\\n", _jsx(_components.p, {
3467
+ children: "Sources from bottom to top:"
3468
+ }), "\\n", _jsxs(_components.ol, {
3469
+ children: ["\\n", _jsxs(_components.li, {
3470
+ children: ["Display Capture named ", _jsx(_components.code, {
3471
+ children: "Screen"
3472
+ }), "."]
3473
+ }), "\\n", _jsxs(_components.li, {
3474
+ children: ["Video Capture Device named ", _jsx(_components.code, {
3475
+ children: "Facecam"
3476
+ }), "."]
3477
+ }), "\\n", _jsx(_components.li, {
3478
+ children: "Optional image source for a circle border or glow."
3479
+ }), "\\n"]
3480
+ }), "\\n", _jsx(_components.p, {
3481
+ children: "Display Capture settings:"
2890
3482
  }), "\\n", _jsx(_components.pre, {
2891
3483
  children: _jsx(_components.code, {
2892
- className: "language-typescript",
2893
- children: "const relationships: ResourceRelationships = {\\n 'executive-agent': {\\n triggers: {\\n workflows: ['report-workflow'],\\n agents: ['research-agent']\\n },\\n uses: {\\n integrations: ['integration-gmail', 'integration-attio']\\n }\\n }\\n}\\n"
3484
+ className: "language-text",
3485
+ children: "Source: Display Capture\\nDisplay: Primary monitor\\nCapture Method: Windows 10 (1903 and later)\\nCapture Cursor: checked\\n"
2894
3486
  })
2895
- }), "\\n", _jsx(_components.h3, {
2896
- children: "Triggers"
2897
3487
  }), "\\n", _jsx(_components.p, {
2898
- children: "Triggers declare their own metadata, while routing is declared through relationships."
3488
+ children: "Apply the ultrawide crop to this source when recording from the 3440x1440 monitor."
3489
+ }), "\\n", _jsx(_components.p, {
3490
+ children: "Facecam settings:"
2899
3491
  }), "\\n", _jsx(_components.pre, {
2900
3492
  children: _jsx(_components.code, {
2901
- className: "language-typescript",
2902
- children: "const triggers: TriggerDefinition[] = [\\n {\\n resourceId: 'webhook-customer-created',\\n type: 'trigger',\\n triggerType: 'webhook',\\n name: 'Customer Created Webhook',\\n description: 'Triggers when a customer is created in Shopify',\\n status: 'prod',\\n webhookPath: '/webhooks/customer-created'\\n }\\n]\\n"
3493
+ className: "language-text",
3494
+ children: "Device: Insta360 Link 2C\\nResolution: 1920x1080\\nFPS: 60\\nVideo Format: MJPEG or default\\n"
2903
3495
  })
2904
3496
  }), "\\n", _jsx(_components.p, {
2905
- children: "Trigger routing is not configured on the trigger object itself."
2906
- }), "\\n", _jsx(_components.h3, {
2907
- children: "External Resources"
2908
- }), "\\n", _jsx(_components.p, {
2909
- children: "External resources can declare what they trigger and which integrations they use."
3497
+ children: "Create a 512x512 PNG with a white circle on a black background and store it permanently, for example:"
2910
3498
  }), "\\n", _jsx(_components.pre, {
2911
3499
  children: _jsx(_components.code, {
2912
- className: "language-typescript",
2913
- children: "const externalResources: ExternalResourceDefinition[] = [\\n {\\n resourceId: 'external-n8n-sync',\\n type: 'external',\\n platform: 'n8n',\\n name: 'N8N Product Sync',\\n description: 'Syncs product data from Shopify to internal database',\\n status: 'prod',\\n triggers: { workflows: ['internal-sync-workflow'] },\\n uses: { integrations: ['integration-shopify'] }\\n }\\n]\\n"
3500
+ className: "language-text",
3501
+ children: "E:\\\\OBS\\\\circle-mask.png\\n"
2914
3502
  })
2915
3503
  }), "\\n", _jsx(_components.p, {
2916
- children: "These declarations document the relationship. They do not programmatically connect the external platform."
2917
- }), "\\n", _jsx(_components.h3, {
2918
- children: "Human Checkpoints"
2919
- }), "\\n", _jsx(_components.p, {
2920
- children: "Human checkpoints declare which resources request approval and where approval can route."
3504
+ children: "Apply it to the Facecam source:"
2921
3505
  }), "\\n", _jsx(_components.pre, {
2922
3506
  children: _jsx(_components.code, {
2923
- className: "language-typescript",
2924
- children: "const humanCheckpoints: HumanCheckpointDefinition[] = [\\n {\\n resourceId: 'approval-sales',\\n name: 'Sales Approval Queue',\\n description: 'Human approval for sales proposals',\\n status: 'prod',\\n requestedBy: { agents: ['sales-agent'] },\\n routesTo: { workflows: ['send-proposal-workflow'] }\\n }\\n]\\n"
3507
+ className: "language-text",
3508
+ children: "Filters > Image Mask/Blend:\\n Type: Alpha Mask (Colour Channel)\\n Path: E:\\\\OBS\\\\circle-mask.png\\n"
2925
3509
  })
2926
3510
  }), "\\n", _jsx(_components.p, {
2927
- children: "Actual human approval decisions are runtime choices, not automatic routing from the declaration alone."
2928
- }), "\\n", _jsx(_components.h2, {
2929
- children: "Validation"
2930
- }), "\\n", _jsx(_components.p, {
2931
- children: "Command View shows relationships validated during deploy and API registration."
3511
+ children: "Resize the facecam source to roughly 300-400 px diameter and place it in a lower corner."
3512
+ }), "\\n", _jsx(_components.h3, {
3513
+ children: "Screen Only"
2932
3514
  }), "\\n", _jsx(_components.p, {
2933
- children: "Validation checks:"
2934
- }), "\\n", _jsxs(_components.ul, {
2935
- children: ["\\n", _jsx(_components.li, {
2936
- children: "Referenced resource IDs exist."
2937
- }), "\\n", _jsx(_components.li, {
2938
- children: "Agent and workflow IDs are unique."
2939
- }), "\\n", _jsx(_components.li, {
2940
- children: "External resource references are valid."
2941
- }), "\\n", _jsx(_components.li, {
2942
- children: "Human checkpoint routes exist."
2943
- }), "\\n", _jsx(_components.li, {
2944
- children: "Model configs have valid providers, models, and API key references."
2945
- }), "\\n"]
3515
+ children: "Use this scene for the main tutorial content."
2946
3516
  }), "\\n", _jsxs(_components.p, {
2947
- children: ["These checks cover declared relationships and registry consistency. They do not infer every runtime ", _jsx(_components.code, {
2948
- children: "execution.trigger(...)"
2949
- }), " target, especially when the target is computed dynamically."]
3517
+ children: ["Add the existing ", _jsx(_components.code, {
3518
+ children: "Screen"
3519
+ }), " source from the Face + Screen scene. Do not duplicate the display capture source."]
2950
3520
  }), "\\n", _jsx(_components.p, {
2951
- children: "When validation errors occur, API startup fails with a descriptive error such as:"
3521
+ children: "Hotkeys:"
2952
3522
  }), "\\n", _jsx(_components.pre, {
2953
3523
  children: _jsx(_components.code, {
2954
3524
  className: "language-text",
2955
- children: "RegistryValidationError: [YourOrg] Resource 'my-agent' uses non-existent integration: integration-attio\\n"
3525
+ children: "Settings > Hotkeys:\\n Switch to Scene \\"Face + Screen\\": F5\\n Switch to Scene \\"Screen Only\\": F6\\n Start Recording: Ctrl+F9\\n Stop Recording: Ctrl+F10\\n"
2956
3526
  })
2957
3527
  }), "\\n", _jsx(_components.p, {
2958
- children: "Fix validation errors by updating the manifest to reference the correct IDs or by adding the missing resource definition."
2959
- }), "\\n", _jsx(_components.h2, {
2960
- children: "Using Command View"
2961
- }), "\\n", _jsx(_components.h3, {
2962
- children: "Visualization Features"
3528
+ children: "Avoid hotkeys that collide with the app being recorded. If using F5 inside a browser-heavy recording, choose a different key because F5 refreshes the page."
2963
3529
  }), "\\n", _jsx(_components.p, {
2964
- children: "Command View uses Cytoscape graph modes:"
2965
- }), "\\n", _jsxs(_components.ul, {
3530
+ children: "Recording flow:"
3531
+ }), "\\n", _jsxs(_components.ol, {
2966
3532
  children: ["\\n", _jsxs(_components.li, {
2967
- children: [_jsx(_components.strong, {
2968
- children: "Map:"
2969
- }), " keeps organization structure visible and honors hidden-resource visibility."]
3533
+ children: ["Start on ", _jsx(_components.code, {
3534
+ children: "Face + Screen"
3535
+ }), "."]
2970
3536
  }), "\\n", _jsxs(_components.li, {
2971
- children: [_jsx(_components.strong, {
2972
- children: "Trace:"
2973
- }), " resolves directed paths and reveals resources for the active trace."]
3537
+ children: ["Press ", _jsx(_components.code, {
3538
+ children: "Ctrl+F9"
3539
+ }), "."]
3540
+ }), "\\n", _jsx(_components.li, {
3541
+ children: "Record a 15-30 second face-camera intro."
2974
3542
  }), "\\n", _jsxs(_components.li, {
2975
- children: [_jsx(_components.strong, {
2976
- children: "Impact:"
2977
- }), " pivots around the selected node and reveals related resources for impact review."]
3543
+ children: ["Press ", _jsx(_components.code, {
3544
+ children: "F6"
3545
+ }), " for ", _jsx(_components.code, {
3546
+ children: "Screen Only"
3547
+ }), "."]
3548
+ }), "\\n", _jsx(_components.li, {
3549
+ children: "Record the screen walkthrough."
3550
+ }), "\\n", _jsxs(_components.li, {
3551
+ children: ["Optionally press ", _jsx(_components.code, {
3552
+ children: "F5"
3553
+ }), " to bring face-camera back for commentary."]
3554
+ }), "\\n", _jsxs(_components.li, {
3555
+ children: ["Press ", _jsx(_components.code, {
3556
+ children: "Ctrl+F10"
3557
+ }), " to stop."]
2978
3558
  }), "\\n"]
2979
3559
  }), "\\n", _jsx(_components.p, {
2980
- children: "Filter panel capabilities:"
3560
+ children: "For a fade, set Scene Transitions to Fade with a 300 ms duration."
3561
+ }), "\\n", _jsx(_components.h2, {
3562
+ children: "Windows 11 Checks"
3563
+ }), "\\n", _jsx(_components.p, {
3564
+ children: "Before a recording session:"
2981
3565
  }), "\\n", _jsxs(_components.ul, {
2982
3566
  children: ["\\n", _jsx(_components.li, {
2983
- children: "Search across nodes, relationships, and IDs."
3567
+ children: "Disable Xbox Game Bar."
2984
3568
  }), "\\n", _jsx(_components.li, {
2985
- children: "Filter by node kind, resource type, environment, topology presence, integrations, and resource facets."
3569
+ children: "Leave GPU scheduling enabled."
2986
3570
  }), "\\n", _jsx(_components.li, {
2987
- children: "Toggle resource visibility and diagnostic/testing resource visibility."
3571
+ children: "Run OBS as Administrator if frame drops or black-screen capture occur."
2988
3572
  }), "\\n", _jsx(_components.li, {
2989
- children: "Show visible and hidden resource counts in the same control surface."
3573
+ children: "Set OBS process priority to Above Normal if the recording drops frames."
3574
+ }), "\\n", _jsx(_components.li, {
3575
+ children: "Use the High Performance power plan during recording."
2990
3576
  }), "\\n"]
3577
+ }), "\\n", _jsx(_components.h2, {
3578
+ children: "Upload Quality"
2991
3579
  }), "\\n", _jsx(_components.p, {
2992
- children: "Hidden resource behavior:"
3580
+ children: "YouTube re-encodes every upload. The goal is to provide clean source material."
2993
3581
  }), "\\n", _jsxs(_components.ul, {
2994
3582
  children: ["\\n", _jsx(_components.li, {
2995
- children: "Resource nodes are hidden by default so the organization structure remains readable."
3583
+ children: "Do not upload at YouTube's minimum recommended bitrate."
2996
3584
  }), "\\n", _jsx(_components.li, {
2997
- children: "Structural nodes remain visible as the navigation skeleton."
3585
+ children: "Do not run the recording through HandBrake or another extra encode just to save space."
2998
3586
  }), "\\n", _jsx(_components.li, {
2999
- children: "Selecting a visible node can reveal directly connected hidden resources."
3587
+ children: "Upload the OBS-remuxed MP4 directly unless the video was edited."
3000
3588
  }), "\\n", _jsx(_components.li, {
3001
- children: "Diagnostic and testing resources are hidden by default and can be revealed from the filter panel."
3589
+ children: "If editing in DaVinci Resolve or Premiere, render H.264 at 50 Mbps CBR for 1080p60 or use the YouTube preset."
3002
3590
  }), "\\n"]
3003
3591
  }), "\\n", _jsx(_components.p, {
3004
- children: "Expand Around behavior:"
3592
+ children: "The OBS output should match YouTube's expected upload shape: MP4 container, H.264 video, AAC-LC audio, 48 kHz stereo, Rec. 709 limited range."
3593
+ }), "\\n", _jsx(_components.h2, {
3594
+ children: "Pre-Recording Checklist"
3005
3595
  }), "\\n", _jsxs(_components.ul, {
3006
3596
  children: ["\\n", _jsx(_components.li, {
3007
- children: "Select a node, open Details, and use Expand Around to preview nearby graph context before revealing it."
3597
+ children: "Scarlett 2i2 phantom power is on and voice peaks around -12 dB."
3598
+ }), "\\n", _jsxs(_components.li, {
3599
+ children: ["Correct OBS scene is selected, usually ", _jsx(_components.code, {
3600
+ children: "Face + Screen"
3601
+ }), "."]
3008
3602
  }), "\\n", _jsx(_components.li, {
3009
- children: "Semantic presets cover coverage, operational dependencies, organization context, and impact paths."
3603
+ children: "Insta360 Link Controller has AI tracking and HDR enabled when needed."
3010
3604
  }), "\\n", _jsx(_components.li, {
3011
- children: "Feature, surface, entity, and capability nodes default to Coverage."
3605
+ children: "Door is closed, fan or AC is off, and the room is controlled."
3012
3606
  }), "\\n", _jsx(_components.li, {
3013
- children: "Resource nodes default to Operational Dependencies."
3607
+ children: "OBS mic meter peaks in green or yellow, never red."
3014
3608
  }), "\\n", _jsx(_components.li, {
3015
- children: "Preview counts show hidden resources before Apply reveals the graph patch."
3609
+ children: "A 10-second test recording has been played back for audio, video quality, and facecam position."
3610
+ }), "\\n", _jsxs(_components.li, {
3611
+ children: ["The 12-minute warm-up from ", _jsx(_components.code, {
3612
+ children: "knowledge.youtube-mental-prep"
3613
+ }), " is complete when recording on camera."]
3016
3614
  }), "\\n"]
3615
+ })]
3616
+ });
3617
+ }
3618
+ function MDXContent(props = {}) {
3619
+ const {wrapper: MDXLayout} = props.components || ({});
3620
+ return MDXLayout ? _jsx(MDXLayout, {
3621
+ ...props,
3622
+ children: _jsx(_createMdxContent, {
3623
+ ...props
3624
+ })
3625
+ }) : _createMdxContent(props);
3626
+ }
3627
+ return {
3628
+ default: MDXContent
3629
+ };
3630
+ `),
3631
+ "knowledge.finance-operations-playbook": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n li: "li",\n ol: "ol",\n p: "p",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "Elevasis finance operations run through Xero, with Stripe handling payment collection. Xero is the single source of truth for financial records: business checking bank feeds, Stripe payouts, contractor payments, expenses, invoices, receivables, and year-end exports."\n }), "\\n", _jsx(_components.p, {\n children: "The finance loop has three connected parts:"\n }), "\\n", _jsxs(_components.ol, {\n children: ["\\n", _jsx(_components.li, {\n children: "Invoicing captures client revenue through monthly retainers and Stripe Checkout."\n }), "\\n", _jsx(_components.li, {\n children: "Accounting records and reconciles bank transactions, Stripe payouts, contractor payments, and operating expenses."\n }), "\\n", _jsx(_components.li, {\n children: "Taxes use accurate Xero records for quarterly estimates, deductions, 1099s, and annual filing."\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "Accounting and Reconciliation"\n }), "\\n", _jsx(_components.p, {\n children: "Reconcile bank transactions in Xero weekly. Match each bank feed entry to its real-world source before month end."\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Stripe payouts should match against Stripe bank feed activity."\n }), "\\n", _jsx(_components.li, {\n children: "Contractor payments should match checking account transfers."\n }), "\\n", _jsx(_components.li, {\n children: "Software subscriptions such as Railway, Vercel, Supabase, WorkOS, and OpenAI should be categorized as operating expenses."\n }), "\\n", _jsx(_components.li, {\n children: "Unmatched or ambiguous transactions should be flagged for manual review before monthly close."\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Maintain the core chart of accounts around revenue, cost of sales, operating expenses, and owner draws. Revenue includes client retainers and one-time project fees. Cost of sales covers contractor labor directly tied to client work. Operating expenses cover SaaS tools, hosting, banking fees, and professional services. Owner draws track business distributions."\n }), "\\n", _jsx(_components.p, {\n children: "Configure Xero with the connected business checking account, the default tax rate for the business jurisdiction, and the correct financial year end in organization settings."\n }), "\\n", _jsx(_components.h2, {\n children: "Invoicing and Accounts Receivable"\n }), "\\n", _jsx(_components.p, {\n children: "Client billing runs on a monthly retainer model. Create invoices in Xero at the start of each billing period, send them by Xero email or Stripe Checkout link, record payment after Stripe confirms checkout completion, and reconcile the Stripe payout in Xero."\n }), "\\n", _jsx(_components.p, {\n children: "Use Xero repeating invoices for monthly retainers:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Frequency: monthly."\n }), "\\n", _jsx(_components.li, {\n children: "Start date: billing cycle start date."\n }), "\\n", _jsx(_components.li, {\n children: "Approval: automatic approval where the billing terms are stable."\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Configure invoice reminders around the due date: a courtesy reminder 3 days before due date, an overdue notice 1 day after due date, and an escalation notice 7 days after due date."\n }), "\\n", _jsx(_components.p, {\n children: "For invoices more than 14 days overdue, contact the client directly through the active communication channel, pause active work pending payment confirmation, and resolve the balance before the next billing cycle."\n }), "\\n", _jsx(_components.h2, {\n children: "Taxes"\n }), "\\n", _jsx(_components.p, {\n children: "Tax work depends on accurate Xero records throughout the year. As a pass-through entity, Elevasis business income flows to the owner personal return, so quarterly estimates reduce underpayment risk and year-end exports should be clean enough for a CPA or tax preparer."\n }), "\\n", _jsx(_components.p, {\n children: "Quarterly estimated payment targets:"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Q1: April 15."\n }), "\\n", _jsx(_components.li, {\n children: "Q2: June 15."\n }), "\\n", _jsx(_components.li, {\n children: "Q3: September 15."\n }), "\\n", _jsx(_components.li, {\n children: "Q4: January 15 of the following year."\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Estimate payments as roughly 25-30% of net profit for the quarter and pay via IRS Direct Pay or EFTPS."\n }), "\\n", _jsx(_components.p, {\n children: "Track deductible expenses in Xero during the year: SaaS subscriptions, contractor payments, home office expenses where applicable, professional development, courses, and business banking fees. Keep digital receipts organized by year in the business records folder."\n }), "\\n", _jsx(_components.p, {\n children: "Issue 1099-NEC forms to US-based contractors paid more than $600 in a calendar year. Collect a W-9 before first payment, track annual contractor totals in Xero, file 1099-NEC forms by January 31 of the following year, and file the 1096 summary with the IRS when required."\n }), "\\n", _jsx(_components.p, {\n children: "At year end, export the Xero profit and loss statement and balance sheet. Provide them to the CPA or tax preparer with issued 1099s, bank statements for the business year, mileage logs if applicable, and home office documentation if applicable."\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
3632
+ "knowledge.platform-command-view": makeKnowledgeComponent(`"use strict";
3633
+ const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
3634
+ function _createMdxContent(props) {
3635
+ const _components = {
3636
+ code: "code",
3637
+ h2: "h2",
3638
+ h3: "h3",
3639
+ li: "li",
3640
+ ol: "ol",
3641
+ p: "p",
3642
+ pre: "pre",
3643
+ strong: "strong",
3644
+ table: "table",
3645
+ tbody: "tbody",
3646
+ td: "td",
3647
+ th: "th",
3648
+ thead: "thead",
3649
+ tr: "tr",
3650
+ ul: "ul",
3651
+ ...props.components
3652
+ };
3653
+ return _jsxs(_Fragment, {
3654
+ children: [_jsx(_components.h2, {
3655
+ children: "Overview"
3017
3656
  }), "\\n", _jsx(_components.p, {
3018
- children: "Read-only constraints:"
3657
+ children: "Command View visualizes an organization's automation landscape: agents, workflows, triggers, integrations, external resources, and human checkpoints, plus the relationships between them."
3658
+ }), "\\n", _jsx(_components.p, {
3659
+ children: "It answers operational questions such as:"
3019
3660
  }), "\\n", _jsxs(_components.ul, {
3020
3661
  children: ["\\n", _jsx(_components.li, {
3021
- children: "No drag and drop."
3662
+ children: "What does this agent talk to?"
3022
3663
  }), "\\n", _jsx(_components.li, {
3023
- children: "No connection editing."
3664
+ children: "If a provider goes down, what breaks?"
3024
3665
  }), "\\n", _jsx(_components.li, {
3025
- children: "No graph mutation from the visualization layer."
3666
+ children: "What is connected to the CRM?"
3667
+ }), "\\n", _jsx(_components.li, {
3668
+ children: "Which resources are hidden, diagnostic-only, or currently relevant to this trace?"
3026
3669
  }), "\\n"]
3027
- }), "\\n", _jsx(_components.h3, {
3028
- children: "Manifest Debugging"
3670
+ }), "\\n", _jsxs(_components.p, {
3671
+ children: ["Access Command View through the Knowledge area at ", _jsx(_components.code, {
3672
+ children: "/knowledge/command-view"
3673
+ }), "."]
3674
+ }), "\\n", _jsx(_components.h2, {
3675
+ children: "How Command View Works"
3029
3676
  }), "\\n", _jsx(_components.p, {
3030
- children: "Use Command View to verify:"
3031
- }), "\\n", _jsxs(_components.ol, {
3677
+ children: "Command View is a visualization layer over the organization deployment manifest."
3678
+ }), "\\n", _jsx(_components.pre, {
3679
+ children: _jsx(_components.code, {
3680
+ className: "language-typescript",
3681
+ children: "const yourOrgRegistry: DeploymentSpec = {\\n agents: [],\\n workflows: [],\\n triggers: [],\\n integrations: [],\\n humanCheckpoints: [],\\n relationships: {},\\n externalResources: []\\n}\\n"
3682
+ })
3683
+ }), "\\n", _jsx(_components.p, {
3684
+ children: "Architecture:"
3685
+ }), "\\n", _jsxs(_components.ol, {
3032
3686
  children: ["\\n", _jsx(_components.li, {
3033
- children: "Resources appear as nodes."
3034
- }), "\\n", _jsx(_components.li, {
3035
- children: "Relationships show as edges."
3687
+ children: "Manifest declares resources and relationships."
3036
3688
  }), "\\n", _jsx(_components.li, {
3037
- children: "Integration connections exist."
3689
+ children: "SDK deploy and API registration validate declared references."
3038
3690
  }), "\\n", _jsx(_components.li, {
3039
- children: "Trigger invocations are declared correctly."
3691
+ children: "Pre-serialization computes graph data once."
3040
3692
  }), "\\n", _jsx(_components.li, {
3041
- children: "Orphaned resources are intentional."
3693
+ children: "Frontend visualizes cached graph data."
3042
3694
  }), "\\n"]
3043
3695
  }), "\\n", _jsx(_components.p, {
3044
- children: "Common issues:"
3696
+ children: "Command View does not create routing. It displays declarations and runtime topology data."
3697
+ }), "\\n", _jsx(_components.h2, {
3698
+ children: "Node Types"
3699
+ }), "\\n", _jsxs(_components.table, {
3700
+ children: [_jsx(_components.thead, {
3701
+ children: _jsxs(_components.tr, {
3702
+ children: [_jsx(_components.th, {
3703
+ children: "Type"
3704
+ }), _jsx(_components.th, {
3705
+ children: "Purpose"
3706
+ }), _jsx(_components.th, {
3707
+ children: "Badge info"
3708
+ })]
3709
+ })
3710
+ }), _jsxs(_components.tbody, {
3711
+ children: [_jsxs(_components.tr, {
3712
+ children: [_jsx(_components.td, {
3713
+ children: "Triggers"
3714
+ }), _jsx(_components.td, {
3715
+ children: "Entry points such as webhook, schedule, manual, or event triggers"
3716
+ }), _jsx(_components.td, {
3717
+ children: "Trigger type"
3718
+ })]
3719
+ }), _jsxs(_components.tr, {
3720
+ children: [_jsx(_components.td, {
3721
+ children: "Agents"
3722
+ }), _jsx(_components.td, {
3723
+ children: "Autonomous AI resources"
3724
+ }), _jsx(_components.td, {
3725
+ children: "Tool count, Knowledge Map, memory"
3726
+ })]
3727
+ }), _jsxs(_components.tr, {
3728
+ children: [_jsx(_components.td, {
3729
+ children: "Workflows"
3730
+ }), _jsx(_components.td, {
3731
+ children: "Multi-step orchestrations"
3732
+ }), _jsx(_components.td, {
3733
+ children: "Step count"
3734
+ })]
3735
+ }), _jsxs(_components.tr, {
3736
+ children: [_jsx(_components.td, {
3737
+ children: "Integrations"
3738
+ }), _jsx(_components.td, {
3739
+ children: "External service connections"
3740
+ }), _jsx(_components.td, {
3741
+ children: "Connection status"
3742
+ })]
3743
+ }), _jsxs(_components.tr, {
3744
+ children: [_jsx(_components.td, {
3745
+ children: "External resources"
3746
+ }), _jsx(_components.td, {
3747
+ children: "Third-party platforms such as n8n, Make, or Zapier"
3748
+ }), _jsx(_components.td, {
3749
+ children: "Platform name"
3750
+ })]
3751
+ }), _jsxs(_components.tr, {
3752
+ children: [_jsx(_components.td, {
3753
+ children: "Human checkpoints"
3754
+ }), _jsx(_components.td, {
3755
+ children: "Human decision points"
3756
+ }), _jsx(_components.td, {
3757
+ children: "Approval required"
3758
+ })]
3759
+ })]
3760
+ })]
3761
+ }), "\\n", _jsx(_components.p, {
3762
+ children: "Node badges:"
3045
3763
  }), "\\n", _jsxs(_components.ul, {
3046
3764
  children: ["\\n", _jsx(_components.li, {
3047
- children: "Typo in a resource ID reference."
3765
+ children: "Agents show tool count, Knowledge Map, and memory."
3048
3766
  }), "\\n", _jsx(_components.li, {
3049
- children: "Missing relationship declaration."
3767
+ children: "Workflows show step count."
3050
3768
  }), "\\n", _jsx(_components.li, {
3051
- children: "Incorrect integration credential name."
3769
+ children: "Integrations show connection status."
3052
3770
  }), "\\n", _jsx(_components.li, {
3053
- children: "External resource missing a bidirectional declaration."
3771
+ children: "Triggers show webhook, schedule, manual, or event type."
3772
+ }), "\\n", _jsx(_components.li, {
3773
+ children: "External resources show platform."
3054
3774
  }), "\\n"]
3775
+ }), "\\n", _jsx(_components.h2, {
3776
+ children: "Edge Types"
3777
+ }), "\\n", _jsxs(_components.table, {
3778
+ children: [_jsx(_components.thead, {
3779
+ children: _jsxs(_components.tr, {
3780
+ children: [_jsx(_components.th, {
3781
+ children: "Type"
3782
+ }), _jsx(_components.th, {
3783
+ children: "Meaning"
3784
+ })]
3785
+ })
3786
+ }), _jsxs(_components.tbody, {
3787
+ children: [_jsxs(_components.tr, {
3788
+ children: [_jsx(_components.td, {
3789
+ children: "Triggers"
3790
+ }), _jsx(_components.td, {
3791
+ children: "A trigger initiates a resource"
3792
+ })]
3793
+ }), _jsxs(_components.tr, {
3794
+ children: [_jsx(_components.td, {
3795
+ children: "Invokes"
3796
+ }), _jsx(_components.td, {
3797
+ children: "A resource calls another resource"
3798
+ })]
3799
+ }), _jsxs(_components.tr, {
3800
+ children: [_jsx(_components.td, {
3801
+ children: "Uses"
3802
+ }), _jsx(_components.td, {
3803
+ children: "A resource uses an integration"
3804
+ })]
3805
+ }), _jsxs(_components.tr, {
3806
+ children: [_jsx(_components.td, {
3807
+ children: "Approval"
3808
+ }), _jsx(_components.td, {
3809
+ children: "A resource requests human approval"
3810
+ })]
3811
+ })]
3812
+ })]
3813
+ }), "\\n", _jsx(_components.h2, {
3814
+ children: "Declaring Relationships"
3055
3815
  }), "\\n", _jsx(_components.h3, {
3056
- children: "System Understanding"
3816
+ children: "Internal Resources"
3817
+ }), "\\n", _jsxs(_components.p, {
3818
+ children: ["Use ", _jsx(_components.code, {
3819
+ children: "relationships"
3820
+ }), " to declare what agents and workflows invoke or use."]
3821
+ }), "\\n", _jsx(_components.pre, {
3822
+ children: _jsx(_components.code, {
3823
+ className: "language-typescript",
3824
+ children: "const relationships: ResourceRelationships = {\\n 'executive-agent': {\\n triggers: {\\n workflows: ['report-workflow'],\\n agents: ['research-agent']\\n },\\n uses: {\\n integrations: ['integration-gmail', 'integration-attio']\\n }\\n }\\n}\\n"
3825
+ })
3826
+ }), "\\n", _jsx(_components.h3, {
3827
+ children: "Triggers"
3057
3828
  }), "\\n", _jsx(_components.p, {
3058
- children: "Useful exploration questions:"
3829
+ children: "Triggers declare their own metadata, while routing is declared through relationships."
3830
+ }), "\\n", _jsx(_components.pre, {
3831
+ children: _jsx(_components.code, {
3832
+ className: "language-typescript",
3833
+ children: "const triggers: TriggerDefinition[] = [\\n {\\n resourceId: 'webhook-customer-created',\\n type: 'trigger',\\n triggerType: 'webhook',\\n name: 'Customer Created Webhook',\\n description: 'Triggers when a customer is created in Shopify',\\n status: 'prod',\\n webhookPath: '/webhooks/customer-created'\\n }\\n]\\n"
3834
+ })
3835
+ }), "\\n", _jsx(_components.p, {
3836
+ children: "Trigger routing is not configured on the trigger object itself."
3837
+ }), "\\n", _jsx(_components.h3, {
3838
+ children: "External Resources"
3839
+ }), "\\n", _jsx(_components.p, {
3840
+ children: "External resources can declare what they trigger and which integrations they use."
3841
+ }), "\\n", _jsx(_components.pre, {
3842
+ children: _jsx(_components.code, {
3843
+ className: "language-typescript",
3844
+ children: "const externalResources: ExternalResourceDefinition[] = [\\n {\\n resourceId: 'external-n8n-sync',\\n type: 'external',\\n platform: 'n8n',\\n name: 'N8N Product Sync',\\n description: 'Syncs product data from Shopify to internal database',\\n status: 'prod',\\n triggers: { workflows: ['internal-sync-workflow'] },\\n uses: { integrations: ['integration-shopify'] }\\n }\\n]\\n"
3845
+ })
3846
+ }), "\\n", _jsx(_components.p, {
3847
+ children: "These declarations document the relationship. They do not programmatically connect the external platform."
3848
+ }), "\\n", _jsx(_components.h3, {
3849
+ children: "Human Checkpoints"
3850
+ }), "\\n", _jsx(_components.p, {
3851
+ children: "Human checkpoints declare which resources request approval and where approval can route."
3852
+ }), "\\n", _jsx(_components.pre, {
3853
+ children: _jsx(_components.code, {
3854
+ className: "language-typescript",
3855
+ children: "const humanCheckpoints: HumanCheckpointDefinition[] = [\\n {\\n resourceId: 'approval-sales',\\n name: 'Sales Approval Queue',\\n description: 'Human approval for sales proposals',\\n status: 'prod',\\n requestedBy: { agents: ['sales-agent'] },\\n routesTo: { workflows: ['send-proposal-workflow'] }\\n }\\n]\\n"
3856
+ })
3857
+ }), "\\n", _jsx(_components.p, {
3858
+ children: "Actual human approval decisions are runtime choices, not automatic routing from the declaration alone."
3859
+ }), "\\n", _jsx(_components.h2, {
3860
+ children: "Validation"
3861
+ }), "\\n", _jsx(_components.p, {
3862
+ children: "Command View shows relationships validated during deploy and API registration."
3863
+ }), "\\n", _jsx(_components.p, {
3864
+ children: "Validation checks:"
3059
3865
  }), "\\n", _jsxs(_components.ul, {
3060
3866
  children: ["\\n", _jsx(_components.li, {
3061
- children: "What triggers this workflow?"
3867
+ children: "Referenced resource IDs exist."
3062
3868
  }), "\\n", _jsx(_components.li, {
3063
- children: "What integrations does this agent use?"
3869
+ children: "Agent and workflow IDs are unique."
3064
3870
  }), "\\n", _jsx(_components.li, {
3065
- children: "What happens after this approval?"
3871
+ children: "External resource references are valid."
3066
3872
  }), "\\n", _jsx(_components.li, {
3067
- children: "If this integration fails, what breaks?"
3873
+ children: "Human checkpoint routes exist."
3874
+ }), "\\n", _jsx(_components.li, {
3875
+ children: "Model configs have valid providers, models, and API key references."
3068
3876
  }), "\\n"]
3877
+ }), "\\n", _jsxs(_components.p, {
3878
+ children: ["These checks cover declared relationships and registry consistency. They do not infer every runtime ", _jsx(_components.code, {
3879
+ children: "execution.trigger(...)"
3880
+ }), " target, especially when the target is computed dynamically."]
3069
3881
  }), "\\n", _jsx(_components.p, {
3070
- children: "Visual patterns:"
3882
+ children: "When validation errors occur, API startup fails with a descriptive error such as:"
3883
+ }), "\\n", _jsx(_components.pre, {
3884
+ children: _jsx(_components.code, {
3885
+ className: "language-text",
3886
+ children: "RegistryValidationError: [YourOrg] Resource 'my-agent' uses non-existent integration: integration-attio\\n"
3887
+ })
3888
+ }), "\\n", _jsx(_components.p, {
3889
+ children: "Fix validation errors by updating the manifest to reference the correct IDs or by adding the missing resource definition."
3890
+ }), "\\n", _jsx(_components.h2, {
3891
+ children: "Using Command View"
3892
+ }), "\\n", _jsx(_components.h3, {
3893
+ children: "Visualization Features"
3894
+ }), "\\n", _jsx(_components.p, {
3895
+ children: "Command View uses Cytoscape graph modes:"
3896
+ }), "\\n", _jsxs(_components.ul, {
3897
+ children: ["\\n", _jsxs(_components.li, {
3898
+ children: [_jsx(_components.strong, {
3899
+ children: "Map:"
3900
+ }), " keeps organization structure visible and honors hidden-resource visibility."]
3901
+ }), "\\n", _jsxs(_components.li, {
3902
+ children: [_jsx(_components.strong, {
3903
+ children: "Trace:"
3904
+ }), " resolves directed paths and reveals resources for the active trace."]
3905
+ }), "\\n", _jsxs(_components.li, {
3906
+ children: [_jsx(_components.strong, {
3907
+ children: "Impact:"
3908
+ }), " pivots around the selected node and reveals related resources for impact review."]
3909
+ }), "\\n"]
3910
+ }), "\\n", _jsx(_components.p, {
3911
+ children: "Filter panel capabilities:"
3071
3912
  }), "\\n", _jsxs(_components.ul, {
3072
3913
  children: ["\\n", _jsx(_components.li, {
3073
- children: "Hub nodes with many connections indicate critical resources."
3914
+ children: "Search across nodes, relationships, and IDs."
3074
3915
  }), "\\n", _jsx(_components.li, {
3075
- children: "Linear chains show sequential workflows."
3916
+ children: "Filter by node kind, resource type, environment, topology presence, integrations, and resource facets."
3076
3917
  }), "\\n", _jsx(_components.li, {
3077
- children: "Branching shows conditional logic."
3918
+ children: "Toggle resource visibility and diagnostic/testing resource visibility."
3078
3919
  }), "\\n", _jsx(_components.li, {
3079
- children: "Isolated nodes may indicate unused resources."
3920
+ children: "Show visible and hidden resource counts in the same control surface."
3080
3921
  }), "\\n"]
3081
- }), "\\n", _jsx(_components.h2, {
3082
- children: "Troubleshooting"
3083
- }), "\\n", _jsx(_components.h3, {
3084
- children: "Empty Graph"
3085
3922
  }), "\\n", _jsx(_components.p, {
3086
- children: "Likely causes:"
3923
+ children: "Hidden resource behavior:"
3087
3924
  }), "\\n", _jsxs(_components.ul, {
3088
3925
  children: ["\\n", _jsx(_components.li, {
3089
- children: "Organization has no resources defined."
3926
+ children: "Resource nodes are hidden by default so the organization structure remains readable."
3090
3927
  }), "\\n", _jsx(_components.li, {
3091
- children: "Search, environment, node kind, topology, or resource facet filters hide all graph elements."
3928
+ children: "Structural nodes remain visible as the navigation skeleton."
3092
3929
  }), "\\n", _jsx(_components.li, {
3093
- children: "Command View resources are hidden and no structural nodes match current filters."
3930
+ children: "Selecting a visible node can reveal directly connected hidden resources."
3094
3931
  }), "\\n", _jsx(_components.li, {
3095
- children: "Validation errors prevented serialization."
3932
+ children: "Diagnostic and testing resources are hidden by default and can be revealed from the filter panel."
3096
3933
  }), "\\n"]
3097
3934
  }), "\\n", _jsx(_components.p, {
3098
- children: "Check:"
3099
- }), "\\n", _jsxs(_components.ol, {
3935
+ children: "Expand Around behavior:"
3936
+ }), "\\n", _jsxs(_components.ul, {
3937
+ children: ["\\n", _jsx(_components.li, {
3938
+ children: "Select a node, open Details, and use Expand Around to preview nearby graph context before revealing it."
3939
+ }), "\\n", _jsx(_components.li, {
3940
+ children: "Semantic presets cover coverage, operational dependencies, organization context, and impact paths."
3941
+ }), "\\n", _jsx(_components.li, {
3942
+ children: "Feature, surface, entity, and capability nodes default to Coverage."
3943
+ }), "\\n", _jsx(_components.li, {
3944
+ children: "Resource nodes default to Operational Dependencies."
3945
+ }), "\\n", _jsx(_components.li, {
3946
+ children: "Preview counts show hidden resources before Apply reveals the graph patch."
3947
+ }), "\\n"]
3948
+ }), "\\n", _jsx(_components.p, {
3949
+ children: "Read-only constraints:"
3950
+ }), "\\n", _jsxs(_components.ul, {
3951
+ children: ["\\n", _jsx(_components.li, {
3952
+ children: "No drag and drop."
3953
+ }), "\\n", _jsx(_components.li, {
3954
+ children: "No connection editing."
3955
+ }), "\\n", _jsx(_components.li, {
3956
+ children: "No graph mutation from the visualization layer."
3957
+ }), "\\n"]
3958
+ }), "\\n", _jsx(_components.h3, {
3959
+ children: "Manifest Debugging"
3960
+ }), "\\n", _jsx(_components.p, {
3961
+ children: "Use Command View to verify:"
3962
+ }), "\\n", _jsxs(_components.ol, {
3963
+ children: ["\\n", _jsx(_components.li, {
3964
+ children: "Resources appear as nodes."
3965
+ }), "\\n", _jsx(_components.li, {
3966
+ children: "Relationships show as edges."
3967
+ }), "\\n", _jsx(_components.li, {
3968
+ children: "Integration connections exist."
3969
+ }), "\\n", _jsx(_components.li, {
3970
+ children: "Trigger invocations are declared correctly."
3971
+ }), "\\n", _jsx(_components.li, {
3972
+ children: "Orphaned resources are intentional."
3973
+ }), "\\n"]
3974
+ }), "\\n", _jsx(_components.p, {
3975
+ children: "Common issues:"
3976
+ }), "\\n", _jsxs(_components.ul, {
3977
+ children: ["\\n", _jsx(_components.li, {
3978
+ children: "Typo in a resource ID reference."
3979
+ }), "\\n", _jsx(_components.li, {
3980
+ children: "Missing relationship declaration."
3981
+ }), "\\n", _jsx(_components.li, {
3982
+ children: "Incorrect integration credential name."
3983
+ }), "\\n", _jsx(_components.li, {
3984
+ children: "External resource missing a bidirectional declaration."
3985
+ }), "\\n"]
3986
+ }), "\\n", _jsx(_components.h3, {
3987
+ children: "System Understanding"
3988
+ }), "\\n", _jsx(_components.p, {
3989
+ children: "Useful exploration questions:"
3990
+ }), "\\n", _jsxs(_components.ul, {
3991
+ children: ["\\n", _jsx(_components.li, {
3992
+ children: "What triggers this workflow?"
3993
+ }), "\\n", _jsx(_components.li, {
3994
+ children: "What integrations does this agent use?"
3995
+ }), "\\n", _jsx(_components.li, {
3996
+ children: "What happens after this approval?"
3997
+ }), "\\n", _jsx(_components.li, {
3998
+ children: "If this integration fails, what breaks?"
3999
+ }), "\\n"]
4000
+ }), "\\n", _jsx(_components.p, {
4001
+ children: "Visual patterns:"
4002
+ }), "\\n", _jsxs(_components.ul, {
4003
+ children: ["\\n", _jsx(_components.li, {
4004
+ children: "Hub nodes with many connections indicate critical resources."
4005
+ }), "\\n", _jsx(_components.li, {
4006
+ children: "Linear chains show sequential workflows."
4007
+ }), "\\n", _jsx(_components.li, {
4008
+ children: "Branching shows conditional logic."
4009
+ }), "\\n", _jsx(_components.li, {
4010
+ children: "Isolated nodes may indicate unused resources."
4011
+ }), "\\n"]
4012
+ }), "\\n", _jsx(_components.h2, {
4013
+ children: "Troubleshooting"
4014
+ }), "\\n", _jsx(_components.h3, {
4015
+ children: "Empty Graph"
4016
+ }), "\\n", _jsx(_components.p, {
4017
+ children: "Likely causes:"
4018
+ }), "\\n", _jsxs(_components.ul, {
4019
+ children: ["\\n", _jsx(_components.li, {
4020
+ children: "Organization has no resources defined."
4021
+ }), "\\n", _jsx(_components.li, {
4022
+ children: "Search, environment, node kind, topology, or resource facet filters hide all graph elements."
4023
+ }), "\\n", _jsx(_components.li, {
4024
+ children: "Command View resources are hidden and no structural nodes match current filters."
4025
+ }), "\\n", _jsx(_components.li, {
4026
+ children: "Validation errors prevented serialization."
4027
+ }), "\\n"]
4028
+ }), "\\n", _jsx(_components.p, {
4029
+ children: "Check:"
4030
+ }), "\\n", _jsxs(_components.ol, {
3100
4031
  children: ["\\n", _jsx(_components.li, {
3101
4032
  children: "API logs for validation errors."
3102
4033
  }), "\\n", _jsxs(_components.li, {
@@ -4502,284 +5433,6 @@ function MDXContent(props = {}) {
4502
5433
  return {
4503
5434
  default: MDXContent
4504
5435
  };
4505
- `),
4506
- "knowledge.what-is-elevasis": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n h3: "h3",\n li: "li",\n p: "p",\n strong: "strong",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Executive Summary"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Company:"\n }), " Bootstrapped AI orchestration platform for done-for-you business automation"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Founder:"\n }), " Solo (Alex, 34), bootstrapped"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Market:"\n }), " Service-based SMBs that need practical AI automation without building internal AI teams"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "GTM:"\n }), " Content-led marketing, proof assets, consultative sales, and land-and-expand pricing"]\n }), "\\n", _jsx(_components.h2, {\n children: "Company Overview"\n }), "\\n", _jsx(_components.h3, {\n children: "Current Status"\n }), "\\n", _jsx(_components.p, {\n children: "The platform core is production-ready enough to support client-facing demonstrations and implementation work. Current business focus is client acquisition, proof-building, and turning the platform into a repeatable service delivery system."\n }), "\\n", _jsx(_components.h3, {\n children: "Founder Profile"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Alex, 34"\n }), " \u2014 Solo founder with software engineering background (BSCS degree). Previous: Ecommerce platforms, Streaming technology. No formal AI background \u2014 practitioner, not academic."]\n }), "\\n", _jsx(_components.h3, {\n children: "What We Are"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Operating layer for AI automation."\n }), " We help SMBs operate with closed-loop feedback, decision capture, and continuous learning \u2014 at SMB pricing with done-for-you implementation (NOT self-service)."]\n }), "\\n", _jsx(_components.h3, {\n children: "Target Market"\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "ICP:"\n }), " Service-based SMBs (2-50 employees, USA, $200K-$5M revenue)"]\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "Core Pain:"\n }), " Capacity crisis, pipeline problems, operational chaos, growth blockers \u2014 too busy serving clients to grow their own business."]\n }), "\\n", _jsx(_components.h3, {\n children: "Pricing (Land-and-Expand)"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsx(_components.li, {\n children: "Tier 1 \u2014 Foundation (1-2 workflows): $500-2k/mo"\n }), "\\n", _jsx(_components.li, {\n children: "Tier 2 \u2014 Scaled Operations (3-5 workflows): $2k-5k/mo"\n }), "\\n", _jsx(_components.li, {\n children: "Tier 3 \u2014 AI-Powered Systems (6+ workflows): $5k-15k+/mo"\n }), "\\n"]\n }), "\\n", _jsx(_components.p, {\n children: "Additional workflows cost less due to shared infrastructure."\n }), "\\n", _jsx(_components.h3, {\n children: "Value Proposition"\n }), "\\n", _jsx(_components.p, {\n children: "\\"We find one bottleneck in your business, build an AI solution to fix it, and you only pay if it actually saves you time or makes you money.\\""\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
4507
- "knowledge.platform-capabilities": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: "code",\n h2: "h2",\n h3: "h3",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.h2, {\n children: "Overview"\n }), "\\n", _jsx(_components.p, {\n children: "Elevasis is a production AI orchestration platform that coordinates workflows, autonomous agents, and human approvals into a unified operating layer for SMBs. Everything described below is implemented and running in production."\n }), "\\n", _jsx(_components.p, {\n children: _jsx(_components.strong, {\n children: "Core Architecture:"\n })\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Layer"\n }), _jsx(_components.th, {\n children: "What It Does"\n }), _jsx(_components.th, {\n children: "Key Components"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Execution"\n })\n }), _jsx(_components.td, {\n children: "Runs workflows and agents with schema validation"\n }), _jsx(_components.td, {\n children: "Workflow Engine, Agent Framework, Execution Runner"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Control"\n })\n }), _jsx(_components.td, {\n children: "Human oversight, approvals, and decision capture"\n }), _jsx(_components.td, {\n children: "Command Queue (HITL), Dynamic Forms, Action System"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Intelligence"\n })\n }), _jsx(_components.td, {\n children: "Autonomous reasoning, tool use, and memory management"\n }), _jsx(_components.td, {\n children: "ReAct Agents, Knowledge Map, Session Memory"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Observability"\n })\n }), _jsx(_components.td, {\n children: "Real-time visibility into cost, performance, and health"\n }), _jsx(_components.td, {\n children: "Cost Tracking, Metrics, Activity Log, SSE Streaming"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.strong, {\n children: "Platform"\n })\n }), _jsx(_components.td, {\n children: "Multi-tenancy, security, scheduling, integrations"\n }), _jsx(_components.td, {\n children: "Registry, RLS, Scheduler, Credential Vault, SDK"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Execution Engine"\n }), "\\n", _jsx(_components.h3, {\n children: "AI Workflows"\n }), "\\n", _jsx(_components.p, {\n children: "Graph-based workflow execution with schema-validated steps and conditional routing. Steps define explicit routing: linear, conditional (rule-based branching), or terminal. Context flows through the entire workflow."\n }), "\\n", _jsx(_components.h3, {\n children: "Autonomous Agents"\n }), "\\n", _jsx(_components.p, {\n children: "Production-grade ReAct-style agents with tool use, memory management, and security hardening."\n }), "\\n", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: "LLM Provider Support:"\n }), " OpenAI (GPT-5), Google (Gemini 3 Flash), Anthropic (Claude Sonnet 4.5), OpenRouter (GLM-5)"]\n }), "\\n", _jsx(_components.h2, {\n children: "Human-in-the-Loop (HITL)"\n }), "\\n", _jsx(_components.p, {\n children: "The Command Queue surfaces pending approvals as structured tasks. Admin reviews, approves or edits, and the workflow continues. Every critical decision \u2014 sending emails to prospects, updating customer records, publishing content \u2014 requires human approval."\n }), "\\n", _jsx(_components.h2, {\n children: "Knowledge Map"\n }), "\\n", _jsx(_components.p, {\n children: "Organizational knowledge loaded lazily into agent context. 80-95% token savings vs. always-loading full context. Nodes link to features, teams, and other nodes."\n }), "\\n", _jsx(_components.h2, {\n children: "Integrations (13 active)"\n }), "\\n", _jsx(_components.p, {\n children: "Attio CRM, Cal.com, Instantly (cold email), Resend, Apify, Google Maps, Tomba, Mails.so, Supabase, Stripe, OpenAI, Google Gemini, Anthropic Claude."\n }), "\\n", _jsx(_components.h2, {\n children: "SDK"\n }), "\\n", _jsxs(_components.p, {\n children: ["TypeScript-based resource development with local testing, validation, and deployment pipeline. External consumers define workflows and agents in their own repos and deploy via ", _jsx(_components.code, {\n children: "elevasis-sdk deploy"\n }), "."]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
4508
- "knowledge.client-testimonials": makeKnowledgeComponent(`"use strict";
4509
- const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
4510
- function _createMdxContent(props) {
4511
- const _components = {
4512
- blockquote: "blockquote",
4513
- h2: "h2",
4514
- h3: "h3",
4515
- li: "li",
4516
- ol: "ol",
4517
- p: "p",
4518
- strong: "strong",
4519
- ul: "ul",
4520
- ...props.components
4521
- };
4522
- return _jsxs(_Fragment, {
4523
- children: [_jsxs(_components.p, {
4524
- children: [_jsx(_components.strong, {
4525
- children: "Status:"
4526
- }), " 4 testimonials from 2 clients | ", _jsx(_components.strong, {
4527
- children: "Source:"
4528
- }), " Upwork client work (2024)"]
4529
- }), "\\n", _jsx(_components.h2, {
4530
- children: "Testimonials"
4531
- }), "\\n", _jsx(_components.h3, {
4532
- children: "Xero Automation \u2014 The Invoice Chase That Disappeared"
4533
- }), "\\n", _jsxs(_components.p, {
4534
- children: [_jsx(_components.strong, {
4535
- children: "Client:"
4536
- }), " Word of Mouth Agency"]
4537
- }), "\\n", _jsxs(_components.p, {
4538
- children: [_jsx(_components.strong, {
4539
- children: "Result:"
4540
- }), " 10+ hours/week saved. Zero manual follow-up emails."]
4541
- }), "\\n", _jsxs(_components.blockquote, {
4542
- children: ["\\n", _jsx(_components.p, {
4543
- children: "\\"Working with Alex at Elevasis to automate our Xero follow-ups has been a game-changer. We're set to save over 5 hours a week, but more importantly, it has completely removed the stress of chasing invoices. The process was smooth and professional.\\""
4544
- }), "\\n"]
4545
- }), "\\n", _jsxs(_components.p, {
4546
- children: [_jsx(_components.strong, {
4547
- children: "Permission:"
4548
- }), " Case study approved with company name."]
4549
- }), "\\n", _jsx(_components.h3, {
4550
- children: "Influencer Discovery \u2014 From Spreadsheet Hell to Strategic Decisions"
4551
- }), "\\n", _jsxs(_components.p, {
4552
- children: [_jsx(_components.strong, {
4553
- children: "Client:"
4554
- }), " Word of Mouth Agency (Perth, Australia)"]
4555
- }), "\\n", _jsxs(_components.p, {
4556
- children: [_jsx(_components.strong, {
4557
- children: "Result:"
4558
- }), " 10+ hours/week saved. Research scope: 50 to 200+ influencers. Team focus shifted from data to strategy."]
4559
- }), "\\n", _jsxs(_components.blockquote, {
4560
- children: ["\\n", _jsx(_components.p, {
4561
- children: "\\"Working with Alex at Elevasis to automate our Influencer Discovery has been a game-changer. We're set to save over 5 hours a week...\\""
4562
- }), "\\n"]
4563
- }), "\\n", _jsxs(_components.p, {
4564
- children: [_jsx(_components.strong, {
4565
- children: "Permission:"
4566
- }), " Case study approved with company name."]
4567
- }), "\\n", _jsx(_components.h3, {
4568
- children: "EMRG Media \u2014 4 Automations for NYC's Premier Events Firm"
4569
- }), "\\n", _jsxs(_components.p, {
4570
- children: [_jsx(_components.strong, {
4571
- children: "Client:"
4572
- }), " EMRG Media (NYC, est. 2001). Clients include Google, YouTube, Sony Music, Fiverr, Equinox."]
4573
- }), "\\n", _jsx(_components.p, {
4574
- children: _jsx(_components.strong, {
4575
- children: "What We Built:"
4576
- })
4577
- }), "\\n", _jsxs(_components.ol, {
4578
- children: ["\\n", _jsxs(_components.li, {
4579
- children: [_jsx(_components.strong, {
4580
- children: "Case Study Generator"
4581
- }), " \u2014 7-10 hours \u2192 2 hours. Publication rate: 1/quarter \u2192 2/month."]
4582
- }), "\\n", _jsxs(_components.li, {
4583
- children: [_jsx(_components.strong, {
4584
- children: "EMRG Follow-Up Generator"
4585
- }), " \u2014 Automated post-event follow-ups with signature management."]
4586
- }), "\\n", _jsxs(_components.li, {
4587
- children: [_jsx(_components.strong, {
4588
- children: "Event Sponsor Tracker"
4589
- }), " \u2014 Automated sponsor pipeline tracking and communications."]
4590
- }), "\\n", _jsxs(_components.li, {
4591
- children: [_jsx(_components.strong, {
4592
- children: "Lead Scraper"
4593
- }), " \u2014 Automated discovery of event planning prospects."]
4594
- }), "\\n"]
4595
- }), "\\n", _jsx(_components.p, {
4596
- children: _jsx(_components.strong, {
4597
- children: "Fame Stats:"
4598
- })
4599
- }), "\\n", _jsxs(_components.ul, {
4600
- children: ["\\n", _jsx(_components.li, {
4601
- children: "3,500+ attendees at The Event Planner Expo"
4602
- }), "\\n", _jsx(_components.li, {
4603
- children: "25+ year track record"
4604
- }), "\\n", _jsx(_components.li, {
4605
- children: "Fortune 500 client roster"
4606
- }), "\\n"]
4607
- }), "\\n", _jsxs(_components.p, {
4608
- children: [_jsx(_components.strong, {
4609
- children: "Permission:"
4610
- }), " Case study approved with company name."]
4611
- })]
4612
- });
4613
- }
4614
- function MDXContent(props = {}) {
4615
- const {wrapper: MDXLayout} = props.components || ({});
4616
- return MDXLayout ? _jsx(MDXLayout, {
4617
- ...props,
4618
- children: _jsx(_createMdxContent, {
4619
- ...props
4620
- })
4621
- }) : _createMdxContent(props);
4622
- }
4623
- return {
4624
- default: MDXContent
4625
- };
4626
- `),
4627
- "knowledge.understanding-elevasis": makeKnowledgeComponent('"use strict";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n h2: "h2",\n li: "li",\n p: "p",\n strong: "strong",\n table: "table",\n tbody: "tbody",\n td: "td",\n th: "th",\n thead: "thead",\n tr: "tr",\n ul: "ul",\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: "Lean documentation explaining what Elevasis is and what the platform can do. This section provides the foundational context for business conversations and technical evaluation."\n }), "\\n", _jsx(_components.p, {\n children: "Elevasis is a done-for-you AI automation service backed by a production-grade platform. The company targets service-based SMBs (2-50 employees, $200K-$5M revenue) who are too busy serving clients to grow their own business."\n }), "\\n", _jsx(_components.h2, {\n children: "Key Facts"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Stage:"\n }), " Pre-revenue, platform 100% complete, client acquisition active"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Offer:"\n }), " Done-for-you AI automation -- we build and maintain the workflows, no coding required"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "ICP:"\n }), " Service-based SMBs (2-50 employees, $200K-$5M revenue, USA)"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Pricing:"\n }), " $500-$2k/mo (Foundation) \u2192 $2k-$5k/mo (Scaled) \u2192 $5k-$15k+/mo (AI-Powered)"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Market:"\n }), " Early Adopters stage, $23.77B TAM growing to $87.7B by 2032"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Competitive position:"\n }), " No dominant done-for-you SMB AI provider exists; blue ocean"]\n }), "\\n"]\n }), "\\n", _jsx(_components.h2, {\n children: "When to Use Each Document"\n }), "\\n", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: "Situation"\n }), _jsx(_components.th, {\n children: "Document"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "First conversation with any audience"\n }), _jsx(_components.td, {\n children: "What is Elevasis"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: "Technical evaluation or demo prep"\n }), _jsx(_components.td, {\n children: "Platform Capabilities"\n })]\n })]\n })]\n }), "\\n", _jsx(_components.h2, {\n children: "Documentation"\n }), "\\n", _jsxs(_components.ul, {\n children: ["\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "What is Elevasis"\n }), " \u2014 AI orchestration platform overview, company stage, value proposition, and pricing tiers"]\n }), "\\n", _jsxs(_components.li, {\n children: [_jsx(_components.strong, {\n children: "Platform Capabilities"\n }), " \u2014 Authoritative overview of what is built, what it does, and how the pieces fit together"]\n }), "\\n"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = props.components || ({});\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n'),
4628
- "knowledge.marketing-overview": makeKnowledgeComponent(`"use strict";
4629
- const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
4630
- function _createMdxContent(props) {
4631
- const _components = {
4632
- h2: "h2",
4633
- h3: "h3",
4634
- li: "li",
4635
- p: "p",
4636
- strong: "strong",
4637
- ul: "ul",
4638
- ...props.components
4639
- };
4640
- return _jsxs(_Fragment, {
4641
- children: [_jsx(_components.p, {
4642
- children: "Welcome to the Elevasis marketing documentation. This section covers marketing strategy, website implementation, and content systems."
4643
- }), "\\n", _jsx(_components.h2, {
4644
- children: "Documentation"
4645
- }), "\\n", _jsx(_components.h3, {
4646
- children: "Strategy"
4647
- }), "\\n", _jsxs(_components.ul, {
4648
- children: ["\\n", _jsxs(_components.li, {
4649
- children: [_jsx(_components.strong, {
4650
- children: "Overview"
4651
- }), " \u2014 Channel strategy, inbound content system, and proof-led demand generation"]
4652
- }), "\\n"]
4653
- }), "\\n", _jsx(_components.h3, {
4654
- children: "Website"
4655
- }), "\\n", _jsx(_components.p, {
4656
- children: "The marketing website's technical infrastructure, setup, and SEO docs now live under Architecture \u2192 Website."
4657
- })]
4658
- });
4659
- }
4660
- function MDXContent(props = {}) {
4661
- const {wrapper: MDXLayout} = props.components || ({});
4662
- return MDXLayout ? _jsx(MDXLayout, {
4663
- ...props,
4664
- children: _jsx(_createMdxContent, {
4665
- ...props
4666
- })
4667
- }) : _createMdxContent(props);
4668
- }
4669
- return {
4670
- default: MDXContent
4671
- };
4672
- `),
4673
- "knowledge.ai-orchestration-principles": makeKnowledgeComponent(`"use strict";
4674
- const {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];
4675
- function _createMdxContent(props) {
4676
- const _components = {
4677
- h2: "h2",
4678
- h3: "h3",
4679
- li: "li",
4680
- p: "p",
4681
- strong: "strong",
4682
- ul: "ul",
4683
- ...props.components
4684
- };
4685
- return _jsxs(_Fragment, {
4686
- children: [_jsx(_components.p, {
4687
- children: "Most AI automation fails. Not because the technology is bad, but because it's implemented without the principles that make AI systems work in production."
4688
- }), "\\n", _jsx(_components.p, {
4689
- children: "These four principles separate toy automation from AI systems that actually run businesses."
4690
- }), "\\n", _jsx(_components.h2, {
4691
- children: "The 4 Principles"
4692
- }), "\\n", _jsx(_components.h3, {
4693
- children: "1. Integrated: Works With Your Existing Systems"
4694
- }), "\\n", _jsxs(_components.p, {
4695
- children: [_jsx(_components.strong, {
4696
- children: "Principle:"
4697
- }), " AI must work with your existing tools, not replace them."]
4698
- }), "\\n", _jsx(_components.p, {
4699
- children: "AI that doesn't connect to your CRM, your email, your calendar, your existing workflows is a toy. Real AI automation works WITH what you already have \u2014 not instead of it."
4700
- }), "\\n", _jsxs(_components.ul, {
4701
- children: ["\\n", _jsx(_components.li, {
4702
- children: "Your 50 Zapier workflows keep running"
4703
- }), "\\n", _jsx(_components.li, {
4704
- children: "Your CRM stays your CRM"
4705
- }), "\\n", _jsx(_components.li, {
4706
- children: "AI adds intelligence on top, not a rip-and-replace"
4707
- }), "\\n"]
4708
- }), "\\n", _jsxs(_components.p, {
4709
- children: [_jsx(_components.strong, {
4710
- children: "The anti-pattern:"
4711
- }), " \\"Use our AI instead of everything else.\\" Creates vendor lock-in and throws away your existing investment."]
4712
- }), "\\n", _jsx(_components.h3, {
4713
- children: "2. Improving: Gets Smarter Over Time"
4714
- }), "\\n", _jsxs(_components.p, {
4715
- children: [_jsx(_components.strong, {
4716
- children: "Principle:"
4717
- }), " AI must learn from every decision and improve continuously."]
4718
- }), "\\n", _jsx(_components.p, {
4719
- children: "Static automation is just fancy if-then logic. Real AI captures every approval, rejection, and edit \u2014 then uses that data to get smarter."
4720
- }), "\\n", _jsxs(_components.p, {
4721
- children: [_jsx(_components.strong, {
4722
- children: "The anti-pattern:"
4723
- }), " \\"Set it and forget it.\\" Systems that don't learn stay dumb forever."]
4724
- }), "\\n", _jsx(_components.h3, {
4725
- children: "3. Observable: You See What AI Is Doing"
4726
- }), "\\n", _jsxs(_components.p, {
4727
- children: [_jsx(_components.strong, {
4728
- children: "Principle:"
4729
- }), " You must be able to see what AI systems are doing in real-time."]
4730
- }), "\\n", _jsx(_components.p, {
4731
- children: "Black-box automation is unacceptable for business operations. You need to see every action, every decision, every cost \u2014 as it happens."
4732
- }), "\\n", _jsxs(_components.ul, {
4733
- children: ["\\n", _jsx(_components.li, {
4734
- children: "Real-time activity feeds showing what's executing"
4735
- }), "\\n", _jsx(_components.li, {
4736
- children: "Cost tracking per workflow, per execution"
4737
- }), "\\n", _jsx(_components.li, {
4738
- children: "Token usage visibility"
4739
- }), "\\n", _jsx(_components.li, {
4740
- children: "Execution logs for debugging"
4741
- }), "\\n"]
4742
- }), "\\n", _jsxs(_components.p, {
4743
- children: [_jsx(_components.strong, {
4744
- children: "The anti-pattern:"
4745
- }), " \\"It just works, trust us.\\" Systems without observability create anxiety and prevent adoption."]
4746
- }), "\\n", _jsx(_components.h3, {
4747
- children: "4. Governed: Humans Control What Matters"
4748
- }), "\\n", _jsxs(_components.p, {
4749
- children: [_jsx(_components.strong, {
4750
- children: "Principle:"
4751
- }), " Humans must approve important actions before execution."]
4752
- }), "\\n", _jsx(_components.p, {
4753
- children: "AI should handle the grunt work. But critical decisions \u2014 sending emails to prospects, updating customer records, publishing content \u2014 require human approval."
4754
- }), "\\n", _jsxs(_components.ul, {
4755
- children: ["\\n", _jsx(_components.li, {
4756
- children: "AI researches 50 prospects and drafts personalized emails"
4757
- }), "\\n", _jsx(_components.li, {
4758
- children: "Before anything sends, it lands in your approval queue"
4759
- }), "\\n", _jsx(_components.li, {
4760
- children: "You spend 10 minutes reviewing, approve or tweak"
4761
- }), "\\n", _jsx(_components.li, {
4762
- children: "Only then does it execute"
4763
- }), "\\n"]
4764
- }), "\\n", _jsxs(_components.p, {
4765
- children: [_jsx(_components.strong, {
4766
- children: "The anti-pattern:"
4767
- }), " \\"Fully autonomous AI.\\" Systems without governance create risk and erode trust."]
4768
- })]
4769
- });
4770
- }
4771
- function MDXContent(props = {}) {
4772
- const {wrapper: MDXLayout} = props.components || ({});
4773
- return MDXLayout ? _jsx(MDXLayout, {
4774
- ...props,
4775
- children: _jsx(_createMdxContent, {
4776
- ...props
4777
- })
4778
- }) : _createMdxContent(props);
4779
- }
4780
- return {
4781
- default: MDXContent
4782
- };
4783
5436
  `)
4784
5437
  };
4785
5438
  function KnowledgeCard({ title, children }) {