@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.
- package/README.md +31 -44
- package/catalog.json +8862 -1873
- package/jobs/automotive/ase-certification-expiry-check.yaml +36 -0
- package/jobs/automotive/csi-score-monitor.yaml +33 -0
- package/jobs/automotive/customer-pay-warranty-pay-mix-tracker.yaml +47 -0
- package/jobs/automotive/fi-product-attachment-rate-tracker.yaml +39 -0
- package/jobs/automotive/loaner-fleet-availability-check.yaml +40 -0
- package/jobs/automotive/manufacturer-recall-notice-check.yaml +39 -0
- package/jobs/automotive/parts-reorder-point-check.yaml +36 -0
- package/jobs/automotive/repair-cycle-time-trend-monitor.yaml +42 -0
- package/jobs/automotive/service-appointment-no-show-tracker.yaml +38 -0
- package/jobs/automotive/service-bay-utilization-check.yaml +38 -0
- package/jobs/automotive/shop-supply-reorder-check.yaml +31 -0
- package/jobs/automotive/trade-in-appraisal-variance-check.yaml +39 -0
- package/jobs/automotive/used-vehicle-inventory-aging-check.yaml +35 -0
- package/jobs/construction/critical-path-material-lead-time-review.yaml +43 -0
- package/jobs/construction/daily-jobsite-log-compliance-check.yaml +34 -0
- package/jobs/construction/equipment-utilization-cost-check.yaml +35 -0
- package/jobs/construction/heavy-equipment-inspection-compliance-check.yaml +34 -0
- package/jobs/construction/jobsite-safety-incident-near-miss-tracker.yaml +35 -0
- package/jobs/construction/lien-waiver-collection-tracker.yaml +27 -0
- package/jobs/construction/permit-application-approval-backlog-check.yaml +33 -0
- package/jobs/construction/project-budget-variance-check.yaml +34 -0
- package/jobs/construction/punch-list-completion-tracker.yaml +36 -0
- package/jobs/construction/retainage-holdback-release-tracker.yaml +33 -0
- package/jobs/construction/rfi-response-time-tracker.yaml +33 -0
- package/jobs/construction/subcontractor-pay-application-approval-tracker.yaml +35 -0
- package/jobs/construction/submittal-shop-drawing-review-check.yaml +45 -0
- package/jobs/construction/weather-delay-impact-log.yaml +44 -0
- package/jobs/ecommerce/affiliate-commission-payout-check.yaml +38 -0
- package/jobs/ecommerce/back-in-stock-notification-backlog-check.yaml +30 -0
- package/jobs/ecommerce/bundle-component-stock-mismatch-check.yaml +37 -0
- package/jobs/ecommerce/chargeback-fraud-risk-order-review.yaml +43 -0
- package/jobs/ecommerce/competitor-price-watch.yaml +60 -0
- package/jobs/ecommerce/economic-nexus-threshold-check.yaml +43 -0
- package/jobs/ecommerce/failed-payment-dunning-check.yaml +35 -0
- package/jobs/ecommerce/marketplace-listing-sync-drift-check.yaml +48 -0
- package/jobs/ecommerce/product-feed-health-check.yaml +35 -0
- package/jobs/ecommerce/purchase-order-overdue-check.yaml +32 -0
- package/jobs/ecommerce/storefront-ssl-domain-expiry-check.yaml +46 -0
- package/jobs/ecommerce/vip-tier-reclassification-check.yaml +55 -0
- package/jobs/ecommerce/wishlist-abandonment-check.yaml +37 -0
- package/jobs/education/chronic-absenteeism-tracker.yaml +34 -0
- package/jobs/education/department-budget-variance-check.yaml +37 -0
- package/jobs/education/enrollment-withdrawal-trend-tracker.yaml +39 -0
- package/jobs/education/facility-work-order-backlog-check.yaml +34 -0
- package/jobs/education/free-reduced-lunch-eligibility-renewal-check.yaml +36 -0
- package/jobs/education/iep-504-review-deadline-tracker.yaml +35 -0
- package/jobs/education/parent-teacher-conference-noshow-tracker.yaml +29 -0
- package/jobs/education/school-bus-route-ontime-check.yaml +40 -0
- package/jobs/education/standardized-test-registration-deadline-check.yaml +35 -0
- package/jobs/education/substitute-teacher-fill-rate-tracker.yaml +35 -0
- package/jobs/education/teacher-certification-expiry-tracker.yaml +35 -0
- package/jobs/education/textbook-inventory-shortage-check.yaml +32 -0
- package/jobs/finance/accounts-payable-aging-check.yaml +40 -0
- package/jobs/finance/bank-statement-reconciliation-check.yaml +40 -0
- package/jobs/finance/budget-vs-actual-variance-report.yaml +38 -0
- package/jobs/finance/contractor-1099-threshold-tracker.yaml +43 -0
- package/jobs/finance/credit-utilization-watch.yaml +40 -0
- package/jobs/finance/duplicate-payment-detection.yaml +43 -0
- package/jobs/finance/expense-report-compliance-check.yaml +46 -0
- package/jobs/finance/late-fee-interest-risk-check.yaml +43 -0
- package/jobs/finance/loan-covenant-compliance-check.yaml +37 -0
- package/jobs/finance/month-end-close-checklist-tracker.yaml +39 -0
- package/jobs/finance/multi-account-cash-position-rollup.yaml +45 -0
- package/jobs/finance/petty-cash-float-reconciliation.yaml +43 -0
- package/jobs/finance/quarterly-estimated-tax-calculator.yaml +66 -0
- package/jobs/finance/vendor-early-pay-discount-tracker.yaml +45 -0
- package/jobs/fleet/accident-incident-report-tracker.yaml +34 -0
- package/jobs/fleet/driver-mvr-review-tracker.yaml +34 -0
- package/jobs/fleet/driver-safety-score-monitor.yaml +39 -0
- package/jobs/fleet/ev-battery-health-check.yaml +36 -0
- package/jobs/fleet/fuel-efficiency-trend-monitor.yaml +33 -0
- package/jobs/fleet/geofence-violation-check.yaml +37 -0
- package/jobs/fleet/lease-return-condition-check.yaml +33 -0
- package/jobs/fleet/tire-wear-replacement-check.yaml +30 -0
- package/jobs/fleet/toll-violation-tracker.yaml +34 -0
- package/jobs/fleet/vehicle-pool-scheduling-conflict-check.yaml +37 -0
- package/jobs/fleet/vehicle-tco-tracker.yaml +41 -0
- package/jobs/fleet/vehicle-utilization-rate-check.yaml +37 -0
- package/jobs/growth/cohort-retention-curve-monitor.yaml +39 -0
- package/jobs/growth/customer-health-score-monitor.yaml +37 -0
- package/jobs/growth/dau-mau-engagement-ratio-check.yaml +39 -0
- package/jobs/growth/dormant-account-reactivation-check.yaml +39 -0
- package/jobs/growth/expansion-revenue-opportunity-tracker.yaml +44 -0
- package/jobs/growth/feature-adoption-rate-tracker.yaml +44 -0
- package/jobs/growth/nps-trend-tracker.yaml +40 -0
- package/jobs/growth/onboarding-funnel-dropoff-check.yaml +39 -0
- package/jobs/growth/paywall-upgrade-prompt-conversion-check.yaml +40 -0
- package/jobs/growth/product-qualified-lead-tracker.yaml +42 -0
- package/jobs/growth/referral-program-performance-tracker.yaml +35 -0
- package/jobs/growth/trial-to-paid-conversion-rate-tracker.yaml +48 -0
- package/jobs/growth/winback-reactivation-campaign-tracker.yaml +46 -0
- package/jobs/healthcare/appointment-slot-utilization-check.yaml +56 -0
- package/jobs/healthcare/claims-denial-resubmission-check.yaml +43 -0
- package/jobs/healthcare/clinical-supply-low-stock-check.yaml +30 -0
- package/jobs/healthcare/controlled-substance-inventory-reconciliation.yaml +42 -0
- package/jobs/healthcare/hipaa-access-log-audit.yaml +74 -0
- package/jobs/healthcare/patient-balance-collections-aging-check.yaml +41 -0
- package/jobs/healthcare/patient-immunization-schedule-check.yaml +41 -0
- package/jobs/healthcare/patient-portal-message-backlog-check.yaml +39 -0
- package/jobs/healthcare/patient-satisfaction-survey-tracking.yaml +59 -0
- package/jobs/healthcare/prescription-refill-request-backlog-check.yaml +38 -0
- package/jobs/healthcare/prior-authorization-expiry-check.yaml +53 -0
- package/jobs/healthcare/staff-cme-credit-tracking.yaml +41 -0
- package/jobs/healthcare/telehealth-session-issue-check.yaml +51 -0
- package/jobs/hospitality/adr-revpar-tracker.yaml +43 -0
- package/jobs/hospitality/cancellation-rate-spike-check.yaml +21 -0
- package/jobs/hospitality/group-booking-space-utilization-check.yaml +40 -0
- package/jobs/hospitality/guest-complaint-sla-tracker.yaml +34 -0
- package/jobs/hospitality/guest-satisfaction-score-monitor.yaml +41 -0
- package/jobs/hospitality/linen-inventory-turnover-check.yaml +35 -0
- package/jobs/hospitality/loyalty-points-reconciliation-check.yaml +33 -0
- package/jobs/hospitality/minibar-charge-reconciliation-check.yaml +38 -0
- package/jobs/hospitality/occupancy-forecast-variance-check.yaml +33 -0
- package/jobs/hospitality/ota-rate-parity-check.yaml +36 -0
- package/jobs/hospitality/overbooking-risk-alert.yaml +38 -0
- package/jobs/hospitality/room-maintenance-work-order-tracker.yaml +31 -0
- package/jobs/hospitality/upsell-upgrade-conversion-tracker.yaml +37 -0
- package/jobs/hr/aca-fte-threshold-monitor.yaml +44 -0
- package/jobs/hr/cobra-notification-deadline-tracker.yaml +47 -0
- package/jobs/hr/compliance-training-completion-check.yaml +41 -0
- package/jobs/hr/eeo1-filing-deadline-reminder.yaml +37 -0
- package/jobs/hr/handbook-acknowledgment-tracking.yaml +34 -0
- package/jobs/hr/headcount-budget-variance-check.yaml +37 -0
- package/jobs/hr/leave-of-absence-return-tracker.yaml +42 -0
- package/jobs/hr/org-chart-manager-drift-check.yaml +40 -0
- package/jobs/hr/pay-equity-band-outlier-check.yaml +58 -0
- package/jobs/hr/pto-year-end-use-it-or-lose-it-check.yaml +49 -0
- package/jobs/hr/retirement-plan-enrollment-deadline-check.yaml +40 -0
- package/jobs/hr/workers-comp-claim-status-check.yaml +42 -0
- package/jobs/insurance/adjuster-caseload-balance-check.yaml +45 -0
- package/jobs/insurance/agent-broker-license-expiry-tracker.yaml +40 -0
- package/jobs/insurance/cat-event-exposure-monitor.yaml +37 -0
- package/jobs/insurance/claims-aging-backlog-tracker.yaml +48 -0
- package/jobs/insurance/doi-filing-deadline-tracker.yaml +42 -0
- package/jobs/insurance/loss-ratio-by-line-monitor.yaml +43 -0
- package/jobs/insurance/policy-lapse-rate-monitor.yaml +41 -0
- package/jobs/insurance/premium-payment-delinquency-tracker.yaml +42 -0
- package/jobs/insurance/quote-to-bind-conversion-tracker.yaml +41 -0
- package/jobs/insurance/reinsurance-treaty-renewal-tracker.yaml +38 -0
- package/jobs/insurance/siu-fraud-referral-tracker.yaml +36 -0
- package/jobs/insurance/subrogation-recovery-tracker.yaml +41 -0
- package/jobs/insurance/underwriting-queue-sla-monitor.yaml +45 -0
- package/jobs/legal/conflict-of-interest-check-tracker.yaml +38 -0
- package/jobs/legal/corporate-minute-book-completeness-check.yaml +31 -0
- package/jobs/legal/data-privacy-request-deadline-tracker.yaml +61 -0
- package/jobs/legal/entity-authority-document-expiry-check.yaml +37 -0
- package/jobs/legal/legal-document-retention-purge-review.yaml +39 -0
- package/jobs/legal/litigation-hold-acknowledgment-tracker.yaml +40 -0
- package/jobs/legal/non-compete-expiry-tracker.yaml +37 -0
- package/jobs/legal/outside-counsel-invoice-budget-check.yaml +37 -0
- package/jobs/legal/settlement-payment-schedule-tracker.yaml +34 -0
- package/jobs/legal/timekeeper-billable-hours-compliance-check.yaml +39 -0
- package/jobs/legal/trademark-infringement-watch.yaml +43 -0
- package/jobs/legal/vendor-coi-expiry-tracker.yaml +37 -0
- package/jobs/logistics/3pl-performance-scorecard.yaml +45 -0
- package/jobs/logistics/bol-freight-class-accuracy-audit.yaml +33 -0
- package/jobs/logistics/cargo-insurance-claim-status-check.yaml +39 -0
- package/jobs/logistics/carrier-load-tender-acceptance-check.yaml +34 -0
- package/jobs/logistics/carrier-otd-performance-scorecard.yaml +41 -0
- package/jobs/logistics/carrier-rate-contract-renewal-check.yaml +35 -0
- package/jobs/logistics/cross-dock-dwell-time-watch.yaml +43 -0
- package/jobs/logistics/freight-invoice-rate-audit.yaml +38 -0
- package/jobs/logistics/fuel-surcharge-rate-monitor.yaml +40 -0
- package/jobs/logistics/international-shipment-documentation-check.yaml +36 -0
- package/jobs/logistics/linehaul-transit-time-variance-check.yaml +43 -0
- package/jobs/logistics/proof-of-delivery-reconciliation-check.yaml +38 -0
- package/jobs/logistics/route-load-optimization-check.yaml +32 -0
- package/jobs/manufacturing/changeover-time-tracker.yaml +29 -0
- package/jobs/manufacturing/critical-spare-parts-stock-check.yaml +29 -0
- package/jobs/manufacturing/first-pass-yield-report.yaml +37 -0
- package/jobs/manufacturing/lot-traceability-audit.yaml +37 -0
- package/jobs/manufacturing/non-conformance-report-backlog-check.yaml +34 -0
- package/jobs/manufacturing/oee-efficiency-check.yaml +37 -0
- package/jobs/manufacturing/osha-recordable-incident-audit.yaml +37 -0
- package/jobs/manufacturing/production-schedule-adherence-check.yaml +35 -0
- package/jobs/manufacturing/safety-certification-expiry-check.yaml +37 -0
- package/jobs/manufacturing/scrap-waste-rate-watch.yaml +33 -0
- package/jobs/manufacturing/shift-handoff-report.yaml +37 -0
- package/jobs/manufacturing/supplier-quality-ppm-watch.yaml +38 -0
- package/jobs/manufacturing/tooling-die-wear-check.yaml +31 -0
- package/jobs/manufacturing/work-order-backlog-check.yaml +37 -0
- package/jobs/marketing/ad-creative-fatigue-check.yaml +44 -0
- package/jobs/marketing/affiliate-partner-performance-check.yaml +38 -0
- package/jobs/marketing/attribution-discrepancy-check.yaml +42 -0
- package/jobs/marketing/brand-share-of-voice-check.yaml +43 -0
- package/jobs/marketing/campaign-roas-cpa-anomaly-check.yaml +41 -0
- package/jobs/marketing/competitor-ad-creative-watch.yaml +40 -0
- package/jobs/marketing/email-list-growth-rate-check.yaml +43 -0
- package/jobs/marketing/landing-page-conversion-drop-check.yaml +44 -0
- package/jobs/marketing/mql-to-sql-handoff-sla-check.yaml +29 -0
- package/jobs/marketing/mql-volume-pace-check.yaml +34 -0
- package/jobs/marketing/paid-search-negative-keyword-waste-check.yaml +37 -0
- package/jobs/marketing/press-release-pickup-tracking.yaml +32 -0
- package/jobs/marketing/webinar-registration-attendance-check.yaml +38 -0
- package/jobs/realestate/capital-reserve-fund-threshold-check.yaml +32 -0
- package/jobs/realestate/eviction-notice-deadline-tracker.yaml +37 -0
- package/jobs/realestate/landlord-insurance-claim-status-check.yaml +35 -0
- package/jobs/realestate/lease-renewal-offer-window-check.yaml +35 -0
- package/jobs/realestate/maintenance-request-sla-check.yaml +39 -0
- package/jobs/realestate/move-in-move-out-inspection-tracker.yaml +35 -0
- package/jobs/realestate/rent-increase-notice-deadline-check.yaml +54 -0
- package/jobs/realestate/rent-roll-vacancy-loss-report.yaml +32 -0
- package/jobs/realestate/rental-license-renewal-check.yaml +35 -0
- package/jobs/realestate/security-deposit-return-deadline-check.yaml +38 -0
- package/jobs/realestate/tenant-application-review-backlog-check.yaml +35 -0
- package/jobs/realestate/tenant-renters-insurance-compliance-check.yaml +35 -0
- package/jobs/realestate/utility-billback-reconciliation-check.yaml +41 -0
- package/jobs/restaurant/comp-void-anomaly-tracker.yaml +39 -0
- package/jobs/restaurant/daily-sales-flash-report.yaml +36 -0
- package/jobs/restaurant/delivery-platform-commission-reconciliation.yaml +33 -0
- package/jobs/restaurant/delivery-receiving-discrepancy-check.yaml +33 -0
- package/jobs/restaurant/food-handler-permit-expiry-tracker.yaml +33 -0
- package/jobs/restaurant/gift-card-liability-check.yaml +45 -0
- package/jobs/restaurant/kitchen-ticket-time-watch.yaml +38 -0
- package/jobs/restaurant/liquor-pour-cost-variance-check.yaml +34 -0
- package/jobs/restaurant/menu-86-frequency-tracker.yaml +39 -0
- package/jobs/restaurant/menu-item-profitability-check.yaml +33 -0
- package/jobs/restaurant/pos-end-of-day-reconciliation-check.yaml +31 -0
- package/jobs/restaurant/table-turnover-rate-tracker.yaml +36 -0
- package/jobs/restaurant/waitlist-conversion-check.yaml +37 -0
- package/jobs/retail/cash-office-deposit-variance-check.yaml +34 -0
- package/jobs/retail/competitor-price-monitoring-check.yaml +42 -0
- package/jobs/retail/damaged-merchandise-writeoff-tracker.yaml +41 -0
- package/jobs/retail/employee-discount-abuse-check.yaml +39 -0
- package/jobs/retail/layaway-special-order-pickup-tracker.yaml +33 -0
- package/jobs/retail/loyalty-enrollment-redemption-rate-tracker.yaml +37 -0
- package/jobs/retail/markdown-execution-audit-check.yaml +29 -0
- package/jobs/retail/planogram-compliance-audit-check.yaml +36 -0
- package/jobs/retail/pos-void-refund-anomaly-tracker.yaml +42 -0
- package/jobs/retail/price-tag-audit-accuracy-check.yaml +37 -0
- package/jobs/retail/sales-per-square-foot-tracker.yaml +36 -0
- package/jobs/retail/seasonal-staffing-coverage-check.yaml +35 -0
- package/jobs/retail/store-closing-checklist-compliance-check.yaml +32 -0
- package/jobs/retail/visual-merchandising-compliance-check.yaml +40 -0
- package/jobs/sales/champion-departure-watch.yaml +44 -0
- package/jobs/sales/closed-lost-reason-audit.yaml +42 -0
- package/jobs/sales/commission-payout-tracker.yaml +32 -0
- package/jobs/sales/contract-renewal-opportunity-tracker.yaml +28 -0
- package/jobs/sales/discount-approval-pending-check.yaml +31 -0
- package/jobs/sales/forecast-submission-compliance-check.yaml +42 -0
- package/jobs/sales/multi-year-renewal-escalation-tracker.yaml +31 -0
- package/jobs/sales/pipeline-hygiene-audit.yaml +26 -0
- package/jobs/sales/poc-trial-conversion-tracker.yaml +29 -0
- package/jobs/sales/referral-followup-tracker.yaml +40 -0
- package/jobs/sales/territory-coverage-gap-check.yaml +43 -0
- package/jobs/veterinary/appointment-no-show-rate-tracker.yaml +49 -0
- package/jobs/veterinary/boarding-kennel-capacity-utilization-check.yaml +39 -0
- package/jobs/veterinary/client-payment-plan-delinquency-check.yaml +36 -0
- package/jobs/veterinary/dvm-license-dea-registration-expiry-check.yaml +41 -0
- package/jobs/veterinary/microchip-registration-verification-check.yaml +40 -0
- package/jobs/veterinary/patient-record-completeness-audit.yaml +41 -0
- package/jobs/veterinary/pet-medication-refill-backlog-check.yaml +36 -0
- package/jobs/veterinary/puppy-kitten-vaccine-series-compliance-check.yaml +39 -0
- package/jobs/veterinary/senior-pet-wellness-recall-tracker.yaml +43 -0
- package/jobs/veterinary/spay-neuter-followup-compliance-check.yaml +35 -0
- package/jobs/veterinary/specialist-referral-followup-check.yaml +38 -0
- package/jobs/veterinary/surgical-schedule-utilization-check.yaml +36 -0
- package/jobs/veterinary/vet-staff-ce-credit-tracking.yaml +36 -0
- package/jobs/warehousing/conveyor-sortation-downtime-watch.yaml +48 -0
- package/jobs/warehousing/labor-productivity-rate-check.yaml +33 -0
- package/jobs/warehousing/mhe-preventive-maintenance-check.yaml +38 -0
- package/jobs/warehousing/order-fulfillment-sla-watch.yaml +42 -0
- package/jobs/warehousing/shift-headcount-coverage-check.yaml +33 -0
- package/jobs/warehousing/slotting-velocity-review-check.yaml +44 -0
- package/jobs/warehousing/warehouse-damage-writeoff-review.yaml +41 -0
- package/jobs/warehousing/warehouse-near-miss-incident-rate-watch.yaml +47 -0
- package/jobs/warehousing/warehouse-space-utilization-check.yaml +39 -0
- package/jobs/warehousing/wave-pick-batch-efficiency-check.yaml +33 -0
- package/jobs/warehousing/wms-integration-error-check.yaml +36 -0
- package/jobs/warehousing/yard-trailer-detention-watch.yaml +41 -0
- package/lib/category-descriptions.js +12 -12
- package/lib/duplicates-allowlist.js +15 -0
- package/package.json +2 -2
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
id: expansion-revenue-opportunity-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Expansion Revenue Opportunity Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Reviews usage-based consumption (API calls, storage, records processed,
|
|
6
|
+
etc.) against each account's plan allowance and flags accounts
|
|
7
|
+
regularly running over, before it becomes a support complaint about
|
|
8
|
+
being throttled. Use this if the first sign of an account outgrowing
|
|
9
|
+
its plan is a "why did my job fail" ticket instead of a proactive
|
|
10
|
+
expansion conversation.
|
|
11
|
+
category: growth
|
|
12
|
+
tags: [growth, expansion, upsell, usage-based]
|
|
13
|
+
schedule: "0 9 * * 1"
|
|
14
|
+
timezone: "UTC"
|
|
15
|
+
runner: agent-prompt
|
|
16
|
+
prompt: |
|
|
17
|
+
Pull consumption metrics (e.g. API calls, storage used, records
|
|
18
|
+
processed — whatever your plan limits are metered on) for each paying
|
|
19
|
+
account from {{usage_source}} over the last {{lookback_days}} days.
|
|
20
|
+
1. Compare each account's usage against its plan's included allowance.
|
|
21
|
+
2. Flag accounts that exceeded the allowance, or came within
|
|
22
|
+
{{near_limit_pct}}% of it, on {{repeat_occurrences}} or more days in
|
|
23
|
+
the window.
|
|
24
|
+
3. List flagged accounts with their overage amount and current plan, so
|
|
25
|
+
the account owner can start an expansion conversation.
|
|
26
|
+
variables:
|
|
27
|
+
usage_source:
|
|
28
|
+
default: "your metering/billing system or usage database"
|
|
29
|
+
description: Where consumption/usage-metering data lives.
|
|
30
|
+
lookback_days:
|
|
31
|
+
default: 30
|
|
32
|
+
description: Window of usage to evaluate.
|
|
33
|
+
near_limit_pct:
|
|
34
|
+
default: 90
|
|
35
|
+
description: Percent of plan allowance that counts as "near the limit."
|
|
36
|
+
repeat_occurrences:
|
|
37
|
+
default: 3
|
|
38
|
+
description: Number of days within the window an account must hit/near the limit to be flagged.
|
|
39
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
40
|
+
notes: >
|
|
41
|
+
No generic script mode — usage-metering schemas vary too much per
|
|
42
|
+
product to hardcode a query. Distinct from seat-utilization-upsell-check
|
|
43
|
+
(seat-count based) — this looks at metered/consumption-based usage
|
|
44
|
+
instead of seat count, since not every plan is priced per seat.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
id: feature-adoption-rate-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Feature Adoption Rate Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Tracks what percent of active accounts have used a specific feature at
|
|
6
|
+
least once, and flags when adoption is stuck below target. Use this if
|
|
7
|
+
you shipped a feature, called it done, and never actually checked
|
|
8
|
+
whether anyone uses it.
|
|
9
|
+
category: growth
|
|
10
|
+
tags: [growth, feature-adoption, activation, product]
|
|
11
|
+
schedule: "0 9 1 * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
file={{accounts_csv_path}}; feature="{{feature_column}}"; target={{target_adoption_pct}};
|
|
16
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
17
|
+
header=$(head -1 "$file");
|
|
18
|
+
col=$(echo "$header" | tr ',' '\n' | grep -nx "$feature" | cut -d: -f1);
|
|
19
|
+
[ -n "$col" ] || { echo "ERROR: column $feature not found in $file"; exit 1; };
|
|
20
|
+
total=0; used=0;
|
|
21
|
+
tail -n +2 "$file" | while IFS=',' read -ra row; do
|
|
22
|
+
total=$((total+1));
|
|
23
|
+
val="${row[$((col-1))]}";
|
|
24
|
+
[ "$val" = "yes" ] || [ "$val" = "1" ] || [ "$val" = "true" ] && used=$((used+1));
|
|
25
|
+
echo "$total $used";
|
|
26
|
+
done | tail -1 | { read -r t u;
|
|
27
|
+
pct=$(awk "BEGIN{printf \"%.1f\", ($u/$t)*100}");
|
|
28
|
+
echo "Feature adoption for $feature: $u/$t accounts (${pct}%)";
|
|
29
|
+
if awk "BEGIN{exit !($pct < $target)}"; then echo "WARNING: adoption below target (${target}%)"; exit 1; fi;
|
|
30
|
+
}
|
|
31
|
+
variables:
|
|
32
|
+
accounts_csv_path:
|
|
33
|
+
default: "./account-feature-usage.csv"
|
|
34
|
+
description: "Path to a CSV with an account identifier column plus one column per tracked feature (yes/no, 1/0, or true/false)."
|
|
35
|
+
feature_column:
|
|
36
|
+
default: "used_new_dashboard"
|
|
37
|
+
description: Column name for the feature to check adoption of.
|
|
38
|
+
target_adoption_pct:
|
|
39
|
+
default: 30
|
|
40
|
+
description: Minimum adoption percent expected before flagging as behind.
|
|
41
|
+
compatible_agents: [generic, claude, codex]
|
|
42
|
+
notes: >
|
|
43
|
+
Zero-token. You export account-feature-usage.csv from your product
|
|
44
|
+
analytics tool (one boolean column per feature you want to track).
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
id: nps-trend-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: NPS Trend Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Computes Net Promoter Score from a survey response log and flags when
|
|
6
|
+
it drops meaningfully from the prior period. Use this if NPS only gets
|
|
7
|
+
looked at once a quarter in a slide, instead of catching a slide in
|
|
8
|
+
sentiment while there's still time to find out why.
|
|
9
|
+
category: growth
|
|
10
|
+
tags: [growth, nps, sentiment, retention]
|
|
11
|
+
schedule: "0 9 1 * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
file={{nps_responses_csv_path}}; drop_threshold={{drop_threshold_points}};
|
|
16
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
17
|
+
total=$(tail -n +2 "$file" | wc -l | tr -d ' ');
|
|
18
|
+
if [ "$total" -eq 0 ]; then echo "No NPS responses recorded in $file"; exit 0; fi;
|
|
19
|
+
promoters=$(tail -n +2 "$file" | awk -F',' '$2>=9 {c++} END{print c+0}');
|
|
20
|
+
detractors=$(tail -n +2 "$file" | awk -F',' '$2<=6 {c++} END{print c+0}');
|
|
21
|
+
nps=$(awk "BEGIN{printf \"%.0f\", (($promoters-$detractors)/$total)*100}");
|
|
22
|
+
prev={{previous_nps_score}};
|
|
23
|
+
drop=$((prev - nps));
|
|
24
|
+
echo "NPS: $nps (from $total responses; $promoters promoters, $detractors detractors) — previous: $prev";
|
|
25
|
+
if [ "$drop" -ge "$drop_threshold" ]; then echo "WARNING: NPS dropped $drop points since last period"; exit 1; fi
|
|
26
|
+
variables:
|
|
27
|
+
nps_responses_csv_path:
|
|
28
|
+
default: "./nps-responses.csv"
|
|
29
|
+
description: "Path to a CSV with header: respondent_email,score (score is 0-10)."
|
|
30
|
+
previous_nps_score:
|
|
31
|
+
default: 40
|
|
32
|
+
description: NPS score from the prior period, to compare against (update after each run).
|
|
33
|
+
drop_threshold_points:
|
|
34
|
+
default: 10
|
|
35
|
+
description: Point drop in NPS from the previous period that triggers a warning.
|
|
36
|
+
compatible_agents: [generic, claude, codex]
|
|
37
|
+
notes: >
|
|
38
|
+
Zero-token. Export nps-responses.csv from your survey tool (Delighted,
|
|
39
|
+
Wootric, or your own in-app survey) and update previous_nps_score after
|
|
40
|
+
each run to track period-over-period movement.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
id: onboarding-funnel-dropoff-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Onboarding Funnel Drop-off Check
|
|
4
|
+
description: >
|
|
5
|
+
Computes the step-by-step completion rate across your onboarding funnel
|
|
6
|
+
and flags whichever step is losing the most users. Use this if you know
|
|
7
|
+
onboarding completion isn't great but have never actually seen where in
|
|
8
|
+
the funnel people give up.
|
|
9
|
+
category: growth
|
|
10
|
+
tags: [growth, onboarding, funnel, activation]
|
|
11
|
+
schedule: "0 9 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
file={{funnel_csv_path}}; drop_threshold={{step_dropoff_threshold_pct}};
|
|
16
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
17
|
+
prev_count=0; prev_step="start";
|
|
18
|
+
tail -n +2 "$file" | while IFS=',' read -r step count; do
|
|
19
|
+
if [ "$prev_count" -gt 0 ]; then
|
|
20
|
+
drop_pct=$(awk "BEGIN{printf \"%.1f\", (($prev_count-$count)/$prev_count)*100}");
|
|
21
|
+
flag="";
|
|
22
|
+
awk "BEGIN{exit !($drop_pct >= $drop_threshold)}" && flag=" <-- HIGH DROP-OFF";
|
|
23
|
+
echo "$prev_step -> $step: $prev_count -> $count (-${drop_pct}%)$flag";
|
|
24
|
+
fi;
|
|
25
|
+
prev_count=$count; prev_step=$step;
|
|
26
|
+
done
|
|
27
|
+
variables:
|
|
28
|
+
funnel_csv_path:
|
|
29
|
+
default: "./onboarding-funnel.csv"
|
|
30
|
+
description: "Path to a CSV with header: step,users_reached, ordered from first onboarding step to last, one row per step."
|
|
31
|
+
step_dropoff_threshold_pct:
|
|
32
|
+
default: 30
|
|
33
|
+
description: Step-over-step drop percent that flags a step as a major leak.
|
|
34
|
+
compatible_agents: [generic, claude, codex]
|
|
35
|
+
notes: >
|
|
36
|
+
Zero-token. Export onboarding-funnel.csv from your product analytics
|
|
37
|
+
tool's funnel report. Distinct from onboarding-completion-stall-check
|
|
38
|
+
(flags individual users stuck on a step) — this looks at aggregate
|
|
39
|
+
step-to-step drop-off across the whole funnel instead.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
id: paywall-upgrade-prompt-conversion-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Paywall/Upgrade Prompt Conversion Check
|
|
4
|
+
description: >
|
|
5
|
+
Reviews how often users who hit a paywall or upgrade prompt actually
|
|
6
|
+
convert, and flags prompts that are being seen a lot but converting
|
|
7
|
+
poorly. Use this if an upgrade prompt has ever quietly annoyed users for
|
|
8
|
+
months with a near-zero conversion rate and nobody looked at the
|
|
9
|
+
numbers until a redesign project asked "does this even work?"
|
|
10
|
+
category: growth
|
|
11
|
+
tags: [growth, paywall, upgrade-prompt, conversion, product-led-growth]
|
|
12
|
+
schedule: "0 9 * * 1"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: agent-prompt
|
|
15
|
+
prompt: |
|
|
16
|
+
Pull paywall/upgrade-prompt impression and conversion data from
|
|
17
|
+
{{analytics_hint}} for the last {{lookback_days}} days, broken down by
|
|
18
|
+
prompt location or trigger (e.g. feature-gate modal, usage-limit
|
|
19
|
+
banner, pricing page CTA).
|
|
20
|
+
1. Compute the view-to-upgrade conversion rate for each prompt.
|
|
21
|
+
2. Flag any prompt with {{min_impressions}}+ impressions but a
|
|
22
|
+
conversion rate under {{min_conversion_rate_pct}}%.
|
|
23
|
+
3. For flagged prompts, suggest likely causes based on what's visible
|
|
24
|
+
(wrong audience being shown the prompt, unclear value proposition,
|
|
25
|
+
price shown too early, friction in the upgrade flow itself).
|
|
26
|
+
variables:
|
|
27
|
+
analytics_hint:
|
|
28
|
+
default: "product analytics tool (e.g. Amplitude, Mixpanel, PostHog)"
|
|
29
|
+
description: Where paywall/upgrade-prompt impression and conversion events are tracked.
|
|
30
|
+
lookback_days:
|
|
31
|
+
default: 30
|
|
32
|
+
description: Window of prompt data to evaluate.
|
|
33
|
+
min_impressions:
|
|
34
|
+
default: 100
|
|
35
|
+
description: Minimum impressions a prompt needs before its conversion rate is judged.
|
|
36
|
+
min_conversion_rate_pct:
|
|
37
|
+
default: 2
|
|
38
|
+
description: Conversion rate percent below which a well-seen prompt gets flagged.
|
|
39
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
40
|
+
notes: No generic script mode — diagnosing why a specific prompt underconverts needs judgment about UX and audience, not just a rate comparison.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
id: product-qualified-lead-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Product-Qualified Lead (PQL) Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Reviews free/trial users' in-product usage for signals that they're
|
|
6
|
+
ready for a sales conversation — hitting usage limits, inviting
|
|
7
|
+
teammates, using premium-gated features — and flags them as PQLs. Use
|
|
8
|
+
this if self-serve users who are clearly ready to buy only get noticed
|
|
9
|
+
when they email support asking how to upgrade.
|
|
10
|
+
category: growth
|
|
11
|
+
tags: [growth, pql, product-led-growth, activation]
|
|
12
|
+
schedule: "0 9 * * 2"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: agent-prompt
|
|
15
|
+
prompt: |
|
|
16
|
+
Review usage data for free/trial accounts from {{analytics_hint}} over
|
|
17
|
+
the last {{lookback_days}} days.
|
|
18
|
+
1. Identify accounts showing buying-intent signals: approaching or
|
|
19
|
+
hitting a usage limit, inviting {{team_invite_threshold}}+ teammates,
|
|
20
|
+
repeatedly hitting a paywalled/premium feature, or a sustained
|
|
21
|
+
increase in core-feature usage.
|
|
22
|
+
2. Score each candidate account as a PQL if it shows two or more of
|
|
23
|
+
these signals.
|
|
24
|
+
3. List PQLs ranked by signal strength, with which signals triggered
|
|
25
|
+
the flag, so sales/success can prioritize outreach.
|
|
26
|
+
variables:
|
|
27
|
+
analytics_hint:
|
|
28
|
+
default: "product analytics tool (e.g. Amplitude, Mixpanel, PostHog)"
|
|
29
|
+
description: Where in-product usage data lives.
|
|
30
|
+
lookback_days:
|
|
31
|
+
default: 14
|
|
32
|
+
description: Window of usage activity to evaluate.
|
|
33
|
+
team_invite_threshold:
|
|
34
|
+
default: 2
|
|
35
|
+
description: Number of teammate invites within the window that counts as a buying-intent signal.
|
|
36
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
37
|
+
notes: >
|
|
38
|
+
No generic script mode — combining multiple usage signals into a
|
|
39
|
+
qualification judgment needs reasoning about the product's specific
|
|
40
|
+
activation moments. Distinct from marketing's MQL jobs (marketing-sourced
|
|
41
|
+
leads from campaigns/forms) — this looks at existing free/trial users'
|
|
42
|
+
in-product behavior instead.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: referral-program-performance-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Referral Program Performance Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Computes referral-to-signup and referral-to-paid conversion rates from
|
|
6
|
+
a referral log and flags when the program's performance drops. Use this
|
|
7
|
+
if a referral program launched with fanfare and nobody has checked its
|
|
8
|
+
numbers since.
|
|
9
|
+
category: growth
|
|
10
|
+
tags: [growth, referrals, virality, conversion]
|
|
11
|
+
schedule: "0 9 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
file={{referrals_csv_path}}; min_rate={{min_conversion_rate_pct}};
|
|
16
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
17
|
+
total=$(tail -n +2 "$file" | wc -l | tr -d ' ');
|
|
18
|
+
converted=$(tail -n +2 "$file" | awk -F',' '$3=="paid" {c++} END{print c+0}');
|
|
19
|
+
signed_up=$(tail -n +2 "$file" | awk -F',' '$3=="signed_up" || $3=="paid" {c++} END{print c+0}');
|
|
20
|
+
if [ "$total" -eq 0 ]; then echo "No referrals recorded in $file"; exit 0; fi;
|
|
21
|
+
signup_rate=$(awk "BEGIN{printf \"%.1f\", ($signed_up/$total)*100}");
|
|
22
|
+
paid_rate=$(awk "BEGIN{printf \"%.1f\", ($converted/$total)*100}");
|
|
23
|
+
echo "Referral performance: $total referrals, ${signup_rate}% signed up, ${paid_rate}% converted to paid";
|
|
24
|
+
if awk "BEGIN{exit !($paid_rate < $min_rate)}"; then echo "WARNING: referral-to-paid rate below ${min_rate}%"; exit 1; fi
|
|
25
|
+
variables:
|
|
26
|
+
referrals_csv_path:
|
|
27
|
+
default: "./referrals.csv"
|
|
28
|
+
description: "Path to a CSV with header: referral_id,referrer_email,status (status is one of: pending,signed_up,paid)."
|
|
29
|
+
min_conversion_rate_pct:
|
|
30
|
+
default: 10
|
|
31
|
+
description: Minimum acceptable referral-to-paid conversion rate percent.
|
|
32
|
+
compatible_agents: [generic, claude, codex]
|
|
33
|
+
notes: >
|
|
34
|
+
Zero-token. Export referrals.csv from your referral program tool
|
|
35
|
+
(ReferralCandy, Rewardful, or your own tracking table).
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
id: trial-to-paid-conversion-rate-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Trial-to-Paid Conversion Rate Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Computes the trial-to-paid conversion rate for recently-ended trial
|
|
6
|
+
cohorts and can summarize what's changed if the rate moves. Use this if
|
|
7
|
+
trial conversion rate is a number that only gets calculated by hand
|
|
8
|
+
once a quarter for a board deck, instead of being watched continuously.
|
|
9
|
+
category: growth
|
|
10
|
+
tags: [growth, trials, conversion, activation]
|
|
11
|
+
schedule: "0 9 1 * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: hybrid
|
|
14
|
+
command: >
|
|
15
|
+
file={{trials_csv_path}}; min_rate={{min_conversion_rate_pct}};
|
|
16
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
17
|
+
ended=$(tail -n +2 "$file" | awk -F',' '$2=="ended" {c++} END{print c+0}');
|
|
18
|
+
converted=$(tail -n +2 "$file" | awk -F',' '$2=="converted" {c++} END{print c+0}');
|
|
19
|
+
total=$((ended+converted));
|
|
20
|
+
if [ "$total" -eq 0 ]; then echo "No ended trials recorded in $file"; exit 0; fi;
|
|
21
|
+
rate=$(awk "BEGIN{printf \"%.1f\", ($converted/$total)*100}");
|
|
22
|
+
echo "Trial-to-paid conversion: $converted/$total (${rate}%)";
|
|
23
|
+
if awk "BEGIN{exit !($rate < $min_rate)}"; then echo "WARNING: conversion rate below ${min_rate}%"; exit 1; fi
|
|
24
|
+
prompt: |
|
|
25
|
+
The trial-to-paid conversion rate for the recent trial cohort in
|
|
26
|
+
{{trials_csv_path}} is below {{min_conversion_rate_pct}}%.
|
|
27
|
+
1. Look at the trials that ended without converting and note any
|
|
28
|
+
pattern visible in the data (e.g. low usage before expiry, specific
|
|
29
|
+
plan tier, signup source).
|
|
30
|
+
2. Suggest one or two concrete follow-ups (e.g. targeted win-back
|
|
31
|
+
outreach, a longer trial for a specific segment) based on what the
|
|
32
|
+
data shows.
|
|
33
|
+
script_note: >
|
|
34
|
+
`command` computes the trial-to-paid conversion rate with zero tokens
|
|
35
|
+
and flags if it's below target. `prompt` (only needed when the rate is
|
|
36
|
+
flagged) digs into why and suggests a fix, which needs judgment.
|
|
37
|
+
variables:
|
|
38
|
+
trials_csv_path:
|
|
39
|
+
default: "./trial-outcomes.csv"
|
|
40
|
+
description: "Path to a CSV with header: user_email,outcome (outcome is 'ended' for trials that expired without converting or 'converted' for trials that became paid)."
|
|
41
|
+
min_conversion_rate_pct:
|
|
42
|
+
default: 15
|
|
43
|
+
description: Minimum acceptable trial-to-paid conversion rate percent.
|
|
44
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
45
|
+
notes: >
|
|
46
|
+
Distinct from trial-expiring-nudge (per-user nudge before expiry) —
|
|
47
|
+
this tracks the aggregate conversion rate after trials have already
|
|
48
|
+
ended, as a health metric rather than an outreach trigger.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
id: winback-reactivation-campaign-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Win-Back Reactivation Campaign Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Tracks how canceled customers targeted by a win-back campaign are
|
|
6
|
+
responding, and can draft the next outreach touch for non-responders.
|
|
7
|
+
Use this if a win-back campaign has ever gone out once and then nobody
|
|
8
|
+
followed up with the customers who didn't respond.
|
|
9
|
+
category: growth
|
|
10
|
+
tags: [growth, winback, reactivation, churn]
|
|
11
|
+
schedule: "0 9 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: hybrid
|
|
14
|
+
command: >
|
|
15
|
+
file={{winback_csv_path}}; wait_days={{followup_wait_days}};
|
|
16
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
17
|
+
today=$(date +%s);
|
|
18
|
+
tail -n +2 "$file" | while IFS=',' read -r email canceled_date sent_date status; do
|
|
19
|
+
[ "$status" = "reactivated" ] || [ "$status" = "declined" ] && continue;
|
|
20
|
+
s_epoch=$(date -d "$sent_date" +%s 2>/dev/null || date -j -f "%Y-%m-%d" "$sent_date" +%s 2>/dev/null);
|
|
21
|
+
[ -z "$s_epoch" ] && continue;
|
|
22
|
+
days=$(( (today-s_epoch)/86400 ));
|
|
23
|
+
if [ "$days" -ge "$wait_days" ]; then echo "NO RESPONSE: $email — canceled $canceled_date, win-back sent $days day(s) ago"; fi
|
|
24
|
+
done
|
|
25
|
+
prompt: |
|
|
26
|
+
For each customer flagged as "NO RESPONSE" (from {{winback_csv_path}},
|
|
27
|
+
win-back email sent {{followup_wait_days}}+ days ago with no reply):
|
|
28
|
+
1. Draft a short, low-pressure follow-up touch — a different angle than
|
|
29
|
+
the first email (e.g. a specific improvement made since they left,
|
|
30
|
+
or a direct ask for feedback on why they canceled).
|
|
31
|
+
2. Keep it under 100 words. Don't send — draft only.
|
|
32
|
+
script_note: >
|
|
33
|
+
`command` lists which canceled customers were sent a win-back email and
|
|
34
|
+
haven't responded, zero tokens. `prompt` drafts the follow-up touch for
|
|
35
|
+
each, which needs judgment on tone and angle.
|
|
36
|
+
variables:
|
|
37
|
+
winback_csv_path:
|
|
38
|
+
default: "./winback-campaign.csv"
|
|
39
|
+
description: "Path to a CSV with header: email,canceled_date,winback_sent_date,status (status is one of: sent,reactivated,declined)."
|
|
40
|
+
followup_wait_days:
|
|
41
|
+
default: 10
|
|
42
|
+
description: Days to wait after the win-back email before flagging for a follow-up touch.
|
|
43
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
44
|
+
notes: >
|
|
45
|
+
You maintain winback-campaign.csv yourself (update status as customers
|
|
46
|
+
respond) — doesn't integrate with any CRM/ESP directly.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
id: appointment-slot-utilization-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Appointment Slot Utilization and Schedule Gap Check
|
|
4
|
+
description: >
|
|
5
|
+
Computes daily/weekly appointment slot utilization from the schedule and
|
|
6
|
+
flags days running well under capacity, then suggests what to do about
|
|
7
|
+
the gaps. Use this if provider schedules have ever had large unbooked
|
|
8
|
+
gaps that nobody noticed until the day arrived nearly empty, wasting
|
|
9
|
+
billable capacity that a recall push or same-day-opening alert could
|
|
10
|
+
have filled.
|
|
11
|
+
category: healthcare
|
|
12
|
+
tags: [healthcare, scheduling, utilization, operations, capacity]
|
|
13
|
+
schedule: "0 16 * * 5"
|
|
14
|
+
timezone: "America/New_York"
|
|
15
|
+
runner: hybrid
|
|
16
|
+
command: >
|
|
17
|
+
awk -F',' -v threshold="{{low_utilization_threshold_pct}}" '
|
|
18
|
+
NR==1 {next}
|
|
19
|
+
{
|
|
20
|
+
total += $2; booked += $3;
|
|
21
|
+
pct = ($2 > 0) ? ($3 / $2 * 100) : 0;
|
|
22
|
+
if (pct < threshold) {
|
|
23
|
+
printf "LOW UTILIZATION: %s — %d/%d slots booked (%.1f%%)\n", $1, $3, $2, pct;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
END {
|
|
27
|
+
overall = (total > 0) ? (booked / total * 100) : 0;
|
|
28
|
+
printf "WEEK OVERALL: %d/%d slots booked (%.1f%%)\n", booked, total, overall;
|
|
29
|
+
}
|
|
30
|
+
' "{{schedule_utilization_csv_path}}"
|
|
31
|
+
prompt: |
|
|
32
|
+
Look at the low-utilization days and overall weekly rate flagged above
|
|
33
|
+
(from {{schedule_utilization_csv_path}}).
|
|
34
|
+
1. Note which specific days/providers are consistently under
|
|
35
|
+
{{low_utilization_threshold_pct}}% booked versus a one-off dip.
|
|
36
|
+
2. For consistently low days, suggest a concrete fix: a targeted recall
|
|
37
|
+
push (see patient-recall-reminder) for that provider's open slots, a
|
|
38
|
+
schedule consolidation (fewer open days, more density), or a same-day
|
|
39
|
+
opening alert to a waitlist — whichever fits the pattern.
|
|
40
|
+
3. Keep it to a short, actionable list — this is a capacity-planning
|
|
41
|
+
nudge, not a full operations review.
|
|
42
|
+
variables:
|
|
43
|
+
schedule_utilization_csv_path:
|
|
44
|
+
default: "./schedule-utilization.csv"
|
|
45
|
+
description: "Path to a CSV with columns: date_or_provider_day,total_slots,booked_slots."
|
|
46
|
+
low_utilization_threshold_pct:
|
|
47
|
+
default: 70
|
|
48
|
+
description: Utilization percentage below which a day is flagged as under capacity.
|
|
49
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
50
|
+
script_note: >
|
|
51
|
+
The command gives you the per-day and weekly utilization percentages for free.
|
|
52
|
+
Only the prompt pass distinguishes a one-off dip from a real pattern and
|
|
53
|
+
recommends a specific fix — that judgment call is what the LLM pass adds.
|
|
54
|
+
notes: >
|
|
55
|
+
Assumes an already-exported CSV from your scheduling/practice-management system.
|
|
56
|
+
Read-only analysis — it doesn't rebook anyone or change the schedule itself.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
id: claims-denial-resubmission-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Claims Denial Resubmission Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks denied insurance claims against their payer resubmission or appeal
|
|
6
|
+
deadline and flags anything still open as the deadline approaches or has
|
|
7
|
+
already passed. Use this if a denied claim has ever quietly aged past the
|
|
8
|
+
window to resubmit or appeal it, turning recoverable revenue into a
|
|
9
|
+
write-off nobody meant to take.
|
|
10
|
+
category: healthcare
|
|
11
|
+
tags: [healthcare, billing, claims, denials, revenue-cycle]
|
|
12
|
+
schedule: "0 8 * * 1-5"
|
|
13
|
+
timezone: "America/New_York"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
today=$(date +%s);
|
|
17
|
+
awk -F',' -v today="$today" -v warn_days="{{warn_days_before_deadline}}" '
|
|
18
|
+
NR==1 {next}
|
|
19
|
+
$6 != "open" {next}
|
|
20
|
+
{
|
|
21
|
+
cmd = "date -d \"" $5 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $5 "\" +%s 2>/dev/null";
|
|
22
|
+
cmd | getline deadline_epoch; close(cmd);
|
|
23
|
+
diff_days = (deadline_epoch - today) / 86400;
|
|
24
|
+
if (diff_days < 0) {
|
|
25
|
+
printf "PAST DEADLINE: %s — claim %s (%s) resubmission deadline was %s (%d days ago)\n", $1, $2, $3, $5, -diff_days;
|
|
26
|
+
} else if (diff_days <= warn_days) {
|
|
27
|
+
printf "RESUBMIT SOON: %s — claim %s (%s) deadline %s (%d days left)\n", $1, $2, $3, $5, diff_days;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
' "{{denied_claims_csv_path}}"
|
|
31
|
+
variables:
|
|
32
|
+
denied_claims_csv_path:
|
|
33
|
+
default: "./denied-claims.csv"
|
|
34
|
+
description: "Path to a CSV with columns: patient_name,claim_number,payer,denial_date (YYYY-MM-DD),resubmission_deadline (YYYY-MM-DD),status (open/resubmitted/appealed/written-off)."
|
|
35
|
+
warn_days_before_deadline:
|
|
36
|
+
default: 7
|
|
37
|
+
description: How many days before the resubmission/appeal deadline to start warning.
|
|
38
|
+
compatible_agents: [generic, claude, codex]
|
|
39
|
+
notes: >
|
|
40
|
+
Assumes an already-exported CSV from your billing/clearinghouse system rather than
|
|
41
|
+
live PHI system access. Distinct from insurance-eligibility-verification-check
|
|
42
|
+
(pre-visit) and prior-authorization-expiry-check (treatment approval) — this is
|
|
43
|
+
post-visit claims that already got denied.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
id: clinical-supply-low-stock-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Clinical Supply and PPE Low-Stock Check
|
|
4
|
+
description: >
|
|
5
|
+
Scans clinical supply and PPE inventory (gloves, masks, gowns, syringes,
|
|
6
|
+
exam table paper, sanitizer) against reorder thresholds and flags what's
|
|
7
|
+
running low. Use this if a clinic has ever discovered it was out of
|
|
8
|
+
gloves or exam paper mid-morning because nobody was watching stock levels
|
|
9
|
+
between deliveries.
|
|
10
|
+
category: healthcare
|
|
11
|
+
tags: [healthcare, inventory, supplies, ppe, operations]
|
|
12
|
+
schedule: "0 7 * * 1,4"
|
|
13
|
+
timezone: "America/New_York"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
awk -F',' '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
($3 + 0) <= ($4 + 0) {
|
|
19
|
+
printf "LOW STOCK: %s (%s) — %d on hand, reorder threshold %d\n", $1, $2, $3, $4;
|
|
20
|
+
}
|
|
21
|
+
' "{{supply_inventory_csv_path}}"
|
|
22
|
+
variables:
|
|
23
|
+
supply_inventory_csv_path:
|
|
24
|
+
default: "./clinical-supply-inventory.csv"
|
|
25
|
+
description: "Path to a CSV with columns: item_name,category,current_qty,reorder_threshold."
|
|
26
|
+
compatible_agents: [generic, claude, codex]
|
|
27
|
+
notes: >
|
|
28
|
+
Zero-token, read-only check. Assumes a maintained inventory export (manual count
|
|
29
|
+
or supply-management software) — this is the "did anyone check the shelf" backstop,
|
|
30
|
+
it doesn't place the reorder itself.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
id: controlled-substance-inventory-reconciliation
|
|
2
|
+
version: 1
|
|
3
|
+
name: Controlled Substance Inventory Reconciliation
|
|
4
|
+
description: >
|
|
5
|
+
Reviews the practice's controlled-substance dispensing/administration log
|
|
6
|
+
(e.g. in-office injectable opioids, ketamine, testosterone, Schedule II-V
|
|
7
|
+
medications kept on site) for gaps or unreconciled counts. Use this if a
|
|
8
|
+
discrepancy in a controlled-drug count has ever gone unnoticed for weeks
|
|
9
|
+
in a human practice instead of being caught same-day — this covers a
|
|
10
|
+
clinic's own in-office stock, the same DEA-style pattern as
|
|
11
|
+
jobs/veterinary/controlled-substance-log-audit.yaml but for a human
|
|
12
|
+
medical/dental practice rather than an animal clinic, so both are kept as
|
|
13
|
+
separate jobs.
|
|
14
|
+
category: healthcare
|
|
15
|
+
tags: [healthcare, controlled-substances, compliance, audit, dea]
|
|
16
|
+
schedule: "0 20 * * *"
|
|
17
|
+
timezone: "America/New_York"
|
|
18
|
+
runner: agent-prompt
|
|
19
|
+
prompt: |
|
|
20
|
+
Read today's controlled-substance log from {{log_source}} for
|
|
21
|
+
{{substances_tracked}}.
|
|
22
|
+
1. Check that every entry has a matching patient/encounter reference —
|
|
23
|
+
flag any entry missing one.
|
|
24
|
+
2. Compare the running balance against the last physical count on record;
|
|
25
|
+
flag any mismatch.
|
|
26
|
+
3. Flag any day with zero entries logged if the practice was open and
|
|
27
|
+
controlled substances are known to be in regular use — a suspiciously
|
|
28
|
+
quiet log is itself worth a second look.
|
|
29
|
+
4. If everything reconciles, say so in one line.
|
|
30
|
+
variables:
|
|
31
|
+
log_source:
|
|
32
|
+
default: "your controlled-substance log (paper log photographed/transcribed, or e-log system)"
|
|
33
|
+
description: Where the controlled-substance usage log is recorded.
|
|
34
|
+
substances_tracked:
|
|
35
|
+
default: "injectable opioids, ketamine, and other Schedule II-V substances kept on site"
|
|
36
|
+
description: Which substances this log covers.
|
|
37
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
38
|
+
notes: >
|
|
39
|
+
Read-only reconciliation check — does not replace your practice's actual
|
|
40
|
+
DEA-compliant logging system, and any discrepancy found should go through your
|
|
41
|
+
normal reporting/investigation process. Assumes an already-exported or
|
|
42
|
+
transcribed log rather than live PHI system access.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
id: hipaa-access-log-audit
|
|
2
|
+
version: 1
|
|
3
|
+
name: HIPAA Chart Access Log Audit
|
|
4
|
+
description: >
|
|
5
|
+
Scans the EHR's chart-access log for high-volume, off-hours, or otherwise
|
|
6
|
+
unusual access patterns and has an agent judge which are worth a closer
|
|
7
|
+
look. Use this if unauthorized or curious chart access (a coworker's
|
|
8
|
+
family member, a local celebrity, an ex-spouse) has ever gone unnoticed
|
|
9
|
+
because nobody was reviewing the access log until an audit or complaint
|
|
10
|
+
forced it.
|
|
11
|
+
category: healthcare
|
|
12
|
+
tags: [healthcare, hipaa, compliance, audit, security]
|
|
13
|
+
schedule: "0 7 * * 1"
|
|
14
|
+
timezone: "America/New_York"
|
|
15
|
+
runner: hybrid
|
|
16
|
+
command: >
|
|
17
|
+
awk -F',' -v threshold="{{daily_access_threshold}}" -v off_start="{{off_hours_start}}" -v off_end="{{off_hours_end}}" '
|
|
18
|
+
NR==1 {next}
|
|
19
|
+
{
|
|
20
|
+
day = substr($3,1,10); hour = substr($3,12,2) + 0;
|
|
21
|
+
key = $1 SUBSEP day;
|
|
22
|
+
count[key]++;
|
|
23
|
+
staffname[key] = $1; dayval[key] = day;
|
|
24
|
+
if (hour >= off_start || hour < off_end) {
|
|
25
|
+
printf "OFF-HOURS ACCESS: %s accessed %s at %s (action: %s)\n", $1, $2, $3, $4;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
END {
|
|
29
|
+
for (k in count) {
|
|
30
|
+
if (count[k] > threshold) {
|
|
31
|
+
printf "HIGH-VOLUME ACCESS: %s accessed %d distinct log entries on %s (threshold %d)\n", staffname[k], count[k], dayval[k], threshold;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
' "{{access_log_csv_path}}"
|
|
36
|
+
prompt: |
|
|
37
|
+
Run the flagged entries from the access-log scan above (high-volume days
|
|
38
|
+
and off-hours access events) through a closer read.
|
|
39
|
+
1. For each flagged staff member/day, look at which patient records were
|
|
40
|
+
touched and whether the access pattern looks consistent with normal
|
|
41
|
+
clinical or front-desk duties for that role (e.g. a nurse pulling
|
|
42
|
+
charts for today's patient panel) versus inconsistent with it (e.g.
|
|
43
|
+
access to a patient not on that staff member's schedule, repeated
|
|
44
|
+
access to the same non-assigned patient, or a name match suggesting a
|
|
45
|
+
coworker, family member, or public figure).
|
|
46
|
+
2. Rank flags from "likely benign, no action" to "recommend compliance
|
|
47
|
+
officer review."
|
|
48
|
+
3. Do not name a possible relationship as fact — describe the pattern
|
|
49
|
+
observed and let a human confirm it.
|
|
50
|
+
4. If nothing stands out beyond routine volume, say so in one line.
|
|
51
|
+
variables:
|
|
52
|
+
access_log_csv_path:
|
|
53
|
+
default: "./chart-access-log.csv"
|
|
54
|
+
description: "Path to a CSV with columns: staff_name,patient_name,access_timestamp (YYYY-MM-DD HH:MM),action (view/edit/print)."
|
|
55
|
+
daily_access_threshold:
|
|
56
|
+
default: 40
|
|
57
|
+
description: Number of chart access events by one staff member in one day that triggers a high-volume flag.
|
|
58
|
+
off_hours_start:
|
|
59
|
+
default: 20
|
|
60
|
+
description: Hour (0-23, local clinic time) after which access counts as off-hours.
|
|
61
|
+
off_hours_end:
|
|
62
|
+
default: 6
|
|
63
|
+
description: Hour (0-23) before which access still counts as off-hours.
|
|
64
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
65
|
+
script_note: >
|
|
66
|
+
The command gives you the raw high-volume and off-hours flags for free, purely
|
|
67
|
+
from counts and timestamps. Only the prompt pass can judge whether a flagged
|
|
68
|
+
pattern looks like inappropriate snooping versus legitimate clinical coverage —
|
|
69
|
+
that judgment call is what the LLM pass adds.
|
|
70
|
+
notes: >
|
|
71
|
+
Assumes an already-exported, de-identified-where-possible access log rather than
|
|
72
|
+
live EHR/PHI system access — export staff name, patient identifier, timestamp,
|
|
73
|
+
and action only. Any confirmed concern should go through your practice's actual
|
|
74
|
+
HIPAA compliance/privacy officer process, not this job.
|