@synap-core/workspace-templates 0.7.4 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -9616,6 +9616,13 @@ var DATA = {
9616
9616
  "description": "An organisation being qualified or sold to.",
9617
9617
  "scope": "WORKSPACE",
9618
9618
  "properties": [
9619
+ {
9620
+ "slug": "contextSummary",
9621
+ "label": "Context",
9622
+ "valueType": "string",
9623
+ "inputType": "textarea",
9624
+ "placeholder": "The AI-maintained one-paragraph summary of who this client is and where they stand."
9625
+ },
9619
9626
  {
9620
9627
  "slug": "website",
9621
9628
  "label": "Website",
@@ -22107,6 +22114,702 @@ var DATA = {
22107
22114
  ]
22108
22115
  }
22109
22116
  },
22117
+ "networking": {
22118
+ "meta": {
22119
+ "slug": "networking",
22120
+ "domain": "revenue",
22121
+ "name": "Networking",
22122
+ "description": "The BD-middleman layer over your CRM \u2014 capture client needs, keep a roster of solution providers, and broker the intros that connect demand to supply.",
22123
+ "icon": "waypoints",
22124
+ "color": "#6366F1",
22125
+ "tags": [
22126
+ "networking",
22127
+ "business-development",
22128
+ "matchmaking",
22129
+ "intros",
22130
+ "middleman"
22131
+ ],
22132
+ "isPublic": true
22133
+ },
22134
+ "dependencies": [
22135
+ {
22136
+ "slug": "crm",
22137
+ "kind": "workspace",
22138
+ "relation": "compose",
22139
+ "reason": "Adds a needs \u2192 intros brokerage workflow onto your CRM workspace."
22140
+ },
22141
+ {
22142
+ "slug": "foundation",
22143
+ "kind": "workspace",
22144
+ "relation": "require",
22145
+ "reason": "Provides the pod-wide client/partner role vocabulary the CRM base reuses."
22146
+ }
22147
+ ],
22148
+ "workspace": {
22149
+ "name": "Networking",
22150
+ "description": "A brokerage workspace layered on your CRM \u2014 client needs, a provider roster, and the intros that connect them.",
22151
+ "proposalId": "networking-v1",
22152
+ "subtype": "crm"
22153
+ },
22154
+ "profiles": [
22155
+ {
22156
+ "slug": "need",
22157
+ "displayName": "Need",
22158
+ "icon": "target",
22159
+ "color": "amber",
22160
+ "description": "A client's stated ask \u2014 the demand The Arch brokers a provider against.",
22161
+ "scope": "WORKSPACE",
22162
+ "properties": [
22163
+ {
22164
+ "slug": "needStatus",
22165
+ "label": "Status",
22166
+ "valueType": "string",
22167
+ "inputType": "select",
22168
+ "enumValues": [
22169
+ "open",
22170
+ "matching",
22171
+ "intro-made",
22172
+ "satisfied",
22173
+ "dropped"
22174
+ ],
22175
+ "constraints": {
22176
+ "defaultValue": "open"
22177
+ }
22178
+ },
22179
+ {
22180
+ "slug": "domain",
22181
+ "label": "Domain",
22182
+ "valueType": "string",
22183
+ "inputType": "text",
22184
+ "placeholder": "The area of the ask \u2014 e.g. market-making, audit, design."
22185
+ },
22186
+ {
22187
+ "slug": "urgency",
22188
+ "label": "Urgency",
22189
+ "valueType": "string",
22190
+ "inputType": "text"
22191
+ },
22192
+ {
22193
+ "slug": "budgetRange",
22194
+ "label": "Budget Range",
22195
+ "valueType": "string",
22196
+ "inputType": "text"
22197
+ },
22198
+ {
22199
+ "slug": "requesterCompanyId",
22200
+ "label": "Requester",
22201
+ "valueType": "entity_id",
22202
+ "inputType": "entity_select",
22203
+ "targetProfileSlug": "company"
22204
+ },
22205
+ {
22206
+ "slug": "confidentiality",
22207
+ "label": "Confidentiality",
22208
+ "valueType": "string",
22209
+ "inputType": "select",
22210
+ "enumValues": [
22211
+ "shareable",
22212
+ "confidential"
22213
+ ],
22214
+ "constraints": {
22215
+ "defaultValue": "confidential"
22216
+ }
22217
+ },
22218
+ {
22219
+ "slug": "evidenceQuote",
22220
+ "label": "Evidence Quote",
22221
+ "valueType": "string",
22222
+ "inputType": "textarea",
22223
+ "placeholder": "The client's own words that captured this need."
22224
+ },
22225
+ {
22226
+ "slug": "sourceMessageId",
22227
+ "label": "Source Message ID",
22228
+ "valueType": "string",
22229
+ "inputType": "text"
22230
+ },
22231
+ {
22232
+ "slug": "notes",
22233
+ "label": "Notes",
22234
+ "valueType": "string",
22235
+ "inputType": "textarea"
22236
+ }
22237
+ ]
22238
+ },
22239
+ {
22240
+ "slug": "intro",
22241
+ "displayName": "Intro",
22242
+ "icon": "waypoints",
22243
+ "color": "violet",
22244
+ "description": "The middleman brokerage artifact \u2014 connects a requester to a provider for a need, and bills the match as a deal.",
22245
+ "scope": "WORKSPACE",
22246
+ "properties": [
22247
+ {
22248
+ "slug": "introStage",
22249
+ "label": "Stage",
22250
+ "valueType": "string",
22251
+ "inputType": "select",
22252
+ "enumValues": [
22253
+ "identified",
22254
+ "proposed",
22255
+ "approved",
22256
+ "introduced",
22257
+ "in-discussion",
22258
+ "signed",
22259
+ "dead"
22260
+ ],
22261
+ "constraints": {
22262
+ "defaultValue": "identified"
22263
+ }
22264
+ },
22265
+ {
22266
+ "slug": "requesterCompanyId",
22267
+ "label": "Requester",
22268
+ "valueType": "entity_id",
22269
+ "inputType": "entity_select",
22270
+ "targetProfileSlug": "company"
22271
+ },
22272
+ {
22273
+ "slug": "providerCompanyId",
22274
+ "label": "Provider",
22275
+ "valueType": "entity_id",
22276
+ "inputType": "entity_select",
22277
+ "targetProfileSlug": "company"
22278
+ },
22279
+ {
22280
+ "slug": "needId",
22281
+ "label": "Need",
22282
+ "valueType": "entity_id",
22283
+ "inputType": "entity_select",
22284
+ "targetProfileSlug": "need"
22285
+ },
22286
+ {
22287
+ "slug": "synapFeeModel",
22288
+ "label": "Synap fee model",
22289
+ "valueType": "string",
22290
+ "inputType": "select",
22291
+ "enumValues": [
22292
+ "fixed",
22293
+ "success_fee"
22294
+ ]
22295
+ },
22296
+ {
22297
+ "slug": "synapSuccessFeeRate",
22298
+ "label": "Synap success fee rate",
22299
+ "valueType": "number",
22300
+ "inputType": "number"
22301
+ },
22302
+ {
22303
+ "slug": "synapFixedFee",
22304
+ "label": "Synap fixed fee",
22305
+ "valueType": "number",
22306
+ "inputType": "number"
22307
+ },
22308
+ {
22309
+ "slug": "expectedClientGain",
22310
+ "label": "Expected client gain",
22311
+ "valueType": "number",
22312
+ "inputType": "number"
22313
+ },
22314
+ {
22315
+ "slug": "synapFeeAmount",
22316
+ "label": "Synap fee amount",
22317
+ "valueType": "number",
22318
+ "inputType": "number"
22319
+ },
22320
+ {
22321
+ "slug": "sourcedByUserId",
22322
+ "label": "Sourced by user ID",
22323
+ "valueType": "string",
22324
+ "inputType": "text"
22325
+ },
22326
+ {
22327
+ "slug": "commissionStatus",
22328
+ "label": "Commission status",
22329
+ "valueType": "string",
22330
+ "inputType": "select",
22331
+ "enumValues": [
22332
+ "estimated",
22333
+ "earned",
22334
+ "paid",
22335
+ "requires_review",
22336
+ "void"
22337
+ ]
22338
+ },
22339
+ {
22340
+ "slug": "introducedAt",
22341
+ "label": "Introduced at",
22342
+ "valueType": "date",
22343
+ "inputType": "date"
22344
+ },
22345
+ {
22346
+ "slug": "outcome",
22347
+ "label": "Outcome",
22348
+ "valueType": "string",
22349
+ "inputType": "textarea"
22350
+ },
22351
+ {
22352
+ "slug": "deadReason",
22353
+ "label": "Dead reason",
22354
+ "valueType": "string",
22355
+ "inputType": "textarea"
22356
+ }
22357
+ ]
22358
+ },
22359
+ {
22360
+ "slug": "solution-provider",
22361
+ "displayName": "Solution Provider",
22362
+ "icon": "handshake",
22363
+ "color": "teal",
22364
+ "description": "A company or person that provides a capability The Arch can broker a client need against.",
22365
+ "scope": "shared",
22366
+ "profileKind": "role",
22367
+ "applicableKinds": [
22368
+ "company",
22369
+ "person"
22370
+ ],
22371
+ "properties": [
22372
+ {
22373
+ "slug": "status",
22374
+ "label": "Status",
22375
+ "valueType": "string",
22376
+ "inputType": "select",
22377
+ "enumValues": [
22378
+ "prospect",
22379
+ "active",
22380
+ "paused",
22381
+ "churned"
22382
+ ]
22383
+ },
22384
+ {
22385
+ "slug": "domains",
22386
+ "label": "Domains",
22387
+ "valueType": "array",
22388
+ "inputType": "text",
22389
+ "placeholder": "The capability areas this provider covers."
22390
+ },
22391
+ {
22392
+ "slug": "capacity",
22393
+ "label": "Capacity",
22394
+ "valueType": "string",
22395
+ "inputType": "text"
22396
+ },
22397
+ {
22398
+ "slug": "pricingNotes",
22399
+ "label": "Pricing Notes",
22400
+ "valueType": "string",
22401
+ "inputType": "textarea"
22402
+ },
22403
+ {
22404
+ "slug": "geography",
22405
+ "label": "Geography",
22406
+ "valueType": "string",
22407
+ "inputType": "text"
22408
+ },
22409
+ {
22410
+ "slug": "notes",
22411
+ "label": "Notes",
22412
+ "valueType": "string",
22413
+ "inputType": "textarea"
22414
+ }
22415
+ ]
22416
+ }
22417
+ ],
22418
+ "entityLinks": [
22419
+ {
22420
+ "sourceProfileSlug": "need",
22421
+ "targetProfileSlug": "company",
22422
+ "type": "needed_by",
22423
+ "label": "Needed by"
22424
+ },
22425
+ {
22426
+ "sourceProfileSlug": "intro",
22427
+ "targetProfileSlug": "need",
22428
+ "type": "resolves",
22429
+ "label": "Resolves"
22430
+ },
22431
+ {
22432
+ "sourceProfileSlug": "intro",
22433
+ "targetProfileSlug": "company",
22434
+ "type": "introduced_requester",
22435
+ "label": "Requester"
22436
+ },
22437
+ {
22438
+ "sourceProfileSlug": "intro",
22439
+ "targetProfileSlug": "company",
22440
+ "type": "introduced_provider",
22441
+ "label": "Provider"
22442
+ },
22443
+ {
22444
+ "sourceProfileSlug": "intro",
22445
+ "targetProfileSlug": "deal",
22446
+ "type": "billed_as",
22447
+ "label": "Billed as"
22448
+ }
22449
+ ],
22450
+ "views": [
22451
+ {
22452
+ "name": "Needs",
22453
+ "slug": "needs",
22454
+ "type": "kanban",
22455
+ "scopeProfileSlug": "need",
22456
+ "description": "Client needs on a board by status \u2014 open demand waiting for a match.",
22457
+ "config": {
22458
+ "groupByField": "needStatus"
22459
+ }
22460
+ },
22461
+ {
22462
+ "name": "Intros",
22463
+ "slug": "intros",
22464
+ "type": "kanban",
22465
+ "scopeProfileSlug": "intro",
22466
+ "description": "Brokered intros on a board by stage \u2014 from identified match to signed.",
22467
+ "config": {
22468
+ "groupByField": "introStage"
22469
+ }
22470
+ },
22471
+ {
22472
+ "name": "Providers",
22473
+ "slug": "providers",
22474
+ "type": "table",
22475
+ "scopeProfileSlug": "solution-provider",
22476
+ "description": "The solution-provider roster \u2014 companies wearing the provider role, by status.",
22477
+ "config": {
22478
+ "columns": [
22479
+ "title",
22480
+ "status",
22481
+ "domains",
22482
+ "geography",
22483
+ "capacity"
22484
+ ]
22485
+ }
22486
+ }
22487
+ ],
22488
+ "automations": [
22489
+ {
22490
+ "key": "networking-intro-matcher",
22491
+ "name": "Intro Matcher",
22492
+ "description": "Once a day, match each shareable open client need against the solution-provider roster, propose an intro for the best fit, and post a match brief to The Arch's internal team channel \u2014 never to a client's own channel.",
22493
+ "triggerType": "cron",
22494
+ "triggerConfig": {
22495
+ "expression": "0 9 * * *"
22496
+ },
22497
+ "status": "active",
22498
+ "metadata": {
22499
+ "templateKey": "networking-intro-matcher"
22500
+ },
22501
+ "flow": {
22502
+ "nodes": [
22503
+ {
22504
+ "id": "trigger",
22505
+ "type": "trigger",
22506
+ "position": {
22507
+ "x": 0,
22508
+ "y": 0
22509
+ },
22510
+ "data": {
22511
+ "label": "Daily at 09:00",
22512
+ "triggerType": "cron",
22513
+ "config": {
22514
+ "expression": "0 9 * * *"
22515
+ }
22516
+ }
22517
+ },
22518
+ {
22519
+ "id": "list-needs",
22520
+ "type": "capability",
22521
+ "position": {
22522
+ "x": 0,
22523
+ "y": 120
22524
+ },
22525
+ "data": {
22526
+ "label": "List shareable open needs (FIREWALL filter)",
22527
+ "verbId": "entity.query",
22528
+ "inputMapping": {
22529
+ "profileSlug": "need",
22530
+ "filter": {
22531
+ "needStatus": "open",
22532
+ "confidentiality": "shareable"
22533
+ },
22534
+ "limit": "100"
22535
+ }
22536
+ }
22537
+ },
22538
+ {
22539
+ "id": "list-providers",
22540
+ "type": "capability",
22541
+ "position": {
22542
+ "x": 0,
22543
+ "y": 240
22544
+ },
22545
+ "data": {
22546
+ "label": "List the solution-provider roster",
22547
+ "verbId": "entity.query",
22548
+ "inputMapping": {
22549
+ "profileSlug": "solution-provider",
22550
+ "limit": "100"
22551
+ }
22552
+ }
22553
+ },
22554
+ {
22555
+ "id": "needs-loop",
22556
+ "type": "loop",
22557
+ "position": {
22558
+ "x": 0,
22559
+ "y": 360
22560
+ },
22561
+ "data": {
22562
+ "label": "For each shareable open need",
22563
+ "iteratorExpression": "steps.list-needs.output.entities",
22564
+ "itemVariable": "need"
22565
+ }
22566
+ },
22567
+ {
22568
+ "id": "match",
22569
+ "type": "capability",
22570
+ "position": {
22571
+ "x": 0,
22572
+ "y": 480
22573
+ },
22574
+ "data": {
22575
+ "label": "Match this need to the roster \u2192 JSON",
22576
+ "verbId": "ai.generate",
22577
+ "inputMapping": {
22578
+ "json": "true",
22579
+ "maxTokens": "800",
22580
+ "system": "You are The Arch's business-development matchmaker. You connect a CLIENT'S NEED to the single best SOLUTION PROVIDER from a roster.\nFIREWALL (never break): your output is a brief for The Arch's INTERNAL team channel ONLY. NEVER draft anything to be sent into a client's own channel, and NEVER reveal one client's need to another client. Do not name the requesting client in any text intended for the provider.",
22581
+ "prompt": `The client need: title: {{loop.item.title}} domain: {{loop.item.properties.domain}} urgency: {{loop.item.properties.urgency}} budget: {{loop.item.properties.budgetRange}} detail: {{loop.item.properties.notes}}
22582
+ The solution-provider roster (JSON \u2014 each has an id, title, and properties incl. domains/geography/capacity): {{steps.list-providers.output.entities}}
22583
+ Pick the SINGLE best provider for this need, or none if nothing fits well. Respond with STRICT JSON and NOTHING else: {
22584
+ "hasMatch": "true" or "false" (a STRING),
22585
+ "providerEntityId": "<the matched provider's entity id, or empty string>",
22586
+ "providerName": "<the matched provider's name, or empty string>",
22587
+ "rationale": "<one or two sentences on why this provider fits, for the internal team>",
22588
+ "brief": "<a short internal match brief for the team, markdown>"
22589
+ } Set hasMatch to "false" when no provider is a genuine fit.`
22590
+ }
22591
+ }
22592
+ },
22593
+ {
22594
+ "id": "match-gate",
22595
+ "type": "condition",
22596
+ "position": {
22597
+ "x": 0,
22598
+ "y": 600
22599
+ },
22600
+ "data": {
22601
+ "label": "Only continue when there is a real match",
22602
+ "expression": "steps.match.output.hasMatch === true"
22603
+ }
22604
+ },
22605
+ {
22606
+ "id": "create-intro",
22607
+ "type": "output",
22608
+ "position": {
22609
+ "x": 0,
22610
+ "y": 720
22611
+ },
22612
+ "data": {
22613
+ "label": "Propose the intro",
22614
+ "outputType": "entity_create",
22615
+ "config": {
22616
+ "profileSlug": "intro",
22617
+ "title": "Intro \u2014 {{loop.item.title}} \u2192 {{steps.match.output.providerName}}",
22618
+ "properties": {
22619
+ "introStage": "identified",
22620
+ "needId": "{{loop.item.id}}",
22621
+ "requesterCompanyId": "{{loop.item.properties.requesterCompanyId}}",
22622
+ "providerCompanyId": "{{steps.match.output.providerEntityId}}"
22623
+ }
22624
+ }
22625
+ }
22626
+ },
22627
+ {
22628
+ "id": "resolve-team",
22629
+ "type": "capability",
22630
+ "position": {
22631
+ "x": 0,
22632
+ "y": 840
22633
+ },
22634
+ "data": {
22635
+ "label": "Resolve The Arch's internal team channel for the requester (FIREWALL)",
22636
+ "_note": "Resolves from the REQUESTER COMPANY, not the intro entity. channel.resolve is a read-only FIND \u2014 it never creates. A just-proposed `intro` has no channel bound to it, so resolving from {{steps.create-intro.output.entityId}} returned channelId: null and the brief silently never posted. The requester company is a stable entity that already owns a `team`-purpose channel (bound at onboarding), so we resolve from it instead. Firewall-safe: this is The Arch's INTERNAL team thread for client A (the need's owner), NOT client B's (the provider's) channel and NOT any client-comms channel.",
22637
+ "verbId": "channel.resolve",
22638
+ "inputMapping": {
22639
+ "contextObjectType": "entity",
22640
+ "contextObjectId": "{{loop.item.properties.requesterCompanyId}}",
22641
+ "branchPurpose": "team"
22642
+ }
22643
+ }
22644
+ },
22645
+ {
22646
+ "id": "post-brief",
22647
+ "type": "output",
22648
+ "position": {
22649
+ "x": 0,
22650
+ "y": 960
22651
+ },
22652
+ "data": {
22653
+ "label": "Post the match brief to the INTERNAL team channel (FIREWALL)",
22654
+ "outputType": "channel_message",
22655
+ "config": {
22656
+ "channelId": "{{steps.resolve-team.output.channelId}}",
22657
+ "content": "**Match found \u2014 {{loop.item.title}} \u2192 {{steps.match.output.providerName}}**\n{{steps.match.output.rationale}}\n{{steps.match.output.brief}}",
22658
+ "metadata": {
22659
+ "automationMessage": true,
22660
+ "kind": "intro-match"
22661
+ }
22662
+ }
22663
+ }
22664
+ }
22665
+ ],
22666
+ "edges": [
22667
+ {
22668
+ "id": "e-trigger-needs",
22669
+ "source": "trigger",
22670
+ "target": "list-needs"
22671
+ },
22672
+ {
22673
+ "id": "e-needs-providers",
22674
+ "source": "list-needs",
22675
+ "target": "list-providers"
22676
+ },
22677
+ {
22678
+ "id": "e-providers-loop",
22679
+ "source": "list-providers",
22680
+ "target": "needs-loop"
22681
+ },
22682
+ {
22683
+ "id": "e-loop-match",
22684
+ "source": "needs-loop",
22685
+ "target": "match"
22686
+ },
22687
+ {
22688
+ "id": "e-match-gate",
22689
+ "source": "match",
22690
+ "target": "match-gate"
22691
+ },
22692
+ {
22693
+ "id": "e-gate-intro",
22694
+ "source": "match-gate",
22695
+ "target": "create-intro"
22696
+ },
22697
+ {
22698
+ "id": "e-intro-resolve",
22699
+ "source": "create-intro",
22700
+ "target": "resolve-team"
22701
+ },
22702
+ {
22703
+ "id": "e-resolve-post",
22704
+ "source": "resolve-team",
22705
+ "target": "post-brief"
22706
+ }
22707
+ ]
22708
+ }
22709
+ }
22710
+ ],
22711
+ "app": {
22712
+ "kind": "stored",
22713
+ "cellKey": "entity-detail"
22714
+ },
22715
+ "layout": {
22716
+ "defaultView": "Needs",
22717
+ "defaultApp": null,
22718
+ "pinnedApps": [
22719
+ "dashboard",
22720
+ "data"
22721
+ ],
22722
+ "sidebarItems": [
22723
+ {
22724
+ "kind": "view",
22725
+ "viewName": "Needs",
22726
+ "label": "Needs",
22727
+ "icon": "target"
22728
+ },
22729
+ {
22730
+ "kind": "view",
22731
+ "viewName": "Intros",
22732
+ "label": "Intros",
22733
+ "icon": "waypoints"
22734
+ },
22735
+ {
22736
+ "kind": "view",
22737
+ "viewName": "Providers",
22738
+ "label": "Providers",
22739
+ "icon": "handshake"
22740
+ }
22741
+ ]
22742
+ },
22743
+ "bento": {
22744
+ "viewName": "Needs",
22745
+ "blocks": [
22746
+ {
22747
+ "kind": "view",
22748
+ "viewName": "Needs",
22749
+ "pos": {
22750
+ "x": 0,
22751
+ "y": 0,
22752
+ "w": 6,
22753
+ "h": 5
22754
+ }
22755
+ },
22756
+ {
22757
+ "kind": "view",
22758
+ "viewName": "Intros",
22759
+ "pos": {
22760
+ "x": 6,
22761
+ "y": 0,
22762
+ "w": 6,
22763
+ "h": 5
22764
+ }
22765
+ }
22766
+ ]
22767
+ },
22768
+ "onboarding": {
22769
+ "goal": "Capture the two sides of the brokerage \u2014 the live client NEEDS and the SOLUTION-PROVIDER roster \u2014 so the matcher has real demand and real supply to connect, and every intro traces back to a stated need and a named provider.\n",
22770
+ "framing": "THE BD MIDDLEMAN: Act as a sharp business-development broker who lives\nbetween clients. One client has a need; another has the capability to meet\nit; your value is the introduction and the fee on the match. Push for the\nconcrete: whose need is this, how confidential is it, and which real provider\ncan serve it. Tag the provider role onto the REAL company you already know \u2014\nnever a second entity for the same firm.\n",
22771
+ "expertise": {
22772
+ "starters": [
22773
+ "A need has an owner and a confidentiality. Default every need to confidential \u2014 it only enters the match roster once a human marks it shareable. Capture whose need it is (the requester company) and, where you can, the client's own words as the evidence quote.\n",
22774
+ "The provider is a HAT, not a new entity. Attach the solution-provider role to the real company/person you already track (match on domain / name first) \u2014 a market of providers is a graph of roles on known companies, not a parallel directory.\n"
22775
+ ],
22776
+ "blindSpots": [
22777
+ "A need with no provider and no status is a wish, not a pipeline. Force the status (open / matching / intro-made) and, once a match exists, broker the intro rather than letting the need sit open.\n",
22778
+ "The firewall is the product. Never let one client's confidential need leak to another client. If a need is sensitive, keep it confidential \u2014 an intro is proposed to the internal team first, never straight to a client's channel.\n"
22779
+ ],
22780
+ "bar": "A workspace with real client needs (each with a requester and a confidentiality), a roster of solution providers tagged onto real companies, and the first intros brokered between them \u2014 so a glance shows what demand is open and which providers can serve it.\n"
22781
+ },
22782
+ "collect": [
22783
+ {
22784
+ "profileSlug": "need",
22785
+ "what": "The live client needs you could broker a provider against.",
22786
+ "cardinality": "several",
22787
+ "keyFields": [
22788
+ "needStatus",
22789
+ "domain",
22790
+ "requesterCompanyId",
22791
+ "confidentiality"
22792
+ ]
22793
+ },
22794
+ {
22795
+ "profileSlug": "solution-provider",
22796
+ "what": "The solution providers you can connect clients to, tagged onto the real company.",
22797
+ "cardinality": "several",
22798
+ "keyFields": [
22799
+ "status",
22800
+ "domains",
22801
+ "geography"
22802
+ ]
22803
+ }
22804
+ ],
22805
+ "openingQuestions": [
22806
+ "Which client needs are open right now, and whose needs are they?",
22807
+ "Which of those needs are shareable, and which must stay confidential?",
22808
+ "Which solution providers can you connect clients to, and what do they cover?"
22809
+ ],
22810
+ "doneWhen": "A few client needs captured with a requester and a confidentiality, a handful of solution providers tagged onto real companies, and at least one intro brokered between them."
22811
+ }
22812
+ },
22110
22813
  "operations": {
22111
22814
  "meta": {
22112
22815
  "slug": "operations",
@@ -27027,6 +27730,9 @@ counter-evidence: research that only kept what agreed with it isn't research.
27027
27730
  "integrations": [
27028
27731
  {
27029
27732
  "templateKey": "client-comms-report"
27733
+ },
27734
+ {
27735
+ "templateKey": "arch-backend"
27030
27736
  }
27031
27737
  ],
27032
27738
  "onboarding": {