@wonsukchoi/crondex 0.22.0 → 0.23.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 (187) hide show
  1. package/README.md +16 -15
  2. package/catalog.json +4839 -118
  3. package/jobs/automotive/ase-certification-expiry-check.yaml +36 -0
  4. package/jobs/automotive/csi-score-monitor.yaml +33 -0
  5. package/jobs/automotive/customer-pay-warranty-pay-mix-tracker.yaml +47 -0
  6. package/jobs/automotive/fi-product-attachment-rate-tracker.yaml +39 -0
  7. package/jobs/automotive/loaner-fleet-availability-check.yaml +40 -0
  8. package/jobs/automotive/manufacturer-recall-notice-check.yaml +39 -0
  9. package/jobs/automotive/parts-reorder-point-check.yaml +36 -0
  10. package/jobs/automotive/repair-cycle-time-trend-monitor.yaml +42 -0
  11. package/jobs/automotive/service-appointment-no-show-tracker.yaml +38 -0
  12. package/jobs/automotive/service-bay-utilization-check.yaml +38 -0
  13. package/jobs/automotive/shop-supply-reorder-check.yaml +31 -0
  14. package/jobs/automotive/trade-in-appraisal-variance-check.yaml +39 -0
  15. package/jobs/automotive/used-vehicle-inventory-aging-check.yaml +35 -0
  16. package/jobs/construction/critical-path-material-lead-time-review.yaml +43 -0
  17. package/jobs/construction/daily-jobsite-log-compliance-check.yaml +34 -0
  18. package/jobs/construction/equipment-utilization-cost-check.yaml +35 -0
  19. package/jobs/construction/heavy-equipment-inspection-compliance-check.yaml +34 -0
  20. package/jobs/construction/jobsite-safety-incident-near-miss-tracker.yaml +35 -0
  21. package/jobs/construction/lien-waiver-collection-tracker.yaml +27 -0
  22. package/jobs/construction/permit-application-approval-backlog-check.yaml +33 -0
  23. package/jobs/construction/project-budget-variance-check.yaml +34 -0
  24. package/jobs/construction/punch-list-completion-tracker.yaml +36 -0
  25. package/jobs/construction/retainage-holdback-release-tracker.yaml +33 -0
  26. package/jobs/construction/rfi-response-time-tracker.yaml +33 -0
  27. package/jobs/construction/subcontractor-pay-application-approval-tracker.yaml +35 -0
  28. package/jobs/construction/submittal-shop-drawing-review-check.yaml +45 -0
  29. package/jobs/construction/weather-delay-impact-log.yaml +44 -0
  30. package/jobs/education/chronic-absenteeism-tracker.yaml +34 -0
  31. package/jobs/education/department-budget-variance-check.yaml +37 -0
  32. package/jobs/education/enrollment-withdrawal-trend-tracker.yaml +39 -0
  33. package/jobs/education/facility-work-order-backlog-check.yaml +34 -0
  34. package/jobs/education/free-reduced-lunch-eligibility-renewal-check.yaml +36 -0
  35. package/jobs/education/iep-504-review-deadline-tracker.yaml +35 -0
  36. package/jobs/education/parent-teacher-conference-noshow-tracker.yaml +29 -0
  37. package/jobs/education/school-bus-route-ontime-check.yaml +40 -0
  38. package/jobs/education/standardized-test-registration-deadline-check.yaml +35 -0
  39. package/jobs/education/substitute-teacher-fill-rate-tracker.yaml +35 -0
  40. package/jobs/education/teacher-certification-expiry-tracker.yaml +35 -0
  41. package/jobs/education/textbook-inventory-shortage-check.yaml +32 -0
  42. package/jobs/fleet/accident-incident-report-tracker.yaml +34 -0
  43. package/jobs/fleet/driver-mvr-review-tracker.yaml +34 -0
  44. package/jobs/fleet/driver-safety-score-monitor.yaml +39 -0
  45. package/jobs/fleet/ev-battery-health-check.yaml +36 -0
  46. package/jobs/fleet/fuel-efficiency-trend-monitor.yaml +33 -0
  47. package/jobs/fleet/geofence-violation-check.yaml +37 -0
  48. package/jobs/fleet/lease-return-condition-check.yaml +33 -0
  49. package/jobs/fleet/tire-wear-replacement-check.yaml +30 -0
  50. package/jobs/fleet/toll-violation-tracker.yaml +34 -0
  51. package/jobs/fleet/vehicle-pool-scheduling-conflict-check.yaml +37 -0
  52. package/jobs/fleet/vehicle-tco-tracker.yaml +41 -0
  53. package/jobs/fleet/vehicle-utilization-rate-check.yaml +37 -0
  54. package/jobs/growth/cohort-retention-curve-monitor.yaml +39 -0
  55. package/jobs/growth/customer-health-score-monitor.yaml +37 -0
  56. package/jobs/growth/dau-mau-engagement-ratio-check.yaml +39 -0
  57. package/jobs/growth/dormant-account-reactivation-check.yaml +39 -0
  58. package/jobs/growth/expansion-revenue-opportunity-tracker.yaml +44 -0
  59. package/jobs/growth/feature-adoption-rate-tracker.yaml +44 -0
  60. package/jobs/growth/nps-trend-tracker.yaml +40 -0
  61. package/jobs/growth/onboarding-funnel-dropoff-check.yaml +39 -0
  62. package/jobs/growth/paywall-upgrade-prompt-conversion-check.yaml +40 -0
  63. package/jobs/growth/product-qualified-lead-tracker.yaml +42 -0
  64. package/jobs/growth/referral-program-performance-tracker.yaml +35 -0
  65. package/jobs/growth/trial-to-paid-conversion-rate-tracker.yaml +48 -0
  66. package/jobs/growth/winback-reactivation-campaign-tracker.yaml +46 -0
  67. package/jobs/hospitality/adr-revpar-tracker.yaml +43 -0
  68. package/jobs/hospitality/cancellation-rate-spike-check.yaml +21 -0
  69. package/jobs/hospitality/group-booking-space-utilization-check.yaml +40 -0
  70. package/jobs/hospitality/guest-complaint-sla-tracker.yaml +34 -0
  71. package/jobs/hospitality/guest-satisfaction-score-monitor.yaml +41 -0
  72. package/jobs/hospitality/linen-inventory-turnover-check.yaml +35 -0
  73. package/jobs/hospitality/loyalty-points-reconciliation-check.yaml +33 -0
  74. package/jobs/hospitality/minibar-charge-reconciliation-check.yaml +38 -0
  75. package/jobs/hospitality/occupancy-forecast-variance-check.yaml +33 -0
  76. package/jobs/hospitality/ota-rate-parity-check.yaml +36 -0
  77. package/jobs/hospitality/overbooking-risk-alert.yaml +38 -0
  78. package/jobs/hospitality/room-maintenance-work-order-tracker.yaml +31 -0
  79. package/jobs/hospitality/upsell-upgrade-conversion-tracker.yaml +37 -0
  80. package/jobs/insurance/adjuster-caseload-balance-check.yaml +45 -0
  81. package/jobs/insurance/agent-broker-license-expiry-tracker.yaml +40 -0
  82. package/jobs/insurance/cat-event-exposure-monitor.yaml +37 -0
  83. package/jobs/insurance/claims-aging-backlog-tracker.yaml +48 -0
  84. package/jobs/insurance/doi-filing-deadline-tracker.yaml +42 -0
  85. package/jobs/insurance/loss-ratio-by-line-monitor.yaml +43 -0
  86. package/jobs/insurance/policy-lapse-rate-monitor.yaml +41 -0
  87. package/jobs/insurance/premium-payment-delinquency-tracker.yaml +42 -0
  88. package/jobs/insurance/quote-to-bind-conversion-tracker.yaml +41 -0
  89. package/jobs/insurance/reinsurance-treaty-renewal-tracker.yaml +38 -0
  90. package/jobs/insurance/siu-fraud-referral-tracker.yaml +36 -0
  91. package/jobs/insurance/subrogation-recovery-tracker.yaml +41 -0
  92. package/jobs/insurance/underwriting-queue-sla-monitor.yaml +45 -0
  93. package/jobs/logistics/3pl-performance-scorecard.yaml +45 -0
  94. package/jobs/logistics/bol-freight-class-accuracy-audit.yaml +33 -0
  95. package/jobs/logistics/cargo-insurance-claim-status-check.yaml +39 -0
  96. package/jobs/logistics/carrier-load-tender-acceptance-check.yaml +34 -0
  97. package/jobs/logistics/carrier-otd-performance-scorecard.yaml +41 -0
  98. package/jobs/logistics/carrier-rate-contract-renewal-check.yaml +35 -0
  99. package/jobs/logistics/cross-dock-dwell-time-watch.yaml +43 -0
  100. package/jobs/logistics/freight-invoice-rate-audit.yaml +38 -0
  101. package/jobs/logistics/fuel-surcharge-rate-monitor.yaml +40 -0
  102. package/jobs/logistics/international-shipment-documentation-check.yaml +36 -0
  103. package/jobs/logistics/linehaul-transit-time-variance-check.yaml +43 -0
  104. package/jobs/logistics/proof-of-delivery-reconciliation-check.yaml +38 -0
  105. package/jobs/logistics/route-load-optimization-check.yaml +32 -0
  106. package/jobs/manufacturing/changeover-time-tracker.yaml +29 -0
  107. package/jobs/manufacturing/critical-spare-parts-stock-check.yaml +29 -0
  108. package/jobs/manufacturing/first-pass-yield-report.yaml +37 -0
  109. package/jobs/manufacturing/lot-traceability-audit.yaml +37 -0
  110. package/jobs/manufacturing/non-conformance-report-backlog-check.yaml +34 -0
  111. package/jobs/manufacturing/oee-efficiency-check.yaml +37 -0
  112. package/jobs/manufacturing/osha-recordable-incident-audit.yaml +37 -0
  113. package/jobs/manufacturing/production-schedule-adherence-check.yaml +35 -0
  114. package/jobs/manufacturing/safety-certification-expiry-check.yaml +37 -0
  115. package/jobs/manufacturing/scrap-waste-rate-watch.yaml +33 -0
  116. package/jobs/manufacturing/shift-handoff-report.yaml +37 -0
  117. package/jobs/manufacturing/supplier-quality-ppm-watch.yaml +38 -0
  118. package/jobs/manufacturing/tooling-die-wear-check.yaml +31 -0
  119. package/jobs/manufacturing/work-order-backlog-check.yaml +37 -0
  120. package/jobs/marketing/ad-creative-fatigue-check.yaml +44 -0
  121. package/jobs/marketing/affiliate-partner-performance-check.yaml +38 -0
  122. package/jobs/marketing/attribution-discrepancy-check.yaml +42 -0
  123. package/jobs/marketing/brand-share-of-voice-check.yaml +43 -0
  124. package/jobs/marketing/campaign-roas-cpa-anomaly-check.yaml +41 -0
  125. package/jobs/marketing/competitor-ad-creative-watch.yaml +40 -0
  126. package/jobs/marketing/email-list-growth-rate-check.yaml +43 -0
  127. package/jobs/marketing/landing-page-conversion-drop-check.yaml +44 -0
  128. package/jobs/marketing/mql-to-sql-handoff-sla-check.yaml +29 -0
  129. package/jobs/marketing/mql-volume-pace-check.yaml +34 -0
  130. package/jobs/marketing/paid-search-negative-keyword-waste-check.yaml +37 -0
  131. package/jobs/marketing/press-release-pickup-tracking.yaml +32 -0
  132. package/jobs/marketing/webinar-registration-attendance-check.yaml +38 -0
  133. package/jobs/restaurant/comp-void-anomaly-tracker.yaml +39 -0
  134. package/jobs/restaurant/daily-sales-flash-report.yaml +36 -0
  135. package/jobs/restaurant/delivery-platform-commission-reconciliation.yaml +33 -0
  136. package/jobs/restaurant/delivery-receiving-discrepancy-check.yaml +33 -0
  137. package/jobs/restaurant/food-handler-permit-expiry-tracker.yaml +33 -0
  138. package/jobs/restaurant/gift-card-liability-check.yaml +45 -0
  139. package/jobs/restaurant/kitchen-ticket-time-watch.yaml +38 -0
  140. package/jobs/restaurant/liquor-pour-cost-variance-check.yaml +34 -0
  141. package/jobs/restaurant/menu-86-frequency-tracker.yaml +39 -0
  142. package/jobs/restaurant/menu-item-profitability-check.yaml +33 -0
  143. package/jobs/restaurant/pos-end-of-day-reconciliation-check.yaml +31 -0
  144. package/jobs/restaurant/table-turnover-rate-tracker.yaml +36 -0
  145. package/jobs/restaurant/waitlist-conversion-check.yaml +37 -0
  146. package/jobs/retail/cash-office-deposit-variance-check.yaml +34 -0
  147. package/jobs/retail/competitor-price-monitoring-check.yaml +42 -0
  148. package/jobs/retail/damaged-merchandise-writeoff-tracker.yaml +41 -0
  149. package/jobs/retail/employee-discount-abuse-check.yaml +39 -0
  150. package/jobs/retail/layaway-special-order-pickup-tracker.yaml +33 -0
  151. package/jobs/retail/loyalty-enrollment-redemption-rate-tracker.yaml +37 -0
  152. package/jobs/retail/markdown-execution-audit-check.yaml +29 -0
  153. package/jobs/retail/planogram-compliance-audit-check.yaml +36 -0
  154. package/jobs/retail/pos-void-refund-anomaly-tracker.yaml +42 -0
  155. package/jobs/retail/price-tag-audit-accuracy-check.yaml +37 -0
  156. package/jobs/retail/sales-per-square-foot-tracker.yaml +36 -0
  157. package/jobs/retail/seasonal-staffing-coverage-check.yaml +35 -0
  158. package/jobs/retail/store-closing-checklist-compliance-check.yaml +32 -0
  159. package/jobs/retail/visual-merchandising-compliance-check.yaml +40 -0
  160. package/jobs/veterinary/appointment-no-show-rate-tracker.yaml +49 -0
  161. package/jobs/veterinary/boarding-kennel-capacity-utilization-check.yaml +39 -0
  162. package/jobs/veterinary/client-payment-plan-delinquency-check.yaml +36 -0
  163. package/jobs/veterinary/dvm-license-dea-registration-expiry-check.yaml +41 -0
  164. package/jobs/veterinary/microchip-registration-verification-check.yaml +40 -0
  165. package/jobs/veterinary/patient-record-completeness-audit.yaml +41 -0
  166. package/jobs/veterinary/pet-medication-refill-backlog-check.yaml +36 -0
  167. package/jobs/veterinary/puppy-kitten-vaccine-series-compliance-check.yaml +39 -0
  168. package/jobs/veterinary/senior-pet-wellness-recall-tracker.yaml +43 -0
  169. package/jobs/veterinary/spay-neuter-followup-compliance-check.yaml +35 -0
  170. package/jobs/veterinary/specialist-referral-followup-check.yaml +38 -0
  171. package/jobs/veterinary/surgical-schedule-utilization-check.yaml +36 -0
  172. package/jobs/veterinary/vet-staff-ce-credit-tracking.yaml +36 -0
  173. package/jobs/warehousing/conveyor-sortation-downtime-watch.yaml +48 -0
  174. package/jobs/warehousing/labor-productivity-rate-check.yaml +33 -0
  175. package/jobs/warehousing/mhe-preventive-maintenance-check.yaml +38 -0
  176. package/jobs/warehousing/order-fulfillment-sla-watch.yaml +42 -0
  177. package/jobs/warehousing/shift-headcount-coverage-check.yaml +33 -0
  178. package/jobs/warehousing/slotting-velocity-review-check.yaml +44 -0
  179. package/jobs/warehousing/warehouse-damage-writeoff-review.yaml +41 -0
  180. package/jobs/warehousing/warehouse-near-miss-incident-rate-watch.yaml +47 -0
  181. package/jobs/warehousing/warehouse-space-utilization-check.yaml +39 -0
  182. package/jobs/warehousing/wave-pick-batch-efficiency-check.yaml +33 -0
  183. package/jobs/warehousing/wms-integration-error-check.yaml +36 -0
  184. package/jobs/warehousing/yard-trailer-detention-watch.yaml +41 -0
  185. package/lib/category-descriptions.js +12 -12
  186. package/lib/duplicates-allowlist.js +10 -0
  187. package/package.json +2 -2
@@ -0,0 +1,45 @@
1
+ id: gift-card-liability-check
2
+ version: 1
3
+ name: Gift Card Liability Reconciliation
4
+ description: >
5
+ Reconciles total outstanding gift card balance (liability) against
6
+ cards sold minus cards redeemed for the period, and flags a mismatch
7
+ worth investigating. Use this if you've ever had to guess at your
8
+ gift card liability for the books instead of actually reconciling it.
9
+ category: restaurant
10
+ tags: [restaurant, gift-cards, finance, reconciliation]
11
+ schedule: "0 9 1 * *"
12
+ timezone: "America/New_York"
13
+ runner: shell
14
+ command: >
15
+ sold="{{gift_cards_sold_usd}}";
16
+ redeemed="{{gift_cards_redeemed_usd}}";
17
+ prior="{{prior_period_liability_usd}}";
18
+ ledger="{{current_ledger_balance_usd}}";
19
+ tolerance="{{variance_tolerance_usd}}";
20
+ expected=$(awk -v p="$prior" -v s="$sold" -v r="$redeemed" 'BEGIN{printf "%.2f", p+s-r}');
21
+ diff=$(awk -v e="$expected" -v l="$ledger" 'BEGIN{d=e-l; if (d<0) d=-d; printf "%.2f", d}');
22
+ if awk -v d="$diff" -v t="$tolerance" 'BEGIN{exit !(d > t)}'; then
23
+ echo "MISMATCH: expected liability \$$expected, ledger shows \$$ledger (diff \$$diff)";
24
+ exit 1;
25
+ else
26
+ echo "OK: gift card liability reconciles within tolerance (\$$diff diff)";
27
+ fi
28
+ variables:
29
+ gift_cards_sold_usd:
30
+ default: 0
31
+ description: Total value of gift cards sold during the period.
32
+ gift_cards_redeemed_usd:
33
+ default: 0
34
+ description: Total value of gift cards redeemed during the period.
35
+ prior_period_liability_usd:
36
+ default: 0
37
+ description: Outstanding gift card liability carried over from the prior period.
38
+ current_ledger_balance_usd:
39
+ default: 0
40
+ description: Current outstanding gift card balance as recorded in your accounting ledger.
41
+ variance_tolerance_usd:
42
+ default: 25
43
+ description: Dollar variance allowed before the reconciliation is flagged as a mismatch.
44
+ compatible_agents: [generic, claude, codex]
45
+ notes: This reconciles aggregate liability for the books, not individual card expiry — pair with a per-card expiry check if your state allows gift cards to expire.
@@ -0,0 +1,38 @@
1
+ id: kitchen-ticket-time-watch
2
+ version: 1
3
+ name: Kitchen Ticket Time Watch
4
+ description: >
5
+ Reviews kitchen display system ticket times (fire to plate-up) and
6
+ flags stations or dayparts running consistently slower than target.
7
+ Use this if slow ticket times have ever driven complaints or comps
8
+ before anyone traced it back to a specific station falling behind.
9
+ category: restaurant
10
+ tags: [restaurant, kitchen, kds, speed-of-service]
11
+ schedule: "0 10 * * 1"
12
+ timezone: "America/New_York"
13
+ runner: agent-prompt
14
+ prompt: |
15
+ Pull ticket time data from {{kds_system}} for the past
16
+ {{lookback_days}} days, including station, item, fire time, and
17
+ plate-up time.
18
+ 1. Calculate average ticket time overall and by station.
19
+ 2. Flag any station averaging above {{target_minutes}} minutes, and
20
+ note whether the slowness is concentrated at specific dayparts
21
+ (peak lunch/dinner rushes vs. slow periods).
22
+ 3. Identify the specific menu items driving the slowest tickets at
23
+ each flagged station.
24
+ 4. Suggest one concrete fix per flagged station — additional prep,
25
+ station staffing, or menu item batching — without recommending
26
+ cutting a dish outright unless it's clearly the only lever.
27
+ variables:
28
+ kds_system:
29
+ default: "your kitchen display system"
30
+ description: Name of the KDS (e.g. "Toast KDS", "QSR Automations", "a manual ticket-time log").
31
+ lookback_days:
32
+ default: 14
33
+ description: Window of ticket data to analyze.
34
+ target_minutes:
35
+ default: 15
36
+ description: Target average ticket time in minutes before a station is flagged as running slow.
37
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
38
+ notes: Read-only speed-of-service analysis — pair with kitchen leadership before making staffing changes based on the findings.
@@ -0,0 +1,34 @@
1
+ id: liquor-pour-cost-variance-check
2
+ version: 1
3
+ name: Liquor Pour Cost Variance Check
4
+ description: >
5
+ Compares each bottle's theoretical usage (from drinks sold) against
6
+ actual bottle depletion from inventory counts, and flags bottles
7
+ showing a variance that points to over-pouring, spillage, or theft.
8
+ Use this if the bar's overall liquor cost percentage looks fine but
9
+ you suspect a specific bottle is walking off faster than it's rung up.
10
+ category: restaurant
11
+ tags: [restaurant, bar, liquor-cost, inventory, loss-prevention]
12
+ schedule: "0 7 * * 1"
13
+ timezone: "America/New_York"
14
+ runner: shell
15
+ command: >
16
+ awk -F',' -v tolerance="{{variance_tolerance_pct}}" '
17
+ NR==1 {next}
18
+ {
19
+ if ($2 > 0) {
20
+ variance_pct = (($3 - $2) / $2) * 100;
21
+ absvar = (variance_pct < 0) ? -variance_pct : variance_pct;
22
+ if (absvar > tolerance) printf "POUR VARIANCE: %s — theoretical usage %.1f oz, actual depletion %.1f oz (%.1f%% variance)\n", $1, $2, $3, variance_pct;
23
+ }
24
+ }
25
+ ' "{{pour_cost_csv}}"
26
+ variables:
27
+ pour_cost_csv:
28
+ default: "./liquor-pour-cost.csv"
29
+ description: "CSV with header row, columns: bottle_name,theoretical_usage_oz,actual_depletion_oz — theoretical comes from POS drink sales times recipe pour size, actual from physical bottle counts."
30
+ variance_tolerance_pct:
31
+ default: 10
32
+ description: Percentage variance (either direction) allowed before a bottle is flagged.
33
+ compatible_agents: [generic, claude, codex]
34
+ notes: Distinct from food-cost-percentage-watch and menu-item-profitability-check — this drills into per-bottle variance at the bar rather than an overall cost ratio or a food dish's margin.
@@ -0,0 +1,39 @@
1
+ id: menu-86-frequency-tracker
2
+ version: 1
3
+ name: Menu Item 86 Frequency Tracker
4
+ description: >
5
+ Reviews how often each menu item gets 86'd (marked sold out) mid-
6
+ service and flags items that run out repeatedly, which usually points
7
+ to a par-level or ordering problem rather than one bad night. Use
8
+ this if the same dish has ever been 86'd three Fridays in a row
9
+ before anyone connected the dots.
10
+ category: restaurant
11
+ tags: [restaurant, menu, kitchen, ordering, par-levels]
12
+ schedule: "0 10 * * 1"
13
+ timezone: "America/New_York"
14
+ runner: agent-prompt
15
+ prompt: |
16
+ Pull 86 (sold-out) log entries from {{pos_or_kitchen_log}} for the
17
+ past {{lookback_days}} days, including item name, time 86'd, and
18
+ time (if any) it came back available.
19
+ 1. Rank menu items by number of times 86'd in the window.
20
+ 2. For each item 86'd more than {{repeat_threshold}} times, note the
21
+ typical time of day/day of week it runs out, which suggests
22
+ whether it's a prep-quantity or a purchasing-quantity issue.
23
+ 3. Flag any item that's been 86'd on back-to-back service days —
24
+ that's a stronger signal than scattered one-offs.
25
+ 4. Suggest a par-level or prep-batch adjustment per repeatedly-86'd
26
+ item, distinct from a general waste-log review which looks at
27
+ over-ordering rather than under-ordering.
28
+ variables:
29
+ pos_or_kitchen_log:
30
+ default: "your POS 86 list or kitchen display system"
31
+ description: Where 86'd items get logged (e.g. "Toast 86 list", "a kitchen whiteboard log transcribed daily").
32
+ lookback_days:
33
+ default: 30
34
+ description: Window of 86-log history to analyze.
35
+ repeat_threshold:
36
+ default: 3
37
+ description: Minimum number of times an item must be 86'd in the window to be called out individually.
38
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
39
+ notes: Complements inventory-waste-log-review — that job catches over-ordering (waste), this one catches under-ordering (running out).
@@ -0,0 +1,33 @@
1
+ id: menu-item-profitability-check
2
+ version: 1
3
+ name: Menu Item Profitability Check
4
+ description: >
5
+ Compares each menu item's plate cost against its menu price and flags
6
+ items whose contribution margin has dropped below target. Use this if
7
+ an ingredient cost has ever crept up on a specific dish until it was
8
+ quietly losing money on every order, unlike the overall food-cost
9
+ percentage which only shows the average.
10
+ category: restaurant
11
+ tags: [restaurant, menu-engineering, margin, food-cost]
12
+ schedule: "0 8 1 * *"
13
+ timezone: "America/New_York"
14
+ runner: shell
15
+ command: >
16
+ awk -F',' -v target="{{min_margin_pct}}" '
17
+ NR==1 {next}
18
+ {
19
+ if ($3 > 0) {
20
+ margin_pct = (($3 - $2) / $3) * 100;
21
+ if (margin_pct < target) printf "LOW MARGIN: %s — plate cost $%.2f, price $%.2f, margin %.1f%% (target %.0f%%)\n", $1, $2, $3, margin_pct, target;
22
+ }
23
+ }
24
+ ' "{{menu_cost_csv}}"
25
+ variables:
26
+ menu_cost_csv:
27
+ default: "./menu-item-costs.csv"
28
+ description: "CSV with header row, columns: item_name,plate_cost_usd,menu_price_usd — one row per active menu item."
29
+ min_margin_pct:
30
+ default: 65
31
+ description: Minimum acceptable contribution margin percentage before an item is flagged.
32
+ compatible_agents: [generic, claude, codex]
33
+ notes: Rebuild menu-item-costs.csv whenever a recipe or ingredient price changes — this compares per-item margin, not the restaurant-wide average that food-cost-percentage-watch checks.
@@ -0,0 +1,31 @@
1
+ id: pos-end-of-day-reconciliation-check
2
+ version: 1
3
+ name: POS End-of-Day Reconciliation Check
4
+ description: >
5
+ Compares the POS system's expected cash-drawer total against what was
6
+ actually counted at close and flags any shift over the acceptable
7
+ variance. Use this if a drawer has ever come up short (or suspiciously
8
+ over) and nobody traced it back to which shift it happened on.
9
+ category: restaurant
10
+ tags: [restaurant, pos, cash-handling, reconciliation]
11
+ schedule: "0 6 * * *"
12
+ timezone: "America/New_York"
13
+ runner: shell
14
+ command: >
15
+ awk -F',' -v tolerance="{{variance_tolerance_usd}}" '
16
+ NR==1 {next}
17
+ {
18
+ diff = $4 - $3;
19
+ absdiff = (diff < 0) ? -diff : diff;
20
+ if (absdiff > tolerance) printf "VARIANCE: %s shift %s — expected $%.2f, counted $%.2f (diff $%.2f)\n", $1, $2, $3, $4, diff;
21
+ }
22
+ ' "{{eod_close_csv}}"
23
+ variables:
24
+ eod_close_csv:
25
+ default: "./eod-close-log.csv"
26
+ description: "CSV with header row, columns: close_date,shift_name,pos_expected_usd,counted_usd — one row per drawer close."
27
+ variance_tolerance_usd:
28
+ default: 10
29
+ description: Dollar variance (either direction) allowed before a shift close is flagged.
30
+ compatible_agents: [generic, claude, codex]
31
+ notes: Export the close log from your POS's end-of-day/drawer-count report — this only compares totals, it doesn't investigate the cause of a variance.
@@ -0,0 +1,36 @@
1
+ id: table-turnover-rate-tracker
2
+ version: 1
3
+ name: Table Turnover Rate Tracker
4
+ description: >
5
+ Analyzes seating and table-clear timestamps to calculate average
6
+ table turnover time by section, day, and shift, and flags where
7
+ tables are sitting occupied well past the typical dining window. Use
8
+ this if you suspect one section or server is quietly slowing down
9
+ the whole dining room's throughput on busy nights.
10
+ category: restaurant
11
+ tags: [restaurant, front-of-house, tables, throughput]
12
+ schedule: "0 10 * * 1"
13
+ timezone: "America/New_York"
14
+ runner: agent-prompt
15
+ prompt: |
16
+ Pull seated and table-cleared timestamps from {{pos_or_reservation_system}}
17
+ for the past {{lookback_days}} days.
18
+ 1. Calculate average table turnover time (seated to cleared) overall,
19
+ then broken down by section, day of week, and shift (lunch/dinner).
20
+ 2. Flag any section or shift where average turnover time is
21
+ meaningfully above the overall average, and estimate the covers
22
+ lost to the slowdown based on typical table demand at that time.
23
+ 3. Note any pattern tied to a specific server or table size, if that
24
+ data is available, without naming individuals punitively — this is
25
+ for staffing/floor-plan decisions, not performance write-ups.
26
+ 4. Recommend one concrete adjustment (seating flow, bussing staffing,
27
+ course pacing) for the slowest-flagged segment.
28
+ variables:
29
+ pos_or_reservation_system:
30
+ default: "your POS or table-management system"
31
+ description: System that logs seat and clear timestamps (e.g. "Toast", "OpenTable", "SevenRooms").
32
+ lookback_days:
33
+ default: 14
34
+ description: Window of turnover data to analyze.
35
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
36
+ notes: Read-only analysis for floor-plan and staffing decisions — do not use this to single out individual servers without corroborating context.
@@ -0,0 +1,37 @@
1
+ id: waitlist-conversion-check
2
+ version: 1
3
+ name: Waitlist-to-Seated Conversion Check
4
+ description: >
5
+ Analyzes waitlist app data to see what share of people who joined the
6
+ waitlist actually got seated versus walked away, and whether quoted
7
+ wait times matched reality. Use this if you suspect an overly
8
+ optimistic quoted wait time is quietly driving guests to leave before
9
+ their table is ready.
10
+ category: restaurant
11
+ tags: [restaurant, front-of-house, waitlist, guest-experience]
12
+ schedule: "0 11 * * 1"
13
+ timezone: "America/New_York"
14
+ runner: agent-prompt
15
+ prompt: |
16
+ Pull waitlist entries from {{waitlist_app}} for the past
17
+ {{lookback_days}} days, including join time, quoted wait, actual seated
18
+ time (or abandoned/no-show status), and party size.
19
+ 1. Calculate overall waitlist-to-seated conversion rate and the
20
+ abandonment rate (left before being seated).
21
+ 2. Compare quoted wait time to actual wait time — flag any pattern
22
+ where actual wait consistently runs longer than quoted, which
23
+ likely drives abandonment.
24
+ 3. Break down conversion rate by day of week, time slot, and party
25
+ size — flag the weakest-converting segments.
26
+ 4. Recommend whether quoted wait times need adjusting for the
27
+ flagged segments, or whether a text-notification/callback flow
28
+ would reduce walk-aways.
29
+ variables:
30
+ waitlist_app:
31
+ default: "your waitlist/reservation app"
32
+ description: Name of the waitlist system (e.g. "Yelp Waitlist", "NoWait", "Toast Tables").
33
+ lookback_days:
34
+ default: 30
35
+ description: Window of waitlist history to analyze.
36
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
37
+ notes: Read-only analysis — any change to quoted-wait logic or staffing is a floor-management decision for a human to make.
@@ -0,0 +1,34 @@
1
+ id: cash-office-deposit-variance-check
2
+ version: 1
3
+ name: Cash Office Deposit Variance Check
4
+ description: >
5
+ Compares the bank deposit slip amount against the store's total
6
+ reported cash sales for the day and flags a mismatch. Use this if a
7
+ bank deposit has ever come up short of what the registers reported for
8
+ days before anyone in accounting reconciled it back to a specific
9
+ store.
10
+ category: retail
11
+ tags: [retail, cash, deposit, reconciliation]
12
+ schedule: "0 10 * * *"
13
+ timezone: "America/New_York"
14
+ runner: shell
15
+ command: >
16
+ awk -F',' -v tolerance="{{tolerance_usd}}" '
17
+ NR==1 {next}
18
+ {
19
+ diff = $2 - $3;
20
+ abs_diff = (diff < 0) ? -diff : diff;
21
+ if (abs_diff > tolerance) {
22
+ printf "DEPOSIT VARIANCE: store %s — reported cash $%.2f, bank deposit $%.2f (diff $%.2f)\n", $1, $2, $3, diff;
23
+ }
24
+ }
25
+ ' "{{deposit_log_csv}}"
26
+ variables:
27
+ deposit_log_csv:
28
+ default: "./cash-deposit-log.csv"
29
+ description: "CSV with header row, columns: store_id,pos_reported_cash_total,bank_deposit_amount — one row per store per deposit day."
30
+ tolerance_usd:
31
+ default: 10.00
32
+ description: Acceptable variance in dollars between reported cash and the actual bank deposit before flagging.
33
+ compatible_agents: [generic, claude, codex]
34
+ notes: Distinct from `pos-till-reconciliation-check` (per-register count at close) — this checks the far end of the process, the actual bank deposit against total reported store cash.
@@ -0,0 +1,42 @@
1
+ id: competitor-price-monitoring-check
2
+ version: 1
3
+ name: Competitor Price Monitoring Check
4
+ description: >
5
+ Reviews a nearby competitor's weekly ad/flyer or in-store price shots
6
+ against your own shelf prices for a shortlist of high-traffic items.
7
+ Use this if you've ever found out you were losing foot traffic to a
8
+ competitor's price on a staple item only because a customer mentioned
9
+ it at the register.
10
+ category: retail
11
+ tags: [retail, pricing, competitor, monitoring]
12
+ schedule: "0 9 * * 5"
13
+ timezone: "America/New_York"
14
+ runner: agent-prompt
15
+ prompt: |
16
+ Compare the competitor's current weekly ad/flyer or in-store price
17
+ photos ({{competitor_source_path}}) against our own shelf prices
18
+ ({{our_price_list_csv}}) for the tracked item list.
19
+ 1. For each tracked item, find the competitor's current price if it
20
+ appears in the source material.
21
+ 2. Flag any item where the competitor's price is at least
22
+ ${{diff_threshold_usd}} cheaper than ours.
23
+ 3. Note any item the competitor doesn't appear to be carrying anymore
24
+ versus one you simply couldn't find a price for.
25
+ 4. Summarize as a short list ranked by dollar gap, for the store
26
+ manager to decide on a price-match or promo response this week.
27
+ variables:
28
+ competitor_source_path:
29
+ default: "./competitor-flyers/"
30
+ description: Folder of this week's competitor flyer scans or in-store price photos.
31
+ our_price_list_csv:
32
+ default: "./tracked-items-price-list.csv"
33
+ description: "CSV with columns: sku,item_name,our_price — the shortlist of high-traffic items being watched."
34
+ diff_threshold_usd:
35
+ default: 1.00
36
+ description: Minimum price gap in dollars worth flagging.
37
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
38
+ notes: >
39
+ Physical-store competitor price checks off flyers/photos, distinct from
40
+ ecommerce's `competitor-price-watch`, which scrapes a competitor's live
41
+ product page URL per SKU — there's no comparable URL for a
42
+ brick-and-mortar competitor's shelf price. See duplicates-allowlist.js.
@@ -0,0 +1,41 @@
1
+ id: damaged-merchandise-writeoff-tracker
2
+ version: 1
3
+ name: Damaged Merchandise Write-Off Tracker
4
+ description: >
5
+ Reviews logged damaged/defective merchandise write-offs for patterns
6
+ worth a closer look — a single SKU with a recurring damage reason, or
7
+ one store writing off well above the chain average. Use this if
8
+ write-offs have ever just gotten rubber-stamped monthly instead of
9
+ getting checked for a root cause (bad packaging, a rough receiving
10
+ process, or something less innocent).
11
+ category: retail
12
+ tags: [retail, damage, write-off, loss-prevention]
13
+ schedule: "0 8 1 * *"
14
+ timezone: "UTC"
15
+ runner: agent-prompt
16
+ prompt: |
17
+ Review this period's damaged merchandise write-off log
18
+ ({{writeoff_log_path}}) across stores.
19
+ 1. Identify any SKU that recurs as a write-off reason more than
20
+ {{recurring_sku_threshold}} times — that points at a packaging or
21
+ handling issue worth escalating to the vendor or receiving process,
22
+ not just re-approving the write-off.
23
+ 2. Flag any store whose total write-off dollar amount is more than
24
+ {{store_outlier_multiplier}}x the average store in the file.
25
+ 3. Separate write-offs with a documented cause (damaged in transit,
26
+ customer damage, expired) from those marked "unknown" — a high rate
27
+ of "unknown" is itself worth flagging.
28
+ 4. Summarize findings in a short list a loss-prevention or merchandising
29
+ manager could act on.
30
+ variables:
31
+ writeoff_log_path:
32
+ default: "./damaged-merchandise-writeoffs.csv"
33
+ description: "CSV with columns: store_id,sku,writeoff_amount,reason — one row per write-off in the period."
34
+ recurring_sku_threshold:
35
+ default: 3
36
+ description: Number of times a SKU must recur as a write-off before flagging a possible systemic cause.
37
+ store_outlier_multiplier:
38
+ default: 2
39
+ description: How many times the average store's write-off total counts as an outlier worth flagging.
40
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
41
+ notes: Judging what counts as a meaningful pattern versus normal variance across stores and reasons needs an agent, not a fixed threshold script.
@@ -0,0 +1,39 @@
1
+ id: employee-discount-abuse-check
2
+ version: 1
3
+ name: Employee Discount Abuse Check
4
+ description: >
5
+ Reviews employee discount usage for patterns that look like abuse —
6
+ unusually high dollar volume, discounts applied to gift cards, or
7
+ discounts rung up under an employee's number when they weren't
8
+ scheduled to work. Use this if employee-discount abuse has ever quietly
9
+ eaten margin for months because each transaction looked fine in
10
+ isolation.
11
+ category: retail
12
+ tags: [retail, employee-discount, fraud, loss-prevention]
13
+ schedule: "0 7 1 * *"
14
+ timezone: "UTC"
15
+ runner: agent-prompt
16
+ prompt: |
17
+ Review this period's employee discount transaction log
18
+ ({{discount_log_path}}) against the shift schedule
19
+ ({{schedule_csv_path}}).
20
+ 1. Flag any employee whose total discounted purchase volume for the
21
+ period exceeds ${{monthly_volume_threshold_usd}}.
22
+ 2. Flag any discount applied to a gift card purchase — most policies
23
+ disallow this.
24
+ 3. Cross-reference discount timestamps against the schedule and flag
25
+ any discount rung up on a day the employee wasn't scheduled to work
26
+ (a common sign of a shared or misused employee number).
27
+ 4. Summarize flagged employees with the specific reason for each flag.
28
+ variables:
29
+ discount_log_path:
30
+ default: "./employee-discount-log.csv"
31
+ description: "CSV with columns: employee_id,transaction_date,amount,item_type,discount_pct."
32
+ schedule_csv_path:
33
+ default: "./employee-schedule.csv"
34
+ description: CSV of scheduled shifts to cross-reference against discount timestamps.
35
+ monthly_volume_threshold_usd:
36
+ default: 500
37
+ description: Total discounted purchase volume per employee in the period that triggers a flag.
38
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
39
+ notes: A flag is a prompt for HR/loss prevention review, not an accusation — cross-referencing two data sources and judging intent needs an agent, not a fixed script.
@@ -0,0 +1,33 @@
1
+ id: layaway-special-order-pickup-tracker
2
+ version: 1
3
+ name: Layaway & Special Order Pickup Tracker
4
+ description: >
5
+ Flags layaway and special-order items that have been ready for pickup
6
+ past a set number of days. Use this if a paid-for special order has
7
+ ever sat in the back room for weeks because nobody was tracking pickup
8
+ age, only whether the item had arrived.
9
+ category: retail
10
+ tags: [retail, layaway, special-order, customer-service]
11
+ schedule: "0 9 * * 2"
12
+ timezone: "America/New_York"
13
+ runner: shell
14
+ command: >
15
+ today=$(date +%s);
16
+ awk -F',' -v today="$today" -v warn={{overdue_days_threshold}} '
17
+ NR==1 {next}
18
+ $4 == "ready" {
19
+ cmd="date -d \"" $3 "\" +%s 2>/dev/null || date -jf \"%Y-%m-%d\" \"" $3 "\" +%s";
20
+ cmd | getline ready_ts; close(cmd);
21
+ days_waiting = int((today - ready_ts) / 86400);
22
+ if (days_waiting >= warn) printf "OVERDUE PICKUP: order %s for %s ready %d days (since %s)\n", $1, $2, days_waiting, $3;
23
+ }
24
+ ' "{{orders_csv}}"
25
+ variables:
26
+ orders_csv:
27
+ default: "./layaway-special-orders.csv"
28
+ description: "CSV with header row, columns: order_id,customer_name,ready_date(YYYY-MM-DD),status(pending/ready/picked-up)."
29
+ overdue_days_threshold:
30
+ default: 14
31
+ description: Days an order can sit marked "ready" before it counts as overdue for pickup.
32
+ compatible_agents: [generic, claude, codex]
33
+ notes: A long-overdue pickup is worth a courtesy call before it becomes a restocking/refund headache or a customer dispute.
@@ -0,0 +1,37 @@
1
+ id: loyalty-enrollment-redemption-rate-tracker
2
+ version: 1
3
+ name: Loyalty Enrollment & Redemption Rate Tracker
4
+ description: >
5
+ Tracks new loyalty program enrollments and reward redemptions against
6
+ targets, not just whether individual points are about to expire. Use
7
+ this if enrollment has ever quietly stalled, or redemption has ever
8
+ dropped off a cliff, for months before anyone looked at the trend.
9
+ category: retail
10
+ tags: [retail, loyalty, customers, rewards, metrics]
11
+ schedule: "0 8 1 * *"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ awk -F',' -v enroll_target="{{monthly_enrollment_target}}" -v redeem_floor="{{redemption_rate_floor_pct}}" '
16
+ NR==1 {next}
17
+ { enrolled += $2; redeemed += $3; eligible += $4 }
18
+ END {
19
+ redeem_pct = (eligible > 0) ? (redeemed / eligible) * 100 : 0;
20
+ printf "New enrollments this period: %d (target %d)\n", enrolled, enroll_target;
21
+ if (enrolled < enroll_target) printf "BELOW TARGET: enrollment %d short of target %d\n", enroll_target - enrolled, enroll_target;
22
+ printf "Redemption rate: %.1f%% (%d redeemed of %d eligible)\n", redeem_pct, redeemed, eligible;
23
+ if (redeem_pct < redeem_floor) printf "LOW REDEMPTION: %.1f%% is below the %.1f%% floor\n", redeem_pct, redeem_floor;
24
+ }
25
+ ' "{{loyalty_activity_csv}}"
26
+ variables:
27
+ loyalty_activity_csv:
28
+ default: "./loyalty-activity.csv"
29
+ description: "CSV with header row, columns: store_id,new_enrollments,points_redeemed,points_eligible_for_redemption — one row per store or period."
30
+ monthly_enrollment_target:
31
+ default: 100
32
+ description: Target number of new loyalty enrollments for the period across the file.
33
+ redemption_rate_floor_pct:
34
+ default: 20
35
+ description: Minimum acceptable redemption rate (redeemed / eligible) before flagging.
36
+ compatible_agents: [generic, claude, codex]
37
+ notes: Complements `loyalty-points-expiry-reminder` (individual point expiry) by tracking program health as an aggregate trend — enrollment growth and redemption engagement, not per-customer expiry.
@@ -0,0 +1,29 @@
1
+ id: markdown-execution-audit-check
2
+ version: 1
3
+ name: Markdown Execution Audit Check
4
+ description: >
5
+ Confirms that approved markdowns were actually applied at the register,
6
+ not just flagged as candidates. Use this if a markdown has ever been
7
+ approved on paper but never keyed into the POS, so the item kept
8
+ ringing at full price for weeks while it sat on the clearance rack.
9
+ category: retail
10
+ tags: [retail, markdown, pricing, audit]
11
+ schedule: "0 8 * * 2"
12
+ timezone: "America/New_York"
13
+ runner: shell
14
+ command: >
15
+ awk -F',' '
16
+ NR==1 {next}
17
+ {
18
+ approved = $2; pos_current = $3;
19
+ if (approved != pos_current) {
20
+ printf "NOT APPLIED: SKU %s — approved markdown price $%s, POS still shows $%s\n", $1, approved, pos_current;
21
+ }
22
+ }
23
+ ' "{{markdown_approvals_csv}}"
24
+ variables:
25
+ markdown_approvals_csv:
26
+ default: "./markdown-approvals.csv"
27
+ description: "CSV with header row, columns: sku,approved_markdown_price,pos_current_price — one row per approved markdown."
28
+ compatible_agents: [generic, claude, codex]
29
+ notes: Complements `markdown-aging-inventory-check` (flags candidates for markdown) by auditing the other end — whether an already-approved markdown was actually executed at the register.
@@ -0,0 +1,36 @@
1
+ id: planogram-compliance-audit-check
2
+ version: 1
3
+ name: Planogram Compliance Audit Check
4
+ description: >
5
+ Reviews a store's shelf/floor photos against the current planogram and
6
+ flags sections that are out of compliance. Use this if a reset has ever
7
+ quietly drifted out of plan for weeks — wrong facings, missing
8
+ end-caps, product in the wrong bay — before a district visit caught it.
9
+ category: retail
10
+ tags: [retail, planogram, merchandising, compliance]
11
+ schedule: "0 8 * * 3"
12
+ timezone: "America/New_York"
13
+ runner: agent-prompt
14
+ prompt: |
15
+ Compare this week's shelf photos ({{shelf_photos_path}}) against the
16
+ current planogram document ({{planogram_doc_path}}) for store
17
+ {{store_id}}.
18
+ 1. Go section by section and note any bay where product placement,
19
+ facing count, or signage doesn't match the planogram.
20
+ 2. Flag missing or expired promotional signage separately from pure
21
+ placement drift.
22
+ 3. Rank findings by sections that drive the most revenue first (per the
23
+ planogram's priority notes, if included).
24
+ 4. Produce a short punch list a store associate could act on today.
25
+ variables:
26
+ shelf_photos_path:
27
+ default: "./planogram-photos/"
28
+ description: Folder or path containing this cycle's shelf/section photos for the store.
29
+ planogram_doc_path:
30
+ default: "./current-planogram.pdf"
31
+ description: Path to the current approved planogram document or image set.
32
+ store_id:
33
+ default: "store-001"
34
+ description: Identifier for the store being audited.
35
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
36
+ notes: Needs visual comparison and judgment about what counts as meaningful drift versus a shopper-caused mess — not a fit for a fixed script.
@@ -0,0 +1,42 @@
1
+ id: pos-void-refund-anomaly-tracker
2
+ version: 1
3
+ name: POS Void & Refund Anomaly Tracker
4
+ description: >
5
+ Flags cashiers or registers with an unusually high rate of transaction
6
+ voids and refunds instead of treating each one as an isolated event.
7
+ Use this if register-level fraud or sweethearting has ever gone
8
+ unnoticed for months because void/refund activity was never rolled up
9
+ per employee.
10
+ category: retail
11
+ tags: [retail, pos, fraud, loss-prevention]
12
+ schedule: "0 7 * * 1"
13
+ timezone: "UTC"
14
+ runner: shell
15
+ command: >
16
+ awk -F',' -v void_pct_max="{{void_rate_threshold_pct}}" '
17
+ NR==1 {next}
18
+ {
19
+ employee[$1] += 1;
20
+ total[$1] += 1;
21
+ if ($2 == "void" || $2 == "refund") flagged[$1] += 1;
22
+ }
23
+ END {
24
+ for (e in total) {
25
+ if (total[e] > 0) {
26
+ pct = (flagged[e] / total[e]) * 100;
27
+ if (pct >= void_pct_max) {
28
+ printf "HIGH VOID/REFUND RATE: %s — %.1f%% of %d transactions (%d void/refund)\n", e, pct, total[e], flagged[e];
29
+ }
30
+ }
31
+ }
32
+ }
33
+ ' "{{transactions_csv_path}}"
34
+ variables:
35
+ transactions_csv_path:
36
+ default: "./pos-transactions.csv"
37
+ description: "Path to a CSV with columns: employee_id,transaction_type (sale/void/refund) — one row per transaction in the period."
38
+ void_rate_threshold_pct:
39
+ default: 8
40
+ description: Percentage of an employee's transactions that are voids/refunds before flagging for review.
41
+ compatible_agents: [generic, claude, codex]
42
+ notes: A flag is a prompt for a manager to review video/receipts, not proof of wrongdoing — some roles (returns desk) will legitimately run higher.