@wonsukchoi/crondex 0.21.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 (275) hide show
  1. package/README.md +31 -44
  2. package/catalog.json +8862 -1873
  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/ecommerce/affiliate-commission-payout-check.yaml +38 -0
  31. package/jobs/ecommerce/back-in-stock-notification-backlog-check.yaml +30 -0
  32. package/jobs/ecommerce/bundle-component-stock-mismatch-check.yaml +37 -0
  33. package/jobs/ecommerce/chargeback-fraud-risk-order-review.yaml +43 -0
  34. package/jobs/ecommerce/competitor-price-watch.yaml +60 -0
  35. package/jobs/ecommerce/economic-nexus-threshold-check.yaml +43 -0
  36. package/jobs/ecommerce/failed-payment-dunning-check.yaml +35 -0
  37. package/jobs/ecommerce/marketplace-listing-sync-drift-check.yaml +48 -0
  38. package/jobs/ecommerce/product-feed-health-check.yaml +35 -0
  39. package/jobs/ecommerce/purchase-order-overdue-check.yaml +32 -0
  40. package/jobs/ecommerce/storefront-ssl-domain-expiry-check.yaml +46 -0
  41. package/jobs/ecommerce/vip-tier-reclassification-check.yaml +55 -0
  42. package/jobs/ecommerce/wishlist-abandonment-check.yaml +37 -0
  43. package/jobs/education/chronic-absenteeism-tracker.yaml +34 -0
  44. package/jobs/education/department-budget-variance-check.yaml +37 -0
  45. package/jobs/education/enrollment-withdrawal-trend-tracker.yaml +39 -0
  46. package/jobs/education/facility-work-order-backlog-check.yaml +34 -0
  47. package/jobs/education/free-reduced-lunch-eligibility-renewal-check.yaml +36 -0
  48. package/jobs/education/iep-504-review-deadline-tracker.yaml +35 -0
  49. package/jobs/education/parent-teacher-conference-noshow-tracker.yaml +29 -0
  50. package/jobs/education/school-bus-route-ontime-check.yaml +40 -0
  51. package/jobs/education/standardized-test-registration-deadline-check.yaml +35 -0
  52. package/jobs/education/substitute-teacher-fill-rate-tracker.yaml +35 -0
  53. package/jobs/education/teacher-certification-expiry-tracker.yaml +35 -0
  54. package/jobs/education/textbook-inventory-shortage-check.yaml +32 -0
  55. package/jobs/finance/accounts-payable-aging-check.yaml +40 -0
  56. package/jobs/finance/bank-statement-reconciliation-check.yaml +40 -0
  57. package/jobs/finance/budget-vs-actual-variance-report.yaml +38 -0
  58. package/jobs/finance/contractor-1099-threshold-tracker.yaml +43 -0
  59. package/jobs/finance/credit-utilization-watch.yaml +40 -0
  60. package/jobs/finance/duplicate-payment-detection.yaml +43 -0
  61. package/jobs/finance/expense-report-compliance-check.yaml +46 -0
  62. package/jobs/finance/late-fee-interest-risk-check.yaml +43 -0
  63. package/jobs/finance/loan-covenant-compliance-check.yaml +37 -0
  64. package/jobs/finance/month-end-close-checklist-tracker.yaml +39 -0
  65. package/jobs/finance/multi-account-cash-position-rollup.yaml +45 -0
  66. package/jobs/finance/petty-cash-float-reconciliation.yaml +43 -0
  67. package/jobs/finance/quarterly-estimated-tax-calculator.yaml +66 -0
  68. package/jobs/finance/vendor-early-pay-discount-tracker.yaml +45 -0
  69. package/jobs/fleet/accident-incident-report-tracker.yaml +34 -0
  70. package/jobs/fleet/driver-mvr-review-tracker.yaml +34 -0
  71. package/jobs/fleet/driver-safety-score-monitor.yaml +39 -0
  72. package/jobs/fleet/ev-battery-health-check.yaml +36 -0
  73. package/jobs/fleet/fuel-efficiency-trend-monitor.yaml +33 -0
  74. package/jobs/fleet/geofence-violation-check.yaml +37 -0
  75. package/jobs/fleet/lease-return-condition-check.yaml +33 -0
  76. package/jobs/fleet/tire-wear-replacement-check.yaml +30 -0
  77. package/jobs/fleet/toll-violation-tracker.yaml +34 -0
  78. package/jobs/fleet/vehicle-pool-scheduling-conflict-check.yaml +37 -0
  79. package/jobs/fleet/vehicle-tco-tracker.yaml +41 -0
  80. package/jobs/fleet/vehicle-utilization-rate-check.yaml +37 -0
  81. package/jobs/growth/cohort-retention-curve-monitor.yaml +39 -0
  82. package/jobs/growth/customer-health-score-monitor.yaml +37 -0
  83. package/jobs/growth/dau-mau-engagement-ratio-check.yaml +39 -0
  84. package/jobs/growth/dormant-account-reactivation-check.yaml +39 -0
  85. package/jobs/growth/expansion-revenue-opportunity-tracker.yaml +44 -0
  86. package/jobs/growth/feature-adoption-rate-tracker.yaml +44 -0
  87. package/jobs/growth/nps-trend-tracker.yaml +40 -0
  88. package/jobs/growth/onboarding-funnel-dropoff-check.yaml +39 -0
  89. package/jobs/growth/paywall-upgrade-prompt-conversion-check.yaml +40 -0
  90. package/jobs/growth/product-qualified-lead-tracker.yaml +42 -0
  91. package/jobs/growth/referral-program-performance-tracker.yaml +35 -0
  92. package/jobs/growth/trial-to-paid-conversion-rate-tracker.yaml +48 -0
  93. package/jobs/growth/winback-reactivation-campaign-tracker.yaml +46 -0
  94. package/jobs/healthcare/appointment-slot-utilization-check.yaml +56 -0
  95. package/jobs/healthcare/claims-denial-resubmission-check.yaml +43 -0
  96. package/jobs/healthcare/clinical-supply-low-stock-check.yaml +30 -0
  97. package/jobs/healthcare/controlled-substance-inventory-reconciliation.yaml +42 -0
  98. package/jobs/healthcare/hipaa-access-log-audit.yaml +74 -0
  99. package/jobs/healthcare/patient-balance-collections-aging-check.yaml +41 -0
  100. package/jobs/healthcare/patient-immunization-schedule-check.yaml +41 -0
  101. package/jobs/healthcare/patient-portal-message-backlog-check.yaml +39 -0
  102. package/jobs/healthcare/patient-satisfaction-survey-tracking.yaml +59 -0
  103. package/jobs/healthcare/prescription-refill-request-backlog-check.yaml +38 -0
  104. package/jobs/healthcare/prior-authorization-expiry-check.yaml +53 -0
  105. package/jobs/healthcare/staff-cme-credit-tracking.yaml +41 -0
  106. package/jobs/healthcare/telehealth-session-issue-check.yaml +51 -0
  107. package/jobs/hospitality/adr-revpar-tracker.yaml +43 -0
  108. package/jobs/hospitality/cancellation-rate-spike-check.yaml +21 -0
  109. package/jobs/hospitality/group-booking-space-utilization-check.yaml +40 -0
  110. package/jobs/hospitality/guest-complaint-sla-tracker.yaml +34 -0
  111. package/jobs/hospitality/guest-satisfaction-score-monitor.yaml +41 -0
  112. package/jobs/hospitality/linen-inventory-turnover-check.yaml +35 -0
  113. package/jobs/hospitality/loyalty-points-reconciliation-check.yaml +33 -0
  114. package/jobs/hospitality/minibar-charge-reconciliation-check.yaml +38 -0
  115. package/jobs/hospitality/occupancy-forecast-variance-check.yaml +33 -0
  116. package/jobs/hospitality/ota-rate-parity-check.yaml +36 -0
  117. package/jobs/hospitality/overbooking-risk-alert.yaml +38 -0
  118. package/jobs/hospitality/room-maintenance-work-order-tracker.yaml +31 -0
  119. package/jobs/hospitality/upsell-upgrade-conversion-tracker.yaml +37 -0
  120. package/jobs/hr/aca-fte-threshold-monitor.yaml +44 -0
  121. package/jobs/hr/cobra-notification-deadline-tracker.yaml +47 -0
  122. package/jobs/hr/compliance-training-completion-check.yaml +41 -0
  123. package/jobs/hr/eeo1-filing-deadline-reminder.yaml +37 -0
  124. package/jobs/hr/handbook-acknowledgment-tracking.yaml +34 -0
  125. package/jobs/hr/headcount-budget-variance-check.yaml +37 -0
  126. package/jobs/hr/leave-of-absence-return-tracker.yaml +42 -0
  127. package/jobs/hr/org-chart-manager-drift-check.yaml +40 -0
  128. package/jobs/hr/pay-equity-band-outlier-check.yaml +58 -0
  129. package/jobs/hr/pto-year-end-use-it-or-lose-it-check.yaml +49 -0
  130. package/jobs/hr/retirement-plan-enrollment-deadline-check.yaml +40 -0
  131. package/jobs/hr/workers-comp-claim-status-check.yaml +42 -0
  132. package/jobs/insurance/adjuster-caseload-balance-check.yaml +45 -0
  133. package/jobs/insurance/agent-broker-license-expiry-tracker.yaml +40 -0
  134. package/jobs/insurance/cat-event-exposure-monitor.yaml +37 -0
  135. package/jobs/insurance/claims-aging-backlog-tracker.yaml +48 -0
  136. package/jobs/insurance/doi-filing-deadline-tracker.yaml +42 -0
  137. package/jobs/insurance/loss-ratio-by-line-monitor.yaml +43 -0
  138. package/jobs/insurance/policy-lapse-rate-monitor.yaml +41 -0
  139. package/jobs/insurance/premium-payment-delinquency-tracker.yaml +42 -0
  140. package/jobs/insurance/quote-to-bind-conversion-tracker.yaml +41 -0
  141. package/jobs/insurance/reinsurance-treaty-renewal-tracker.yaml +38 -0
  142. package/jobs/insurance/siu-fraud-referral-tracker.yaml +36 -0
  143. package/jobs/insurance/subrogation-recovery-tracker.yaml +41 -0
  144. package/jobs/insurance/underwriting-queue-sla-monitor.yaml +45 -0
  145. package/jobs/legal/conflict-of-interest-check-tracker.yaml +38 -0
  146. package/jobs/legal/corporate-minute-book-completeness-check.yaml +31 -0
  147. package/jobs/legal/data-privacy-request-deadline-tracker.yaml +61 -0
  148. package/jobs/legal/entity-authority-document-expiry-check.yaml +37 -0
  149. package/jobs/legal/legal-document-retention-purge-review.yaml +39 -0
  150. package/jobs/legal/litigation-hold-acknowledgment-tracker.yaml +40 -0
  151. package/jobs/legal/non-compete-expiry-tracker.yaml +37 -0
  152. package/jobs/legal/outside-counsel-invoice-budget-check.yaml +37 -0
  153. package/jobs/legal/settlement-payment-schedule-tracker.yaml +34 -0
  154. package/jobs/legal/timekeeper-billable-hours-compliance-check.yaml +39 -0
  155. package/jobs/legal/trademark-infringement-watch.yaml +43 -0
  156. package/jobs/legal/vendor-coi-expiry-tracker.yaml +37 -0
  157. package/jobs/logistics/3pl-performance-scorecard.yaml +45 -0
  158. package/jobs/logistics/bol-freight-class-accuracy-audit.yaml +33 -0
  159. package/jobs/logistics/cargo-insurance-claim-status-check.yaml +39 -0
  160. package/jobs/logistics/carrier-load-tender-acceptance-check.yaml +34 -0
  161. package/jobs/logistics/carrier-otd-performance-scorecard.yaml +41 -0
  162. package/jobs/logistics/carrier-rate-contract-renewal-check.yaml +35 -0
  163. package/jobs/logistics/cross-dock-dwell-time-watch.yaml +43 -0
  164. package/jobs/logistics/freight-invoice-rate-audit.yaml +38 -0
  165. package/jobs/logistics/fuel-surcharge-rate-monitor.yaml +40 -0
  166. package/jobs/logistics/international-shipment-documentation-check.yaml +36 -0
  167. package/jobs/logistics/linehaul-transit-time-variance-check.yaml +43 -0
  168. package/jobs/logistics/proof-of-delivery-reconciliation-check.yaml +38 -0
  169. package/jobs/logistics/route-load-optimization-check.yaml +32 -0
  170. package/jobs/manufacturing/changeover-time-tracker.yaml +29 -0
  171. package/jobs/manufacturing/critical-spare-parts-stock-check.yaml +29 -0
  172. package/jobs/manufacturing/first-pass-yield-report.yaml +37 -0
  173. package/jobs/manufacturing/lot-traceability-audit.yaml +37 -0
  174. package/jobs/manufacturing/non-conformance-report-backlog-check.yaml +34 -0
  175. package/jobs/manufacturing/oee-efficiency-check.yaml +37 -0
  176. package/jobs/manufacturing/osha-recordable-incident-audit.yaml +37 -0
  177. package/jobs/manufacturing/production-schedule-adherence-check.yaml +35 -0
  178. package/jobs/manufacturing/safety-certification-expiry-check.yaml +37 -0
  179. package/jobs/manufacturing/scrap-waste-rate-watch.yaml +33 -0
  180. package/jobs/manufacturing/shift-handoff-report.yaml +37 -0
  181. package/jobs/manufacturing/supplier-quality-ppm-watch.yaml +38 -0
  182. package/jobs/manufacturing/tooling-die-wear-check.yaml +31 -0
  183. package/jobs/manufacturing/work-order-backlog-check.yaml +37 -0
  184. package/jobs/marketing/ad-creative-fatigue-check.yaml +44 -0
  185. package/jobs/marketing/affiliate-partner-performance-check.yaml +38 -0
  186. package/jobs/marketing/attribution-discrepancy-check.yaml +42 -0
  187. package/jobs/marketing/brand-share-of-voice-check.yaml +43 -0
  188. package/jobs/marketing/campaign-roas-cpa-anomaly-check.yaml +41 -0
  189. package/jobs/marketing/competitor-ad-creative-watch.yaml +40 -0
  190. package/jobs/marketing/email-list-growth-rate-check.yaml +43 -0
  191. package/jobs/marketing/landing-page-conversion-drop-check.yaml +44 -0
  192. package/jobs/marketing/mql-to-sql-handoff-sla-check.yaml +29 -0
  193. package/jobs/marketing/mql-volume-pace-check.yaml +34 -0
  194. package/jobs/marketing/paid-search-negative-keyword-waste-check.yaml +37 -0
  195. package/jobs/marketing/press-release-pickup-tracking.yaml +32 -0
  196. package/jobs/marketing/webinar-registration-attendance-check.yaml +38 -0
  197. package/jobs/realestate/capital-reserve-fund-threshold-check.yaml +32 -0
  198. package/jobs/realestate/eviction-notice-deadline-tracker.yaml +37 -0
  199. package/jobs/realestate/landlord-insurance-claim-status-check.yaml +35 -0
  200. package/jobs/realestate/lease-renewal-offer-window-check.yaml +35 -0
  201. package/jobs/realestate/maintenance-request-sla-check.yaml +39 -0
  202. package/jobs/realestate/move-in-move-out-inspection-tracker.yaml +35 -0
  203. package/jobs/realestate/rent-increase-notice-deadline-check.yaml +54 -0
  204. package/jobs/realestate/rent-roll-vacancy-loss-report.yaml +32 -0
  205. package/jobs/realestate/rental-license-renewal-check.yaml +35 -0
  206. package/jobs/realestate/security-deposit-return-deadline-check.yaml +38 -0
  207. package/jobs/realestate/tenant-application-review-backlog-check.yaml +35 -0
  208. package/jobs/realestate/tenant-renters-insurance-compliance-check.yaml +35 -0
  209. package/jobs/realestate/utility-billback-reconciliation-check.yaml +41 -0
  210. package/jobs/restaurant/comp-void-anomaly-tracker.yaml +39 -0
  211. package/jobs/restaurant/daily-sales-flash-report.yaml +36 -0
  212. package/jobs/restaurant/delivery-platform-commission-reconciliation.yaml +33 -0
  213. package/jobs/restaurant/delivery-receiving-discrepancy-check.yaml +33 -0
  214. package/jobs/restaurant/food-handler-permit-expiry-tracker.yaml +33 -0
  215. package/jobs/restaurant/gift-card-liability-check.yaml +45 -0
  216. package/jobs/restaurant/kitchen-ticket-time-watch.yaml +38 -0
  217. package/jobs/restaurant/liquor-pour-cost-variance-check.yaml +34 -0
  218. package/jobs/restaurant/menu-86-frequency-tracker.yaml +39 -0
  219. package/jobs/restaurant/menu-item-profitability-check.yaml +33 -0
  220. package/jobs/restaurant/pos-end-of-day-reconciliation-check.yaml +31 -0
  221. package/jobs/restaurant/table-turnover-rate-tracker.yaml +36 -0
  222. package/jobs/restaurant/waitlist-conversion-check.yaml +37 -0
  223. package/jobs/retail/cash-office-deposit-variance-check.yaml +34 -0
  224. package/jobs/retail/competitor-price-monitoring-check.yaml +42 -0
  225. package/jobs/retail/damaged-merchandise-writeoff-tracker.yaml +41 -0
  226. package/jobs/retail/employee-discount-abuse-check.yaml +39 -0
  227. package/jobs/retail/layaway-special-order-pickup-tracker.yaml +33 -0
  228. package/jobs/retail/loyalty-enrollment-redemption-rate-tracker.yaml +37 -0
  229. package/jobs/retail/markdown-execution-audit-check.yaml +29 -0
  230. package/jobs/retail/planogram-compliance-audit-check.yaml +36 -0
  231. package/jobs/retail/pos-void-refund-anomaly-tracker.yaml +42 -0
  232. package/jobs/retail/price-tag-audit-accuracy-check.yaml +37 -0
  233. package/jobs/retail/sales-per-square-foot-tracker.yaml +36 -0
  234. package/jobs/retail/seasonal-staffing-coverage-check.yaml +35 -0
  235. package/jobs/retail/store-closing-checklist-compliance-check.yaml +32 -0
  236. package/jobs/retail/visual-merchandising-compliance-check.yaml +40 -0
  237. package/jobs/sales/champion-departure-watch.yaml +44 -0
  238. package/jobs/sales/closed-lost-reason-audit.yaml +42 -0
  239. package/jobs/sales/commission-payout-tracker.yaml +32 -0
  240. package/jobs/sales/contract-renewal-opportunity-tracker.yaml +28 -0
  241. package/jobs/sales/discount-approval-pending-check.yaml +31 -0
  242. package/jobs/sales/forecast-submission-compliance-check.yaml +42 -0
  243. package/jobs/sales/multi-year-renewal-escalation-tracker.yaml +31 -0
  244. package/jobs/sales/pipeline-hygiene-audit.yaml +26 -0
  245. package/jobs/sales/poc-trial-conversion-tracker.yaml +29 -0
  246. package/jobs/sales/referral-followup-tracker.yaml +40 -0
  247. package/jobs/sales/territory-coverage-gap-check.yaml +43 -0
  248. package/jobs/veterinary/appointment-no-show-rate-tracker.yaml +49 -0
  249. package/jobs/veterinary/boarding-kennel-capacity-utilization-check.yaml +39 -0
  250. package/jobs/veterinary/client-payment-plan-delinquency-check.yaml +36 -0
  251. package/jobs/veterinary/dvm-license-dea-registration-expiry-check.yaml +41 -0
  252. package/jobs/veterinary/microchip-registration-verification-check.yaml +40 -0
  253. package/jobs/veterinary/patient-record-completeness-audit.yaml +41 -0
  254. package/jobs/veterinary/pet-medication-refill-backlog-check.yaml +36 -0
  255. package/jobs/veterinary/puppy-kitten-vaccine-series-compliance-check.yaml +39 -0
  256. package/jobs/veterinary/senior-pet-wellness-recall-tracker.yaml +43 -0
  257. package/jobs/veterinary/spay-neuter-followup-compliance-check.yaml +35 -0
  258. package/jobs/veterinary/specialist-referral-followup-check.yaml +38 -0
  259. package/jobs/veterinary/surgical-schedule-utilization-check.yaml +36 -0
  260. package/jobs/veterinary/vet-staff-ce-credit-tracking.yaml +36 -0
  261. package/jobs/warehousing/conveyor-sortation-downtime-watch.yaml +48 -0
  262. package/jobs/warehousing/labor-productivity-rate-check.yaml +33 -0
  263. package/jobs/warehousing/mhe-preventive-maintenance-check.yaml +38 -0
  264. package/jobs/warehousing/order-fulfillment-sla-watch.yaml +42 -0
  265. package/jobs/warehousing/shift-headcount-coverage-check.yaml +33 -0
  266. package/jobs/warehousing/slotting-velocity-review-check.yaml +44 -0
  267. package/jobs/warehousing/warehouse-damage-writeoff-review.yaml +41 -0
  268. package/jobs/warehousing/warehouse-near-miss-incident-rate-watch.yaml +47 -0
  269. package/jobs/warehousing/warehouse-space-utilization-check.yaml +39 -0
  270. package/jobs/warehousing/wave-pick-batch-efficiency-check.yaml +33 -0
  271. package/jobs/warehousing/wms-integration-error-check.yaml +36 -0
  272. package/jobs/warehousing/yard-trailer-detention-watch.yaml +41 -0
  273. package/lib/category-descriptions.js +12 -12
  274. package/lib/duplicates-allowlist.js +15 -0
  275. package/package.json +2 -2
@@ -0,0 +1,35 @@
1
+ id: jobsite-safety-incident-near-miss-tracker
2
+ version: 1
3
+ name: Jobsite Safety Incident & Near-Miss Tracker
4
+ description: >
5
+ Reviews recently logged safety incidents and near-misses across active
6
+ sites for repeat causes, escalating severity, or a site racking up more
7
+ reports than its peers. Use this if a serious incident has ever happened
8
+ after a string of smaller near-misses that, in hindsight, pointed right
9
+ at it.
10
+ category: construction
11
+ tags: [construction, safety, incidents, near-miss]
12
+ schedule: "0 8 * * 1"
13
+ timezone: "UTC"
14
+ runner: agent-prompt
15
+ prompt: |
16
+ Review the safety incident and near-miss log ({{incident_log_path}}) for
17
+ entries from the last {{lookback_days}} days.
18
+ 1. Group entries by jobsite and by root cause category (falls, struck-by,
19
+ equipment, electrical, other).
20
+ 2. Flag any site with more reports than its trailing average, and any
21
+ cause category that's recurring across 2+ separate incidents.
22
+ 3. Call out any near-miss whose description suggests it could plausibly
23
+ have been a serious injury or fatality if circumstances were slightly
24
+ different.
25
+ 4. Produce a short list of sites/causes that warrant a toolbox talk or
26
+ stand-down this week, in priority order.
27
+ variables:
28
+ incident_log_path:
29
+ default: "./safety-incident-log.csv"
30
+ description: "Path to the incident/near-miss log — expects columns like date, site, description, severity, cause_category."
31
+ lookback_days:
32
+ default: 30
33
+ description: How many days of incident history to review each run.
34
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
35
+ notes: Distinct from crew-safety-cert-expiry-check — that job tracks individual worker certification dates, not incident/near-miss event patterns across sites.
@@ -0,0 +1,27 @@
1
+ id: lien-waiver-collection-tracker
2
+ version: 1
3
+ name: Lien Waiver Collection Tracker
4
+ description: >
5
+ Checks that a signed lien waiver was collected from each subcontractor
6
+ before their next payment goes out, so payments never run ahead of the
7
+ paperwork that protects against a mechanic's lien. Use this if a
8
+ subcontractor has ever been paid without a waiver on file, leaving the
9
+ project exposed to a lien claim on money that was already paid out.
10
+ category: construction
11
+ tags: [construction, lien-waiver, payments, compliance, subcontractor]
12
+ schedule: "0 7 * * 1-5"
13
+ timezone: "UTC"
14
+ runner: shell
15
+ command: >
16
+ awk -F',' '
17
+ NR==1 {next}
18
+ $4 == "scheduled" && $3 != "received" {
19
+ printf "MISSING WAIVER: %s — payment of $%s scheduled for %s, waiver status: %s\n", $1, $2, $5, $3;
20
+ }
21
+ ' "{{payments_waivers_csv}}"
22
+ variables:
23
+ payments_waivers_csv:
24
+ default: "./payments-lien-waivers.csv"
25
+ description: "Path to a CSV with columns: subcontractor_name,payment_amount,waiver_status (received/pending/none),payment_status (scheduled/held/paid),payment_date."
26
+ compatible_agents: [generic, claude, codex]
27
+ notes: Distinct from subcontractor-insurance-expiry-check — that job tracks COI expiry dates, not per-payment lien waiver paperwork.
@@ -0,0 +1,33 @@
1
+ id: permit-application-approval-backlog-check
2
+ version: 1
3
+ name: Permit Application Approval Backlog Check
4
+ description: >
5
+ Flags submitted permit applications that are still awaiting municipal
6
+ approval past a reasonable turnaround window. Use this if a project has
7
+ ever sat idle at the "waiting on the city" stage far longer than expected
8
+ because nobody was tracking submission-to-approval time.
9
+ category: construction
10
+ tags: [construction, permits, approvals, backlog]
11
+ schedule: "0 8 * * 1"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ today=$(date +%s);
16
+ awk -F',' -v today="$today" -v warn="{{stale_days}}" '
17
+ NR==1 {next}
18
+ $4 == "submitted" {
19
+ cmd = "date -d \"" $3 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $3 "\" +%s 2>/dev/null";
20
+ cmd | getline sub_ts; close(cmd);
21
+ days_waiting = int((today - sub_ts) / 86400);
22
+ if (days_waiting >= warn) printf "STILL PENDING: %s permit for %s — submitted %s (%d days awaiting approval)\n", $2, $1, $3, days_waiting;
23
+ }
24
+ ' "{{permit_applications_csv}}"
25
+ variables:
26
+ permit_applications_csv:
27
+ default: "./permit-applications.csv"
28
+ description: "Path to a CSV with columns: project_name,permit_type,submitted_date (YYYY-MM-DD),status (submitted/approved/rejected)."
29
+ stale_days:
30
+ default: 21
31
+ description: Days a submission can sit before it's flagged for a follow-up call to the jurisdiction.
32
+ compatible_agents: [generic, claude, codex]
33
+ notes: Distinct from permit-expiry-check — that job watches active, already-issued permits nearing expiry; this one watches new applications stuck before issuance.
@@ -0,0 +1,34 @@
1
+ id: project-budget-variance-check
2
+ version: 1
3
+ name: Project Budget vs. Actual Cost Variance Check
4
+ description: >
5
+ Compares actual spend against budget by cost code for each active
6
+ project and flags codes running over threshold. Use this if a project
7
+ has ever "felt fine" right up until closeout, when the actual cost
8
+ report showed a cost code had been bleeding over budget for months
9
+ unnoticed.
10
+ category: construction
11
+ tags: [construction, budget, cost-control, project-accounting]
12
+ schedule: "0 7 * * 1"
13
+ timezone: "UTC"
14
+ runner: shell
15
+ command: >
16
+ awk -F',' -v warn="{{overrun_threshold_pct}}" '
17
+ NR==1 {next}
18
+ {
19
+ project=$1; cost_code=$2; budget=$3; actual=$4;
20
+ if (budget + 0 > 0) {
21
+ variance_pct = ((actual - budget) / budget) * 100;
22
+ if (variance_pct >= warn) printf "OVER BUDGET: %s / %s — budget $%.2f, actual $%.2f (%.1f%% over)\n", project, cost_code, budget, actual, variance_pct;
23
+ }
24
+ }
25
+ ' "{{cost_codes_csv}}"
26
+ variables:
27
+ cost_codes_csv:
28
+ default: "./project-cost-codes.csv"
29
+ description: "Path to a CSV with columns: project_name,cost_code,budget_amount,actual_amount."
30
+ overrun_threshold_pct:
31
+ default: 10
32
+ description: Percentage over budget on a cost code before it's flagged.
33
+ compatible_agents: [generic, claude, codex]
34
+ notes: Export budget/actual figures from your project accounting or job-costing system; this is a per-cost-code variance scan, not a full WIP report.
@@ -0,0 +1,36 @@
1
+ id: punch-list-completion-tracker
2
+ version: 1
3
+ name: Punch List Completion Tracker
4
+ description: >
5
+ Tracks open punch list items against the project's target closeout date
6
+ and flags projects falling behind on completion rate. Use this if a
7
+ closeout has ever dragged on for months because punch items trickled in
8
+ one at a time with nobody watching the overall burn-down.
9
+ category: construction
10
+ tags: [construction, punch-list, closeout, completion]
11
+ schedule: "0 7 * * 1"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ awk -F',' -v min_pct="{{min_completion_pct}}" '
16
+ NR==1 {next}
17
+ {
18
+ project=$1; total[project]+=1;
19
+ if ($3 == "closed") closed[project]+=1;
20
+ }
21
+ END {
22
+ for (p in total) {
23
+ pct = (total[p] > 0) ? (closed[p] / total[p] * 100) : 0;
24
+ if (pct < min_pct) printf "BEHIND: %s — %d of %d punch items closed (%.0f%%)\n", p, closed[p], total[p], pct;
25
+ }
26
+ }
27
+ ' "{{punch_list_csv}}"
28
+ variables:
29
+ punch_list_csv:
30
+ default: "./punch-list.csv"
31
+ description: "Path to a CSV with columns: project_name,item_description,status (open/closed)."
32
+ min_completion_pct:
33
+ default: 90
34
+ description: Minimum percentage of punch items that should be closed before closeout is considered on track.
35
+ compatible_agents: [generic, claude, codex]
36
+ notes: Aggregate burn-down view, not item-by-item detail — pair with the punch list document itself when a project shows up here.
@@ -0,0 +1,33 @@
1
+ id: retainage-holdback-release-tracker
2
+ version: 1
3
+ name: Retainage / Holdback Release Tracker
4
+ description: >
5
+ Flags subcontractor retainage (holdback) that's eligible for release
6
+ based on project completion percentage or elapsed lien period, so it
7
+ doesn't sit uncollected for months after it was earned. Use this if a
8
+ sub has ever had to chase a general contractor for retainage that was
9
+ technically releasable but nobody flagged it.
10
+ category: construction
11
+ tags: [construction, retainage, payments, subcontractor]
12
+ schedule: "0 8 1 * *"
13
+ timezone: "UTC"
14
+ runner: shell
15
+ command: >
16
+ awk -F',' -v min_pct="{{release_threshold_pct}}" '
17
+ NR==1 {next}
18
+ $5 != "released" {
19
+ completion_pct=$3; retainage_amt=$4;
20
+ if (completion_pct + 0 >= min_pct + 0) {
21
+ printf "RELEASE ELIGIBLE: %s (%s) — %s%% complete, $%.2f retainage held, status: %s\n", $1, $2, completion_pct, retainage_amt, $5;
22
+ }
23
+ }
24
+ ' "{{retainage_ledger_csv}}"
25
+ variables:
26
+ retainage_ledger_csv:
27
+ default: "./retainage-ledger.csv"
28
+ description: "Path to a CSV with columns: subcontractor_name,contract_number,completion_pct,retainage_amount,status (held/pending/released)."
29
+ release_threshold_pct:
30
+ default: 95
31
+ description: Completion percentage at or above which held retainage should be reviewed for release.
32
+ compatible_agents: [generic, claude, codex]
33
+ notes: Confirm local lien-period and contract terms before actually releasing funds — this job only surfaces eligibility, it doesn't authorize payment.
@@ -0,0 +1,33 @@
1
+ id: rfi-response-time-tracker
2
+ version: 1
3
+ name: RFI Response Time Tracker
4
+ description: >
5
+ Flags open Requests for Information (RFIs) that have gone unanswered
6
+ longer than the agreed response window. Use this if a crew has ever
7
+ stalled on a detail because an RFI sent to the architect or engineer sat
8
+ unanswered for weeks with nobody chasing it.
9
+ category: construction
10
+ tags: [construction, rfi, design-coordination, deadline]
11
+ schedule: "0 8 * * 1-5"
12
+ timezone: "UTC"
13
+ runner: shell
14
+ command: >
15
+ today=$(date +%s);
16
+ awk -F',' -v today="$today" -v warn="{{overdue_days}}" '
17
+ NR==1 {next}
18
+ $4 == "open" {
19
+ cmd = "date -d \"" $3 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $3 "\" +%s 2>/dev/null";
20
+ cmd | getline sent_ts; close(cmd);
21
+ days_open = int((today - sent_ts) / 86400);
22
+ if (days_open >= warn) printf "RFI OVERDUE: #%s — %s — sent to %s on %s (%d days open)\n", $1, $2, $5, $3, days_open;
23
+ }
24
+ ' "{{rfi_log_csv}}"
25
+ variables:
26
+ rfi_log_csv:
27
+ default: "./rfi-log.csv"
28
+ description: "Path to a CSV with columns: rfi_number,subject,sent_date (YYYY-MM-DD),status (open/answered/closed),sent_to."
29
+ overdue_days:
30
+ default: 7
31
+ description: Days an RFI can stay open before it's flagged for escalation.
32
+ compatible_agents: [generic, claude, codex]
33
+ notes: Design-coordination requests, not client-facing scope changes — see change-order-approval-reminder for the cost/scope side of the conversation.
@@ -0,0 +1,35 @@
1
+ id: subcontractor-pay-application-approval-tracker
2
+ version: 1
3
+ name: Subcontractor Pay Application Approval Tracker
4
+ description: >
5
+ Flags subcontractor pay applications (AIA G702/G703-style draw
6
+ requests) that are still waiting on GC or owner approval past the
7
+ normal turnaround, separate from the retainage that eventually gets
8
+ held back on approved amounts. Use this if a sub has ever gone weeks
9
+ without payment because their draw request just sat unreviewed in
10
+ someone's queue.
11
+ category: construction
12
+ tags: [construction, pay-application, payments, subcontractor, approvals]
13
+ schedule: "0 8 * * 1-5"
14
+ timezone: "UTC"
15
+ runner: shell
16
+ command: >
17
+ today=$(date +%s);
18
+ awk -F',' -v today="$today" -v warn="{{overdue_days}}" '
19
+ NR==1 {next}
20
+ $4 == "submitted" {
21
+ cmd = "date -d \"" $3 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $3 "\" +%s 2>/dev/null";
22
+ cmd | getline sub_ts; close(cmd);
23
+ days_pending = int((today - sub_ts) / 86400);
24
+ if (days_pending >= warn) printf "PAY APP PENDING: %s — draw #%s for $%s submitted %s (%d days pending review)\n", $1, $2, $5, $3, days_pending;
25
+ }
26
+ ' "{{pay_apps_csv}}"
27
+ variables:
28
+ pay_apps_csv:
29
+ default: "./subcontractor-pay-applications.csv"
30
+ description: "Path to a CSV with columns: subcontractor_name,draw_number,submitted_date (YYYY-MM-DD),status (submitted/approved/rejected),amount_requested."
31
+ overdue_days:
32
+ default: 10
33
+ description: Days a pay application can sit unreviewed before it's flagged for follow-up.
34
+ compatible_agents: [generic, claude, codex]
35
+ notes: Distinct from retainage-holdback-release-tracker — that job watches already-approved retainage becoming eligible for release; this one watches the underlying draw request getting approved in the first place.
@@ -0,0 +1,45 @@
1
+ id: submittal-shop-drawing-review-check
2
+ version: 1
3
+ name: Submittal / Shop Drawing Review Check
4
+ description: >
5
+ Reviews the submittal log for shop drawings, product data, and samples
6
+ sitting past their review due date, and spot-checks whether returned
7
+ reviews actually addressed the spec section they were submitted
8
+ against. Use this if a submittal has ever come back "approved" from a
9
+ quick rubber stamp that missed a spec conflict, only to surface as a
10
+ costly field problem later.
11
+ category: construction
12
+ tags: [construction, submittals, shop-drawings, design-coordination]
13
+ schedule: "0 8 * * 1"
14
+ timezone: "UTC"
15
+ runner: agent-prompt
16
+ prompt: |
17
+ Review the submittal log ({{submittal_log_path}}) for project
18
+ {{project_name}}.
19
+ 1. Flag any submittal past its {{review_due_days}}-day review window
20
+ with no status update (still "under review" or "not submitted").
21
+ 2. For submittals marked "approved" or "approved as noted" in the last
22
+ {{lookback_days}} days, spot-check a sample against the referenced
23
+ spec section ({{spec_index_path}}) for obvious conflicts (wrong
24
+ material grade, missing required data, mismatched dimensions).
25
+ 3. Report overdue submittals separately from spot-check findings.
26
+ 4. Summarize: submittals overdue for review, and any approved
27
+ submittals that look like they may need a second look.
28
+ variables:
29
+ submittal_log_path:
30
+ default: "./submittal-log.csv"
31
+ description: "Path to the submittal log — expects columns like item, spec_section, submitted_date, status, review_due_date."
32
+ spec_index_path:
33
+ default: "./project-specifications/"
34
+ description: Folder or index of the project specification sections to check submittals against.
35
+ project_name:
36
+ default: "the project"
37
+ description: Name of the project being reviewed.
38
+ review_due_days:
39
+ default: 10
40
+ description: Standard review turnaround window in days before a submittal is considered overdue.
41
+ lookback_days:
42
+ default: 14
43
+ description: How many days of recently-approved submittals to spot-check.
44
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
45
+ notes: Distinct from rfi-response-time-tracker — RFIs resolve open questions about the documents; submittals are the contractor's proposed materials/shop drawings going back for approval against those documents.
@@ -0,0 +1,44 @@
1
+ id: weather-delay-impact-log
2
+ version: 1
3
+ name: Weather Delay Impact Log
4
+ description: >
5
+ Reviews logged weather delay days against the project's schedule float
6
+ and flags when accumulated weather delays threaten a milestone, plus
7
+ checks whether the delay documentation is complete enough to support a
8
+ time-extension claim later. Use this if a weather delay claim has ever
9
+ been rejected because the daily documentation didn't clearly tie the
10
+ weather to lost work.
11
+ category: construction
12
+ tags: [construction, weather, delay, schedule, claims]
13
+ schedule: "0 8 * * 1"
14
+ timezone: "UTC"
15
+ runner: agent-prompt
16
+ prompt: |
17
+ Review the weather delay log ({{weather_delay_log_path}}) for project
18
+ {{project_name}} against the current schedule float
19
+ ({{schedule_float_days}} days).
20
+ 1. Sum total weather delay days logged this month and compare against
21
+ remaining schedule float.
22
+ 2. Flag if accumulated weather delays now exceed or come within
23
+ {{warn_margin_days}} days of consuming the available float.
24
+ 3. For each logged weather delay entry, check it documents: date,
25
+ condition (rain/wind/extreme heat/etc.), specific work made
26
+ impossible, and crew affected. Flag entries missing this detail as
27
+ insufficient for a future claim.
28
+ 4. Summarize: total delay days, days of float remaining, and any
29
+ entries needing better documentation before the record is relied on.
30
+ variables:
31
+ weather_delay_log_path:
32
+ default: "./weather-delay-log.csv"
33
+ description: Path to the logged weather delay entries for the project.
34
+ project_name:
35
+ default: "the project"
36
+ description: Name of the project being reviewed.
37
+ schedule_float_days:
38
+ default: 10
39
+ description: Current schedule float/contingency in days, per the latest schedule update.
40
+ warn_margin_days:
41
+ default: 3
42
+ description: How close accumulated delays can get to consuming the float before flagging it.
43
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
44
+ notes: Documentation-quality judgment doesn't fit a fixed script — pair with your contract's notice-of-delay requirements for actual claims.
@@ -0,0 +1,38 @@
1
+ id: affiliate-commission-payout-check
2
+ version: 1
3
+ name: Affiliate Commission Payout Check
4
+ description: >
5
+ Checks commissions owed to affiliates who drive sales to your store
6
+ against your payout schedule and flags anything overdue and still
7
+ unpaid. Use this if an affiliate has ever had to chase you for a
8
+ commission payment because nobody was tracking payout due dates on
9
+ your side.
10
+ category: ecommerce
11
+ tags: [ecommerce, affiliates, commissions, payouts, finance]
12
+ schedule: "0 9 * * 1"
13
+ timezone: "UTC"
14
+ runner: shell
15
+ command: >
16
+ today=$(date +%s);
17
+ awk -F',' -v today="$today" '
18
+ NR==1 {next}
19
+ $4 == "unpaid" {
20
+ cmd = "date -d \"" $3 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $3 "\" +%s 2>/dev/null";
21
+ cmd | getline due_epoch; close(cmd);
22
+ if (today > due_epoch) {
23
+ overdue_days = (today - due_epoch) / 86400;
24
+ printf "OVERDUE PAYOUT: %s owed $%s — due %s (%d days late)\n", $1, $2, $3, overdue_days;
25
+ }
26
+ }
27
+ ' "{{affiliate_commissions_csv_path}}"
28
+ variables:
29
+ affiliate_commissions_csv_path:
30
+ default: "./affiliate-commissions.csv"
31
+ description: "Path to a CSV with columns: affiliate_name,commission_due_usd,due_date (YYYY-MM-DD),status (unpaid/paid)."
32
+ compatible_agents: [generic, claude, codex]
33
+ notes: >
34
+ This is the merchant's side of paying affiliates who sell for the
35
+ store — the reverse direction of `brand-deal-payment-followup-check` in
36
+ the creator category, which tracks a creator waiting to be paid by a
37
+ sponsor. Also distinct from `affiliate-link-expiry-check` in creator,
38
+ which tracks a creator's own link/code expiry, not commission payouts.
@@ -0,0 +1,30 @@
1
+ id: back-in-stock-notification-backlog-check
2
+ version: 1
3
+ name: Back-in-Stock Notification Backlog Check
4
+ description: >
5
+ Checks products that customers asked to be notified about against
6
+ current stock levels, and flags any that are back in stock with a
7
+ waiting list that never got notified. Use this if an item has ever
8
+ restocked while a list of interested customers sat unnotified until
9
+ the item sold out again, missing the sale entirely.
10
+ category: ecommerce
11
+ tags: [ecommerce, back-in-stock, notifications, inventory]
12
+ schedule: "0 */3 * * *"
13
+ timezone: "UTC"
14
+ runner: shell
15
+ command: >
16
+ awk -F',' '
17
+ NR==1 {next}
18
+ {
19
+ sku=$1; current_stock=$2; waitlist_count=$3; notified=$4;
20
+ if (current_stock+0 > 0 && waitlist_count+0 > 0 && notified == "no") {
21
+ printf "NOTIFY BACKLOG: %s — %d units in stock, %d customers waiting, not yet notified\n", sku, current_stock, waitlist_count;
22
+ }
23
+ }
24
+ ' "{{waitlist_csv_path}}"
25
+ variables:
26
+ waitlist_csv_path:
27
+ default: "./back-in-stock-waitlist.csv"
28
+ description: "Path to a CSV with columns: sku,current_stock,waitlist_count,notified (yes/no) — one row per SKU with an active back-in-stock waitlist."
29
+ compatible_agents: [generic, claude, codex]
30
+ notes: Mark a SKU "notified" once your ESP/app actually sends the alert, so this only ever flags a genuine backlog rather than re-flagging sent notifications every run.
@@ -0,0 +1,37 @@
1
+ id: bundle-component-stock-mismatch-check
2
+ version: 1
3
+ name: Bundle Component Stock Mismatch Check
4
+ description: >
5
+ Checks each product bundle/kit against the stock of its individual
6
+ components and flags any bundle still marked in-stock while one of its
7
+ components is actually out. Use this if a bundle has ever sold through
8
+ checkout only for fulfillment to discover one piece of it was
9
+ unavailable, because the bundle's own stock flag wasn't tied to its
10
+ components.
11
+ category: ecommerce
12
+ tags: [ecommerce, bundles, inventory, kitting]
13
+ schedule: "0 6 * * *"
14
+ timezone: "UTC"
15
+ runner: shell
16
+ command: >
17
+ awk -F',' '
18
+ NR==1 {next}
19
+ {
20
+ bundle=$1; component_stock=$3; listed_status=$4;
21
+ if (component_stock+0 <= 0) out_of_stock_component[bundle] = out_of_stock_component[bundle] " " $2;
22
+ bundle_status[bundle] = listed_status;
23
+ }
24
+ END {
25
+ for (b in bundle_status) {
26
+ if (bundle_status[b] == "in-stock" && (b in out_of_stock_component)) {
27
+ printf "MISMATCH: bundle %s is listed in-stock but missing component(s):%s\n", b, out_of_stock_component[b];
28
+ }
29
+ }
30
+ }
31
+ ' "{{bundle_components_csv_path}}"
32
+ variables:
33
+ bundle_components_csv_path:
34
+ default: "./bundle-components.csv"
35
+ description: "Path to a CSV with columns: bundle_sku,component_sku,component_stock,bundle_listed_status (in-stock/out-of-stock) — one row per component of each bundle."
36
+ compatible_agents: [generic, claude, codex]
37
+ notes: Distinct from `low-stock-reorder-alert`, which tracks a single SKU's own stock velocity — this checks whether a bundle's listed availability is actually consistent with what it's made of.
@@ -0,0 +1,43 @@
1
+ id: chargeback-fraud-risk-order-review
2
+ version: 1
3
+ name: Chargeback Fraud Risk Order Review
4
+ description: >
5
+ Scores new orders against common fraud signals — billing/shipping
6
+ country mismatch, high order value from a first-time customer, and
7
+ rush shipping on an unverified address — and flags the risky ones
8
+ before they ship. Use this if a chargeback has ever landed on an order
9
+ that, in hindsight, had obvious red flags nobody checked before
10
+ fulfillment.
11
+ category: ecommerce
12
+ tags: [ecommerce, fraud, chargebacks, risk, orders]
13
+ schedule: "0 * * * *"
14
+ timezone: "UTC"
15
+ runner: shell
16
+ command: >
17
+ awk -F',' -v minval="{{high_value_threshold}}" '
18
+ NR==1 {next}
19
+ {
20
+ order_id=$1; billing_country=$2; shipping_country=$3;
21
+ value=$4; is_new_customer=$5; shipping_method=$6;
22
+ score=0; reasons="";
23
+ if (billing_country != shipping_country) { score++; reasons = reasons "billing/shipping country mismatch; "; }
24
+ if (value+0 >= minval) { score++; reasons = reasons "high order value; "; }
25
+ if (is_new_customer == "yes") { score++; reasons = reasons "first-time customer; "; }
26
+ if (shipping_method == "rush" || shipping_method == "expedited") { score++; reasons = reasons "rush shipping; "; }
27
+ if (score >= {{flag_score_threshold}}) {
28
+ printf "REVIEW: order %s (score %d) — %s\n", order_id, score, reasons;
29
+ }
30
+ }
31
+ ' "{{orders_csv_path}}"
32
+ variables:
33
+ orders_csv_path:
34
+ default: "./new-orders.csv"
35
+ description: "Path to a CSV with columns: order_id,billing_country,shipping_country,order_value,is_new_customer(yes/no),shipping_method."
36
+ high_value_threshold:
37
+ default: 300
38
+ description: Order value in your currency at or above which it counts as a fraud-risk signal.
39
+ flag_score_threshold:
40
+ default: 2
41
+ description: Number of matching risk signals (0-4) required before an order is flagged for manual review.
42
+ compatible_agents: [generic, claude, codex]
43
+ notes: A flag is a prompt for manual review before shipping, not proof of fraud — legitimate customers trigger these signals too (gifts, travel, new-to-you shoppers). Distinct from `return-fraud-pattern-check` in the retail category, which looks at return abuse after the sale, not pre-fulfillment order risk.
@@ -0,0 +1,60 @@
1
+ id: competitor-price-watch
2
+ version: 1
3
+ name: Competitor Price Watch
4
+ description: >
5
+ Fetches a competitor's product page for each SKU you're tracking, pulls
6
+ out the price, and flags any SKU where their price has moved enough to
7
+ matter relative to yours. Use this if you've ever found out you were
8
+ underpricing (or getting undercut on) a product only because a customer
9
+ mentioned it.
10
+ category: ecommerce
11
+ tags: [ecommerce, pricing, competitor, monitoring]
12
+ schedule: "0 6 * * *"
13
+ timezone: "UTC"
14
+ runner: hybrid
15
+ command: >
16
+ while IFS=',' read -r sku your_price url; do
17
+ [ "$sku" = "sku" ] && continue;
18
+ [ -z "$url" ] && continue;
19
+ page=$(curl -s -A "Mozilla/5.0" --max-time {{timeout_seconds}} "$url");
20
+ comp_price=$(echo "$page" | grep -oE "{{price_regex}}" | head -n1 | grep -oE "[0-9]+\.[0-9]{2}");
21
+ if [ -z "$comp_price" ]; then
22
+ echo "UNPARSED: $sku — could not extract a price from $url";
23
+ continue;
24
+ fi;
25
+ diff=$(awk -v y="$your_price" -v c="$comp_price" 'BEGIN{d=y-c; if(d<0)d=-d; printf "%.2f", d}');
26
+ if awk -v d="$diff" -v t="{{diff_threshold_usd}}" 'BEGIN{exit !(d >= t)}'; then
27
+ echo "PRICE GAP: $sku — you: \$$your_price, competitor: \$$comp_price (diff \$$diff) at $url";
28
+ fi;
29
+ done < "{{tracked_skus_csv_path}}"
30
+ prompt: |
31
+ The script above tried to scrape a competitor price per SKU from
32
+ {{tracked_skus_csv_path}} using a regex and reported any it couldn't
33
+ parse, plus any SKU with a price gap of at least ${{diff_threshold_usd}}.
34
+ 1. For any "UNPARSED" line, open the competitor URL yourself and find
35
+ the current price (the site likely renders price via JavaScript or
36
+ uses a layout the regex doesn't match).
37
+ 2. For any "PRICE GAP" line, note whether the competitor is now cheaper
38
+ or more expensive than you, and by what percentage.
39
+ 3. Summarize in one short list: which SKUs need a pricing decision this
40
+ week, ranked by gap size.
41
+ script_note: >
42
+ `command` gives you a fast, zero-token first pass using a regex against
43
+ raw HTML — it will miss JS-rendered prices and misses on unusual page
44
+ layouts. `prompt` catches what the regex missed and turns the raw diffs
45
+ into a prioritized, human-readable pricing summary.
46
+ variables:
47
+ tracked_skus_csv_path:
48
+ default: "./competitor-price-tracking.csv"
49
+ description: "Path to a CSV with columns: sku,your_price,competitor_product_url — one row per SKU you want to price-watch."
50
+ price_regex:
51
+ default: "\\$[0-9]+\\.[0-9]{2}"
52
+ description: Regex used to extract a dollar price from the competitor's raw page HTML; adjust per site if it isn't matching.
53
+ diff_threshold_usd:
54
+ default: 2.00
55
+ description: Minimum price difference in dollars worth flagging.
56
+ timeout_seconds:
57
+ default: 10
58
+ description: Seconds to wait for each competitor page before giving up.
59
+ compatible_agents: [claude, codex, hermes, openclaw, generic]
60
+ notes: Respect the target site's robots.txt/terms before scraping. Distinct from `competitor-page-diff-watch` in marketing, which diffs whole-page content/messaging — this is narrowly a per-SKU price comparison against your own price list.
@@ -0,0 +1,43 @@
1
+ id: economic-nexus-threshold-check
2
+ version: 1
3
+ name: Economic Nexus Threshold Check
4
+ description: >
5
+ Checks your year-to-date sales revenue and transaction count per state
6
+ against economic nexus thresholds and flags states you're approaching
7
+ or have crossed. Use this if you've ever registered for sales tax in a
8
+ state only after crossing the threshold months earlier, because nobody
9
+ was tracking cumulative sales by state.
10
+ category: ecommerce
11
+ tags: [ecommerce, sales-tax, nexus, compliance, finance]
12
+ schedule: "0 6 1 * *"
13
+ timezone: "UTC"
14
+ runner: shell
15
+ command: >
16
+ awk -F',' -v rev_thresh="{{revenue_threshold_usd}}" -v txn_thresh="{{transaction_threshold}}" -v warn_pct="{{warn_pct}}" '
17
+ NR==1 {next}
18
+ {
19
+ state=$1; revenue=$2; transactions=$3;
20
+ rev_warn = rev_thresh * (1 - warn_pct/100);
21
+ txn_warn = txn_thresh * (1 - warn_pct/100);
22
+ if (revenue+0 >= rev_thresh || transactions+0 >= txn_thresh) {
23
+ printf "NEXUS CROSSED: %s — revenue $%.2f, transactions %d (already registered? verify)\n", state, revenue, transactions;
24
+ } else if (revenue+0 >= rev_warn || transactions+0 >= txn_warn) {
25
+ printf "APPROACHING NEXUS: %s — revenue $%.2f, transactions %d\n", state, revenue, transactions;
26
+ }
27
+ }
28
+ ' "{{state_sales_csv_path}}"
29
+ variables:
30
+ state_sales_csv_path:
31
+ default: "./state-sales-ytd.csv"
32
+ description: "Path to a CSV with columns: state,ytd_revenue_usd,ytd_transaction_count — one row per state you ship to."
33
+ revenue_threshold_usd:
34
+ default: 100000
35
+ description: "Default economic nexus revenue threshold (varies by state — check each state's actual rule; $100k/200 transactions is common but not universal)."
36
+ transaction_threshold:
37
+ default: 200
38
+ description: Default economic nexus transaction-count threshold.
39
+ warn_pct:
40
+ default: 20
41
+ description: Percent below the threshold at which a state counts as "approaching" and worth watching.
42
+ compatible_agents: [generic, claude, codex]
43
+ notes: Thresholds genuinely vary by state (some have no transaction-count prong, some use different dollar amounts) — this uses one configurable default across all states as a first-pass filter, not a substitute for checking each state's actual rule before registering or not registering.