@synap-core/workspace-templates 0.2.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/define.d.ts +97 -0
- package/dist/define.d.ts.map +1 -0
- package/dist/define.js +91 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/templates.d.ts +7 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +23354 -0
- package/dist/types.d.ts +328 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/package.json +37 -0
- package/src/agent-fleet.yaml +1434 -0
- package/src/brand-library.yaml +627 -0
- package/src/builder.yaml +1355 -0
- package/src/content-os.yaml +1424 -0
- package/src/content-studio.yaml +312 -0
- package/src/crm.yaml +2606 -0
- package/src/define.ts +184 -0
- package/src/dev-dashboard.yaml +1309 -0
- package/src/foundation.yaml +343 -0
- package/src/index.ts +62 -0
- package/src/life-os.yaml +1443 -0
- package/src/marketing.yaml +244 -0
- package/src/personal.yaml +114 -0
- package/src/project-management.yaml +1119 -0
- package/src/radar.yaml +274 -0
- package/src/templates.ts +23363 -0
- package/src/types.ts +426 -0
|
@@ -0,0 +1,1424 @@
|
|
|
1
|
+
# Content OS workspace template
|
|
2
|
+
# Creator Operations / publishing hub — campaigns, posts, pillars, platforms,
|
|
3
|
+
# newsletters, and brand deals in one relational workspace.
|
|
4
|
+
# Distinct from content-studio.yaml (video render pipeline) — both are kept.
|
|
5
|
+
# AI-generation-friendly YAML. Validated against types.ts at build time.
|
|
6
|
+
|
|
7
|
+
meta:
|
|
8
|
+
slug: content-os
|
|
9
|
+
name: Content OS
|
|
10
|
+
description: "A sovereign content operating system. Plan campaigns, manage posts across platforms, track brand deals, and own your newsletter audience — all in one relational workspace you control forever."
|
|
11
|
+
icon: file-edit
|
|
12
|
+
color: "#6366F1"
|
|
13
|
+
tags: [content, creator, social-media, newsletter, campaigns]
|
|
14
|
+
isPublic: true
|
|
15
|
+
|
|
16
|
+
workspace:
|
|
17
|
+
name: "Content OS — Creator Operations Hub"
|
|
18
|
+
description: "A sovereign content operating system. Plan campaigns, manage posts across platforms, track brand deals, and own your newsletter audience — all in one relational workspace you control forever."
|
|
19
|
+
proposalId: content-os-v1
|
|
20
|
+
subtype: content-studio
|
|
21
|
+
visibility: members
|
|
22
|
+
|
|
23
|
+
profiles:
|
|
24
|
+
- slug: post
|
|
25
|
+
displayName: Post
|
|
26
|
+
icon: file-edit
|
|
27
|
+
color: "#6366F1"
|
|
28
|
+
description: "Your atomic content unit. One idea, multiple platform formats — tracked from spark to publication."
|
|
29
|
+
scope: WORKSPACE
|
|
30
|
+
properties:
|
|
31
|
+
- slug: post-status
|
|
32
|
+
label: Status
|
|
33
|
+
valueType: string
|
|
34
|
+
inputType: select
|
|
35
|
+
enumValues: ["Idea", "Briefed", "In Draft", "Review", "Scheduled", "Published", "Archived"]
|
|
36
|
+
- slug: post-format
|
|
37
|
+
label: Format
|
|
38
|
+
valueType: string
|
|
39
|
+
inputType: select
|
|
40
|
+
enumValues: ["Article", "Thread", "Short Video", "Long Video", "Carousel", "Image Post", "Story", "Newsletter Section", "Podcast Episode", "Other"]
|
|
41
|
+
- slug: post-platform
|
|
42
|
+
label: Platform
|
|
43
|
+
valueType: string
|
|
44
|
+
inputType: select
|
|
45
|
+
enumValues: ["LinkedIn", "Instagram", "TikTok", "YouTube", "Twitter / X", "Threads", "Bluesky", "Newsletter", "Podcast", "Blog", "Other"]
|
|
46
|
+
- slug: post-pillar
|
|
47
|
+
label: Pillar
|
|
48
|
+
valueType: entity_id
|
|
49
|
+
- slug: post-campaign
|
|
50
|
+
label: Campaign
|
|
51
|
+
valueType: entity_id
|
|
52
|
+
- slug: post-sponsor
|
|
53
|
+
label: Sponsor
|
|
54
|
+
valueType: entity_id
|
|
55
|
+
- slug: publish-date
|
|
56
|
+
label: Publish Date
|
|
57
|
+
valueType: date
|
|
58
|
+
- slug: post-hook
|
|
59
|
+
label: "Hook / Headline"
|
|
60
|
+
valueType: string
|
|
61
|
+
inputType: text
|
|
62
|
+
placeholder: "Opening line or headline that stops the scroll"
|
|
63
|
+
- slug: post-cta
|
|
64
|
+
label: CTA
|
|
65
|
+
valueType: string
|
|
66
|
+
inputType: text
|
|
67
|
+
placeholder: "What should the audience do?"
|
|
68
|
+
- slug: post-tags
|
|
69
|
+
label: Tags
|
|
70
|
+
valueType: array
|
|
71
|
+
- slug: engagement-score
|
|
72
|
+
label: Engagement Score
|
|
73
|
+
valueType: number
|
|
74
|
+
inputType: number
|
|
75
|
+
placeholder: "Numeric performance metric (likes + comments + shares)"
|
|
76
|
+
- slug: post-reach
|
|
77
|
+
label: "Reach / Views"
|
|
78
|
+
valueType: number
|
|
79
|
+
inputType: number
|
|
80
|
+
- slug: repurposed-from
|
|
81
|
+
label: Repurposed From
|
|
82
|
+
valueType: string
|
|
83
|
+
inputType: text
|
|
84
|
+
placeholder: "Source post or content this was adapted from"
|
|
85
|
+
- slug: post-url
|
|
86
|
+
label: Published URL
|
|
87
|
+
valueType: string
|
|
88
|
+
inputType: text
|
|
89
|
+
placeholder: "https://..."
|
|
90
|
+
constraints: { format: url }
|
|
91
|
+
|
|
92
|
+
- slug: campaign
|
|
93
|
+
displayName: Campaign
|
|
94
|
+
icon: target
|
|
95
|
+
color: "#F59E0B"
|
|
96
|
+
description: "A grouped content initiative — product launch, editorial series, seasonal push, or challenge."
|
|
97
|
+
scope: WORKSPACE
|
|
98
|
+
properties:
|
|
99
|
+
- slug: campaign-status
|
|
100
|
+
label: Status
|
|
101
|
+
valueType: string
|
|
102
|
+
inputType: select
|
|
103
|
+
enumValues: ["Planned", "Active", "Completed", "Paused", "Cancelled"]
|
|
104
|
+
- slug: campaign-type
|
|
105
|
+
label: Type
|
|
106
|
+
valueType: string
|
|
107
|
+
inputType: select
|
|
108
|
+
enumValues: ["Product Launch", "Editorial Series", "Seasonal", "Brand Partnership", "Challenge", "Evergreen", "Awareness", "Other"]
|
|
109
|
+
- slug: campaign-pillar
|
|
110
|
+
label: Primary Pillar
|
|
111
|
+
valueType: entity_id
|
|
112
|
+
- slug: campaign-start
|
|
113
|
+
label: Start Date
|
|
114
|
+
valueType: date
|
|
115
|
+
- slug: campaign-end
|
|
116
|
+
label: End Date
|
|
117
|
+
valueType: date
|
|
118
|
+
- slug: campaign-goal
|
|
119
|
+
label: Goal
|
|
120
|
+
valueType: string
|
|
121
|
+
inputType: text
|
|
122
|
+
placeholder: "What does success look like? Followers, sign-ups, revenue..."
|
|
123
|
+
- slug: campaign-kpi
|
|
124
|
+
label: Primary KPI
|
|
125
|
+
valueType: string
|
|
126
|
+
inputType: select
|
|
127
|
+
enumValues: ["Follower Growth", "Newsletter Sign-ups", "Engagement Rate", "Revenue", "Reach", "Brand Deals Closed", "Link Clicks", "Other"]
|
|
128
|
+
- slug: kpi-target
|
|
129
|
+
label: KPI Target
|
|
130
|
+
valueType: number
|
|
131
|
+
inputType: number
|
|
132
|
+
placeholder: "Numeric target for the primary KPI"
|
|
133
|
+
- slug: kpi-result
|
|
134
|
+
label: KPI Result
|
|
135
|
+
valueType: number
|
|
136
|
+
inputType: number
|
|
137
|
+
placeholder: "Fill when complete"
|
|
138
|
+
- slug: campaign-budget
|
|
139
|
+
label: "Budget (€)"
|
|
140
|
+
valueType: number
|
|
141
|
+
inputType: number
|
|
142
|
+
- slug: post-count
|
|
143
|
+
label: Post Count
|
|
144
|
+
valueType: number
|
|
145
|
+
inputType: number
|
|
146
|
+
- slug: campaign-tags
|
|
147
|
+
label: Tags
|
|
148
|
+
valueType: array
|
|
149
|
+
|
|
150
|
+
- slug: pillar
|
|
151
|
+
displayName: Pillar
|
|
152
|
+
icon: columns
|
|
153
|
+
color: "#8B5CF6"
|
|
154
|
+
description: "A recurring content theme — the lens through which your audience knows you. The organizing principle of your brand."
|
|
155
|
+
scope: WORKSPACE
|
|
156
|
+
properties:
|
|
157
|
+
- slug: pillar-status
|
|
158
|
+
label: Status
|
|
159
|
+
valueType: string
|
|
160
|
+
inputType: select
|
|
161
|
+
enumValues: ["Active", "Developing", "Paused", "Retired"]
|
|
162
|
+
- slug: pillar-audience
|
|
163
|
+
label: Audience Segment
|
|
164
|
+
valueType: string
|
|
165
|
+
inputType: text
|
|
166
|
+
placeholder: "Who does this pillar speak to?"
|
|
167
|
+
- slug: pillar-goal
|
|
168
|
+
label: Audience Goal
|
|
169
|
+
valueType: string
|
|
170
|
+
inputType: text
|
|
171
|
+
placeholder: "What should the audience think, feel, or do after consuming this pillar?"
|
|
172
|
+
- slug: pillar-formats
|
|
173
|
+
label: Primary Formats
|
|
174
|
+
valueType: string
|
|
175
|
+
inputType: select
|
|
176
|
+
enumValues: ["Articles + Threads", "Short Video", "Long Video", "Newsletter", "Podcast", "Carousel", "Mixed"]
|
|
177
|
+
- slug: post-count-pillar
|
|
178
|
+
label: Total Posts Published
|
|
179
|
+
valueType: number
|
|
180
|
+
inputType: number
|
|
181
|
+
- slug: avg-engagement
|
|
182
|
+
label: Avg Engagement Score
|
|
183
|
+
valueType: number
|
|
184
|
+
inputType: number
|
|
185
|
+
- slug: top-post
|
|
186
|
+
label: Top Performing Post
|
|
187
|
+
valueType: string
|
|
188
|
+
inputType: text
|
|
189
|
+
placeholder: "Title of best performing post in this pillar"
|
|
190
|
+
- slug: posting-frequency
|
|
191
|
+
label: Target Frequency
|
|
192
|
+
valueType: string
|
|
193
|
+
inputType: select
|
|
194
|
+
enumValues: ["Daily", "3x / week", "2x / week", "Weekly", "Bi-weekly", "Monthly", "Ad hoc"]
|
|
195
|
+
- slug: pillar-tags
|
|
196
|
+
label: Tags
|
|
197
|
+
valueType: array
|
|
198
|
+
|
|
199
|
+
- slug: platform
|
|
200
|
+
displayName: Platform
|
|
201
|
+
icon: share-2
|
|
202
|
+
color: "#06B6D4"
|
|
203
|
+
description: "A social account, newsletter publication, or podcast channel. Each platform has its own audience metrics and publishing rhythm."
|
|
204
|
+
scope: WORKSPACE
|
|
205
|
+
properties:
|
|
206
|
+
- slug: platform-type
|
|
207
|
+
label: Type
|
|
208
|
+
valueType: string
|
|
209
|
+
inputType: select
|
|
210
|
+
enumValues: ["LinkedIn", "Instagram", "TikTok", "YouTube", "Twitter / X", "Threads", "Bluesky", "Newsletter", "Podcast", "Blog / Website", "Other"]
|
|
211
|
+
- slug: platform-status
|
|
212
|
+
label: Status
|
|
213
|
+
valueType: string
|
|
214
|
+
inputType: select
|
|
215
|
+
enumValues: ["Active", "Building", "Maintenance Mode", "Inactive"]
|
|
216
|
+
- slug: platform-url
|
|
217
|
+
label: Profile URL
|
|
218
|
+
valueType: string
|
|
219
|
+
inputType: text
|
|
220
|
+
placeholder: "https://..."
|
|
221
|
+
constraints: { format: url }
|
|
222
|
+
- slug: follower-count
|
|
223
|
+
label: "Follower / Subscriber Count"
|
|
224
|
+
valueType: number
|
|
225
|
+
inputType: number
|
|
226
|
+
- slug: follower-target
|
|
227
|
+
label: Target Count
|
|
228
|
+
valueType: number
|
|
229
|
+
inputType: number
|
|
230
|
+
- slug: avg-engagement-rate
|
|
231
|
+
label: "Avg Engagement Rate (%)"
|
|
232
|
+
valueType: number
|
|
233
|
+
inputType: number
|
|
234
|
+
- slug: platform-posting-freq
|
|
235
|
+
label: Posting Frequency
|
|
236
|
+
valueType: string
|
|
237
|
+
inputType: select
|
|
238
|
+
enumValues: ["Daily", "3x / week", "2x / week", "Weekly", "Bi-weekly", "Monthly", "As Needed"]
|
|
239
|
+
- slug: last-post-date
|
|
240
|
+
label: Last Post Date
|
|
241
|
+
valueType: date
|
|
242
|
+
- slug: platform-notes
|
|
243
|
+
label: Notes
|
|
244
|
+
valueType: string
|
|
245
|
+
inputType: text
|
|
246
|
+
placeholder: "What works here? Tone, format, best times..."
|
|
247
|
+
- slug: platform-tags
|
|
248
|
+
label: Tags
|
|
249
|
+
valueType: array
|
|
250
|
+
|
|
251
|
+
- slug: newsletter
|
|
252
|
+
displayName: Newsletter
|
|
253
|
+
icon: mail
|
|
254
|
+
color: "#10B981"
|
|
255
|
+
description: "A newsletter issue — your direct channel to an owned audience. No algorithm, no platform fee, no intermediary."
|
|
256
|
+
scope: WORKSPACE
|
|
257
|
+
properties:
|
|
258
|
+
- slug: newsletter-status
|
|
259
|
+
label: Status
|
|
260
|
+
valueType: string
|
|
261
|
+
inputType: select
|
|
262
|
+
enumValues: ["Idea", "Drafting", "Editing", "Scheduled", "Sent", "Archived"]
|
|
263
|
+
- slug: newsletter-series
|
|
264
|
+
label: Series
|
|
265
|
+
valueType: string
|
|
266
|
+
inputType: text
|
|
267
|
+
placeholder: "Which newsletter series is this issue part of?"
|
|
268
|
+
- slug: issue-number
|
|
269
|
+
label: Issue Number
|
|
270
|
+
valueType: number
|
|
271
|
+
inputType: number
|
|
272
|
+
- slug: subject-line
|
|
273
|
+
label: Subject Line
|
|
274
|
+
valueType: string
|
|
275
|
+
inputType: text
|
|
276
|
+
placeholder: "The subject line — your most important copy"
|
|
277
|
+
- slug: preview-text
|
|
278
|
+
label: Preview Text
|
|
279
|
+
valueType: string
|
|
280
|
+
inputType: text
|
|
281
|
+
placeholder: "45-character preview shown in inbox (after subject)"
|
|
282
|
+
- slug: send-date
|
|
283
|
+
label: Send Date
|
|
284
|
+
valueType: date
|
|
285
|
+
- slug: subscriber-count
|
|
286
|
+
label: Subscriber Count at Send
|
|
287
|
+
valueType: number
|
|
288
|
+
inputType: number
|
|
289
|
+
- slug: open-rate
|
|
290
|
+
label: "Open Rate (%)"
|
|
291
|
+
valueType: number
|
|
292
|
+
inputType: number
|
|
293
|
+
- slug: click-rate
|
|
294
|
+
label: "Click Rate (%)"
|
|
295
|
+
valueType: number
|
|
296
|
+
inputType: number
|
|
297
|
+
- slug: newsletter-sponsor
|
|
298
|
+
label: Sponsor
|
|
299
|
+
valueType: entity_id
|
|
300
|
+
- slug: newsletter-campaign
|
|
301
|
+
label: Campaign
|
|
302
|
+
valueType: entity_id
|
|
303
|
+
- slug: newsletter-pillar
|
|
304
|
+
label: Primary Pillar
|
|
305
|
+
valueType: entity_id
|
|
306
|
+
- slug: newsletter-tags
|
|
307
|
+
label: Tags
|
|
308
|
+
valueType: array
|
|
309
|
+
|
|
310
|
+
- slug: sponsor
|
|
311
|
+
displayName: Sponsor
|
|
312
|
+
icon: briefcase
|
|
313
|
+
color: "#F43F5E"
|
|
314
|
+
description: "A brand deal or sponsorship — from first contact to final payment. Track deliverables, deadlines, and performance in one place."
|
|
315
|
+
scope: WORKSPACE
|
|
316
|
+
properties:
|
|
317
|
+
- slug: deal-status
|
|
318
|
+
label: Deal Status
|
|
319
|
+
valueType: string
|
|
320
|
+
inputType: select
|
|
321
|
+
enumValues: ["Prospecting", "Outreach Sent", "In Negotiation", "Contract Signed", "Active", "Deliverables Pending", "Completed", "Invoiced", "Paid", "Declined"]
|
|
322
|
+
- slug: sponsor-type
|
|
323
|
+
label: Deal Type
|
|
324
|
+
valueType: string
|
|
325
|
+
inputType: select
|
|
326
|
+
enumValues: ["Newsletter Sponsorship", "Social Post", "Podcast Ad", "Video Integration", "Affiliate", "Product Review", "Ambassador", "Event", "Other"]
|
|
327
|
+
- slug: contact-name
|
|
328
|
+
label: Contact Name
|
|
329
|
+
valueType: string
|
|
330
|
+
inputType: text
|
|
331
|
+
placeholder: "Brand contact / campaign manager"
|
|
332
|
+
- slug: contact-email
|
|
333
|
+
label: Contact Email
|
|
334
|
+
valueType: string
|
|
335
|
+
inputType: text
|
|
336
|
+
placeholder: "contact@brand.com"
|
|
337
|
+
constraints: { format: email }
|
|
338
|
+
- slug: deal-value
|
|
339
|
+
label: "Deal Value (€)"
|
|
340
|
+
valueType: number
|
|
341
|
+
inputType: number
|
|
342
|
+
- slug: payment-status
|
|
343
|
+
label: Payment Status
|
|
344
|
+
valueType: string
|
|
345
|
+
inputType: select
|
|
346
|
+
enumValues: ["Not Yet Due", "Invoice Sent", "Paid", "Overdue", "Disputed"]
|
|
347
|
+
- slug: contract-date
|
|
348
|
+
label: Contract Date
|
|
349
|
+
valueType: date
|
|
350
|
+
- slug: deliverable-deadline
|
|
351
|
+
label: Deliverable Deadline
|
|
352
|
+
valueType: date
|
|
353
|
+
- slug: exclusivity-end
|
|
354
|
+
label: Exclusivity End Date
|
|
355
|
+
valueType: date
|
|
356
|
+
- slug: deliverables
|
|
357
|
+
label: Deliverables
|
|
358
|
+
valueType: string
|
|
359
|
+
inputType: text
|
|
360
|
+
placeholder: "What exactly was promised? (2 posts, 1 newsletter mention, story, etc.)"
|
|
361
|
+
- slug: talking-points
|
|
362
|
+
label: Key Talking Points
|
|
363
|
+
valueType: string
|
|
364
|
+
inputType: text
|
|
365
|
+
placeholder: "Brand messages, required mentions, do-not-say list"
|
|
366
|
+
- slug: performance-notes
|
|
367
|
+
label: Performance Notes
|
|
368
|
+
valueType: string
|
|
369
|
+
inputType: text
|
|
370
|
+
placeholder: "What results did you report to the brand?"
|
|
371
|
+
- slug: sponsor-tags
|
|
372
|
+
label: Tags
|
|
373
|
+
valueType: array
|
|
374
|
+
|
|
375
|
+
views:
|
|
376
|
+
- name: Content Calendar
|
|
377
|
+
type: calendar
|
|
378
|
+
scopeProfileSlug: post
|
|
379
|
+
config:
|
|
380
|
+
dateField: publish-date
|
|
381
|
+
colorField: post-platform
|
|
382
|
+
- name: Post Pipeline
|
|
383
|
+
type: kanban
|
|
384
|
+
scopeProfileSlug: post
|
|
385
|
+
config:
|
|
386
|
+
groupByField: post-status
|
|
387
|
+
cardFields: [post-format, post-platform, post-pillar, publish-date]
|
|
388
|
+
- name: All Posts
|
|
389
|
+
type: table
|
|
390
|
+
scopeProfileSlug: post
|
|
391
|
+
config:
|
|
392
|
+
visibleColumns: [post-status, post-format, post-platform, post-pillar, publish-date, engagement-score, post-reach]
|
|
393
|
+
defaultSort: { field: publish-date, direction: desc }
|
|
394
|
+
rowHeight: default
|
|
395
|
+
- name: Ideas Inbox
|
|
396
|
+
type: kanban
|
|
397
|
+
scopeProfileSlug: post
|
|
398
|
+
config:
|
|
399
|
+
groupByField: post-format
|
|
400
|
+
cardFields: [post-format, post-status, post-hook, post-tags]
|
|
401
|
+
- name: Repurposing Queue
|
|
402
|
+
type: table
|
|
403
|
+
scopeProfileSlug: post
|
|
404
|
+
config:
|
|
405
|
+
visibleColumns: [post-status, post-format, post-platform, post-pillar, repurposed-from, publish-date]
|
|
406
|
+
defaultSort: { field: post-platform, direction: asc }
|
|
407
|
+
rowHeight: default
|
|
408
|
+
- name: Content Graph
|
|
409
|
+
type: graph
|
|
410
|
+
scopeProfileSlugs: [post, campaign, pillar, newsletter, sponsor]
|
|
411
|
+
config:
|
|
412
|
+
layout: force
|
|
413
|
+
showRelations: true
|
|
414
|
+
- name: Campaigns
|
|
415
|
+
type: kanban
|
|
416
|
+
scopeProfileSlug: campaign
|
|
417
|
+
config:
|
|
418
|
+
groupByField: campaign-status
|
|
419
|
+
cardFields: [campaign-type, campaign-pillar, campaign-start, campaign-end, campaign-kpi]
|
|
420
|
+
- name: Campaign Timeline
|
|
421
|
+
type: timeline
|
|
422
|
+
scopeProfileSlug: campaign
|
|
423
|
+
config:
|
|
424
|
+
timeField: campaign-end
|
|
425
|
+
groupByField: campaign-status
|
|
426
|
+
- name: Pillars
|
|
427
|
+
type: table
|
|
428
|
+
scopeProfileSlug: pillar
|
|
429
|
+
config:
|
|
430
|
+
visibleColumns: [pillar-status, pillar-audience, pillar-goal, pillar-formats, posting-frequency, post-count-pillar, avg-engagement]
|
|
431
|
+
defaultSort: { field: pillar-status, direction: asc }
|
|
432
|
+
rowHeight: default
|
|
433
|
+
- name: Platforms
|
|
434
|
+
type: table
|
|
435
|
+
scopeProfileSlug: platform
|
|
436
|
+
config:
|
|
437
|
+
visibleColumns: [platform-type, platform-status, follower-count, follower-target, avg-engagement-rate, platform-posting-freq, last-post-date]
|
|
438
|
+
defaultSort: { field: follower-count, direction: desc }
|
|
439
|
+
rowHeight: default
|
|
440
|
+
- name: Newsletter Issues
|
|
441
|
+
type: table
|
|
442
|
+
scopeProfileSlug: newsletter
|
|
443
|
+
config:
|
|
444
|
+
visibleColumns: [newsletter-status, newsletter-series, issue-number, subject-line, send-date, subscriber-count, open-rate, click-rate, newsletter-sponsor]
|
|
445
|
+
defaultSort: { field: send-date, direction: desc }
|
|
446
|
+
rowHeight: default
|
|
447
|
+
- name: Newsletter Pipeline
|
|
448
|
+
type: kanban
|
|
449
|
+
scopeProfileSlug: newsletter
|
|
450
|
+
config:
|
|
451
|
+
groupByField: newsletter-status
|
|
452
|
+
cardFields: [newsletter-series, issue-number, subject-line, send-date, newsletter-sponsor]
|
|
453
|
+
- name: Newsletter Calendar
|
|
454
|
+
type: calendar
|
|
455
|
+
scopeProfileSlug: newsletter
|
|
456
|
+
config:
|
|
457
|
+
dateField: send-date
|
|
458
|
+
colorField: newsletter-status
|
|
459
|
+
- name: Sponsor Tracker
|
|
460
|
+
type: kanban
|
|
461
|
+
scopeProfileSlug: sponsor
|
|
462
|
+
config:
|
|
463
|
+
groupByField: deal-status
|
|
464
|
+
cardFields: [sponsor-type, deal-value, deliverable-deadline, payment-status]
|
|
465
|
+
- name: Sponsors Table
|
|
466
|
+
type: table
|
|
467
|
+
scopeProfileSlug: sponsor
|
|
468
|
+
config:
|
|
469
|
+
visibleColumns: [deal-status, sponsor-type, contact-name, deal-value, payment-status, deliverable-deadline, exclusivity-end]
|
|
470
|
+
defaultSort: { field: deliverable-deadline, direction: asc }
|
|
471
|
+
rowHeight: default
|
|
472
|
+
- name: Sponsor Deadlines
|
|
473
|
+
type: calendar
|
|
474
|
+
scopeProfileSlug: sponsor
|
|
475
|
+
config:
|
|
476
|
+
dateField: deliverable-deadline
|
|
477
|
+
colorField: payment-status
|
|
478
|
+
- name: Post
|
|
479
|
+
type: bento
|
|
480
|
+
scopeProfileSlug: post
|
|
481
|
+
config:
|
|
482
|
+
layout: bento
|
|
483
|
+
blocks:
|
|
484
|
+
- id: post-header
|
|
485
|
+
kind: widget
|
|
486
|
+
widgetType: section-header
|
|
487
|
+
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
488
|
+
config: { title: Posts, icon: FileEdit, color: "#6366F1", profileSlug: post }
|
|
489
|
+
- id: post-count
|
|
490
|
+
kind: widget
|
|
491
|
+
widgetType: stat-card
|
|
492
|
+
pos: { x: 0, y: 2, w: 3, h: 3 }
|
|
493
|
+
config: { label: Total Posts, aggregation: count, profileSlug: post, color: "#6366F1" }
|
|
494
|
+
- id: post-pipeline
|
|
495
|
+
kind: view
|
|
496
|
+
viewName: Post Pipeline
|
|
497
|
+
pos: { x: 0, y: 9, w: 12, h: 8 }
|
|
498
|
+
- id: post-cal
|
|
499
|
+
kind: view
|
|
500
|
+
viewName: Content Calendar
|
|
501
|
+
pos: { x: 0, y: 19, w: 12, h: 8 }
|
|
502
|
+
- id: post-published
|
|
503
|
+
kind: widget
|
|
504
|
+
widgetType: entity-count
|
|
505
|
+
pos: { x: 3, y: 2, w: 3, h: 3 }
|
|
506
|
+
config: { profileSlug: post, label: Published, icon: Globe, filter: { status: published }, color: "#10B981" }
|
|
507
|
+
- id: post-drafts
|
|
508
|
+
kind: widget
|
|
509
|
+
widgetType: entity-count
|
|
510
|
+
pos: { x: 6, y: 2, w: 3, h: 3 }
|
|
511
|
+
config: { profileSlug: post, label: Drafts, icon: FileEdit, filter: { status: draft }, color: "#6B7280" }
|
|
512
|
+
- id: post-scheduled
|
|
513
|
+
kind: widget
|
|
514
|
+
widgetType: entity-count
|
|
515
|
+
pos: { x: 9, y: 2, w: 3, h: 3 }
|
|
516
|
+
config: { profileSlug: post, label: Scheduled, icon: Clock, filter: { status: scheduled }, color: "#F59E0B" }
|
|
517
|
+
- id: post-spotlight
|
|
518
|
+
kind: widget
|
|
519
|
+
widgetType: entity-spotlight
|
|
520
|
+
pos: { x: 0, y: 5, w: 5, h: 4 }
|
|
521
|
+
config: { profileSlug: post, seed: daily, layout: detail, subtitleField: platform, color: "#EC4899" }
|
|
522
|
+
- id: post-gallery
|
|
523
|
+
kind: widget
|
|
524
|
+
widgetType: entity-gallery
|
|
525
|
+
pos: { x: 5, y: 5, w: 7, h: 4 }
|
|
526
|
+
config: { profileSlug: post, coverField: thumbnail-url, title: Recent Posts, limit: 6 }
|
|
527
|
+
breakpoints:
|
|
528
|
+
lg: { cols: 12, rowHeight: 60, gap: 12 }
|
|
529
|
+
md: { cols: 10, rowHeight: 60, gap: 12 }
|
|
530
|
+
sm: { cols: 6, rowHeight: 60, gap: 12 }
|
|
531
|
+
xs: { cols: 4, rowHeight: 60, gap: 12 }
|
|
532
|
+
xxs: { cols: 2, rowHeight: 60, gap: 12 }
|
|
533
|
+
- name: Campaign
|
|
534
|
+
type: bento
|
|
535
|
+
scopeProfileSlug: campaign
|
|
536
|
+
config:
|
|
537
|
+
layout: bento
|
|
538
|
+
blocks:
|
|
539
|
+
- id: campaign-header
|
|
540
|
+
kind: widget
|
|
541
|
+
widgetType: section-header
|
|
542
|
+
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
543
|
+
config: { title: Campaigns, icon: Target, color: "#F59E0B", profileSlug: campaign }
|
|
544
|
+
- id: campaign-count
|
|
545
|
+
kind: widget
|
|
546
|
+
widgetType: stat-card
|
|
547
|
+
pos: { x: 0, y: 2, w: 3, h: 3 }
|
|
548
|
+
config: { label: Total Campaigns, aggregation: count, profileSlug: campaign, color: "#F59E0B" }
|
|
549
|
+
- id: campaign-board
|
|
550
|
+
kind: view
|
|
551
|
+
viewName: Campaigns
|
|
552
|
+
pos: { x: 0, y: 9, w: 12, h: 8 }
|
|
553
|
+
- id: campaign-timeline
|
|
554
|
+
kind: view
|
|
555
|
+
viewName: Campaign Timeline
|
|
556
|
+
pos: { x: 0, y: 19, w: 12, h: 8 }
|
|
557
|
+
- id: campaign-active
|
|
558
|
+
kind: widget
|
|
559
|
+
widgetType: entity-count
|
|
560
|
+
pos: { x: 3, y: 2, w: 3, h: 3 }
|
|
561
|
+
config: { profileSlug: campaign, label: Active, icon: Play, filter: { status: active }, color: "#10B981" }
|
|
562
|
+
- id: campaign-posts
|
|
563
|
+
kind: widget
|
|
564
|
+
widgetType: entity-count
|
|
565
|
+
pos: { x: 6, y: 2, w: 3, h: 3 }
|
|
566
|
+
config: { profileSlug: post, label: Campaign Posts, icon: FileText, color: "#EC4899" }
|
|
567
|
+
- id: campaign-spotlight
|
|
568
|
+
kind: widget
|
|
569
|
+
widgetType: entity-spotlight
|
|
570
|
+
pos: { x: 0, y: 5, w: 5, h: 4 }
|
|
571
|
+
config: { profileSlug: campaign, seed: daily, layout: detail, subtitleField: status, color: "#8B5CF6" }
|
|
572
|
+
- id: campaign-post-list
|
|
573
|
+
kind: widget
|
|
574
|
+
widgetType: entity-list
|
|
575
|
+
pos: { x: 5, y: 5, w: 7, h: 4 }
|
|
576
|
+
config: { profileSlug: post, title: Campaign Posts, limit: 6, variant: compact }
|
|
577
|
+
breakpoints:
|
|
578
|
+
lg: { cols: 12, rowHeight: 60, gap: 12 }
|
|
579
|
+
md: { cols: 10, rowHeight: 60, gap: 12 }
|
|
580
|
+
sm: { cols: 6, rowHeight: 60, gap: 12 }
|
|
581
|
+
xs: { cols: 4, rowHeight: 60, gap: 12 }
|
|
582
|
+
xxs: { cols: 2, rowHeight: 60, gap: 12 }
|
|
583
|
+
- name: Newsletter
|
|
584
|
+
type: bento
|
|
585
|
+
scopeProfileSlug: newsletter
|
|
586
|
+
config:
|
|
587
|
+
layout: bento
|
|
588
|
+
blocks:
|
|
589
|
+
- id: nl-header
|
|
590
|
+
kind: widget
|
|
591
|
+
widgetType: section-header
|
|
592
|
+
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
593
|
+
config: { title: Newsletters, icon: Mail, color: "#10B981", profileSlug: newsletter }
|
|
594
|
+
- id: nl-count
|
|
595
|
+
kind: widget
|
|
596
|
+
widgetType: stat-card
|
|
597
|
+
pos: { x: 0, y: 2, w: 3, h: 3 }
|
|
598
|
+
config: { label: Total Issues, aggregation: count, profileSlug: newsletter, color: "#10B981" }
|
|
599
|
+
- id: nl-pipeline
|
|
600
|
+
kind: view
|
|
601
|
+
viewName: Newsletter Pipeline
|
|
602
|
+
pos: { x: 0, y: 5, w: 12, h: 10 }
|
|
603
|
+
- id: nl-table
|
|
604
|
+
kind: view
|
|
605
|
+
viewName: Newsletter Issues
|
|
606
|
+
pos: { x: 0, y: 15, w: 12, h: 8 }
|
|
607
|
+
breakpoints:
|
|
608
|
+
lg: { cols: 12, rowHeight: 60, gap: 12 }
|
|
609
|
+
md: { cols: 10, rowHeight: 60, gap: 12 }
|
|
610
|
+
sm: { cols: 6, rowHeight: 60, gap: 12 }
|
|
611
|
+
xs: { cols: 4, rowHeight: 60, gap: 12 }
|
|
612
|
+
xxs: { cols: 2, rowHeight: 60, gap: 12 }
|
|
613
|
+
- name: Pillar
|
|
614
|
+
type: bento
|
|
615
|
+
scopeProfileSlug: pillar
|
|
616
|
+
config:
|
|
617
|
+
layout: bento
|
|
618
|
+
blocks:
|
|
619
|
+
- id: pillar-header
|
|
620
|
+
kind: widget
|
|
621
|
+
widgetType: section-header
|
|
622
|
+
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
623
|
+
config: { title: Content Pillars, icon: Layers, color: "#3B82F6", profileSlug: pillar }
|
|
624
|
+
- id: pillar-count
|
|
625
|
+
kind: widget
|
|
626
|
+
widgetType: stat-card
|
|
627
|
+
pos: { x: 0, y: 2, w: 3, h: 3 }
|
|
628
|
+
config: { label: Pillars, aggregation: count, profileSlug: pillar, color: "#3B82F6", icon: Layers }
|
|
629
|
+
- id: pillar-posts-count
|
|
630
|
+
kind: widget
|
|
631
|
+
widgetType: entity-count
|
|
632
|
+
pos: { x: 3, y: 2, w: 3, h: 3 }
|
|
633
|
+
config: { profileSlug: post, label: Posts in Pillar, icon: FileText, color: "#EC4899" }
|
|
634
|
+
- id: pillar-campaigns
|
|
635
|
+
kind: widget
|
|
636
|
+
widgetType: entity-count
|
|
637
|
+
pos: { x: 6, y: 2, w: 3, h: 3 }
|
|
638
|
+
config: { profileSlug: campaign, label: Campaigns, icon: Target, color: "#8B5CF6" }
|
|
639
|
+
- id: pillar-spotlight
|
|
640
|
+
kind: widget
|
|
641
|
+
widgetType: entity-spotlight
|
|
642
|
+
pos: { x: 0, y: 5, w: 6, h: 4 }
|
|
643
|
+
config: { profileSlug: pillar, seed: daily, layout: detail, color: "#3B82F6" }
|
|
644
|
+
- id: pillar-post-list
|
|
645
|
+
kind: widget
|
|
646
|
+
widgetType: entity-list
|
|
647
|
+
pos: { x: 6, y: 5, w: 6, h: 4 }
|
|
648
|
+
config: { profileSlug: post, title: Posts in this Pillar, limit: 6, variant: compact }
|
|
649
|
+
- id: pillar-table
|
|
650
|
+
kind: view
|
|
651
|
+
viewName: Pillars
|
|
652
|
+
pos: { x: 0, y: 9, w: 12, h: 8 }
|
|
653
|
+
|
|
654
|
+
entityLinks:
|
|
655
|
+
- sourceProfileSlug: post
|
|
656
|
+
targetProfileSlug: pillar
|
|
657
|
+
type: under
|
|
658
|
+
- sourceProfileSlug: post
|
|
659
|
+
targetProfileSlug: campaign
|
|
660
|
+
type: part_of
|
|
661
|
+
- sourceProfileSlug: post
|
|
662
|
+
targetProfileSlug: sponsor
|
|
663
|
+
type: sponsored_by
|
|
664
|
+
- sourceProfileSlug: campaign
|
|
665
|
+
targetProfileSlug: pillar
|
|
666
|
+
type: under
|
|
667
|
+
- sourceProfileSlug: newsletter
|
|
668
|
+
targetProfileSlug: campaign
|
|
669
|
+
type: part_of
|
|
670
|
+
- sourceProfileSlug: newsletter
|
|
671
|
+
targetProfileSlug: pillar
|
|
672
|
+
type: under
|
|
673
|
+
- sourceProfileSlug: newsletter
|
|
674
|
+
targetProfileSlug: sponsor
|
|
675
|
+
type: sponsored_by
|
|
676
|
+
- sourceProfileSlug: platform
|
|
677
|
+
targetProfileSlug: post
|
|
678
|
+
type: publishes
|
|
679
|
+
|
|
680
|
+
seedEntities:
|
|
681
|
+
- profileSlug: pillar
|
|
682
|
+
title: Data Sovereignty
|
|
683
|
+
properties:
|
|
684
|
+
pillar-status: Active
|
|
685
|
+
pillar-audience: "Founders, developers, and privacy-conscious professionals"
|
|
686
|
+
pillar-goal: "Position Synap as the infrastructure layer for personal data ownership — make the audience feel that sovereignty is not technical, it is a right"
|
|
687
|
+
pillar-formats: "Articles + Threads"
|
|
688
|
+
post-count-pillar: 12
|
|
689
|
+
avg-engagement: 340
|
|
690
|
+
top-post: "Why your data is not yours — and how to fix that"
|
|
691
|
+
posting-frequency: "2x / week"
|
|
692
|
+
pillar-tags: [sovereignty, synap, infrastructure]
|
|
693
|
+
- profileSlug: pillar
|
|
694
|
+
title: Product Building
|
|
695
|
+
properties:
|
|
696
|
+
pillar-status: Active
|
|
697
|
+
pillar-audience: "Indie hackers, founders, and early-stage builders"
|
|
698
|
+
pillar-goal: "Share the authentic journey of building Synap — decisions, mistakes, architecture choices — building trust through transparency"
|
|
699
|
+
pillar-formats: "Articles + Threads"
|
|
700
|
+
post-count-pillar: 8
|
|
701
|
+
avg-engagement: 210
|
|
702
|
+
top-post: "How we designed Synap's entity model from scratch"
|
|
703
|
+
posting-frequency: Weekly
|
|
704
|
+
pillar-tags: [building-in-public, synap, product]
|
|
705
|
+
- profileSlug: pillar
|
|
706
|
+
title: Creator Economy
|
|
707
|
+
properties:
|
|
708
|
+
pillar-status: Developing
|
|
709
|
+
pillar-audience: "Creators, solopreneurs, and content entrepreneurs"
|
|
710
|
+
pillar-goal: "Establish Synap's authority in the creator tools space — explain why the current tool stack is broken and what a sovereign alternative looks like"
|
|
711
|
+
pillar-formats: "Articles + Threads"
|
|
712
|
+
post-count-pillar: 4
|
|
713
|
+
avg-engagement: 180
|
|
714
|
+
posting-frequency: Weekly
|
|
715
|
+
pillar-tags: [creator-economy, content-os, tools]
|
|
716
|
+
- profileSlug: platform
|
|
717
|
+
title: LinkedIn
|
|
718
|
+
properties:
|
|
719
|
+
platform-status: Active
|
|
720
|
+
platform-url: "https://linkedin.com/in/your-handle"
|
|
721
|
+
follower-count: 3200
|
|
722
|
+
follower-target: 10000
|
|
723
|
+
avg-engagement-rate: 4.2
|
|
724
|
+
platform-posting-freq: "3x / week"
|
|
725
|
+
last-post-date: "2026-02-23"
|
|
726
|
+
platform-notes: "Long-form articles perform 3x better than short posts. Best engagement on Monday 8am and Thursday 6pm. CET. Professional tone, avoid jargon."
|
|
727
|
+
platform-tags: [linkedin, b2b, professional]
|
|
728
|
+
- profileSlug: platform
|
|
729
|
+
title: "Twitter / X"
|
|
730
|
+
properties:
|
|
731
|
+
platform-status: Active
|
|
732
|
+
platform-url: "https://x.com/your-handle"
|
|
733
|
+
follower-count: 1800
|
|
734
|
+
follower-target: 5000
|
|
735
|
+
avg-engagement-rate: 2.1
|
|
736
|
+
platform-posting-freq: Daily
|
|
737
|
+
last-post-date: "2026-02-23"
|
|
738
|
+
platform-notes: "Threads outperform single tweets 4:1. Tech and sovereignty threads go viral occasionally. Engage before posting — reply to 5 accounts before publishing."
|
|
739
|
+
platform-tags: [twitter, threads, tech]
|
|
740
|
+
- profileSlug: platform
|
|
741
|
+
title: Synap Newsletter
|
|
742
|
+
properties:
|
|
743
|
+
platform-type: Newsletter
|
|
744
|
+
platform-status: Building
|
|
745
|
+
follower-count: 420
|
|
746
|
+
follower-target: 2000
|
|
747
|
+
avg-engagement-rate: 38
|
|
748
|
+
platform-posting-freq: Weekly
|
|
749
|
+
last-post-date: "2026-02-17"
|
|
750
|
+
platform-notes: "35-40% open rate. Audience is tech-adjacent, values depth over brevity. Tuesdays at 7am CET performs best. Personal voice + one tactical insight + one product update."
|
|
751
|
+
platform-tags: [newsletter, owned, sovereign]
|
|
752
|
+
- profileSlug: campaign
|
|
753
|
+
title: "Synap Template Launch — Q1 2026"
|
|
754
|
+
properties:
|
|
755
|
+
campaign-status: Active
|
|
756
|
+
campaign-type: Product Launch
|
|
757
|
+
campaign-pillar: "ref:pillar:Product Building"
|
|
758
|
+
campaign-start: "2026-02-01"
|
|
759
|
+
campaign-end: "2026-03-31"
|
|
760
|
+
campaign-goal: "Drive 500 new workspace template activations and grow newsletter to 1,000 subscribers"
|
|
761
|
+
campaign-kpi: "Newsletter Sign-ups"
|
|
762
|
+
kpi-target: 500
|
|
763
|
+
post-count: 12
|
|
764
|
+
campaign-tags: [launch, templates, q1-2026]
|
|
765
|
+
content: |-
|
|
766
|
+
# Campaign Brief: Synap Template Launch — Q1 2026
|
|
767
|
+
|
|
768
|
+
## Objective
|
|
769
|
+
|
|
770
|
+
Drive 500 template activations and 1,000 new newsletter subscribers by March 31, 2026. This is Synap's first public-facing product moment — the goal is not just installs but proof that the entity-first model resonates with creators who think in systems.
|
|
771
|
+
|
|
772
|
+
## Target audience
|
|
773
|
+
|
|
774
|
+
Content creators and founder-creators managing multi-channel presence across 2+ platforms. They've tried Notion templates. They've paid for Buffer and Later. They feel the friction. They're ready for something built differently.
|
|
775
|
+
|
|
776
|
+
## Content plan
|
|
777
|
+
|
|
778
|
+
12 posts across LinkedIn and Twitter/X over 8 weeks:
|
|
779
|
+
|
|
780
|
+
- **Week 1-2**: Problem framing — the creator stack is broken, context-switching cost, no unified operating record
|
|
781
|
+
- **Week 3-4**: Solution reveal — what a Content OS actually looks like, entity model walkthrough
|
|
782
|
+
- **Week 5-6**: Template demo — what's included, how seed data works, the graph view
|
|
783
|
+
- **Week 7-8**: Social proof + launch push — install CTA, newsletter integration, community feedback
|
|
784
|
+
|
|
785
|
+
## KPIs
|
|
786
|
+
|
|
787
|
+
| Metric | Target |
|
|
788
|
+
|--------|--------|
|
|
789
|
+
| Template activations | 500 |
|
|
790
|
+
| Newsletter subs added | 1,000 |
|
|
791
|
+
| LinkedIn post avg reach | 8,000+ |
|
|
792
|
+
| Twitter thread avg impressions | 15,000+ |
|
|
793
|
+
|
|
794
|
+
## Budget
|
|
795
|
+
|
|
796
|
+
€0 paid. Organic only. Brand deals (Mintlify, Anytype) offset production time.
|
|
797
|
+
|
|
798
|
+
## Dependencies
|
|
799
|
+
|
|
800
|
+
- Template JSON validated and live in install flow
|
|
801
|
+
- Synap Newsletter Issue 13 dedicated to template walkthrough
|
|
802
|
+
- Mintlify sponsorship confirmed for Issue 12
|
|
803
|
+
- profileSlug: campaign
|
|
804
|
+
title: Data Sovereignty Series
|
|
805
|
+
properties:
|
|
806
|
+
campaign-status: Active
|
|
807
|
+
campaign-type: Editorial Series
|
|
808
|
+
campaign-pillar: "ref:pillar:Data Sovereignty"
|
|
809
|
+
campaign-start: "2026-01-15"
|
|
810
|
+
campaign-end: "2026-04-30"
|
|
811
|
+
campaign-goal: "Establish Synap's thought leadership in the sovereignty space — 10 long-form posts that define the narrative"
|
|
812
|
+
campaign-kpi: "Follower Growth"
|
|
813
|
+
kpi-target: 1000
|
|
814
|
+
post-count: 6
|
|
815
|
+
campaign-tags: [sovereignty, series, thought-leadership]
|
|
816
|
+
- profileSlug: post
|
|
817
|
+
title: "Why your subscriber list is not yours — and what to do about it"
|
|
818
|
+
properties:
|
|
819
|
+
post-status: Published
|
|
820
|
+
post-format: Article
|
|
821
|
+
post-platform: LinkedIn
|
|
822
|
+
post-pillar: "ref:pillar:Data Sovereignty"
|
|
823
|
+
post-campaign: "ref:campaign:Data Sovereignty Series"
|
|
824
|
+
publish-date: "2026-02-10"
|
|
825
|
+
post-hook: "You have 3,000 newsletter subscribers. If Substack disappears tomorrow, how many of them can you reach?"
|
|
826
|
+
post-cta: "Download our free guide to migrating your subscriber list to sovereign infrastructure"
|
|
827
|
+
post-tags: [sovereignty, newsletter, substack]
|
|
828
|
+
engagement-score: 520
|
|
829
|
+
post-reach: 12400
|
|
830
|
+
content: |-
|
|
831
|
+
# Why Your Subscriber List Is Not Yours — And What to Do About It
|
|
832
|
+
|
|
833
|
+
## Core argument
|
|
834
|
+
|
|
835
|
+
When you build an audience on Substack, Mailchimp, or Beehiiv, you don't own the relationship. The platform does. They store the emails. They control deliverability. They set the terms of export. And if they change their pricing, get acquired, or shut down — your list goes with them.
|
|
836
|
+
|
|
837
|
+
This is not a hypothetical risk. It is the default architecture of every major newsletter platform.
|
|
838
|
+
|
|
839
|
+
## What ownership actually means
|
|
840
|
+
|
|
841
|
+
Owning your subscriber list means three things:
|
|
842
|
+
|
|
843
|
+
1. **You hold the data.** The email addresses, open history, click behavior, and preferences live in infrastructure you control — not on a vendor's server.
|
|
844
|
+
2. **You choose the delivery layer.** You can switch from Mailchimp to Postmark to SES without asking permission and without migration friction.
|
|
845
|
+
3. **You set the rules.** GDPR compliance, data retention, deletion requests — you handle them directly, not through a third-party dashboard.
|
|
846
|
+
|
|
847
|
+
## The sovereignty architecture
|
|
848
|
+
|
|
849
|
+
The alternative is treating your subscriber database as a first-class entity in your own data infrastructure. A record per subscriber. Properties for consent date, source, segment, engagement history. Relationships to the newsletter issues they opened, the posts that drove the sign-up.
|
|
850
|
+
|
|
851
|
+
This is what Synap enables with the Newsletter profile — your subscriber data lives in your pod, queryable by you, portable to any email provider, never held hostage.
|
|
852
|
+
|
|
853
|
+
## The ask
|
|
854
|
+
|
|
855
|
+
Follow if you believe your audience relationship is a business asset — not a vendor dependency.
|
|
856
|
+
|
|
857
|
+
---
|
|
858
|
+
*Published: LinkedIn · Data Sovereignty pillar · Data Sovereignty Series campaign*
|
|
859
|
+
- profileSlug: post
|
|
860
|
+
title: "Synap's entity model: why we ditched the database-first approach"
|
|
861
|
+
properties:
|
|
862
|
+
post-status: In Draft
|
|
863
|
+
post-format: Article
|
|
864
|
+
post-platform: LinkedIn
|
|
865
|
+
post-pillar: "ref:pillar:Product Building"
|
|
866
|
+
post-campaign: "ref:campaign:Synap Template Launch — Q1 2026"
|
|
867
|
+
publish-date: "2026-03-03"
|
|
868
|
+
post-hook: "Every other tool gives you a database. We built a network of entities — and the difference is everything."
|
|
869
|
+
post-cta: "Try the Second Brain template in Synap — free"
|
|
870
|
+
post-tags: [product, synap, architecture]
|
|
871
|
+
- profileSlug: post
|
|
872
|
+
title: "Thread: The creator tool stack is broken — here is why"
|
|
873
|
+
properties:
|
|
874
|
+
post-status: Scheduled
|
|
875
|
+
post-format: Thread
|
|
876
|
+
post-platform: "Twitter / X"
|
|
877
|
+
post-pillar: "ref:pillar:Creator Economy"
|
|
878
|
+
post-campaign: "ref:campaign:Synap Template Launch — Q1 2026"
|
|
879
|
+
publish-date: "2026-02-25"
|
|
880
|
+
post-hook: "I talked to 40 creators this month. Every single one uses 5+ tools that don't talk to each other. Here's what they all want:"
|
|
881
|
+
post-cta: "Follow for the full Creator Economy report"
|
|
882
|
+
post-tags: [creator-economy, tools, research]
|
|
883
|
+
- profileSlug: post
|
|
884
|
+
title: "Content OS template — what's included and why we built it"
|
|
885
|
+
properties:
|
|
886
|
+
post-status: Idea
|
|
887
|
+
post-format: Short Video
|
|
888
|
+
post-platform: LinkedIn
|
|
889
|
+
post-pillar: "ref:pillar:Product Building"
|
|
890
|
+
post-campaign: "ref:campaign:Synap Template Launch — Q1 2026"
|
|
891
|
+
post-hook: "We spent 3 weeks researching 8 creator tools before building Synap's Content OS template. Here is what we found."
|
|
892
|
+
post-tags: [content-os, templates, synap, research]
|
|
893
|
+
- profileSlug: post
|
|
894
|
+
title: "Data sovereignty is not a technical concept — it is a political one"
|
|
895
|
+
properties:
|
|
896
|
+
post-status: Idea
|
|
897
|
+
post-format: Article
|
|
898
|
+
post-platform: LinkedIn
|
|
899
|
+
post-pillar: "ref:pillar:Data Sovereignty"
|
|
900
|
+
post-campaign: "ref:campaign:Data Sovereignty Series"
|
|
901
|
+
post-hook: "The Sovereign Individual was published in 1997. It predicted exactly what is happening right now with AI and personal data."
|
|
902
|
+
post-tags: [sovereignty, philosophy, ai]
|
|
903
|
+
- profileSlug: post
|
|
904
|
+
title: "How Synap templates are seeded: the JSON-first approach"
|
|
905
|
+
properties:
|
|
906
|
+
post-status: Review
|
|
907
|
+
post-format: Article
|
|
908
|
+
post-platform: LinkedIn
|
|
909
|
+
post-pillar: "ref:pillar:Product Building"
|
|
910
|
+
post-campaign: "ref:campaign:Synap Template Launch — Q1 2026"
|
|
911
|
+
publish-date: "2026-03-10"
|
|
912
|
+
post-hook: "Most SaaS products show you an empty database on day one. Synap shows you a fully functional workspace. Here is how we do it."
|
|
913
|
+
post-cta: "Read the full technical deep-dive on our blog"
|
|
914
|
+
post-tags: [engineering, synap, templates, onboarding]
|
|
915
|
+
- profileSlug: newsletter
|
|
916
|
+
title: "The Sovereign Stack — Issue 12"
|
|
917
|
+
properties:
|
|
918
|
+
newsletter-status: Sent
|
|
919
|
+
newsletter-series: The Sovereign Stack
|
|
920
|
+
issue-number: 12
|
|
921
|
+
subject-line: "The 3 databases that own your content career (and how to escape)"
|
|
922
|
+
preview-text: "Your Substack list, your Buffer posts, your Notion brain..."
|
|
923
|
+
send-date: "2026-02-17"
|
|
924
|
+
subscriber-count: 390
|
|
925
|
+
open-rate: 39.2
|
|
926
|
+
click-rate: 6.8
|
|
927
|
+
newsletter-sponsor: "ref:sponsor:Mintlify"
|
|
928
|
+
newsletter-campaign: "ref:campaign:Data Sovereignty Series"
|
|
929
|
+
newsletter-pillar: "ref:pillar:Data Sovereignty"
|
|
930
|
+
newsletter-tags: [sovereignty, creator-tools, newsletter]
|
|
931
|
+
- profileSlug: newsletter
|
|
932
|
+
title: "The Sovereign Stack — Issue 13"
|
|
933
|
+
properties:
|
|
934
|
+
newsletter-status: Scheduled
|
|
935
|
+
newsletter-series: The Sovereign Stack
|
|
936
|
+
issue-number: 13
|
|
937
|
+
subject-line: "Inside Synap's Content OS template — what we built and why"
|
|
938
|
+
preview-text: "6 profiles, 16 views, 1 relational graph you own forever"
|
|
939
|
+
send-date: "2026-02-24"
|
|
940
|
+
newsletter-campaign: "ref:campaign:Synap Template Launch — Q1 2026"
|
|
941
|
+
newsletter-pillar: "ref:pillar:Product Building"
|
|
942
|
+
newsletter-tags: [content-os, templates, synap]
|
|
943
|
+
- profileSlug: newsletter
|
|
944
|
+
title: "The Sovereign Stack — Issue 14"
|
|
945
|
+
properties:
|
|
946
|
+
newsletter-status: Drafting
|
|
947
|
+
newsletter-series: The Sovereign Stack
|
|
948
|
+
issue-number: 14
|
|
949
|
+
subject-line: "Why we picked Ghost over Substack (and what it cost us)"
|
|
950
|
+
preview-text: "Honest numbers: subscriber growth, open rates, and the SEO truth"
|
|
951
|
+
send-date: "2026-03-03"
|
|
952
|
+
newsletter-pillar: "ref:pillar:Data Sovereignty"
|
|
953
|
+
newsletter-tags: [ghost, substack, sovereignty, newsletter]
|
|
954
|
+
newsletter-campaign: "ref:campaign:Data Sovereignty Series"
|
|
955
|
+
- profileSlug: sponsor
|
|
956
|
+
title: Mintlify
|
|
957
|
+
properties:
|
|
958
|
+
deal-status: Active
|
|
959
|
+
sponsor-type: Newsletter Sponsorship
|
|
960
|
+
contact-name: Alex Chen
|
|
961
|
+
contact-email: "alex@mintlify.com"
|
|
962
|
+
deal-value: 800
|
|
963
|
+
payment-status: Invoice Sent
|
|
964
|
+
contract-date: "2026-02-10"
|
|
965
|
+
deliverable-deadline: "2026-02-28"
|
|
966
|
+
exclusivity-end: "2026-03-15"
|
|
967
|
+
deliverables: "1 newsletter mention in Issue 12 (primary placement, 80–100 words). 1 LinkedIn post tagging Mintlify. Approved copy to be provided by sponsor."
|
|
968
|
+
talking-points: "Mintlify writes beautiful docs from your codebase. For developer-facing teams. Mention the GitHub integration."
|
|
969
|
+
performance-notes: "Issue 12: 39.2% open rate, 6.8% click rate. Sponsor link received 47 clicks. Will share screenshot report."
|
|
970
|
+
sponsor-tags: [developer-tools, newsletter, q1-2026]
|
|
971
|
+
content: |-
|
|
972
|
+
# Sponsor Brief: Mintlify — Issue 12
|
|
973
|
+
|
|
974
|
+
## Deal summary
|
|
975
|
+
|
|
976
|
+
- **Format**: Primary newsletter placement, Issue 12 (The Sovereign Stack)
|
|
977
|
+
- **Value**: €800
|
|
978
|
+
- **Deliverables**: 1 newsletter mention (80-100 words, primary placement) + 1 LinkedIn post tagging Mintlify
|
|
979
|
+
- **Exclusivity**: No competing dev-tool sponsors until March 15, 2026
|
|
980
|
+
- **Payment**: Invoice sent Feb 17 — awaiting transfer
|
|
981
|
+
|
|
982
|
+
## Approved copy (newsletter)
|
|
983
|
+
|
|
984
|
+
Mintlify builds documentation that actually gets read. If you're a developer or building developer-facing tools, Mintlify generates beautiful docs directly from your codebase — with GitHub integration, versioning, and AI-powered search. Worth 10 minutes to see what your docs could look like.
|
|
985
|
+
|
|
986
|
+
## Performance report (to send)
|
|
987
|
+
|
|
988
|
+
Issue 12 stats to share with Alex:
|
|
989
|
+
- Open rate: 39.2% (industry avg ~22%)
|
|
990
|
+
- Click rate: 6.8%
|
|
991
|
+
- Sponsor link clicks: 47
|
|
992
|
+
- Screenshot attached in follow-up email
|
|
993
|
+
|
|
994
|
+
## Notes
|
|
995
|
+
|
|
996
|
+
Alex Chen is responsive on email. They're considering a Q2 campaign (3 issues). Keep performance data clean and send within 48h of issue send. Relationship worth nurturing — philosophically aligned audience.
|
|
997
|
+
- profileSlug: sponsor
|
|
998
|
+
title: Anytype
|
|
999
|
+
properties:
|
|
1000
|
+
deal-status: Prospecting
|
|
1001
|
+
sponsor-type: Social Post
|
|
1002
|
+
contact-name: Pavel K.
|
|
1003
|
+
deal-value: 600
|
|
1004
|
+
payment-status: Not Yet Due
|
|
1005
|
+
deliverables: "1 LinkedIn post (honest review format). 1 Twitter thread. Not exclusive."
|
|
1006
|
+
talking-points: "Anytype is open-source, local-first, object-based PKM. Philosophically aligned with Synap audience."
|
|
1007
|
+
sponsor-tags: [pkm, local-first, sovereignty]
|
|
1008
|
+
|
|
1009
|
+
suggestedRelations:
|
|
1010
|
+
- sourceRef: "post:Why your subscriber list is not yours — and what to do about it"
|
|
1011
|
+
targetRef: "campaign:Data Sovereignty Series"
|
|
1012
|
+
type: belongs_to_project
|
|
1013
|
+
- sourceRef: "post:Synap's entity model: why we ditched the database-first approach"
|
|
1014
|
+
targetRef: "campaign:Synap Template Launch — Q1 2026"
|
|
1015
|
+
type: belongs_to_project
|
|
1016
|
+
- sourceRef: "post:Thread: The creator tool stack is broken — here is why"
|
|
1017
|
+
targetRef: "campaign:Synap Template Launch — Q1 2026"
|
|
1018
|
+
type: belongs_to_project
|
|
1019
|
+
- sourceRef: "post:Content OS template — what's included and why we built it"
|
|
1020
|
+
targetRef: "campaign:Synap Template Launch — Q1 2026"
|
|
1021
|
+
type: belongs_to_project
|
|
1022
|
+
- sourceRef: "post:Data sovereignty is not a technical concept — it is a political one"
|
|
1023
|
+
targetRef: "campaign:Data Sovereignty Series"
|
|
1024
|
+
type: belongs_to_project
|
|
1025
|
+
- sourceRef: "post:How Synap templates are seeded: the JSON-first approach"
|
|
1026
|
+
targetRef: "campaign:Synap Template Launch — Q1 2026"
|
|
1027
|
+
type: belongs_to_project
|
|
1028
|
+
- sourceRef: "post:Why your subscriber list is not yours — and what to do about it"
|
|
1029
|
+
targetRef: "pillar:Data Sovereignty"
|
|
1030
|
+
type: relates_to
|
|
1031
|
+
- sourceRef: "post:Synap's entity model: why we ditched the database-first approach"
|
|
1032
|
+
targetRef: "pillar:Product Building"
|
|
1033
|
+
type: relates_to
|
|
1034
|
+
- sourceRef: "post:Thread: The creator tool stack is broken — here is why"
|
|
1035
|
+
targetRef: "pillar:Creator Economy"
|
|
1036
|
+
type: relates_to
|
|
1037
|
+
- sourceRef: "post:Content OS template — what's included and why we built it"
|
|
1038
|
+
targetRef: "pillar:Product Building"
|
|
1039
|
+
type: relates_to
|
|
1040
|
+
- sourceRef: "post:Data sovereignty is not a technical concept — it is a political one"
|
|
1041
|
+
targetRef: "pillar:Data Sovereignty"
|
|
1042
|
+
type: relates_to
|
|
1043
|
+
- sourceRef: "post:How Synap templates are seeded: the JSON-first approach"
|
|
1044
|
+
targetRef: "pillar:Product Building"
|
|
1045
|
+
type: relates_to
|
|
1046
|
+
- sourceRef: "newsletter:The Sovereign Stack — Issue 12"
|
|
1047
|
+
targetRef: "campaign:Data Sovereignty Series"
|
|
1048
|
+
type: belongs_to_project
|
|
1049
|
+
- sourceRef: "newsletter:The Sovereign Stack — Issue 13"
|
|
1050
|
+
targetRef: "campaign:Synap Template Launch — Q1 2026"
|
|
1051
|
+
type: belongs_to_project
|
|
1052
|
+
- sourceRef: "newsletter:The Sovereign Stack — Issue 12"
|
|
1053
|
+
targetRef: "pillar:Data Sovereignty"
|
|
1054
|
+
type: relates_to
|
|
1055
|
+
- sourceRef: "newsletter:The Sovereign Stack — Issue 13"
|
|
1056
|
+
targetRef: "pillar:Product Building"
|
|
1057
|
+
type: relates_to
|
|
1058
|
+
- sourceRef: "newsletter:The Sovereign Stack — Issue 14"
|
|
1059
|
+
targetRef: "pillar:Data Sovereignty"
|
|
1060
|
+
type: relates_to
|
|
1061
|
+
- sourceRef: "newsletter:The Sovereign Stack — Issue 12"
|
|
1062
|
+
targetRef: "sponsor:Mintlify"
|
|
1063
|
+
type: relates_to
|
|
1064
|
+
- sourceRef: "campaign:Data Sovereignty Series"
|
|
1065
|
+
targetRef: "pillar:Data Sovereignty"
|
|
1066
|
+
type: relates_to
|
|
1067
|
+
- sourceRef: "campaign:Synap Template Launch — Q1 2026"
|
|
1068
|
+
targetRef: "pillar:Product Building"
|
|
1069
|
+
type: relates_to
|
|
1070
|
+
|
|
1071
|
+
displayTemplates:
|
|
1072
|
+
- name: Post Card
|
|
1073
|
+
description: "Content unit with status, format, platform, and performance metrics"
|
|
1074
|
+
entityType: post
|
|
1075
|
+
targetType: entity
|
|
1076
|
+
isDefault: true
|
|
1077
|
+
config:
|
|
1078
|
+
layout:
|
|
1079
|
+
structure:
|
|
1080
|
+
header:
|
|
1081
|
+
enabled: true
|
|
1082
|
+
slots: [post-status, post-format, post-platform]
|
|
1083
|
+
layout: horizontal
|
|
1084
|
+
align: left
|
|
1085
|
+
sidebar:
|
|
1086
|
+
enabled: true
|
|
1087
|
+
slots: [post-pillar, post-campaign, post-sponsor, publish-date]
|
|
1088
|
+
position: right
|
|
1089
|
+
width: 260px
|
|
1090
|
+
layout: vertical
|
|
1091
|
+
content:
|
|
1092
|
+
enabled: true
|
|
1093
|
+
slots: [post-hook, post-cta, engagement-score, post-reach]
|
|
1094
|
+
layout: vertical
|
|
1095
|
+
fieldMapping:
|
|
1096
|
+
post-status:
|
|
1097
|
+
slot: post-status
|
|
1098
|
+
renderer: { type: badge, size: md }
|
|
1099
|
+
showLabel: false
|
|
1100
|
+
order: 1
|
|
1101
|
+
post-format:
|
|
1102
|
+
slot: post-format
|
|
1103
|
+
renderer: { type: badge, variant: muted, size: sm }
|
|
1104
|
+
showLabel: false
|
|
1105
|
+
order: 2
|
|
1106
|
+
post-platform:
|
|
1107
|
+
slot: post-platform
|
|
1108
|
+
renderer: { type: badge, variant: muted, size: sm }
|
|
1109
|
+
showLabel: false
|
|
1110
|
+
order: 3
|
|
1111
|
+
engagement-score:
|
|
1112
|
+
slot: engagement-score
|
|
1113
|
+
renderer: { type: number, size: md }
|
|
1114
|
+
label: Engagement
|
|
1115
|
+
showLabel: true
|
|
1116
|
+
order: 4
|
|
1117
|
+
post-reach:
|
|
1118
|
+
slot: post-reach
|
|
1119
|
+
renderer: { type: number, size: md }
|
|
1120
|
+
label: Reach
|
|
1121
|
+
showLabel: true
|
|
1122
|
+
order: 5
|
|
1123
|
+
publish-date:
|
|
1124
|
+
slot: publish-date
|
|
1125
|
+
renderer: { type: date, format: relative }
|
|
1126
|
+
order: 6
|
|
1127
|
+
colors: { accent: "#8B5CF6" }
|
|
1128
|
+
styling: { borderRadius: 10px }
|
|
1129
|
+
- name: Sponsor Deal
|
|
1130
|
+
description: "Brand deal with status, financials, and deliverable tracking"
|
|
1131
|
+
entityType: sponsor
|
|
1132
|
+
targetType: entity
|
|
1133
|
+
isDefault: true
|
|
1134
|
+
config:
|
|
1135
|
+
layout:
|
|
1136
|
+
structure:
|
|
1137
|
+
header:
|
|
1138
|
+
enabled: true
|
|
1139
|
+
slots: [deal-status, deal-value]
|
|
1140
|
+
layout: horizontal
|
|
1141
|
+
sidebar:
|
|
1142
|
+
enabled: true
|
|
1143
|
+
slots: [payment-status, deliverable-deadline, exclusivity-end, contact-name, contact-email]
|
|
1144
|
+
position: right
|
|
1145
|
+
width: 280px
|
|
1146
|
+
layout: vertical
|
|
1147
|
+
content:
|
|
1148
|
+
enabled: true
|
|
1149
|
+
slots: [deliverables, talking-points, performance-notes]
|
|
1150
|
+
layout: vertical
|
|
1151
|
+
fieldMapping:
|
|
1152
|
+
deal-status:
|
|
1153
|
+
slot: deal-status
|
|
1154
|
+
renderer: { type: badge, size: md }
|
|
1155
|
+
showLabel: false
|
|
1156
|
+
order: 1
|
|
1157
|
+
deal-value:
|
|
1158
|
+
slot: deal-value
|
|
1159
|
+
renderer: { type: number, format: currency, size: lg }
|
|
1160
|
+
label: Deal Value
|
|
1161
|
+
order: 2
|
|
1162
|
+
payment-status:
|
|
1163
|
+
slot: payment-status
|
|
1164
|
+
renderer: { type: badge, variant: muted, size: sm }
|
|
1165
|
+
showLabel: true
|
|
1166
|
+
order: 3
|
|
1167
|
+
deliverable-deadline:
|
|
1168
|
+
slot: deliverable-deadline
|
|
1169
|
+
renderer: { type: date, format: relative }
|
|
1170
|
+
label: Deadline
|
|
1171
|
+
showLabel: true
|
|
1172
|
+
order: 4
|
|
1173
|
+
colors: { accent: "#F59E0B" }
|
|
1174
|
+
styling: { borderRadius: 10px }
|
|
1175
|
+
- name: Campaign Brief
|
|
1176
|
+
description: "Campaign with timeline, KPI progress, and linked content"
|
|
1177
|
+
entityType: campaign
|
|
1178
|
+
targetType: entity
|
|
1179
|
+
isDefault: true
|
|
1180
|
+
config:
|
|
1181
|
+
layout:
|
|
1182
|
+
structure:
|
|
1183
|
+
header:
|
|
1184
|
+
enabled: true
|
|
1185
|
+
slots: [campaign-status, campaign-type]
|
|
1186
|
+
layout: horizontal
|
|
1187
|
+
sidebar:
|
|
1188
|
+
enabled: true
|
|
1189
|
+
slots: [campaign-pillar, campaign-start, campaign-end, kpi-target, kpi-result, post-count]
|
|
1190
|
+
position: right
|
|
1191
|
+
width: 260px
|
|
1192
|
+
layout: vertical
|
|
1193
|
+
content:
|
|
1194
|
+
enabled: true
|
|
1195
|
+
slots: [campaign-goal, campaign-kpi, campaign-budget]
|
|
1196
|
+
layout: vertical
|
|
1197
|
+
fieldMapping:
|
|
1198
|
+
campaign-status:
|
|
1199
|
+
slot: campaign-status
|
|
1200
|
+
renderer: { type: badge, size: md }
|
|
1201
|
+
showLabel: false
|
|
1202
|
+
order: 1
|
|
1203
|
+
campaign-type:
|
|
1204
|
+
slot: campaign-type
|
|
1205
|
+
renderer: { type: badge, variant: muted, size: sm }
|
|
1206
|
+
showLabel: false
|
|
1207
|
+
order: 2
|
|
1208
|
+
kpi-target:
|
|
1209
|
+
slot: kpi-target
|
|
1210
|
+
renderer: { type: number, size: md }
|
|
1211
|
+
label: KPI Target
|
|
1212
|
+
showLabel: true
|
|
1213
|
+
order: 3
|
|
1214
|
+
kpi-result:
|
|
1215
|
+
slot: kpi-result
|
|
1216
|
+
renderer: { type: number, size: md }
|
|
1217
|
+
label: KPI Result
|
|
1218
|
+
showLabel: true
|
|
1219
|
+
order: 4
|
|
1220
|
+
campaign-start:
|
|
1221
|
+
slot: campaign-start
|
|
1222
|
+
renderer: { type: date, format: relative }
|
|
1223
|
+
label: Start
|
|
1224
|
+
showLabel: true
|
|
1225
|
+
order: 5
|
|
1226
|
+
campaign-end:
|
|
1227
|
+
slot: campaign-end
|
|
1228
|
+
renderer: { type: date, format: relative }
|
|
1229
|
+
label: End
|
|
1230
|
+
showLabel: true
|
|
1231
|
+
order: 6
|
|
1232
|
+
colors: { accent: "#EC4899" }
|
|
1233
|
+
styling: { borderRadius: 10px }
|
|
1234
|
+
- name: Newsletter Issue
|
|
1235
|
+
description: "Newsletter issue with open/click rates and sponsor linkage"
|
|
1236
|
+
entityType: newsletter
|
|
1237
|
+
targetType: entity
|
|
1238
|
+
isDefault: true
|
|
1239
|
+
config:
|
|
1240
|
+
layout:
|
|
1241
|
+
structure:
|
|
1242
|
+
header:
|
|
1243
|
+
enabled: true
|
|
1244
|
+
slots: [newsletter-status, issue-number]
|
|
1245
|
+
layout: horizontal
|
|
1246
|
+
sidebar:
|
|
1247
|
+
enabled: true
|
|
1248
|
+
slots: [newsletter-sponsor, newsletter-campaign, newsletter-pillar, send-date, subscriber-count]
|
|
1249
|
+
position: right
|
|
1250
|
+
width: 260px
|
|
1251
|
+
layout: vertical
|
|
1252
|
+
content:
|
|
1253
|
+
enabled: true
|
|
1254
|
+
slots: [subject-line, preview-text, open-rate, click-rate]
|
|
1255
|
+
layout: vertical
|
|
1256
|
+
fieldMapping:
|
|
1257
|
+
newsletter-status:
|
|
1258
|
+
slot: newsletter-status
|
|
1259
|
+
renderer: { type: badge, size: md }
|
|
1260
|
+
showLabel: false
|
|
1261
|
+
order: 1
|
|
1262
|
+
open-rate:
|
|
1263
|
+
slot: open-rate
|
|
1264
|
+
renderer: { type: number, format: percent, size: md }
|
|
1265
|
+
label: Open Rate
|
|
1266
|
+
showLabel: true
|
|
1267
|
+
order: 2
|
|
1268
|
+
click-rate:
|
|
1269
|
+
slot: click-rate
|
|
1270
|
+
renderer: { type: number, format: percent, size: md }
|
|
1271
|
+
label: Click Rate
|
|
1272
|
+
showLabel: true
|
|
1273
|
+
order: 3
|
|
1274
|
+
send-date:
|
|
1275
|
+
slot: send-date
|
|
1276
|
+
renderer: { type: date, format: relative }
|
|
1277
|
+
label: Sent
|
|
1278
|
+
showLabel: true
|
|
1279
|
+
order: 4
|
|
1280
|
+
colors: { accent: "#14B8A6" }
|
|
1281
|
+
styling: { borderRadius: 10px }
|
|
1282
|
+
|
|
1283
|
+
# Home dashboard bento (maps from source bentoLayout — all blocks are widgets)
|
|
1284
|
+
bento:
|
|
1285
|
+
blocks:
|
|
1286
|
+
- kind: widget
|
|
1287
|
+
widgetType: welcome-header
|
|
1288
|
+
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
1289
|
+
- kind: widget
|
|
1290
|
+
widgetType: entity-count
|
|
1291
|
+
pos: { x: 0, y: 2, w: 2, h: 2 }
|
|
1292
|
+
config: { profileSlug: post, label: Posts }
|
|
1293
|
+
- kind: widget
|
|
1294
|
+
widgetType: entity-count
|
|
1295
|
+
pos: { x: 2, y: 2, w: 2, h: 2 }
|
|
1296
|
+
config: { profileSlug: campaign, label: Campaigns }
|
|
1297
|
+
- kind: widget
|
|
1298
|
+
widgetType: entity-count
|
|
1299
|
+
pos: { x: 4, y: 2, w: 2, h: 2 }
|
|
1300
|
+
config: { profileSlug: pillar, label: Pillars }
|
|
1301
|
+
- kind: widget
|
|
1302
|
+
widgetType: entity-count
|
|
1303
|
+
pos: { x: 6, y: 2, w: 2, h: 2 }
|
|
1304
|
+
config: { profileSlug: newsletter, label: Newsletters }
|
|
1305
|
+
- kind: widget
|
|
1306
|
+
widgetType: entity-count
|
|
1307
|
+
pos: { x: 8, y: 2, w: 2, h: 2 }
|
|
1308
|
+
config: { profileSlug: platform, label: Platforms }
|
|
1309
|
+
- kind: widget
|
|
1310
|
+
widgetType: entity-count
|
|
1311
|
+
pos: { x: 10, y: 2, w: 2, h: 2 }
|
|
1312
|
+
config: { profileSlug: sponsor, label: Sponsors }
|
|
1313
|
+
- kind: widget
|
|
1314
|
+
widgetType: entity-list
|
|
1315
|
+
pos: { x: 0, y: 4, w: 5, h: 4 }
|
|
1316
|
+
config: { profileSlug: post, title: Post Pipeline, limit: 8, variant: compact }
|
|
1317
|
+
- kind: widget
|
|
1318
|
+
widgetType: entity-list
|
|
1319
|
+
pos: { x: 5, y: 4, w: 4, h: 4 }
|
|
1320
|
+
config: { profileSlug: campaign, title: Active Campaigns, limit: 5, variant: detailed }
|
|
1321
|
+
- kind: widget
|
|
1322
|
+
widgetType: entity-list
|
|
1323
|
+
pos: { x: 9, y: 4, w: 3, h: 4 }
|
|
1324
|
+
config: { profileSlug: sponsor, title: Sponsor Tracker, limit: 5, variant: compact }
|
|
1325
|
+
- kind: widget
|
|
1326
|
+
widgetType: calendar
|
|
1327
|
+
pos: { x: 0, y: 8, w: 5, h: 4 }
|
|
1328
|
+
- kind: widget
|
|
1329
|
+
widgetType: entity-list
|
|
1330
|
+
pos: { x: 5, y: 8, w: 4, h: 4 }
|
|
1331
|
+
config: { profileSlug: newsletter, title: Newsletter Issues, limit: 5, variant: compact }
|
|
1332
|
+
- kind: widget
|
|
1333
|
+
widgetType: feed
|
|
1334
|
+
pos: { x: 9, y: 8, w: 3, h: 4 }
|
|
1335
|
+
|
|
1336
|
+
# Per-profile entity detail bento layouts
|
|
1337
|
+
profileEntityBentoTemplates:
|
|
1338
|
+
post:
|
|
1339
|
+
blocks:
|
|
1340
|
+
- id: post-eb-header
|
|
1341
|
+
kind: widget
|
|
1342
|
+
widgetType: entity-header
|
|
1343
|
+
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
1344
|
+
- id: post-eb-props
|
|
1345
|
+
kind: widget
|
|
1346
|
+
widgetType: entity-properties
|
|
1347
|
+
pos: { x: 0, y: 2, w: 4, h: 8 }
|
|
1348
|
+
- id: post-eb-content
|
|
1349
|
+
kind: widget
|
|
1350
|
+
widgetType: entity-content
|
|
1351
|
+
pos: { x: 4, y: 2, w: 8, h: 4 }
|
|
1352
|
+
- id: post-eb-similar
|
|
1353
|
+
kind: widget
|
|
1354
|
+
widgetType: entity-list
|
|
1355
|
+
pos: { x: 4, y: 6, w: 8, h: 4 }
|
|
1356
|
+
config: { profileSlug: post, title: Similar Posts, limit: 6, variant: compact }
|
|
1357
|
+
campaign:
|
|
1358
|
+
blocks:
|
|
1359
|
+
- id: camp-eb-header
|
|
1360
|
+
kind: widget
|
|
1361
|
+
widgetType: entity-header
|
|
1362
|
+
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
1363
|
+
- id: camp-eb-props
|
|
1364
|
+
kind: widget
|
|
1365
|
+
widgetType: entity-properties
|
|
1366
|
+
pos: { x: 0, y: 2, w: 4, h: 8 }
|
|
1367
|
+
- id: camp-eb-posts
|
|
1368
|
+
kind: widget
|
|
1369
|
+
widgetType: entity-list
|
|
1370
|
+
pos: { x: 4, y: 2, w: 8, h: 4 }
|
|
1371
|
+
config: { profileSlug: post, title: Campaign Posts, limit: 8, variant: compact }
|
|
1372
|
+
- id: camp-eb-content
|
|
1373
|
+
kind: widget
|
|
1374
|
+
widgetType: entity-content
|
|
1375
|
+
pos: { x: 4, y: 6, w: 8, h: 4 }
|
|
1376
|
+
pillar:
|
|
1377
|
+
blocks:
|
|
1378
|
+
- id: pillar-eb-header
|
|
1379
|
+
kind: widget
|
|
1380
|
+
widgetType: entity-header
|
|
1381
|
+
pos: { x: 0, y: 0, w: 12, h: 2 }
|
|
1382
|
+
- id: pillar-eb-props
|
|
1383
|
+
kind: widget
|
|
1384
|
+
widgetType: entity-properties
|
|
1385
|
+
pos: { x: 0, y: 2, w: 4, h: 8 }
|
|
1386
|
+
- id: pillar-eb-posts
|
|
1387
|
+
kind: widget
|
|
1388
|
+
widgetType: entity-list
|
|
1389
|
+
pos: { x: 4, y: 2, w: 8, h: 8 }
|
|
1390
|
+
config: { profileSlug: post, title: Posts in Pillar, limit: 10, variant: compact }
|
|
1391
|
+
|
|
1392
|
+
# Capability templates to install on provisioning
|
|
1393
|
+
integrations:
|
|
1394
|
+
- templateKey: nango-google
|
|
1395
|
+
|
|
1396
|
+
# Session-template playbooks (none in source)
|
|
1397
|
+
playbooks: []
|
|
1398
|
+
|
|
1399
|
+
# Per-workspace adaptive onboarding context — the "seasoned content strategist" framing
|
|
1400
|
+
onboarding:
|
|
1401
|
+
goal: "Capture the user's brand voice, audience, content pillars, and publishing rhythm across channels — so the workspace reflects how they actually create and distribute content, not a generic calendar."
|
|
1402
|
+
framing: "Act as a seasoned content strategist. Tease out their voice and positioning, who they're talking to, the recurring themes they own, the channels they publish on, and how often. Translate that into pillars, platforms, and a seeded content calendar."
|
|
1403
|
+
collect:
|
|
1404
|
+
- profileSlug: pillar
|
|
1405
|
+
what: "Their recurring content themes / brand voice — the lenses their audience knows them for, and who each speaks to"
|
|
1406
|
+
cardinality: few
|
|
1407
|
+
keyFields: [title, pillar-audience, pillar-goal, posting-frequency]
|
|
1408
|
+
- profileSlug: platform
|
|
1409
|
+
what: "The channels they publish on and the rhythm of each"
|
|
1410
|
+
cardinality: several
|
|
1411
|
+
keyFields: [title, platform-type, platform-posting-freq, follower-count]
|
|
1412
|
+
- profileSlug: post
|
|
1413
|
+
what: "A few real or upcoming pieces to seed the content calendar"
|
|
1414
|
+
cardinality: few
|
|
1415
|
+
keyFields: [title, post-platform, post-pillar, publish-date]
|
|
1416
|
+
- profileSlug: campaign
|
|
1417
|
+
what: "Any active initiative or launch the content ladders up to"
|
|
1418
|
+
cardinality: one
|
|
1419
|
+
keyFields: [title, campaign-type, campaign-kpi]
|
|
1420
|
+
openingQuestions:
|
|
1421
|
+
- "How would you describe your voice, and who are you really creating for?"
|
|
1422
|
+
- "What are the 3-4 themes you keep coming back to — the things your audience knows you for?"
|
|
1423
|
+
- "Which channels do you publish on, and how often on each?"
|
|
1424
|
+
doneWhen: "Their pillars and primary platforms exist with a realistic cadence, and a handful of posts sit on the content calendar."
|