@synap-core/workspace-templates 0.5.0 → 0.6.1
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.
- package/dist/index.d.ts +734 -17
- package/dist/index.js +25031 -20
- package/dist/index.js.map +1 -0
- package/package.json +7 -5
- package/src/agent-fleet.yaml +16 -8
- package/src/blockchain-ecosystem.yaml +372 -0
- package/src/catalog.test.ts +156 -0
- package/src/catalog.ts +285 -0
- package/src/communication.yaml +689 -0
- package/src/content-os.yaml +252 -771
- package/src/crm.yaml +181 -2071
- package/src/define.ts +292 -6
- package/src/dev-dashboard.yaml +3 -0
- package/src/ecosystem.yaml +478 -0
- package/src/enterprise-os.yaml +183 -0
- package/src/foundation.yaml +226 -0
- package/src/grants.yaml +1096 -0
- package/src/hr.yaml +6 -0
- package/src/index.ts +32 -5
- package/src/internal-runbook.yaml +499 -0
- package/src/legal.yaml +6 -6
- package/src/marketing.yaml +48 -12
- package/src/operations.yaml +146 -420
- package/src/social.yaml +246 -0
- package/src/templates.ts +12812 -12260
- package/src/the-arch.yaml +182 -0
- package/src/types.ts +105 -0
- package/dist/define.d.ts +0 -97
- package/dist/define.d.ts.map +0 -1
- package/dist/define.js +0 -91
- package/dist/index.d.ts.map +0 -1
- package/dist/templates.d.ts +0 -7
- package/dist/templates.d.ts.map +0 -1
- package/dist/templates.js +0 -24237
- package/dist/types.d.ts +0 -350
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -8
- package/src/radar.yaml +0 -297
package/dist/types.d.ts
DELETED
|
@@ -1,350 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @synap-core/workspace-templates — Types
|
|
3
|
-
*
|
|
4
|
-
* Canonical shape of a workspace template.
|
|
5
|
-
* YAML source files validate against these types.
|
|
6
|
-
* Every consumer (browser, backend, CLI, marketplace) imports from here.
|
|
7
|
-
*/
|
|
8
|
-
export type TemplateAppKind = 'native' | 'stored' | 'url';
|
|
9
|
-
export interface TemplateAppRef {
|
|
10
|
-
kind: TemplateAppKind;
|
|
11
|
-
/** For kind='native': the appId registered in the browser manifest */
|
|
12
|
-
appId?: string;
|
|
13
|
-
/** For kind='native': how the platform renders the app */
|
|
14
|
-
rendererType?: 'native' | 'external' | 'iframe-srcdoc';
|
|
15
|
-
/** For kind='stored': the cell key registered in the cell registry */
|
|
16
|
-
cellKey?: string;
|
|
17
|
-
/** For kind='stored': default props passed to the cell */
|
|
18
|
-
props?: Record<string, unknown>;
|
|
19
|
-
/** For kind='url': external URL to open */
|
|
20
|
-
url?: string;
|
|
21
|
-
/** Human label */
|
|
22
|
-
title?: string;
|
|
23
|
-
}
|
|
24
|
-
export interface TemplateProperty {
|
|
25
|
-
slug: string;
|
|
26
|
-
label: string;
|
|
27
|
-
valueType: string;
|
|
28
|
-
inputType?: string;
|
|
29
|
-
placeholder?: string;
|
|
30
|
-
enumValues?: string[];
|
|
31
|
-
constraints?: Record<string, unknown>;
|
|
32
|
-
targetProfileSlug?: string;
|
|
33
|
-
}
|
|
34
|
-
export interface TemplateProfile {
|
|
35
|
-
slug: string;
|
|
36
|
-
displayName: string;
|
|
37
|
-
icon?: string;
|
|
38
|
-
color?: string;
|
|
39
|
-
description?: string;
|
|
40
|
-
/** Visibility scope. Omit or "WORKSPACE" for workspace-scoped. */
|
|
41
|
-
scope?: string;
|
|
42
|
-
/** Semantic slug for system profiles. */
|
|
43
|
-
semanticSlug?: string;
|
|
44
|
-
properties: TemplateProperty[];
|
|
45
|
-
}
|
|
46
|
-
export interface TemplateView {
|
|
47
|
-
name: string;
|
|
48
|
-
slug?: string;
|
|
49
|
-
type: string;
|
|
50
|
-
scopeProfileSlug?: string;
|
|
51
|
-
scopeProfileSlugs?: string[];
|
|
52
|
-
config?: Record<string, unknown>;
|
|
53
|
-
/** If true, this view auto-selected as the default view for this workspace */
|
|
54
|
-
defaultView?: boolean;
|
|
55
|
-
description?: string;
|
|
56
|
-
groupBy?: string;
|
|
57
|
-
}
|
|
58
|
-
export interface TemplateEntityLink {
|
|
59
|
-
sourceProfileSlug: string;
|
|
60
|
-
targetProfileSlug: string;
|
|
61
|
-
type: string;
|
|
62
|
-
label?: string;
|
|
63
|
-
}
|
|
64
|
-
export interface TemplateSeedEntity {
|
|
65
|
-
profileSlug: string;
|
|
66
|
-
title: string;
|
|
67
|
-
properties?: Record<string, unknown>;
|
|
68
|
-
content?: string;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Relations between seed entities, created on provisioning. `sourceRef`/
|
|
72
|
-
* `targetRef` reference seed-entity titles (or refs) defined in `seedEntities`.
|
|
73
|
-
* Mirrors `suggestedRelations` in synap-backend `create-workspace-from-definition.ts`.
|
|
74
|
-
*/
|
|
75
|
-
export interface TemplateSuggestedRelation {
|
|
76
|
-
sourceRef: string;
|
|
77
|
-
targetRef: string;
|
|
78
|
-
type: string;
|
|
79
|
-
metadata?: Record<string, unknown>;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Entity-card display templates. Mirrors `displayTemplates` in synap-backend
|
|
83
|
-
* `create-workspace-from-definition.ts`.
|
|
84
|
-
*/
|
|
85
|
-
export interface TemplateDisplayTemplate {
|
|
86
|
-
name: string;
|
|
87
|
-
description?: string;
|
|
88
|
-
entityType?: string;
|
|
89
|
-
targetType?: string;
|
|
90
|
-
isDefault?: boolean;
|
|
91
|
-
config: Record<string, unknown>;
|
|
92
|
-
}
|
|
93
|
-
export interface TemplateSidebarSurface {
|
|
94
|
-
kind: 'cell' | 'view' | 'entity' | 'document' | 'channel' | 'app' | 'url';
|
|
95
|
-
cellKey?: string;
|
|
96
|
-
viewId?: string;
|
|
97
|
-
viewName?: string;
|
|
98
|
-
appId?: string;
|
|
99
|
-
url?: string;
|
|
100
|
-
rendererType?: 'native' | 'external' | 'iframe-srcdoc';
|
|
101
|
-
placement?: 'main' | 'side' | 'floating' | 'modal' | 'popover' | 'embed';
|
|
102
|
-
displayMode?: 'compact' | 'medium' | 'full';
|
|
103
|
-
props?: Record<string, unknown>;
|
|
104
|
-
title?: string;
|
|
105
|
-
meta?: Record<string, unknown>;
|
|
106
|
-
}
|
|
107
|
-
export interface TemplateSidebarItem {
|
|
108
|
-
kind: 'app' | 'view' | 'profile' | 'external' | 'cell';
|
|
109
|
-
appId?: string;
|
|
110
|
-
viewName?: string;
|
|
111
|
-
viewId?: string;
|
|
112
|
-
profileSlug?: string;
|
|
113
|
-
url?: string;
|
|
114
|
-
cellKey?: string;
|
|
115
|
-
cellProps?: Record<string, unknown>;
|
|
116
|
-
/** When present, bypasses kind-based dispatch — full surface control */
|
|
117
|
-
surface?: TemplateSidebarSurface;
|
|
118
|
-
label?: string;
|
|
119
|
-
icon?: string;
|
|
120
|
-
section?: string;
|
|
121
|
-
matchUrls?: string[];
|
|
122
|
-
}
|
|
123
|
-
export interface TemplateLayoutConfig {
|
|
124
|
-
pinnedApps?: string[];
|
|
125
|
-
defaultView?: string;
|
|
126
|
-
/** The first-screen app — auto-opened on workspace switch */
|
|
127
|
-
defaultApp?: string | null;
|
|
128
|
-
theme?: string;
|
|
129
|
-
sidebarItems?: TemplateSidebarItem[];
|
|
130
|
-
}
|
|
131
|
-
export interface TemplateBentoBlock {
|
|
132
|
-
kind: 'view' | 'widget';
|
|
133
|
-
viewName?: string;
|
|
134
|
-
widgetType?: string;
|
|
135
|
-
pos: {
|
|
136
|
-
x: number;
|
|
137
|
-
y: number;
|
|
138
|
-
w: number;
|
|
139
|
-
h: number;
|
|
140
|
-
};
|
|
141
|
-
config?: Record<string, unknown>;
|
|
142
|
-
overrides?: Record<string, unknown>;
|
|
143
|
-
}
|
|
144
|
-
export interface TemplateProfileEntityBentoTemplates {
|
|
145
|
-
[profileSlug: string]: {
|
|
146
|
-
blocks: Array<Record<string, unknown>>;
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
export interface TemplateAutomation {
|
|
150
|
-
name: string;
|
|
151
|
-
description?: string;
|
|
152
|
-
trigger: string;
|
|
153
|
-
action: string;
|
|
154
|
-
config?: Record<string, unknown>;
|
|
155
|
-
}
|
|
156
|
-
/** Mirrors `WorkspaceSourceRole` in synap-backend `schema/workspaces.ts`. */
|
|
157
|
-
export type TemplateSourceRole = 'provider' | 'consumer' | 'provider-consumer';
|
|
158
|
-
/** Mirrors `WorkspaceDefaultSource` in synap-backend `schema/workspaces.ts`. */
|
|
159
|
-
export interface TemplateDefaultSource {
|
|
160
|
-
/** The workspace id that supplies this capability domain. */
|
|
161
|
-
workspaceId: string;
|
|
162
|
-
/** The capability domain this source satisfies (e.g. "brand", "strategy"). */
|
|
163
|
-
capability?: string;
|
|
164
|
-
/** Optional profile slug the source resolves to. */
|
|
165
|
-
profileSlug?: string;
|
|
166
|
-
/** Human label for the source. */
|
|
167
|
-
label?: string;
|
|
168
|
-
}
|
|
169
|
-
export interface TemplateOnboardingCollectTarget {
|
|
170
|
-
/** Profile slug to populate (e.g. "audience", "competitor"). */
|
|
171
|
-
profileSlug: string;
|
|
172
|
-
/** Human description of what to capture for this target. */
|
|
173
|
-
what: string;
|
|
174
|
-
/** Roughly how many to expect — guides interview depth. */
|
|
175
|
-
cardinality?: 'one' | 'few' | 'several';
|
|
176
|
-
/** Key fields the agent should make sure to fill. */
|
|
177
|
-
keyFields?: string[];
|
|
178
|
-
}
|
|
179
|
-
export interface TemplateOnboardingExpertise {
|
|
180
|
-
/**
|
|
181
|
-
* Concrete starting points the agent PROPOSES instead of asking blank —
|
|
182
|
-
* "most X do Y, want that as a starting point?". Grounds the agent's
|
|
183
|
-
* proposals in real domain knowledge (never fabricates strategy — for
|
|
184
|
-
* mission/positioning these FRAME, they don't invent the answer).
|
|
185
|
-
*/
|
|
186
|
-
starters?: string[];
|
|
187
|
-
/**
|
|
188
|
-
* Blind spots founders in this domain commonly miss. The agent proactively
|
|
189
|
-
* surfaces these if the founder hasn't — catching what they don't say.
|
|
190
|
-
*/
|
|
191
|
-
blindSpots?: string[];
|
|
192
|
-
/** What a GREAT result looks like here — the bar the agent pushes toward. */
|
|
193
|
-
bar?: string;
|
|
194
|
-
}
|
|
195
|
-
export interface TemplateOnboarding {
|
|
196
|
-
/** The outcome this onboarding achieves, in one sentence. */
|
|
197
|
-
goal: string;
|
|
198
|
-
/** Domain framing/voice the agent adopts for THIS workspace (the persona). */
|
|
199
|
-
framing: string;
|
|
200
|
-
/**
|
|
201
|
-
* Authored domain expertise the agent leads with (optional). Turns the
|
|
202
|
-
* interview from "extract what the founder knows" into "resolve what they
|
|
203
|
-
* lack". See the `onboard` skill's "Lead with your expertise" step.
|
|
204
|
-
*/
|
|
205
|
-
expertise?: TemplateOnboardingExpertise;
|
|
206
|
-
/** What structured data to collect (entities to create + their key fields). */
|
|
207
|
-
collect: TemplateOnboardingCollectTarget[];
|
|
208
|
-
/** A few opening questions — the agent adapts from here, never rigid. */
|
|
209
|
-
openingQuestions?: string[];
|
|
210
|
-
/** "Done" signal the agent self-evaluates against. */
|
|
211
|
-
doneWhen?: string;
|
|
212
|
-
}
|
|
213
|
-
export interface TemplatePlaybookParam {
|
|
214
|
-
name: string;
|
|
215
|
-
type: 'text' | 'number' | 'entity' | 'choice' | 'boolean';
|
|
216
|
-
label?: string;
|
|
217
|
-
required?: boolean;
|
|
218
|
-
defaultValue?: unknown;
|
|
219
|
-
}
|
|
220
|
-
export interface TemplatePlaybook {
|
|
221
|
-
name: string;
|
|
222
|
-
description?: string;
|
|
223
|
-
goalTemplate: string;
|
|
224
|
-
params?: TemplatePlaybookParam[];
|
|
225
|
-
executor?: 'is-agent' | 'external-agent' | 'hybrid';
|
|
226
|
-
inputStrategy?: 'none' | 'static' | 'rotating' | 'query';
|
|
227
|
-
channelSpec?: {
|
|
228
|
-
type: 'GROUP' | 'AGENT_COLLAB' | 'THREAD';
|
|
229
|
-
members?: string[];
|
|
230
|
-
aiReactionMode?: 'on_mention' | 'always' | 'never';
|
|
231
|
-
};
|
|
232
|
-
schedule?: {
|
|
233
|
-
cron: string;
|
|
234
|
-
} | null;
|
|
235
|
-
/** tool/skill keys this playbook grants. */
|
|
236
|
-
grants?: string[];
|
|
237
|
-
status?: 'draft' | 'active' | 'paused';
|
|
238
|
-
}
|
|
239
|
-
export interface TemplateIntegration {
|
|
240
|
-
/** Capability template key to install (matches a capability template). */
|
|
241
|
-
templateKey: string;
|
|
242
|
-
/** Override default params with {{var}} interpolation. */
|
|
243
|
-
params?: Record<string, string>;
|
|
244
|
-
/** "apply" (create+update) or "install" (create only). */
|
|
245
|
-
mode?: 'apply' | 'install';
|
|
246
|
-
}
|
|
247
|
-
export interface TemplateExtendsRef {
|
|
248
|
-
source: string;
|
|
249
|
-
import?: {
|
|
250
|
-
profiles?: string[];
|
|
251
|
-
views?: string[];
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
|
-
export interface TemplateMeta {
|
|
255
|
-
slug: string;
|
|
256
|
-
name: string;
|
|
257
|
-
description: string;
|
|
258
|
-
icon: string;
|
|
259
|
-
color: string;
|
|
260
|
-
tags?: string[];
|
|
261
|
-
isPublic?: boolean;
|
|
262
|
-
}
|
|
263
|
-
export interface WorkspaceYaml {
|
|
264
|
-
/** Template metadata — not sent to backend, used for listing/UI */
|
|
265
|
-
meta: TemplateMeta;
|
|
266
|
-
/** The workspace definition sent to createFromDefinition */
|
|
267
|
-
workspace: {
|
|
268
|
-
name: string;
|
|
269
|
-
description: string;
|
|
270
|
-
proposalId?: string;
|
|
271
|
-
subtype?: string;
|
|
272
|
-
/**
|
|
273
|
-
* Workspace classifier — consumed by createFromDefinition (settings.workspaceType,
|
|
274
|
-
* creator-role + agent-workspace behavior). Mirrors the backend union.
|
|
275
|
-
*/
|
|
276
|
-
workspaceType?: 'personal' | 'agent' | 'project' | 'operational';
|
|
277
|
-
visibility?: string;
|
|
278
|
-
/** Capabilities this workspace provides (e.g. "brand.library", "content.pipeline") */
|
|
279
|
-
capabilities?: string[];
|
|
280
|
-
/**
|
|
281
|
-
* Cross-workspace dependency roles.
|
|
282
|
-
* E.g. { brand: "consumer", content: "provider" }
|
|
283
|
-
* "consumer" = this workspace reads from another workspace of that capability
|
|
284
|
-
* "provider" = this workspace provides that capability to others
|
|
285
|
-
*/
|
|
286
|
-
sourceRoles?: Record<string, TemplateSourceRole>;
|
|
287
|
-
/**
|
|
288
|
-
* Pins which workspace supplies each capability domain for this workspace.
|
|
289
|
-
* E.g. { brand: { workspaceId: "..." } } — read by the IS source resolver
|
|
290
|
-
* (resolveBrandWorkspaceId / resolveFoundationWorkspaceId) before falling
|
|
291
|
-
* back to provider role. Usually set at runtime, not in a template, but
|
|
292
|
-
* carried here so it round-trips through the canonical seam.
|
|
293
|
-
*/
|
|
294
|
-
defaultSources?: Record<string, TemplateDefaultSource>;
|
|
295
|
-
};
|
|
296
|
-
/** Entity profiles — the data schema */
|
|
297
|
-
profiles: TemplateProfile[];
|
|
298
|
-
/** Curated views — only the ones that add value */
|
|
299
|
-
views?: TemplateView[];
|
|
300
|
-
/** Schema-level links between entity types */
|
|
301
|
-
entityLinks?: TemplateEntityLink[];
|
|
302
|
-
/** Initial data to seed on workspace creation */
|
|
303
|
-
seedEntities?: TemplateSeedEntity[];
|
|
304
|
-
/** Relations between seed entities, created on provisioning */
|
|
305
|
-
suggestedRelations?: TemplateSuggestedRelation[];
|
|
306
|
-
/** Entity-card display templates */
|
|
307
|
-
displayTemplates?: TemplateDisplayTemplate[];
|
|
308
|
-
/** App reference — what opens as first screen */
|
|
309
|
-
app?: TemplateAppRef;
|
|
310
|
-
/** Browser sidebar + layout config */
|
|
311
|
-
layout?: TemplateLayoutConfig;
|
|
312
|
-
/** Bento dashboard */
|
|
313
|
-
bento?: {
|
|
314
|
-
viewName?: string;
|
|
315
|
-
blocks?: TemplateBentoBlock[];
|
|
316
|
-
};
|
|
317
|
-
/** Per-profile entity bento layouts */
|
|
318
|
-
profileEntityBentoTemplates?: TemplateProfileEntityBentoTemplates;
|
|
319
|
-
/** Automations to install on workspace creation */
|
|
320
|
-
automations?: TemplateAutomation[];
|
|
321
|
-
/** Playbooks (session templates) seeded with the workspace */
|
|
322
|
-
playbooks?: TemplatePlaybook[];
|
|
323
|
-
/** Capability templates (tools/connectors) to install on provisioning */
|
|
324
|
-
integrations?: TemplateIntegration[];
|
|
325
|
-
/**
|
|
326
|
-
* Per-workspace onboarding context. Written to workspace.settings.onboarding
|
|
327
|
-
* and read by the shared `onboard` skill to run a domain-specific adaptive
|
|
328
|
-
* interview — no per-domain skill file needed.
|
|
329
|
-
*/
|
|
330
|
-
onboarding?: TemplateOnboarding;
|
|
331
|
-
/** Inherit profiles/views from other workspaces */
|
|
332
|
-
extends?: TemplateExtendsRef[];
|
|
333
|
-
}
|
|
334
|
-
export interface ResolvedWorkspaceTemplate {
|
|
335
|
-
meta: TemplateMeta;
|
|
336
|
-
definition: WorkspaceYaml['workspace'] & {
|
|
337
|
-
profiles: TemplateProfile[];
|
|
338
|
-
views: TemplateView[];
|
|
339
|
-
entityLinks: TemplateEntityLink[];
|
|
340
|
-
seedEntities: TemplateSeedEntity[];
|
|
341
|
-
app: TemplateAppRef | null;
|
|
342
|
-
layoutConfig: TemplateLayoutConfig | null;
|
|
343
|
-
bentoViewName?: string;
|
|
344
|
-
bentoViewBlocks?: TemplateBentoBlock[];
|
|
345
|
-
profileEntityBentoTemplates?: TemplateProfileEntityBentoTemplates;
|
|
346
|
-
automations: TemplateAutomation[];
|
|
347
|
-
extends?: TemplateExtendsRef[];
|
|
348
|
-
};
|
|
349
|
-
}
|
|
350
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,eAAe,CAAC;IACtB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,YAAY,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,eAAe,CAAC;IACvD,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,2CAA2C;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,8EAA8E;IAC9E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAMD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,eAAe,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IACzE,WAAW,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,wEAAwE;IACxE,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACtC;AAMD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,mCAAmC;IAClD,CAAC,WAAW,EAAE,MAAM,GAAG;QACrB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KACxC,CAAC;CACH;AAMD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAMD,6EAA6E;AAC7E,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,UAAU,GAAG,mBAAmB,CAAC;AAE/E,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAYD,MAAM,WAAW,+BAA+B;IAC9C,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;IACxC,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAMD,MAAM,WAAW,2BAA2B;IAC1C;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,6EAA6E;IAC7E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,SAAS,CAAC,EAAE,2BAA2B,CAAC;IACxC,+EAA+E;IAC/E,OAAO,EAAE,+BAA+B,EAAE,CAAC;IAC3C,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAUD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,qBAAqB,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,UAAU,GAAG,gBAAgB,GAAG,QAAQ,CAAC;IACpD,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IACzD,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,OAAO,GAAG,cAAc,GAAG,QAAQ,CAAC;QAC1C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,cAAc,CAAC,EAAE,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;KACpD,CAAC;IACF,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACnC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;CACxC;AAYD,MAAM,WAAW,mBAAmB;IAClC,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,0DAA0D;IAC1D,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAC5B;AAMD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE;QACP,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;CACH;AAMD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,IAAI,EAAE,YAAY,CAAC;IAEnB,4DAA4D;IAC5D,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB;;;WAGG;QACH,aAAa,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,SAAS,GAAG,aAAa,CAAC;QACjE,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,sFAAsF;QACtF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB;;;;;WAKG;QACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QACjD;;;;;;WAMG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;KACxD,CAAC;IAEF,wCAAwC;IACxC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAE5B,mDAAmD;IACnD,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IAEvB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAEnC,iDAAiD;IACjD,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAEpC,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAEjD,oCAAoC;IACpC,gBAAgB,CAAC,EAAE,uBAAuB,EAAE,CAAC;IAE7C,iDAAiD;IACjD,GAAG,CAAC,EAAE,cAAc,CAAC;IAErB,sCAAsC;IACtC,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAE9B,sBAAsB;IACtB,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC;KAC/B,CAAC;IAEF,uCAAuC;IACvC,2BAA2B,CAAC,EAAE,mCAAmC,CAAC;IAElE,mDAAmD;IACnD,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAEnC,8DAA8D;IAC9D,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAE/B,yEAAyE;IACzE,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAErC;;;;OAIG;IACH,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAEhC,mDAAmD;IACnD,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAMD,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG;QACvC,QAAQ,EAAE,eAAe,EAAE,CAAC;QAC5B,KAAK,EAAE,YAAY,EAAE,CAAC;QACtB,WAAW,EAAE,kBAAkB,EAAE,CAAC;QAClC,YAAY,EAAE,kBAAkB,EAAE,CAAC;QACnC,GAAG,EAAE,cAAc,GAAG,IAAI,CAAC;QAC3B,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAC;QAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,kBAAkB,EAAE,CAAC;QACvC,2BAA2B,CAAC,EAAE,mCAAmC,CAAC;QAClE,WAAW,EAAE,kBAAkB,EAAE,CAAC;QAClC,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;KAChC,CAAC;CACH"}
|
package/dist/types.js
DELETED
package/src/radar.yaml
DELETED
|
@@ -1,297 +0,0 @@
|
|
|
1
|
-
# Radar workspace template
|
|
2
|
-
# The EXTERNAL WORLD: competitors, market segments, trends, and inspirations.
|
|
3
|
-
# Feeds the Foundation (positioning/audience evidence) and the CRM (segments).
|
|
4
|
-
|
|
5
|
-
meta:
|
|
6
|
-
slug: radar
|
|
7
|
-
name: Radar
|
|
8
|
-
description: Track the outside world — competitors, market segments, trends, and inspirations — that informs strategy.
|
|
9
|
-
icon: radar
|
|
10
|
-
color: "#0891B2"
|
|
11
|
-
tags: [market, competitors, research, trends]
|
|
12
|
-
isPublic: true
|
|
13
|
-
|
|
14
|
-
workspace:
|
|
15
|
-
name: Radar
|
|
16
|
-
description: Track the outside world — competitors, market segments, trends, and inspirations — that informs strategy.
|
|
17
|
-
proposalId: radar-v1
|
|
18
|
-
subtype: radar
|
|
19
|
-
visibility: pod_visible
|
|
20
|
-
capabilities:
|
|
21
|
-
- radar.signals
|
|
22
|
-
sourceRoles:
|
|
23
|
-
radar: provider
|
|
24
|
-
|
|
25
|
-
profiles:
|
|
26
|
-
- slug: competitor
|
|
27
|
-
displayName: Competitor
|
|
28
|
-
icon: crosshair
|
|
29
|
-
color: red
|
|
30
|
-
description: A rival or alternative a buyer would compare you to.
|
|
31
|
-
properties:
|
|
32
|
-
- slug: positioning
|
|
33
|
-
label: Positioning
|
|
34
|
-
valueType: string
|
|
35
|
-
inputType: textarea
|
|
36
|
-
- slug: strengths
|
|
37
|
-
label: Strengths
|
|
38
|
-
valueType: string
|
|
39
|
-
inputType: textarea
|
|
40
|
-
- slug: weaknesses
|
|
41
|
-
label: Weaknesses
|
|
42
|
-
valueType: string
|
|
43
|
-
inputType: textarea
|
|
44
|
-
- slug: pricing
|
|
45
|
-
label: Pricing
|
|
46
|
-
valueType: string
|
|
47
|
-
inputType: text
|
|
48
|
-
- slug: url
|
|
49
|
-
label: URL
|
|
50
|
-
valueType: string
|
|
51
|
-
inputType: url
|
|
52
|
-
- slug: status
|
|
53
|
-
label: Status
|
|
54
|
-
valueType: string
|
|
55
|
-
inputType: select
|
|
56
|
-
enumValues: [watching, active-threat, adjacent, archived]
|
|
57
|
-
constraints: { defaultValue: watching }
|
|
58
|
-
|
|
59
|
-
- slug: market-segment
|
|
60
|
-
displayName: Market Segment
|
|
61
|
-
icon: pie-chart
|
|
62
|
-
color: blue
|
|
63
|
-
description: A slice of the market with its own size, maturity, and dynamics.
|
|
64
|
-
properties:
|
|
65
|
-
- slug: description
|
|
66
|
-
label: Description
|
|
67
|
-
valueType: string
|
|
68
|
-
inputType: textarea
|
|
69
|
-
- slug: tam
|
|
70
|
-
label: TAM
|
|
71
|
-
valueType: string
|
|
72
|
-
inputType: text
|
|
73
|
-
- slug: sam
|
|
74
|
-
label: SAM
|
|
75
|
-
valueType: string
|
|
76
|
-
inputType: text
|
|
77
|
-
- slug: som
|
|
78
|
-
label: SOM
|
|
79
|
-
valueType: string
|
|
80
|
-
inputType: text
|
|
81
|
-
- slug: ocean
|
|
82
|
-
label: Ocean
|
|
83
|
-
valueType: string
|
|
84
|
-
inputType: select
|
|
85
|
-
enumValues: [blue, red]
|
|
86
|
-
- slug: maturity
|
|
87
|
-
label: Maturity
|
|
88
|
-
valueType: string
|
|
89
|
-
inputType: select
|
|
90
|
-
enumValues: [emerging, growing, mature, declining]
|
|
91
|
-
|
|
92
|
-
- slug: trend
|
|
93
|
-
displayName: Trend
|
|
94
|
-
icon: trending-up
|
|
95
|
-
color: violet
|
|
96
|
-
description: A directional shift in the market, tech, or behavior worth tracking.
|
|
97
|
-
properties:
|
|
98
|
-
- slug: description
|
|
99
|
-
label: Description
|
|
100
|
-
valueType: string
|
|
101
|
-
inputType: textarea
|
|
102
|
-
- slug: direction
|
|
103
|
-
label: Direction
|
|
104
|
-
valueType: string
|
|
105
|
-
inputType: select
|
|
106
|
-
enumValues: [rising, steady, fading]
|
|
107
|
-
- slug: sources
|
|
108
|
-
label: Sources
|
|
109
|
-
valueType: array
|
|
110
|
-
inputType: text
|
|
111
|
-
- slug: relevance
|
|
112
|
-
label: Relevance
|
|
113
|
-
valueType: string
|
|
114
|
-
inputType: select
|
|
115
|
-
enumValues: [low, medium, high]
|
|
116
|
-
constraints: { defaultValue: medium }
|
|
117
|
-
|
|
118
|
-
- slug: inspiration
|
|
119
|
-
displayName: Inspiration
|
|
120
|
-
icon: sparkles
|
|
121
|
-
color: amber
|
|
122
|
-
description: A brand, founder, product, or campaign worth learning from.
|
|
123
|
-
properties:
|
|
124
|
-
- slug: kind
|
|
125
|
-
label: Kind
|
|
126
|
-
valueType: string
|
|
127
|
-
inputType: select
|
|
128
|
-
enumValues: [brand, founder, product, campaign]
|
|
129
|
-
- slug: why
|
|
130
|
-
label: Why
|
|
131
|
-
valueType: string
|
|
132
|
-
inputType: textarea
|
|
133
|
-
- slug: url
|
|
134
|
-
label: URL
|
|
135
|
-
valueType: string
|
|
136
|
-
inputType: url
|
|
137
|
-
|
|
138
|
-
views:
|
|
139
|
-
- name: Competitors
|
|
140
|
-
slug: competitors
|
|
141
|
-
type: table
|
|
142
|
-
scopeProfileSlug: competitor
|
|
143
|
-
description: Rivals and alternatives, with positioning and threat status.
|
|
144
|
-
defaultView: true
|
|
145
|
-
config:
|
|
146
|
-
columns: [title, positioning, status, pricing, url]
|
|
147
|
-
- name: Market Segments
|
|
148
|
-
slug: market-segments
|
|
149
|
-
type: kanban
|
|
150
|
-
scopeProfileSlug: market-segment
|
|
151
|
-
groupBy: ocean
|
|
152
|
-
description: Market slices grouped by blue/red ocean.
|
|
153
|
-
config:
|
|
154
|
-
groupBy: ocean
|
|
155
|
-
cardFields: [tam, maturity]
|
|
156
|
-
- name: Trends
|
|
157
|
-
slug: trends
|
|
158
|
-
type: table
|
|
159
|
-
scopeProfileSlug: trend
|
|
160
|
-
description: Directional shifts to track, by relevance.
|
|
161
|
-
config:
|
|
162
|
-
columns: [title, direction, relevance, description]
|
|
163
|
-
- name: Inspirations
|
|
164
|
-
slug: inspirations
|
|
165
|
-
type: grid
|
|
166
|
-
scopeProfileSlug: inspiration
|
|
167
|
-
description: Brands, founders, products, and campaigns to learn from.
|
|
168
|
-
- name: Radar Map
|
|
169
|
-
slug: radar-map
|
|
170
|
-
type: graph
|
|
171
|
-
scopeProfileSlugs: [competitor, market-segment, trend, inspiration]
|
|
172
|
-
description: The landscape as a connected map of signals.
|
|
173
|
-
|
|
174
|
-
# Schema-level relations — give the Radar Map and the relation picker
|
|
175
|
-
# domain-specific links from day one (not just pod defaults).
|
|
176
|
-
entityLinks:
|
|
177
|
-
- sourceProfileSlug: competitor
|
|
178
|
-
targetProfileSlug: market-segment
|
|
179
|
-
type: competes_in
|
|
180
|
-
label: Competes in
|
|
181
|
-
- sourceProfileSlug: trend
|
|
182
|
-
targetProfileSlug: market-segment
|
|
183
|
-
type: shapes
|
|
184
|
-
label: Shapes
|
|
185
|
-
|
|
186
|
-
onboarding:
|
|
187
|
-
goal: Map the competitive and market landscape so strategy is grounded in the real outside world.
|
|
188
|
-
framing: |
|
|
189
|
-
THE SCOUT: Act as a sharp market scout. Curious, factual, neutral. Surface who
|
|
190
|
-
else plays here, where the market is moving, and who's worth learning from.
|
|
191
|
-
Always cite a source when you can.
|
|
192
|
-
expertise:
|
|
193
|
-
starters:
|
|
194
|
-
- >
|
|
195
|
-
Don't just log named rivals — map the CATEGORY. Buyers compare across three
|
|
196
|
-
tiers: direct competitors, adjacent tools that solve the same job
|
|
197
|
-
differently, and the status quo ("a spreadsheet", "do nothing"). Propose
|
|
198
|
-
entries in all three, because the status quo is usually the real competitor.
|
|
199
|
-
- >
|
|
200
|
-
Track positioning by CONTRAST, not features. For each rival, capture the
|
|
201
|
-
one axis where you're deliberately opposite ("they're enterprise-heavy, we're
|
|
202
|
-
self-serve") — that contrast is what a buyer remembers. If they only give you
|
|
203
|
-
a feature list, reflect the underlying axis back and propose that.
|
|
204
|
-
- >
|
|
205
|
-
Separate LEADING from LAGGING signals. Pricing changes, hiring sprees, and
|
|
206
|
-
docs/changelog velocity predict where a competitor is going; press releases
|
|
207
|
-
and funding rounds only confirm where they've been. Prioritize the leading
|
|
208
|
-
indicators when you propose what to watch.
|
|
209
|
-
blindSpots:
|
|
210
|
-
- >
|
|
211
|
-
"We have no competitors" is a red flag, not a moat — it usually means the
|
|
212
|
-
category is undefined or the buyer's alternative (a manual workaround) hasn't
|
|
213
|
-
been named. Push to name what a buyer does TODAY instead of buying anything.
|
|
214
|
-
- >
|
|
215
|
-
Founders over-watch the loud incumbent and miss the fast-moving insurgent
|
|
216
|
-
one tier down. The threat that kills you is rarely the market leader — it's
|
|
217
|
-
the well-funded startup attacking your exact wedge. Surface the insurgents.
|
|
218
|
-
- >
|
|
219
|
-
A trend with no direction or timing is just a headline. Every trend needs a
|
|
220
|
-
stance: is it rising, steady, or fading, and does it help or hurt you? An
|
|
221
|
-
untimed "AI is big" tells strategy nothing — force the "so what for us".
|
|
222
|
-
bar: >
|
|
223
|
-
The landscape reads like a real map: every rival placed on a contrast axis, the
|
|
224
|
-
status-quo alternative named, and each trend carrying a direction and a "so what"
|
|
225
|
-
— so a strategist can see the open lane you should own, not just a list of logos.
|
|
226
|
-
collect:
|
|
227
|
-
- profileSlug: competitor
|
|
228
|
-
what: Rivals and alternatives a buyer would seriously compare you to.
|
|
229
|
-
cardinality: several
|
|
230
|
-
keyFields: [positioning, strengths]
|
|
231
|
-
- profileSlug: market-segment
|
|
232
|
-
what: The market slices you play in, with rough size and ocean.
|
|
233
|
-
cardinality: few
|
|
234
|
-
keyFields: [tam, ocean]
|
|
235
|
-
- profileSlug: trend
|
|
236
|
-
what: Directional shifts in tech, market, or behavior that affect you.
|
|
237
|
-
cardinality: several
|
|
238
|
-
keyFields: [direction, relevance]
|
|
239
|
-
- profileSlug: inspiration
|
|
240
|
-
what: Brands, founders, products, or campaigns worth learning from.
|
|
241
|
-
cardinality: few
|
|
242
|
-
keyFields: [kind, why]
|
|
243
|
-
openingQuestions:
|
|
244
|
-
- "Who are the 3 closest alternatives a buyer would compare you to?"
|
|
245
|
-
- "Which market segment matters most to you right now — and is it a blue or red ocean?"
|
|
246
|
-
- "What's one trend that's quietly reshaping your space?"
|
|
247
|
-
doneWhen: At least 3 competitors + 1 market segment + 2 trends captured.
|
|
248
|
-
|
|
249
|
-
app:
|
|
250
|
-
kind: stored
|
|
251
|
-
cellKey: entity-detail
|
|
252
|
-
|
|
253
|
-
layout:
|
|
254
|
-
defaultView: Competitors
|
|
255
|
-
defaultApp: null
|
|
256
|
-
pinnedApps: [dashboard, data, chat]
|
|
257
|
-
sidebarItems:
|
|
258
|
-
- kind: view
|
|
259
|
-
viewName: Competitors
|
|
260
|
-
label: Competitors
|
|
261
|
-
icon: crosshair
|
|
262
|
-
- kind: view
|
|
263
|
-
viewName: Market Segments
|
|
264
|
-
label: Segments
|
|
265
|
-
icon: pie-chart
|
|
266
|
-
- kind: view
|
|
267
|
-
viewName: Trends
|
|
268
|
-
label: Trends
|
|
269
|
-
icon: trending-up
|
|
270
|
-
- kind: view
|
|
271
|
-
viewName: Inspirations
|
|
272
|
-
label: Inspirations
|
|
273
|
-
icon: sparkles
|
|
274
|
-
- kind: view
|
|
275
|
-
viewName: Radar Map
|
|
276
|
-
label: Radar Map
|
|
277
|
-
icon: radar
|
|
278
|
-
- kind: app
|
|
279
|
-
appId: data
|
|
280
|
-
label: Data
|
|
281
|
-
icon: database
|
|
282
|
-
|
|
283
|
-
bento:
|
|
284
|
-
viewName: Radar Command Center
|
|
285
|
-
blocks:
|
|
286
|
-
- kind: view
|
|
287
|
-
viewName: Competitors
|
|
288
|
-
pos: { x: 0, y: 0, w: 7, h: 4 }
|
|
289
|
-
- kind: view
|
|
290
|
-
viewName: Trends
|
|
291
|
-
pos: { x: 7, y: 0, w: 5, h: 4 }
|
|
292
|
-
- kind: view
|
|
293
|
-
viewName: Market Segments
|
|
294
|
-
pos: { x: 0, y: 4, w: 6, h: 4 }
|
|
295
|
-
- kind: view
|
|
296
|
-
viewName: Inspirations
|
|
297
|
-
pos: { x: 6, y: 4, w: 6, h: 4 }
|