@ak--47/dungeon-master 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dungeons/technical/ad-spend-schema.json +2 -2
  2. package/dungeons/technical/ad-spend.js +1 -1
  3. package/dungeons/technical/anonymous-users-schema.json +4 -3
  4. package/dungeons/technical/anonymous-users.js +1 -1
  5. package/dungeons/technical/array-of-object-lookup-schema.json +1 -1
  6. package/dungeons/technical/array-of-object-lookup.js +1 -1
  7. package/dungeons/technical/experiments-schema.json +25 -19
  8. package/dungeons/technical/experiments.js +1 -1
  9. package/dungeons/technical/foobar.js +1 -1
  10. package/dungeons/technical/group-analytics-schema.json +92 -0
  11. package/dungeons/technical/group-analytics.js +1 -1
  12. package/dungeons/technical/mirror-strategies-schema.json +4 -4
  13. package/dungeons/technical/mirror-strategies.js +1 -1
  14. package/dungeons/technical/nested-objects.js +1 -1
  15. package/dungeons/technical/retention-cadence.js +1 -2
  16. package/dungeons/technical/sanity-schema.json +22 -22
  17. package/dungeons/technical/sanity.js +1 -0
  18. package/dungeons/technical/scale-test.js +1 -1
  19. package/dungeons/technical/scd-schema.json +230 -33
  20. package/dungeons/technical/scd.js +1 -0
  21. package/dungeons/technical/simple-schema.json +132 -48
  22. package/dungeons/technical/simple.js +1 -1
  23. package/dungeons/technical/simplest-schema.json +168 -79
  24. package/dungeons/technical/simplest.js +1 -1
  25. package/dungeons/technical/text-generation-schema.json +7 -4
  26. package/dungeons/technical/text-generation.js +1 -2
  27. package/dungeons/vertical/community-schema.json +71 -49
  28. package/dungeons/vertical/community.js +8 -2
  29. package/dungeons/vertical/devtools-schema.json +69 -48
  30. package/dungeons/vertical/devtools.js +8 -2
  31. package/dungeons/vertical/ecommerce-schema.json +126 -108
  32. package/dungeons/vertical/ecommerce.js +9 -2
  33. package/dungeons/vertical/education-schema.json +5261 -272
  34. package/dungeons/vertical/education.js +16 -3
  35. package/dungeons/vertical/fintech-schema.json +165 -98
  36. package/dungeons/vertical/fintech.js +16 -3
  37. package/dungeons/vertical/fitness-schema.json +69 -47
  38. package/dungeons/vertical/fitness.js +8 -2
  39. package/dungeons/vertical/food-delivery-schema.json +36237 -187
  40. package/dungeons/vertical/food-delivery.js +16 -3
  41. package/dungeons/vertical/gaming-schema.json +103 -59
  42. package/dungeons/vertical/gaming.js +20 -9
  43. package/dungeons/vertical/healthcare-schema.json +70 -48
  44. package/dungeons/vertical/healthcare.js +8 -2
  45. package/dungeons/vertical/insurance-application-schema.json +66 -47
  46. package/dungeons/vertical/insurance-application.js +8 -2
  47. package/dungeons/vertical/logistics-schema.json +60 -38
  48. package/dungeons/vertical/logistics.js +8 -2
  49. package/dungeons/vertical/marketplace-schema.json +65 -43
  50. package/dungeons/vertical/marketplace.js +8 -2
  51. package/dungeons/vertical/media-schema.json +4085 -123
  52. package/dungeons/vertical/media.js +9 -3
  53. package/dungeons/vertical/rpg-schema.json +1984 -147
  54. package/dungeons/vertical/rpg.js +9 -3
  55. package/dungeons/vertical/sass-schema.json +2622 -147
  56. package/dungeons/vertical/sass.js +16 -3
  57. package/dungeons/vertical/social-schema.json +146 -78
  58. package/dungeons/vertical/social.js +16 -3
  59. package/dungeons/vertical/travel-schema.json +57 -35
  60. package/dungeons/vertical/travel.js +8 -2
  61. package/index.js +1 -1
  62. package/lib/core/context.js +9 -0
  63. package/lib/core/storage.js +2 -0
  64. package/lib/orchestrators/user-loop.js +4 -1
  65. package/package.json +1 -1
  66. package/scripts/extract-dungeon-schema.mjs +64 -18
  67. package/types.d.ts +3 -0
@@ -10,7 +10,7 @@ const chance = u.initChance(SEED);
10
10
  const num_users = 5_000;
11
11
  const days = 100;
12
12
 
13
- /** @typedef {import("../types.d.ts").Dungeon} Config */
13
+ /** @typedef {import("../../types").Dungeon} Config */
14
14
 
15
15
  /**
16
16
  * ═══════════════════════════════════════════════════════════════════════════════
@@ -203,7 +203,6 @@ const config = {
203
203
  hasAdSpend: false,
204
204
  percentUsersBornInDataset: 50,
205
205
  hasAvatar: true,
206
- batchSize: 2_500_000,
207
206
  concurrency: 1,
208
207
  writeToDisk: false,
209
208
 
@@ -440,7 +439,21 @@ const config = {
440
439
  platform: ["Web", "iOS", "Android", "iPad"],
441
440
  },
442
441
 
443
- scdProps: {},
442
+ scdProps: {
443
+ enrollment_status: {
444
+ values: ["enrolled", "active", "completed", "dropped"],
445
+ frequency: "month",
446
+ timing: "fuzzy",
447
+ max: 6
448
+ },
449
+ course_status: {
450
+ values: ["draft", "published", "archived", "deprecated"],
451
+ frequency: "month",
452
+ timing: "fixed",
453
+ max: 6,
454
+ type: "course_id"
455
+ }
456
+ },
444
457
 
445
458
  userProps: {
446
459
  "account_type": ["student", "student", "student", "student", "student", "student", "student", "student", "instructor"],
@@ -5,8 +5,8 @@
5
5
  "isFirstEvent": true,
6
6
  "properties": {
7
7
  "account_type": [
8
- "business",
9
- "personal"
8
+ "personal",
9
+ "business"
10
10
  ],
11
11
  "signup_channel": [
12
12
  "app",
@@ -22,14 +22,14 @@
22
22
  "properties": {
23
23
  "session_duration_sec": {
24
24
  "$range": [
25
- 131,
26
- 471
25
+ 115,
26
+ 487
27
27
  ]
28
28
  },
29
29
  "pages_viewed": [
30
30
  5,
31
- 4,
32
- 6
31
+ 10,
32
+ 4
33
33
  ],
34
34
  "month_end_anxiety": [
35
35
  false
@@ -140,9 +140,10 @@
140
140
  2710
141
141
  ]
142
142
  },
143
- "auto_pay": {
144
- "$type": "array"
145
- },
143
+ "auto_pay": [
144
+ false,
145
+ true
146
+ ],
146
147
  "missed_payment": [
147
148
  false
148
149
  ],
@@ -235,7 +236,8 @@
235
236
  ]
236
237
  },
237
238
  "action": [
238
- "buy"
239
+ "buy",
240
+ "sell"
239
241
  ],
240
242
  "premium_returns": [
241
243
  false
@@ -316,13 +318,12 @@
316
318
  ]
317
319
  },
318
320
  "interest_rate": [
319
- 4,
320
- 14,
321
- 7,
322
321
  17,
323
322
  10,
324
323
  18,
325
- 8
324
+ 8,
325
+ 9,
326
+ 6
326
327
  ]
327
328
  }
328
329
  },
@@ -336,13 +337,13 @@
336
337
  "premium"
337
338
  ],
338
339
  "new_tier": [
339
- "premium",
340
- "plus"
340
+ "plus",
341
+ "premium"
341
342
  ],
342
343
  "monthly_fee": [
343
- 14.99,
344
344
  4.99,
345
- 9.99
345
+ 9.99,
346
+ 14.99
346
347
  ]
347
348
  }
348
349
  },
@@ -363,9 +364,10 @@
363
364
  "transfer",
364
365
  "technical"
365
366
  ],
366
- "resolved": {
367
- "$type": "array"
368
- },
367
+ "resolved": [
368
+ false,
369
+ true
370
+ ],
369
371
  "fraud_sequence": [
370
372
  false
371
373
  ]
@@ -383,9 +385,10 @@
383
385
  "security",
384
386
  "promo"
385
387
  ],
386
- "action_taken": {
387
- "$type": "array"
388
- }
388
+ "action_taken": [
389
+ false,
390
+ true
391
+ ]
389
392
  }
390
393
  },
391
394
  {
@@ -399,15 +402,15 @@
399
402
  "partner_offer"
400
403
  ],
401
404
  "value": [
405
+ 74,
406
+ 39,
402
407
  23,
403
- 22,
404
- 58,
405
- 67,
406
- 26,
407
- 28,
408
- 29,
409
- 47,
410
- 20
408
+ 30,
409
+ 60,
410
+ 73,
411
+ 46,
412
+ 25,
413
+ 27
411
414
  ],
412
415
  "premium_reward": [
413
416
  false
@@ -415,71 +418,6 @@
415
418
  }
416
419
  }
417
420
  ],
418
- "superProps": {
419
- "account_tier": [
420
- "plus",
421
- "basic",
422
- "premium"
423
- ],
424
- "platform": [
425
- "ios",
426
- "android",
427
- "web"
428
- ],
429
- "low_balance_churn": [
430
- false
431
- ]
432
- },
433
- "userProps": {
434
- "credit_score_range": [
435
- "300-579",
436
- "580-669",
437
- "670-739",
438
- "740-799",
439
- "800-850"
440
- ],
441
- "income_bracket": [
442
- "under_30k",
443
- "30k_50k",
444
- "50k_75k",
445
- "75k_100k",
446
- "100k_150k",
447
- "over_150k"
448
- ],
449
- "account_age_months": {
450
- "$range": [
451
- 17,
452
- 46
453
- ]
454
- },
455
- "total_balance": {
456
- "$range": [
457
- 16006,
458
- 83008
459
- ]
460
- },
461
- "has_direct_deposit": {
462
- "$type": "array"
463
- },
464
- "account_segment": [
465
- "personal"
466
- ],
467
- "employee_count": [
468
- 0
469
- ],
470
- "annual_revenue": [
471
- 0
472
- ],
473
- "industry": [
474
- ""
475
- ],
476
- "age_range": [
477
- ""
478
- ],
479
- "life_stage": [
480
- ""
481
- ]
482
- },
483
421
  "funnels": [
484
422
  {
485
423
  "sequence": [
@@ -559,5 +497,134 @@
559
497
  "conversionRate": 25,
560
498
  "timeToConvert": 10
561
499
  }
562
- ]
500
+ ],
501
+ "superProps": {
502
+ "account_tier": [
503
+ "basic",
504
+ "plus",
505
+ "premium"
506
+ ],
507
+ "platform": [
508
+ "ios",
509
+ "android",
510
+ "web"
511
+ ],
512
+ "low_balance_churn": [
513
+ false
514
+ ]
515
+ },
516
+ "userProps": {
517
+ "credit_score_range": [
518
+ "300-579",
519
+ "580-669",
520
+ "670-739",
521
+ "740-799",
522
+ "800-850"
523
+ ],
524
+ "income_bracket": [
525
+ "under_30k",
526
+ "30k_50k",
527
+ "50k_75k",
528
+ "75k_100k",
529
+ "100k_150k",
530
+ "over_150k"
531
+ ],
532
+ "account_age_months": {
533
+ "$range": [
534
+ 15,
535
+ 44
536
+ ]
537
+ },
538
+ "total_balance": {
539
+ "$range": [
540
+ 16006,
541
+ 83008
542
+ ]
543
+ },
544
+ "has_direct_deposit": [
545
+ false,
546
+ true
547
+ ],
548
+ "account_segment": [
549
+ "personal"
550
+ ],
551
+ "employee_count": [
552
+ 0
553
+ ],
554
+ "annual_revenue": [
555
+ 0
556
+ ],
557
+ "industry": [
558
+ ""
559
+ ],
560
+ "age_range": [
561
+ ""
562
+ ],
563
+ "life_stage": [
564
+ ""
565
+ ]
566
+ },
567
+ "groupKeys": [
568
+ {
569
+ "key": "household_id",
570
+ "count": 500,
571
+ "affectsEvents": [
572
+ "transaction completed",
573
+ "transfer sent",
574
+ "bill paid",
575
+ "savings goal set"
576
+ ]
577
+ }
578
+ ],
579
+ "groupProps": {
580
+ "household_id": {
581
+ "household_size": {
582
+ "$range": [
583
+ 1,
584
+ 6
585
+ ]
586
+ },
587
+ "combined_income": {
588
+ "$range": [
589
+ 61633,
590
+ 263131
591
+ ]
592
+ },
593
+ "financial_health_score": {
594
+ "$range": [
595
+ 12,
596
+ 81
597
+ ]
598
+ },
599
+ "primary_bank": [
600
+ "NexBank_only",
601
+ "multi_bank"
602
+ ]
603
+ }
604
+ },
605
+ "scdProps": {
606
+ "account_tier": {
607
+ "type": "user",
608
+ "frequency": "month",
609
+ "timing": "fuzzy",
610
+ "max": 6,
611
+ "values": [
612
+ "basic",
613
+ "plus",
614
+ "premium"
615
+ ]
616
+ },
617
+ "risk_category": {
618
+ "type": "household_id",
619
+ "frequency": "month",
620
+ "timing": "fixed",
621
+ "max": 8,
622
+ "values": [
623
+ "low",
624
+ "medium",
625
+ "high",
626
+ "critical"
627
+ ]
628
+ }
629
+ }
563
630
  }
@@ -9,7 +9,7 @@ const chance = u.initChance(SEED);
9
9
  const num_users = 5_000;
10
10
  const days = 100;
11
11
 
12
- /** @typedef {import("../types.d.ts").Dungeon} Config */
12
+ /** @typedef {import("../../types").Dungeon} Config */
13
13
 
14
14
  /**
15
15
  * ===================================================================
@@ -151,11 +151,24 @@ const config = {
151
151
 
152
152
  hasAvatar: true,
153
153
 
154
- batchSize: 2_500_000,
155
154
  concurrency: 1,
156
155
  writeToDisk: false,
157
156
 
158
- scdProps: {},
157
+ scdProps: {
158
+ account_tier: {
159
+ values: ["basic", "plus", "premium"],
160
+ frequency: "month",
161
+ timing: "fuzzy",
162
+ max: 6
163
+ },
164
+ risk_category: {
165
+ values: ["low", "medium", "high", "critical"],
166
+ frequency: "month",
167
+ timing: "fixed",
168
+ max: 8,
169
+ type: "household_id"
170
+ }
171
+ },
159
172
 
160
173
  funnels: [
161
174
  {
@@ -392,6 +392,9 @@
392
392
  },
393
393
  {
394
394
  "event": "account deactivated",
395
+ "isChurnEvent": true,
396
+ "returnLikelihood": 0.15,
397
+ "isStrictEvent": true,
395
398
  "properties": {
396
399
  "reason": [
397
400
  "lost_motivation",
@@ -403,52 +406,6 @@
403
406
  }
404
407
  }
405
408
  ],
406
- "superProps": {
407
- "platform": [
408
- "ios",
409
- "android"
410
- ],
411
- "workout_type": [
412
- "strength",
413
- "cardio",
414
- "yoga",
415
- "hiit",
416
- "running",
417
- "cycling"
418
- ]
419
- },
420
- "userProps": {
421
- "fitness_level": [
422
- "beginner"
423
- ],
424
- "segment": [
425
- "casual"
426
- ],
427
- "streak_days": [
428
- 0
429
- ],
430
- "total_workouts": {
431
- "$range": [
432
- 0,
433
- 0
434
- ]
435
- },
436
- "preferred_workout": [
437
- "strength",
438
- "cardio",
439
- "yoga",
440
- "hiit",
441
- "running",
442
- "cycling"
443
- ],
444
- "goal": [
445
- "weight_loss",
446
- "muscle_gain",
447
- "endurance",
448
- "flexibility",
449
- "general_health"
450
- ]
451
- },
452
409
  "funnels": [
453
410
  {
454
411
  "sequence": [
@@ -457,6 +414,7 @@
457
414
  "workout planned",
458
415
  "workout completed"
459
416
  ],
417
+ "name": "Onboarding",
460
418
  "isFirstFunnel": true,
461
419
  "conversionRate": 45,
462
420
  "timeToConvert": 72,
@@ -468,6 +426,7 @@
468
426
  "workout completed",
469
427
  "progress checked"
470
428
  ],
429
+ "name": "Workout Loop",
471
430
  "conversionRate": 45,
472
431
  "timeToConvert": 48,
473
432
  "weight": 5
@@ -478,6 +437,7 @@
478
437
  "leaderboard viewed",
479
438
  "challenge joined"
480
439
  ],
440
+ "name": "Social Engagement",
481
441
  "conversionRate": 35,
482
442
  "timeToConvert": 96,
483
443
  "weight": 3
@@ -489,6 +449,7 @@
489
449
  "challenge completed",
490
450
  "achievement unlocked"
491
451
  ],
452
+ "name": "Challenge Completion",
492
453
  "conversionRate": 30,
493
454
  "timeToConvert": 336,
494
455
  "weight": 2
@@ -500,9 +461,70 @@
500
461
  "workout completed",
501
462
  "progress checked"
502
463
  ],
464
+ "name": "Coaching Path",
503
465
  "conversionRate": 50,
504
466
  "timeToConvert": 72,
505
467
  "weight": 2
506
468
  }
507
- ]
469
+ ],
470
+ "superProps": {
471
+ "platform": [
472
+ "ios",
473
+ "android"
474
+ ],
475
+ "workout_type": [
476
+ "strength",
477
+ "cardio",
478
+ "yoga",
479
+ "hiit",
480
+ "running",
481
+ "cycling"
482
+ ]
483
+ },
484
+ "userProps": {
485
+ "fitness_level": [
486
+ "beginner"
487
+ ],
488
+ "segment": [
489
+ "casual"
490
+ ],
491
+ "streak_days": [
492
+ 0
493
+ ],
494
+ "total_workouts": {
495
+ "$range": [
496
+ 0,
497
+ 0
498
+ ]
499
+ },
500
+ "preferred_workout": [
501
+ "strength",
502
+ "cardio",
503
+ "yoga",
504
+ "hiit",
505
+ "running",
506
+ "cycling"
507
+ ],
508
+ "goal": [
509
+ "weight_loss",
510
+ "muscle_gain",
511
+ "endurance",
512
+ "flexibility",
513
+ "general_health"
514
+ ]
515
+ },
516
+ "scdProps": {
517
+ "fitness_level": {
518
+ "type": "user",
519
+ "frequency": "month",
520
+ "timing": "fuzzy",
521
+ "max": 8,
522
+ "values": [
523
+ "beginner",
524
+ "intermediate",
525
+ "advanced",
526
+ "elite"
527
+ ]
528
+ }
529
+ }
508
530
  }
@@ -275,10 +275,16 @@ const config = {
275
275
  hasAdSpend: false,
276
276
  percentUsersBornInDataset: 35,
277
277
  hasAvatar: true,
278
- batchSize: 2_500_000,
279
278
  concurrency: 1,
280
279
  writeToDisk: false,
281
- scdProps: {},
280
+ scdProps: {
281
+ fitness_level: {
282
+ values: ["beginner", "intermediate", "advanced", "elite"],
283
+ frequency: "month",
284
+ timing: "fuzzy",
285
+ max: 8
286
+ }
287
+ },
282
288
  mirrorProps: {},
283
289
  lookupTables: [],
284
290