@synap-core/workspace-templates 0.6.0 → 0.6.2
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 +257 -4
- package/dist/index.js +1863 -633
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
- package/src/agent-fleet.yaml +16 -8
- package/src/builder.yaml +21 -0
- package/src/catalog.test.ts +156 -0
- package/src/catalog.ts +285 -0
- package/src/communication.yaml +28 -1
- package/src/content-os.yaml +567 -0
- package/src/content-studio.yaml +0 -268
- package/src/crm.yaml +196 -0
- package/src/define.ts +268 -5
- package/src/ecosystem.yaml +29 -0
- package/src/enterprise-os.yaml +188 -0
- package/src/index.ts +27 -1
- package/src/marketing.yaml +14 -5
- package/src/templates.ts +1763 -645
- package/src/the-arch.yaml +182 -0
- package/src/types.ts +58 -1
package/src/content-studio.yaml
CHANGED
|
@@ -199,235 +199,6 @@ profiles:
|
|
|
199
199
|
valueType: string
|
|
200
200
|
inputType: textarea
|
|
201
201
|
|
|
202
|
-
# --- Creator-ops kinds absorbed from Content OS (merge) ---
|
|
203
|
-
- slug: post
|
|
204
|
-
displayName: Post
|
|
205
|
-
icon: file-edit
|
|
206
|
-
color: "#6366F1"
|
|
207
|
-
description: "Your atomic content unit. One idea, multiple platform formats — tracked from spark to publication."
|
|
208
|
-
scope: WORKSPACE
|
|
209
|
-
properties:
|
|
210
|
-
- slug: post-status
|
|
211
|
-
label: Status
|
|
212
|
-
valueType: string
|
|
213
|
-
inputType: select
|
|
214
|
-
enumValues: ["Idea", "Briefed", "In Draft", "Review", "Scheduled", "Published", "Archived"]
|
|
215
|
-
- slug: post-format
|
|
216
|
-
label: Format
|
|
217
|
-
valueType: string
|
|
218
|
-
inputType: select
|
|
219
|
-
enumValues: ["Article", "Thread", "Short Video", "Long Video", "Carousel", "Image Post", "Story", "Newsletter Section", "Podcast Episode", "Other"]
|
|
220
|
-
- slug: post-platform
|
|
221
|
-
label: Platform
|
|
222
|
-
valueType: string
|
|
223
|
-
inputType: select
|
|
224
|
-
enumValues: ["LinkedIn", "Instagram", "TikTok", "YouTube", "Twitter / X", "Threads", "Bluesky", "Newsletter", "Podcast", "Blog", "Other"]
|
|
225
|
-
- slug: post-pillar
|
|
226
|
-
label: Pillar
|
|
227
|
-
valueType: entity_id
|
|
228
|
-
- slug: post-campaign
|
|
229
|
-
label: Campaign
|
|
230
|
-
valueType: entity_id
|
|
231
|
-
- slug: post-sponsor
|
|
232
|
-
label: Sponsor
|
|
233
|
-
valueType: entity_id
|
|
234
|
-
- slug: publish-date
|
|
235
|
-
label: Publish Date
|
|
236
|
-
valueType: date
|
|
237
|
-
- slug: post-hook
|
|
238
|
-
label: "Hook / Headline"
|
|
239
|
-
valueType: string
|
|
240
|
-
inputType: text
|
|
241
|
-
placeholder: "Opening line or headline that stops the scroll"
|
|
242
|
-
- slug: post-cta
|
|
243
|
-
label: CTA
|
|
244
|
-
valueType: string
|
|
245
|
-
inputType: text
|
|
246
|
-
placeholder: "What should the audience do?"
|
|
247
|
-
- slug: post-tags
|
|
248
|
-
label: Tags
|
|
249
|
-
valueType: array
|
|
250
|
-
- slug: engagement-score
|
|
251
|
-
label: Engagement Score
|
|
252
|
-
valueType: number
|
|
253
|
-
inputType: number
|
|
254
|
-
placeholder: "Numeric performance metric (likes + comments + shares)"
|
|
255
|
-
- slug: post-reach
|
|
256
|
-
label: "Reach / Views"
|
|
257
|
-
valueType: number
|
|
258
|
-
inputType: number
|
|
259
|
-
- slug: repurposed-from
|
|
260
|
-
label: Repurposed From
|
|
261
|
-
valueType: string
|
|
262
|
-
inputType: text
|
|
263
|
-
placeholder: "Source post or content this was adapted from"
|
|
264
|
-
- slug: post-url
|
|
265
|
-
label: Published URL
|
|
266
|
-
valueType: string
|
|
267
|
-
inputType: text
|
|
268
|
-
placeholder: "https://..."
|
|
269
|
-
constraints: { format: url }
|
|
270
|
-
|
|
271
|
-
- slug: pillar
|
|
272
|
-
displayName: Pillar
|
|
273
|
-
icon: columns
|
|
274
|
-
color: "#8B5CF6"
|
|
275
|
-
description: "A recurring content theme — the lens through which your audience knows you. The organizing principle of your brand."
|
|
276
|
-
scope: WORKSPACE
|
|
277
|
-
properties:
|
|
278
|
-
- slug: pillar-status
|
|
279
|
-
label: Status
|
|
280
|
-
valueType: string
|
|
281
|
-
inputType: select
|
|
282
|
-
enumValues: ["Active", "Developing", "Paused", "Retired"]
|
|
283
|
-
- slug: pillar-audience
|
|
284
|
-
label: Audience Segment
|
|
285
|
-
valueType: string
|
|
286
|
-
inputType: text
|
|
287
|
-
placeholder: "Who does this pillar speak to?"
|
|
288
|
-
- slug: pillar-goal
|
|
289
|
-
label: Audience Goal
|
|
290
|
-
valueType: string
|
|
291
|
-
inputType: text
|
|
292
|
-
placeholder: "What should the audience think, feel, or do after consuming this pillar?"
|
|
293
|
-
- slug: pillar-formats
|
|
294
|
-
label: Primary Formats
|
|
295
|
-
valueType: string
|
|
296
|
-
inputType: select
|
|
297
|
-
enumValues: ["Articles + Threads", "Short Video", "Long Video", "Newsletter", "Podcast", "Carousel", "Mixed"]
|
|
298
|
-
- slug: post-count-pillar
|
|
299
|
-
label: Total Posts Published
|
|
300
|
-
valueType: number
|
|
301
|
-
inputType: number
|
|
302
|
-
- slug: avg-engagement
|
|
303
|
-
label: Avg Engagement Score
|
|
304
|
-
valueType: number
|
|
305
|
-
inputType: number
|
|
306
|
-
- slug: top-post
|
|
307
|
-
label: Top Performing Post
|
|
308
|
-
valueType: string
|
|
309
|
-
inputType: text
|
|
310
|
-
placeholder: "Title of best performing post in this pillar"
|
|
311
|
-
- slug: posting-frequency
|
|
312
|
-
label: Target Frequency
|
|
313
|
-
valueType: string
|
|
314
|
-
inputType: select
|
|
315
|
-
enumValues: ["Daily", "3x / week", "2x / week", "Weekly", "Bi-weekly", "Monthly", "Ad hoc"]
|
|
316
|
-
- slug: pillar-tags
|
|
317
|
-
label: Tags
|
|
318
|
-
valueType: array
|
|
319
|
-
|
|
320
|
-
- slug: platform
|
|
321
|
-
displayName: Platform
|
|
322
|
-
icon: share-2
|
|
323
|
-
color: "#06B6D4"
|
|
324
|
-
description: "A social account, newsletter publication, or podcast channel. Each platform has its own audience metrics and publishing rhythm."
|
|
325
|
-
scope: WORKSPACE
|
|
326
|
-
properties:
|
|
327
|
-
- slug: platform-type
|
|
328
|
-
label: Type
|
|
329
|
-
valueType: string
|
|
330
|
-
inputType: select
|
|
331
|
-
enumValues: ["LinkedIn", "Instagram", "TikTok", "YouTube", "Twitter / X", "Threads", "Bluesky", "Newsletter", "Podcast", "Blog / Website", "Other"]
|
|
332
|
-
- slug: platform-status
|
|
333
|
-
label: Status
|
|
334
|
-
valueType: string
|
|
335
|
-
inputType: select
|
|
336
|
-
enumValues: ["Active", "Building", "Maintenance Mode", "Inactive"]
|
|
337
|
-
- slug: platform-url
|
|
338
|
-
label: Profile URL
|
|
339
|
-
valueType: string
|
|
340
|
-
inputType: text
|
|
341
|
-
placeholder: "https://..."
|
|
342
|
-
constraints: { format: url }
|
|
343
|
-
- slug: follower-count
|
|
344
|
-
label: "Follower / Subscriber Count"
|
|
345
|
-
valueType: number
|
|
346
|
-
inputType: number
|
|
347
|
-
- slug: follower-target
|
|
348
|
-
label: Target Count
|
|
349
|
-
valueType: number
|
|
350
|
-
inputType: number
|
|
351
|
-
- slug: avg-engagement-rate
|
|
352
|
-
label: "Avg Engagement Rate (%)"
|
|
353
|
-
valueType: number
|
|
354
|
-
inputType: number
|
|
355
|
-
- slug: platform-posting-freq
|
|
356
|
-
label: Posting Frequency
|
|
357
|
-
valueType: string
|
|
358
|
-
inputType: select
|
|
359
|
-
enumValues: ["Daily", "3x / week", "2x / week", "Weekly", "Bi-weekly", "Monthly", "As Needed"]
|
|
360
|
-
- slug: last-post-date
|
|
361
|
-
label: Last Post Date
|
|
362
|
-
valueType: date
|
|
363
|
-
- slug: platform-notes
|
|
364
|
-
label: Notes
|
|
365
|
-
valueType: string
|
|
366
|
-
inputType: text
|
|
367
|
-
placeholder: "What works here? Tone, format, best times..."
|
|
368
|
-
- slug: platform-tags
|
|
369
|
-
label: Tags
|
|
370
|
-
valueType: array
|
|
371
|
-
|
|
372
|
-
- slug: newsletter
|
|
373
|
-
displayName: Newsletter
|
|
374
|
-
icon: mail
|
|
375
|
-
color: "#10B981"
|
|
376
|
-
description: "A newsletter issue — your direct channel to an owned audience. No algorithm, no platform fee, no intermediary."
|
|
377
|
-
scope: WORKSPACE
|
|
378
|
-
properties:
|
|
379
|
-
- slug: newsletter-status
|
|
380
|
-
label: Status
|
|
381
|
-
valueType: string
|
|
382
|
-
inputType: select
|
|
383
|
-
enumValues: ["Idea", "Drafting", "Editing", "Scheduled", "Sent", "Archived"]
|
|
384
|
-
- slug: newsletter-series
|
|
385
|
-
label: Series
|
|
386
|
-
valueType: string
|
|
387
|
-
inputType: text
|
|
388
|
-
placeholder: "Which newsletter series is this issue part of?"
|
|
389
|
-
- slug: issue-number
|
|
390
|
-
label: Issue Number
|
|
391
|
-
valueType: number
|
|
392
|
-
inputType: number
|
|
393
|
-
- slug: subject-line
|
|
394
|
-
label: Subject Line
|
|
395
|
-
valueType: string
|
|
396
|
-
inputType: text
|
|
397
|
-
placeholder: "The subject line — your most important copy"
|
|
398
|
-
- slug: preview-text
|
|
399
|
-
label: Preview Text
|
|
400
|
-
valueType: string
|
|
401
|
-
inputType: text
|
|
402
|
-
placeholder: "45-character preview shown in inbox (after subject)"
|
|
403
|
-
- slug: send-date
|
|
404
|
-
label: Send Date
|
|
405
|
-
valueType: date
|
|
406
|
-
- slug: subscriber-count
|
|
407
|
-
label: Subscriber Count at Send
|
|
408
|
-
valueType: number
|
|
409
|
-
inputType: number
|
|
410
|
-
- slug: open-rate
|
|
411
|
-
label: "Open Rate (%)"
|
|
412
|
-
valueType: number
|
|
413
|
-
inputType: number
|
|
414
|
-
- slug: click-rate
|
|
415
|
-
label: "Click Rate (%)"
|
|
416
|
-
valueType: number
|
|
417
|
-
inputType: number
|
|
418
|
-
- slug: newsletter-sponsor
|
|
419
|
-
label: Sponsor
|
|
420
|
-
valueType: entity_id
|
|
421
|
-
- slug: newsletter-campaign
|
|
422
|
-
label: Campaign
|
|
423
|
-
valueType: entity_id
|
|
424
|
-
- slug: newsletter-pillar
|
|
425
|
-
label: Primary Pillar
|
|
426
|
-
valueType: entity_id
|
|
427
|
-
- slug: newsletter-tags
|
|
428
|
-
label: Tags
|
|
429
|
-
valueType: array
|
|
430
|
-
|
|
431
202
|
views:
|
|
432
203
|
- name: Pipelines
|
|
433
204
|
slug: content-pipelines
|
|
@@ -454,29 +225,6 @@ views:
|
|
|
454
225
|
type: grid
|
|
455
226
|
scopeProfileSlug: content-template
|
|
456
227
|
description: Reusable video templates.
|
|
457
|
-
# --- Curated views for absorbed creator-ops kinds ---
|
|
458
|
-
- name: Posts
|
|
459
|
-
slug: content-posts
|
|
460
|
-
type: kanban
|
|
461
|
-
scopeProfileSlug: post
|
|
462
|
-
groupBy: post-status
|
|
463
|
-
description: Content posts by status.
|
|
464
|
-
- name: Pillars
|
|
465
|
-
slug: content-pillars
|
|
466
|
-
type: list
|
|
467
|
-
scopeProfileSlug: pillar
|
|
468
|
-
description: Content pillars — the recurring themes.
|
|
469
|
-
- name: Platforms
|
|
470
|
-
slug: content-platforms
|
|
471
|
-
type: table
|
|
472
|
-
scopeProfileSlug: platform
|
|
473
|
-
description: Channels and their audience metrics.
|
|
474
|
-
- name: Newsletters
|
|
475
|
-
slug: content-newsletters
|
|
476
|
-
type: kanban
|
|
477
|
-
scopeProfileSlug: newsletter
|
|
478
|
-
groupBy: newsletter-status
|
|
479
|
-
description: Newsletter issues by status.
|
|
480
228
|
|
|
481
229
|
# App reference
|
|
482
230
|
app:
|
|
@@ -521,22 +269,6 @@ layout:
|
|
|
521
269
|
viewName: Templates
|
|
522
270
|
label: Templates
|
|
523
271
|
icon: layout-template
|
|
524
|
-
- kind: view
|
|
525
|
-
viewName: Posts
|
|
526
|
-
label: Posts
|
|
527
|
-
icon: file-edit
|
|
528
|
-
- kind: view
|
|
529
|
-
viewName: Pillars
|
|
530
|
-
label: Pillars
|
|
531
|
-
icon: columns
|
|
532
|
-
- kind: view
|
|
533
|
-
viewName: Platforms
|
|
534
|
-
label: Platforms
|
|
535
|
-
icon: share-2
|
|
536
|
-
- kind: view
|
|
537
|
-
viewName: Newsletters
|
|
538
|
-
label: Newsletters
|
|
539
|
-
icon: mail
|
|
540
272
|
|
|
541
273
|
entityLinks:
|
|
542
274
|
- sourceProfileSlug: content-composition
|
package/src/crm.yaml
CHANGED
|
@@ -202,6 +202,202 @@ profiles:
|
|
|
202
202
|
- ready
|
|
203
203
|
- handed_off
|
|
204
204
|
|
|
205
|
+
# ═══════════════════════════════════════════════════════════════════════════
|
|
206
|
+
# ECOSYSTEM ROLES — shared pod-wide role vocabulary (SSOT is foundation.yaml).
|
|
207
|
+
#
|
|
208
|
+
# These `scope: shared`, `profileKind: role` profiles are ONE pod-wide row each,
|
|
209
|
+
# defined ONCE in foundation.yaml. The CRM re-declares them so the apply engine
|
|
210
|
+
# (create-workspace-from-definition.ts) resolves each slug to the existing
|
|
211
|
+
# pod-wide profile and GRANTS this workspace access to it (SHARED profiles are
|
|
212
|
+
# grant-gated — a workspace only sees a shared role if it references the slug).
|
|
213
|
+
# Without these references the CRM workspace could attach `client`/`lead`/…
|
|
214
|
+
# facets that entities.list could never surface, so every row fell through to
|
|
215
|
+
# the "Idle" relationship status (crmData.ts getRelationshipStatus).
|
|
216
|
+
#
|
|
217
|
+
# Bodies match foundation VERBATIM (row-level icon/color/displayName/description
|
|
218
|
+
# + every property definition): two templates declaring the same shared slug
|
|
219
|
+
# with DIVERGENT bodies fight over one pod-wide row (base drift). The
|
|
220
|
+
# template-shared-role-ssot tripwire enforces this — do NOT diverge here.
|
|
221
|
+
# ═══════════════════════════════════════════════════════════════════════════
|
|
222
|
+
|
|
223
|
+
# ── Client (active commercial relationship) ───────────────────────────────
|
|
224
|
+
- slug: client
|
|
225
|
+
displayName: Client
|
|
226
|
+
icon: briefcase
|
|
227
|
+
color: emerald
|
|
228
|
+
description: An active commercial relationship — created when a deal is won.
|
|
229
|
+
scope: shared
|
|
230
|
+
profileKind: role
|
|
231
|
+
applicableKinds:
|
|
232
|
+
- company
|
|
233
|
+
- person
|
|
234
|
+
properties:
|
|
235
|
+
- slug: clientStatus
|
|
236
|
+
label: Status
|
|
237
|
+
valueType: string
|
|
238
|
+
inputType: select
|
|
239
|
+
enumValues:
|
|
240
|
+
- prospect
|
|
241
|
+
- active
|
|
242
|
+
- paused
|
|
243
|
+
- former
|
|
244
|
+
- churned
|
|
245
|
+
- slug: accountManager
|
|
246
|
+
label: Account Manager
|
|
247
|
+
valueType: string
|
|
248
|
+
inputType: text
|
|
249
|
+
- slug: engagementStartDate
|
|
250
|
+
label: Engagement Start
|
|
251
|
+
valueType: date
|
|
252
|
+
inputType: date
|
|
253
|
+
- slug: satisfactionScore
|
|
254
|
+
label: Satisfaction
|
|
255
|
+
valueType: number
|
|
256
|
+
inputType: number
|
|
257
|
+
- slug: lifetimeValue
|
|
258
|
+
label: Lifetime Value
|
|
259
|
+
valueType: number
|
|
260
|
+
inputType: number
|
|
261
|
+
- slug: notes
|
|
262
|
+
label: Notes
|
|
263
|
+
valueType: string
|
|
264
|
+
inputType: textarea
|
|
265
|
+
- slug: contractValue
|
|
266
|
+
label: Contract Value
|
|
267
|
+
valueType: number
|
|
268
|
+
inputType: number
|
|
269
|
+
- slug: renewalDate
|
|
270
|
+
label: Renewal Date
|
|
271
|
+
valueType: date
|
|
272
|
+
inputType: date
|
|
273
|
+
- slug: healthScore
|
|
274
|
+
label: Health
|
|
275
|
+
valueType: string
|
|
276
|
+
inputType: select
|
|
277
|
+
enumValues:
|
|
278
|
+
- healthy
|
|
279
|
+
- at_risk
|
|
280
|
+
- critical
|
|
281
|
+
|
|
282
|
+
# ── Partner (referral source + co-delivery collaborator) ──────────────────
|
|
283
|
+
- slug: partner
|
|
284
|
+
displayName: Partner
|
|
285
|
+
icon: handshake
|
|
286
|
+
color: teal
|
|
287
|
+
description: A partner relationship — both a referral source and a co-delivery collaborator, distinguished by partner type.
|
|
288
|
+
scope: shared
|
|
289
|
+
profileKind: role
|
|
290
|
+
applicableKinds:
|
|
291
|
+
- company
|
|
292
|
+
- person
|
|
293
|
+
properties:
|
|
294
|
+
- slug: partnerStatus
|
|
295
|
+
label: Status
|
|
296
|
+
valueType: string
|
|
297
|
+
inputType: select
|
|
298
|
+
enumValues:
|
|
299
|
+
- prospect
|
|
300
|
+
- active
|
|
301
|
+
- paused
|
|
302
|
+
- churned
|
|
303
|
+
- slug: partnerType
|
|
304
|
+
label: Partner Type
|
|
305
|
+
valueType: string
|
|
306
|
+
inputType: select
|
|
307
|
+
enumValues:
|
|
308
|
+
- referral
|
|
309
|
+
- co-delivery
|
|
310
|
+
- both
|
|
311
|
+
- slug: accountManager
|
|
312
|
+
label: Account Manager
|
|
313
|
+
valueType: string
|
|
314
|
+
inputType: text
|
|
315
|
+
- slug: engagementStartDate
|
|
316
|
+
label: Engagement Start
|
|
317
|
+
valueType: date
|
|
318
|
+
inputType: date
|
|
319
|
+
- slug: satisfactionScore
|
|
320
|
+
label: Satisfaction
|
|
321
|
+
valueType: number
|
|
322
|
+
inputType: number
|
|
323
|
+
- slug: lifetimeValue
|
|
324
|
+
label: Lifetime Value
|
|
325
|
+
valueType: number
|
|
326
|
+
inputType: number
|
|
327
|
+
- slug: notes
|
|
328
|
+
label: Notes
|
|
329
|
+
valueType: string
|
|
330
|
+
inputType: textarea
|
|
331
|
+
- slug: contractValue
|
|
332
|
+
label: Contract Value
|
|
333
|
+
valueType: number
|
|
334
|
+
inputType: number
|
|
335
|
+
- slug: renewalDate
|
|
336
|
+
label: Renewal Date
|
|
337
|
+
valueType: date
|
|
338
|
+
inputType: date
|
|
339
|
+
- slug: healthScore
|
|
340
|
+
label: Health
|
|
341
|
+
valueType: string
|
|
342
|
+
inputType: select
|
|
343
|
+
enumValues:
|
|
344
|
+
- healthy
|
|
345
|
+
- at_risk
|
|
346
|
+
- critical
|
|
347
|
+
|
|
348
|
+
# ── Lead (early-pipeline prospect, pre-client) ─────────────────────────────
|
|
349
|
+
- slug: lead
|
|
350
|
+
displayName: Lead
|
|
351
|
+
icon: user-plus
|
|
352
|
+
color: yellow
|
|
353
|
+
description: An early-pipeline prospect — not yet a client, being qualified or nurtured.
|
|
354
|
+
scope: shared
|
|
355
|
+
profileKind: role
|
|
356
|
+
applicableKinds:
|
|
357
|
+
- company
|
|
358
|
+
- person
|
|
359
|
+
properties:
|
|
360
|
+
- slug: leadStage
|
|
361
|
+
label: Stage
|
|
362
|
+
valueType: string
|
|
363
|
+
inputType: select
|
|
364
|
+
enumValues:
|
|
365
|
+
- prospect
|
|
366
|
+
- qualified
|
|
367
|
+
- nurturing
|
|
368
|
+
- converted
|
|
369
|
+
- lost
|
|
370
|
+
constraints: { defaultValue: prospect }
|
|
371
|
+
- slug: notes
|
|
372
|
+
label: Notes
|
|
373
|
+
valueType: string
|
|
374
|
+
inputType: textarea
|
|
375
|
+
|
|
376
|
+
# ── Churned (formerly-active relationship that ended) ──────────────────────
|
|
377
|
+
- slug: churned
|
|
378
|
+
displayName: Churned
|
|
379
|
+
icon: user-x
|
|
380
|
+
color: gray
|
|
381
|
+
description: A relationship (client, partner, or otherwise) that was active and has since ended.
|
|
382
|
+
scope: shared
|
|
383
|
+
profileKind: role
|
|
384
|
+
applicableKinds:
|
|
385
|
+
- company
|
|
386
|
+
- person
|
|
387
|
+
properties:
|
|
388
|
+
- slug: churnedDate
|
|
389
|
+
label: Churned Date
|
|
390
|
+
valueType: date
|
|
391
|
+
inputType: date
|
|
392
|
+
- slug: churnReason
|
|
393
|
+
label: Reason
|
|
394
|
+
valueType: string
|
|
395
|
+
inputType: textarea
|
|
396
|
+
- slug: notes
|
|
397
|
+
label: Notes
|
|
398
|
+
valueType: string
|
|
399
|
+
inputType: textarea
|
|
400
|
+
|
|
205
401
|
entityLinks:
|
|
206
402
|
- sourceProfileSlug: person
|
|
207
403
|
targetProfileSlug: deal
|