@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,40 @@
|
|
|
1
|
+
id: referral-followup-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Referral Follow-Up Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Flags customer referrals that were asked for or given, and haven't had a
|
|
6
|
+
logged follow-up after a set number of days. Use this if a happy
|
|
7
|
+
customer has ever offered a referral introduction and it fell through
|
|
8
|
+
the cracks because nobody owned the follow-up.
|
|
9
|
+
category: sales
|
|
10
|
+
tags: [sales, referrals, advocacy, follow-up]
|
|
11
|
+
schedule: "0 9 * * 1-5"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v wait_days="{{wait_days}}" '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
$5 == "yes" {next}
|
|
18
|
+
{
|
|
19
|
+
customer=$1; referred_contact=$2; requested_date=$3; owner=$4;
|
|
20
|
+
cmd = "date -d \"" requested_date "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" requested_date "\" +%s 2>/dev/null";
|
|
21
|
+
cmd | getline req_epoch; close(cmd);
|
|
22
|
+
"date +%s" | getline now_epoch; close("date +%s");
|
|
23
|
+
days = (now_epoch - req_epoch) / 86400;
|
|
24
|
+
if (days >= wait_days) {
|
|
25
|
+
printf "NEEDS FOLLOW-UP: %s referred %s (owner: %s) — %d day(s) since requested\n", customer, referred_contact, owner, days;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
' "{{referrals_csv_path}}"
|
|
29
|
+
variables:
|
|
30
|
+
referrals_csv_path:
|
|
31
|
+
default: "./referrals.csv"
|
|
32
|
+
description: "Path to a CSV with columns: customer_name,referred_contact,requested_date,owner,followed_up (yes/no; requested_date is YYYY-MM-DD)."
|
|
33
|
+
wait_days:
|
|
34
|
+
default: 5
|
|
35
|
+
description: Days after a referral is logged before it's flagged as overdue for a follow-up.
|
|
36
|
+
compatible_agents: [generic, claude, codex]
|
|
37
|
+
notes: >
|
|
38
|
+
You maintain referrals.csv yourself (log it when a customer offers or
|
|
39
|
+
makes an introduction, mark followed_up=yes once the owner reaches out)
|
|
40
|
+
— doesn't integrate with any CRM directly.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
id: territory-coverage-gap-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Territory Coverage Gap Check
|
|
4
|
+
description: >
|
|
5
|
+
Flags target accounts that have no assigned rep, or have an assigned
|
|
6
|
+
rep but no logged activity in a long time. Use this if an account has
|
|
7
|
+
ever gone completely unworked for months simply because it fell between
|
|
8
|
+
territory reassignments and nobody noticed the gap.
|
|
9
|
+
category: sales
|
|
10
|
+
tags: [sales, territory, account-coverage, ops]
|
|
11
|
+
schedule: "0 8 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v stale_days="{{stale_days}}" '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
account=$1; rep=$2; last_activity=$3;
|
|
19
|
+
if (rep == "" ) {
|
|
20
|
+
printf "UNASSIGNED: %s has no assigned rep\n", account;
|
|
21
|
+
next;
|
|
22
|
+
}
|
|
23
|
+
cmd = "date -d \"" last_activity "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" last_activity "\" +%s 2>/dev/null";
|
|
24
|
+
cmd | getline last_epoch; close(cmd);
|
|
25
|
+
"date +%s" | getline now_epoch; close("date +%s");
|
|
26
|
+
days = (now_epoch - last_epoch) / 86400;
|
|
27
|
+
if (days >= stale_days) {
|
|
28
|
+
printf "NO ACTIVITY: %s (rep: %s) — %d day(s) since last activity\n", account, rep, days;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
' "{{accounts_csv_path}}"
|
|
32
|
+
variables:
|
|
33
|
+
accounts_csv_path:
|
|
34
|
+
default: "./target-accounts.csv"
|
|
35
|
+
description: "Path to a CSV with columns: account_name,assigned_rep,last_activity_date (YYYY-MM-DD; assigned_rep blank if unowned)."
|
|
36
|
+
stale_days:
|
|
37
|
+
default: 45
|
|
38
|
+
description: Days without logged activity on an assigned account before it's flagged as a coverage gap.
|
|
39
|
+
compatible_agents: [generic, claude, codex]
|
|
40
|
+
notes: >
|
|
41
|
+
You maintain target-accounts.csv yourself (or export it from your CRM's
|
|
42
|
+
account list) — this is a coverage/ownership check, not a deal-level
|
|
43
|
+
staleness check (see `stale-deal-nudge` for that).
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
id: appointment-no-show-rate-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Appointment No-Show Rate Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Calculates the weekly no-show rate from a logged appointment history and
|
|
6
|
+
flags when it crosses a threshold. Use this if the clinic has ever kept
|
|
7
|
+
eating empty exam-room slots without noticing the no-show rate had
|
|
8
|
+
crept up until the schedule was visibly hurting revenue — this tracks
|
|
9
|
+
the aggregate trend, distinct from a per-appointment outreach job.
|
|
10
|
+
category: veterinary
|
|
11
|
+
tags: [veterinary, appointments, no-show, scheduling, metrics]
|
|
12
|
+
schedule: "0 7 * * 1"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
awk -F',' -v cutoff="{{lookback_days}}" -v threshold="{{alert_threshold_pct}}" '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
{
|
|
19
|
+
cmd = "date -d \"" $2 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $2 "\" +%s 2>/dev/null";
|
|
20
|
+
cmd | getline appt_epoch; close(cmd);
|
|
21
|
+
"date +%s" | getline now_epoch; close("date +%s");
|
|
22
|
+
age_days = (now_epoch - appt_epoch) / 86400;
|
|
23
|
+
if (age_days >= 0 && age_days <= cutoff) {
|
|
24
|
+
total++;
|
|
25
|
+
if ($3 == "no-show") noshow++;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
END {
|
|
29
|
+
if (total > 0) {
|
|
30
|
+
rate = (noshow / total) * 100;
|
|
31
|
+
printf "NO-SHOW RATE: %d/%d appointments in last %d day(s) = %.1f%%\n", noshow, total, cutoff, rate;
|
|
32
|
+
if (rate >= threshold) printf "ALERT: no-show rate %.1f%% is at or above the %.1f%% threshold\n", rate, threshold;
|
|
33
|
+
} else {
|
|
34
|
+
print "No appointments found in the lookback window.";
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
' "{{appointments_csv_path}}"
|
|
38
|
+
variables:
|
|
39
|
+
appointments_csv_path:
|
|
40
|
+
default: "./appointments.csv"
|
|
41
|
+
description: "Path to a CSV with columns: pet_name,appointment_date (YYYY-MM-DD),status (arrived/no-show/cancelled)."
|
|
42
|
+
lookback_days:
|
|
43
|
+
default: 7
|
|
44
|
+
description: How many trailing days of appointments to include in the rate calculation.
|
|
45
|
+
alert_threshold_pct:
|
|
46
|
+
default: 10
|
|
47
|
+
description: No-show rate percentage that triggers an alert.
|
|
48
|
+
compatible_agents: [generic, claude, codex]
|
|
49
|
+
notes: Zero-token trend check — pair with a per-appointment outreach job if you also want to contact each no-show individually.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
id: boarding-kennel-capacity-utilization-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Boarding/Kennel Capacity Utilization Check
|
|
4
|
+
description: >
|
|
5
|
+
Compares today's occupied boarding runs/kennels against total capacity
|
|
6
|
+
and warns when utilization crosses a threshold. Use this if the front
|
|
7
|
+
desk has ever accepted a boarding reservation only to discover at
|
|
8
|
+
drop-off that every run was already full — this tracks overall
|
|
9
|
+
occupancy, distinct from boarding-checkout-reminder.yaml which tracks
|
|
10
|
+
individual checkout dates.
|
|
11
|
+
category: veterinary
|
|
12
|
+
tags: [veterinary, boarding, kennel, capacity, occupancy]
|
|
13
|
+
schedule: "0 6 * * *"
|
|
14
|
+
timezone: "UTC"
|
|
15
|
+
runner: shell
|
|
16
|
+
command: >
|
|
17
|
+
today=$(date +%Y-%m-%d);
|
|
18
|
+
occupied=$(awk -F',' -v today="$today" '
|
|
19
|
+
NR==1 {next}
|
|
20
|
+
$3 <= today && $4 >= today {count++}
|
|
21
|
+
END {print count+0}
|
|
22
|
+
' "{{boarding_csv_path}}");
|
|
23
|
+
total="{{total_kennel_capacity}}";
|
|
24
|
+
warn="{{warn_threshold_pct}}";
|
|
25
|
+
pct=$(awk -v o="$occupied" -v t="$total" 'BEGIN { printf "%.1f", (t>0)?(o/t*100):0 }');
|
|
26
|
+
echo "OCCUPANCY: $occupied/$total runs occupied today ($pct%)";
|
|
27
|
+
awk -v pct="$pct" -v warn="$warn" 'BEGIN { if (pct+0 >= warn+0) print "ALERT: occupancy at or above " warn "% — confirm capacity before accepting more reservations." }'
|
|
28
|
+
variables:
|
|
29
|
+
boarding_csv_path:
|
|
30
|
+
default: "./boarding-schedule.csv"
|
|
31
|
+
description: "Path to a CSV with columns: pet_name,owner_name,checkin_date (YYYY-MM-DD),checkout_date (YYYY-MM-DD)."
|
|
32
|
+
total_kennel_capacity:
|
|
33
|
+
default: 20
|
|
34
|
+
description: Total number of boarding runs/kennels available.
|
|
35
|
+
warn_threshold_pct:
|
|
36
|
+
default: 90
|
|
37
|
+
description: Occupancy percentage that triggers a capacity warning.
|
|
38
|
+
compatible_agents: [generic, claude, codex]
|
|
39
|
+
notes: Zero-token. Counts any stay whose check-in/checkout window spans today — adjust the CSV export cadence to keep this current through the day.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
id: client-payment-plan-delinquency-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Client Payment Plan Delinquency Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks active client payment plans (e.g. for a large surgery or
|
|
6
|
+
emergency bill) against their installment schedule and flags anyone
|
|
7
|
+
who's missed a payment. Use this if a payment plan has ever quietly
|
|
8
|
+
gone delinquent for months because nobody was cross-checking installment
|
|
9
|
+
due dates against what actually came in.
|
|
10
|
+
category: veterinary
|
|
11
|
+
tags: [veterinary, billing, payment-plans, collections, clients]
|
|
12
|
+
schedule: "0 9 1,15 * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
today=$(date +%s);
|
|
17
|
+
awk -F',' -v today="$today" -v grace_days="{{grace_period_days}}" '
|
|
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
|
+
overdue_days = (today - due_epoch) / 86400;
|
|
23
|
+
if (overdue_days >= grace_days) {
|
|
24
|
+
printf "DELINQUENT: %s — installment $%s due %s (%d days overdue), plan total $%s\n", $1, $2, $3, overdue_days, $5;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
' "{{payment_plans_csv_path}}"
|
|
28
|
+
variables:
|
|
29
|
+
payment_plans_csv_path:
|
|
30
|
+
default: "./payment-plans.csv"
|
|
31
|
+
description: "Path to a CSV with columns: owner_name,installment_amount,due_date (YYYY-MM-DD),status (paid/unpaid),plan_total_amount."
|
|
32
|
+
grace_period_days:
|
|
33
|
+
default: 5
|
|
34
|
+
description: Days past the due date before a missed installment is flagged as delinquent.
|
|
35
|
+
compatible_agents: [generic, claude, codex]
|
|
36
|
+
notes: Read-only aging check — actual collections outreach and any plan renegotiation should follow your practice's billing policy.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
id: dvm-license-dea-registration-expiry-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Veterinarian License & DEA Registration Expiry Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks each veterinarian's state license and DEA registration expiry
|
|
6
|
+
dates and warns before either lapses. Use this if a vet has ever
|
|
7
|
+
discovered a lapsed DEA registration only when trying to write a
|
|
8
|
+
controlled-substance prescription — distinct from
|
|
9
|
+
license-credential-expiry-check.yaml in healthcare, which tracks
|
|
10
|
+
general staff credentials rather than the DVM license plus DEA
|
|
11
|
+
dual-registration requirement specific to prescribing controlled
|
|
12
|
+
substances for animal patients.
|
|
13
|
+
category: veterinary
|
|
14
|
+
tags: [veterinary, compliance, licensing, dea, staff]
|
|
15
|
+
schedule: "0 8 * * 1"
|
|
16
|
+
timezone: "UTC"
|
|
17
|
+
runner: shell
|
|
18
|
+
command: >
|
|
19
|
+
awk -F',' -v days="{{warn_days_before}}" '
|
|
20
|
+
NR==1 {next}
|
|
21
|
+
{
|
|
22
|
+
cmd = "date -d \"" $3 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $3 "\" +%s 2>/dev/null";
|
|
23
|
+
cmd | getline license_expiry_epoch; close(cmd);
|
|
24
|
+
cmd2 = "date -d \"" $4 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $4 "\" +%s 2>/dev/null";
|
|
25
|
+
cmd2 | getline dea_expiry_epoch; close(cmd2);
|
|
26
|
+
"date +%s" | getline now_epoch; close("date +%s");
|
|
27
|
+
license_days = (license_expiry_epoch - now_epoch) / 86400;
|
|
28
|
+
dea_days = (dea_expiry_epoch - now_epoch) / 86400;
|
|
29
|
+
if (license_days <= days) printf "EXPIRING: %s — state license expires %s (%d days)\n", $1, $3, license_days;
|
|
30
|
+
if (dea_days <= days) printf "EXPIRING: %s — DEA registration expires %s (%d days)\n", $1, $4, dea_days;
|
|
31
|
+
}
|
|
32
|
+
' "{{credential_csv_path}}"
|
|
33
|
+
variables:
|
|
34
|
+
credential_csv_path:
|
|
35
|
+
default: "./dvm-credentials.csv"
|
|
36
|
+
description: "Path to a CSV with columns: veterinarian_name,state,license_expiry_date (YYYY-MM-DD),dea_expiry_date (YYYY-MM-DD)."
|
|
37
|
+
warn_days_before:
|
|
38
|
+
default: 60
|
|
39
|
+
description: How many days before expiry to start warning.
|
|
40
|
+
compatible_agents: [generic, claude, codex]
|
|
41
|
+
notes: Assumes a maintained CSV export from your credentialing/HR system. A lapsed DEA registration blocks legal prescribing of controlled substances — treat DEA warnings as higher priority than license warnings.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
id: microchip-registration-verification-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Microchip Registration Verification Check
|
|
4
|
+
description: >
|
|
5
|
+
Reviews recently implanted microchips and checks whether the chip was
|
|
6
|
+
actually registered with the manufacturer's database under the owner's
|
|
7
|
+
current contact info. Use this if a lost pet has ever been scanned at
|
|
8
|
+
a shelter, chip found, but the registry came back with no owner info
|
|
9
|
+
or an outdated phone number — the chip is only useful if the
|
|
10
|
+
registration behind it is current.
|
|
11
|
+
category: veterinary
|
|
12
|
+
tags: [veterinary, microchip, registration, patients, compliance]
|
|
13
|
+
schedule: "0 9 * * 1"
|
|
14
|
+
timezone: "UTC"
|
|
15
|
+
runner: agent-prompt
|
|
16
|
+
prompt: |
|
|
17
|
+
Review the list of pets microchipped in the last {{lookback_days}} days
|
|
18
|
+
from {{practice_management_system}}: {{unregistered_chips_list}}.
|
|
19
|
+
1. For each chip, note whether the record shows it was registered with
|
|
20
|
+
the manufacturer's registry (e.g. HomeAgain, 24PetWatch, AKC
|
|
21
|
+
Reunite) and, if so, whether the owner contact info on file matches
|
|
22
|
+
the registry.
|
|
23
|
+
2. List any chip implanted but with no registration confirmed, and any
|
|
24
|
+
chip where the owner's phone/email on file has since changed
|
|
25
|
+
without the registry being updated.
|
|
26
|
+
3. Draft a short reminder message for owners with unregistered or
|
|
27
|
+
stale-registration chips, explaining briefly why an unregistered
|
|
28
|
+
chip won't reunite them with a lost pet.
|
|
29
|
+
variables:
|
|
30
|
+
practice_management_system:
|
|
31
|
+
default: "your practice management system"
|
|
32
|
+
description: Name of the system where microchip implant records live.
|
|
33
|
+
unregistered_chips_list:
|
|
34
|
+
default: "the clinic's microchip implant log for the period"
|
|
35
|
+
description: Source of implanted-chip records to check against registry status.
|
|
36
|
+
lookback_days:
|
|
37
|
+
default: 30
|
|
38
|
+
description: How far back to check for recently implanted chips.
|
|
39
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
40
|
+
notes: Draft-only outreach — registry lookups may require checking the specific manufacturer's site or portal, since there's no single universal microchip registry.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
id: patient-record-completeness-audit
|
|
2
|
+
version: 1
|
|
3
|
+
name: Patient (Pet) Record Completeness Audit
|
|
4
|
+
description: >
|
|
5
|
+
Spot-checks a sample of recent patient records for missing required
|
|
6
|
+
fields — weight, vaccine history, allergy flags, microchip number — and
|
|
7
|
+
lists the gaps. Use this if a chart has ever been missing a documented
|
|
8
|
+
drug allergy right when it mattered, because record completeness was
|
|
9
|
+
never actually reviewed, only assumed.
|
|
10
|
+
category: veterinary
|
|
11
|
+
tags: [veterinary, records, compliance, audit, patients]
|
|
12
|
+
schedule: "0 10 * * 3"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: agent-prompt
|
|
15
|
+
prompt: |
|
|
16
|
+
Review a sample of {{sample_size}} recent patient records from
|
|
17
|
+
{{practice_management_system}}, prioritizing patients seen in the last
|
|
18
|
+
{{lookback_days}} days.
|
|
19
|
+
1. For each record, check whether the following are present and current:
|
|
20
|
+
current weight, vaccine history, known allergies (or "none recorded"
|
|
21
|
+
explicitly, not just blank), and microchip number.
|
|
22
|
+
2. List each record with missing fields, grouped by which field is
|
|
23
|
+
missing most often across the sample — that's usually the intake
|
|
24
|
+
step actually breaking down.
|
|
25
|
+
3. Flag any record where an allergy field is blank rather than
|
|
26
|
+
explicitly marked "none" — a blank field is ambiguous and riskier
|
|
27
|
+
than a marked "none."
|
|
28
|
+
4. Suggest one process fix if the same field is missing across most of
|
|
29
|
+
the sample (e.g. "weight isn't being logged at check-in").
|
|
30
|
+
variables:
|
|
31
|
+
practice_management_system:
|
|
32
|
+
default: "your practice management system"
|
|
33
|
+
description: Name of the system where patient records live.
|
|
34
|
+
sample_size:
|
|
35
|
+
default: 20
|
|
36
|
+
description: Number of recent records to sample for the audit.
|
|
37
|
+
lookback_days:
|
|
38
|
+
default: 30
|
|
39
|
+
description: How far back to pull records from for the sample.
|
|
40
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
41
|
+
notes: Sampling audit, not a full chart review — use findings to spot a broken intake step, not to grade individual staff.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
id: pet-medication-refill-backlog-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Pet Medication Refill Request Backlog Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks pending prescription/food refill requests against how long
|
|
6
|
+
they've been waiting and flags anything past a reasonable turnaround.
|
|
7
|
+
Use this if a client has ever run out of a pet's chronic medication
|
|
8
|
+
(e.g. thyroid or seizure medication) because a refill request sat
|
|
9
|
+
unanswered in the queue over a weekend.
|
|
10
|
+
category: veterinary
|
|
11
|
+
tags: [veterinary, prescriptions, refills, patients, medication]
|
|
12
|
+
schedule: "0 9,15 * * 1-5"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
today=$(date +%s);
|
|
17
|
+
awk -F',' -v today="$today" -v hours="{{escalate_after_hours}}" '
|
|
18
|
+
NR==1 {next}
|
|
19
|
+
$4 == "pending" {
|
|
20
|
+
cmd = "date -d \"" $3 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $3 "\" +%s 2>/dev/null";
|
|
21
|
+
cmd | getline requested_epoch; close(cmd);
|
|
22
|
+
age_hours = (today - requested_epoch) / 3600;
|
|
23
|
+
if (age_hours >= hours) {
|
|
24
|
+
printf "REFILL PENDING: %s (%s) — %s requested %s (%d hrs ago)\n", $1, $2, $5, $3, age_hours;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
' "{{refill_requests_csv_path}}"
|
|
28
|
+
variables:
|
|
29
|
+
refill_requests_csv_path:
|
|
30
|
+
default: "./pet-refill-requests.csv"
|
|
31
|
+
description: "Path to a CSV with columns: pet_name,owner_name,requested_date (YYYY-MM-DD),status (pending/approved/denied),medication."
|
|
32
|
+
escalate_after_hours:
|
|
33
|
+
default: 48
|
|
34
|
+
description: Hours a refill request can sit pending before it's flagged.
|
|
35
|
+
compatible_agents: [generic, claude, codex]
|
|
36
|
+
notes: Read-only triage — actual approval of a refill is a clinical decision made by the veterinarian, not this job. Flag chronic/maintenance medications for priority handling.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
id: puppy-kitten-vaccine-series-compliance-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Puppy/Kitten Vaccine Series Compliance Check
|
|
4
|
+
description: >
|
|
5
|
+
Tracks young patients partway through their initial multi-dose vaccine
|
|
6
|
+
series and flags anyone who missed the next dose window. Use this if a
|
|
7
|
+
puppy or kitten has ever fallen off after the first shot in a series,
|
|
8
|
+
leaving them under-protected because nobody tracked series progress
|
|
9
|
+
separately from routine adult booster due dates — distinct from
|
|
10
|
+
pet-vaccine-due-reminder.yaml, which tracks single due-date reminders
|
|
11
|
+
rather than a multi-dose series with its own interval rules.
|
|
12
|
+
category: veterinary
|
|
13
|
+
tags: [veterinary, vaccine, puppy, kitten, patients]
|
|
14
|
+
schedule: "0 8 * * *"
|
|
15
|
+
timezone: "UTC"
|
|
16
|
+
runner: agent-prompt
|
|
17
|
+
prompt: |
|
|
18
|
+
Review the puppy/kitten vaccine series tracking export from
|
|
19
|
+
{{practice_management_system}} for patients currently mid-series
|
|
20
|
+
(i.e. have had at least one dose of a multi-dose series but not the
|
|
21
|
+
final dose).
|
|
22
|
+
1. For each patient, note the series (e.g. DHPP, FVRCP), which dose
|
|
23
|
+
number they're on, the date of their last dose, and the
|
|
24
|
+
recommended interval to the next dose ({{series_interval_weeks}}
|
|
25
|
+
weeks is typical but confirm against the specific vaccine's label).
|
|
26
|
+
2. Flag anyone past their expected next-dose window with no
|
|
27
|
+
appointment booked.
|
|
28
|
+
3. Sort by most overdue first, since a gap in a puppy/kitten series
|
|
29
|
+
can mean restarting the series depending on how long the gap was.
|
|
30
|
+
4. Draft a short reminder message per overdue patient for the owner.
|
|
31
|
+
variables:
|
|
32
|
+
practice_management_system:
|
|
33
|
+
default: "your practice management system"
|
|
34
|
+
description: Name of the system where vaccine series records live.
|
|
35
|
+
series_interval_weeks:
|
|
36
|
+
default: 3
|
|
37
|
+
description: Typical interval in weeks between doses in a puppy/kitten vaccine series (varies by vaccine and product label).
|
|
38
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
39
|
+
notes: Draft-only — always confirm dosing interval and restart rules against the specific vaccine manufacturer's label, since gap tolerance varies by product.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
id: senior-pet-wellness-recall-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Senior Pet Wellness Recall Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Finds senior pets (past a configurable age threshold) who are overdue
|
|
6
|
+
for a semi-annual senior wellness exam or bloodwork panel and drafts
|
|
7
|
+
outreach. Use this if an older pet has ever gone a full year between
|
|
8
|
+
visits when twice-yearly senior screening would have caught a treatable
|
|
9
|
+
condition early — distinct from pet-vaccine-due-reminder.yaml, which
|
|
10
|
+
tracks vaccine due dates rather than age-based wellness screening
|
|
11
|
+
cadence.
|
|
12
|
+
category: veterinary
|
|
13
|
+
tags: [veterinary, senior-pets, wellness, recall, outreach]
|
|
14
|
+
schedule: "0 8 1 * *"
|
|
15
|
+
timezone: "UTC"
|
|
16
|
+
runner: agent-prompt
|
|
17
|
+
prompt: |
|
|
18
|
+
Check {{practice_management_system}} for patients aged
|
|
19
|
+
{{senior_age_threshold_years}} years or older whose last wellness
|
|
20
|
+
exam or senior bloodwork panel was more than
|
|
21
|
+
{{recall_interval_months}} months ago, with no future appointment
|
|
22
|
+
booked.
|
|
23
|
+
1. List each pet, species/breed if known, last visit date, and how
|
|
24
|
+
overdue they are.
|
|
25
|
+
2. Sort by most overdue first.
|
|
26
|
+
3. Draft a short outreach message per pet (or a reusable template)
|
|
27
|
+
inviting the owner to book a senior wellness visit, mentioning
|
|
28
|
+
that early screening catches age-related conditions while they're
|
|
29
|
+
still manageable.
|
|
30
|
+
4. Separately call out any pet more than double the recall interval
|
|
31
|
+
overdue.
|
|
32
|
+
variables:
|
|
33
|
+
practice_management_system:
|
|
34
|
+
default: "your practice management system"
|
|
35
|
+
description: Name of the system where appointment history lives.
|
|
36
|
+
senior_age_threshold_years:
|
|
37
|
+
default: 7
|
|
38
|
+
description: Age in years at which a pet is treated as a senior for recall purposes.
|
|
39
|
+
recall_interval_months:
|
|
40
|
+
default: 6
|
|
41
|
+
description: How many months between senior wellness visits before a pet counts as due.
|
|
42
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
43
|
+
notes: Draft-only — outreach messages should be reviewed by staff before sending. Senior age threshold varies by species/breed; adjust the default per your patient mix.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: spay-neuter-followup-compliance-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Spay/Neuter Post-Op Follow-Up Compliance Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks which spay/neuter patients are due for their post-op recheck
|
|
6
|
+
(incision check, suture removal) and haven't had one logged. Use this
|
|
7
|
+
if a pet has ever developed an incision complication that would have
|
|
8
|
+
been caught at a recheck nobody scheduled or confirmed happened.
|
|
9
|
+
category: veterinary
|
|
10
|
+
tags: [veterinary, surgery, post-op, follow-up, compliance]
|
|
11
|
+
schedule: "0 8 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
today=$(date +%s);
|
|
16
|
+
awk -F',' -v today="$today" -v window="{{recheck_window_days}}" '
|
|
17
|
+
NR==1 {next}
|
|
18
|
+
$4 != "completed" {
|
|
19
|
+
cmd = "date -d \"" $2 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $2 "\" +%s 2>/dev/null";
|
|
20
|
+
cmd | getline surgery_epoch; close(cmd);
|
|
21
|
+
days_since = (today - surgery_epoch) / 86400;
|
|
22
|
+
if (days_since >= window) {
|
|
23
|
+
printf "NO RECHECK LOGGED: %s (%s) — surgery %s, %d days ago, recheck status: %s\n", $1, $3, $2, days_since, $4;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
' "{{spay_neuter_csv_path}}"
|
|
27
|
+
variables:
|
|
28
|
+
spay_neuter_csv_path:
|
|
29
|
+
default: "./spay-neuter-cases.csv"
|
|
30
|
+
description: "Path to a CSV with columns: pet_name,surgery_date (YYYY-MM-DD),owner_name,recheck_status (scheduled/completed/none)."
|
|
31
|
+
recheck_window_days:
|
|
32
|
+
default: 10
|
|
33
|
+
description: Days after surgery by which a post-op recheck should be scheduled or completed.
|
|
34
|
+
compatible_agents: [generic, claude, codex]
|
|
35
|
+
notes: Assumes a maintained export from your practice management system — this is a backstop for cases that fell out of the recheck workflow, not a substitute for discharge instructions.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
id: specialist-referral-followup-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Veterinary Specialist Referral Follow-Up Check
|
|
4
|
+
description: >
|
|
5
|
+
Checks outbound referrals to veterinary specialists (cardiology,
|
|
6
|
+
oncology, orthopedic surgery, etc.) that haven't been scheduled or
|
|
7
|
+
completed within a set window and flags them for follow-up. Use this
|
|
8
|
+
if a pet has ever been referred out for a serious condition and the
|
|
9
|
+
primary clinic never confirmed the owner actually followed through and
|
|
10
|
+
got the specialist appointment.
|
|
11
|
+
category: veterinary
|
|
12
|
+
tags: [veterinary, referrals, specialists, follow-up, care-coordination]
|
|
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 days="{{stale_days}}" '
|
|
19
|
+
NR==1 {next}
|
|
20
|
+
$4 != "" {next}
|
|
21
|
+
{
|
|
22
|
+
cmd = "date -d \"" $3 "\" +%s 2>/dev/null || date -j -f %Y-%m-%d \"" $3 "\" +%s 2>/dev/null";
|
|
23
|
+
cmd | getline sent_epoch; close(cmd);
|
|
24
|
+
pending_days = (today - sent_epoch) / 86400;
|
|
25
|
+
if (pending_days >= days) {
|
|
26
|
+
printf "STALE REFERRAL: %s -> %s (%s) sent %s (%d days pending, no scheduled date)\n", $1, $2, $5, $3, pending_days;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
' "{{referrals_csv_path}}"
|
|
30
|
+
variables:
|
|
31
|
+
referrals_csv_path:
|
|
32
|
+
default: "./specialist-referrals.csv"
|
|
33
|
+
description: "Path to a CSV with columns: pet_name,specialist_name,referral_sent_date (YYYY-MM-DD),scheduled_date (blank if not yet scheduled),specialty."
|
|
34
|
+
stale_days:
|
|
35
|
+
default: 14
|
|
36
|
+
description: Days since a referral was sent, with no scheduled date, before it's flagged.
|
|
37
|
+
compatible_agents: [generic, claude, codex]
|
|
38
|
+
notes: Assumes a maintained CSV export of outbound specialist referrals from your practice management system; adjust columns to match your export.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
id: surgical-schedule-utilization-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Surgical Schedule/OR Utilization Check
|
|
4
|
+
description: >
|
|
5
|
+
Calculates how much of tomorrow's surgical suite time is booked versus
|
|
6
|
+
open, so scheduling can fill gaps or flag overbooking. Use this if the
|
|
7
|
+
OR has ever sat half-empty on a weekday because nobody was watching
|
|
8
|
+
utilization, or double-booked because two procedures landed in the
|
|
9
|
+
same block — distinct from surgery-prep-check.yaml, which checks
|
|
10
|
+
individual case readiness (bloodwork/consent) rather than schedule
|
|
11
|
+
utilization.
|
|
12
|
+
category: veterinary
|
|
13
|
+
tags: [veterinary, surgery, scheduling, utilization, operations]
|
|
14
|
+
schedule: "0 16 * * *"
|
|
15
|
+
timezone: "UTC"
|
|
16
|
+
runner: shell
|
|
17
|
+
command: >
|
|
18
|
+
tomorrow=$(date -d "+1 day" +%Y-%m-%d 2>/dev/null || date -v+1d +%Y-%m-%d);
|
|
19
|
+
awk -F',' -v tomorrow="$tomorrow" -v capacity="{{available_or_minutes}}" '
|
|
20
|
+
NR==1 {next}
|
|
21
|
+
$2 == tomorrow { booked += $3; slots[$4]++ }
|
|
22
|
+
END {
|
|
23
|
+
pct = (capacity > 0) ? (booked / capacity * 100) : 0;
|
|
24
|
+
printf "OR UTILIZATION for %s: %d/%d minutes booked (%.1f%%)\n", tomorrow, booked, capacity, pct;
|
|
25
|
+
for (room in slots) if (slots[room] > 1) printf "POSSIBLE DOUBLE-BOOK: OR %s has %d procedures scheduled\n", room, slots[room];
|
|
26
|
+
}
|
|
27
|
+
' "{{surgery_schedule_csv_path}}"
|
|
28
|
+
variables:
|
|
29
|
+
surgery_schedule_csv_path:
|
|
30
|
+
default: "./surgery-schedule-detailed.csv"
|
|
31
|
+
description: "Path to a CSV with columns: pet_name,surgery_date (YYYY-MM-DD),duration_minutes,or_room."
|
|
32
|
+
available_or_minutes:
|
|
33
|
+
default: 480
|
|
34
|
+
description: Total surgical suite minutes available in a working day (e.g. 8 hours = 480).
|
|
35
|
+
compatible_agents: [generic, claude, codex]
|
|
36
|
+
notes: Zero-token. Flags overlapping bookings in the same OR room as a possible double-book — verify against the actual schedule before reassigning.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
id: vet-staff-ce-credit-tracking
|
|
2
|
+
version: 1
|
|
3
|
+
name: Veterinary Staff CE Credit Tracking
|
|
4
|
+
description: >
|
|
5
|
+
Reviews each veterinarian and licensed vet tech's continuing education
|
|
6
|
+
(CE) credit hours against what their state board requires by license
|
|
7
|
+
renewal, and flags anyone on track to fall short. Use this if a
|
|
8
|
+
provider has ever discovered close to renewal that they were short on
|
|
9
|
+
RACE-approved CE hours needed to keep their license active — distinct
|
|
10
|
+
from dvm-license-dea-registration-expiry-check.yaml, which tracks the
|
|
11
|
+
license's own expiry date rather than the ongoing education
|
|
12
|
+
requirement to renew it.
|
|
13
|
+
category: veterinary
|
|
14
|
+
tags: [veterinary, continuing-education, compliance, licensing, staff]
|
|
15
|
+
schedule: "0 8 1 * *"
|
|
16
|
+
timezone: "UTC"
|
|
17
|
+
runner: agent-prompt
|
|
18
|
+
prompt: |
|
|
19
|
+
Review the CE tracking export from {{ce_tracking_system}} for all
|
|
20
|
+
veterinarians and licensed vet techs.
|
|
21
|
+
1. For each staff member, compare CE hours completed this cycle
|
|
22
|
+
against the hours required by their state board (note: this varies
|
|
23
|
+
by state and by whether they're a DVM or LVT/CVT — flag if you're
|
|
24
|
+
unsure of the requirement rather than guessing).
|
|
25
|
+
2. List anyone whose completed hours, at the current pace, won't reach
|
|
26
|
+
the requirement before their cycle end date.
|
|
27
|
+
3. Sort by soonest cycle end date first.
|
|
28
|
+
4. Suggest which upcoming CE opportunities (conferences, RACE-approved
|
|
29
|
+
online courses) would close the gap, if that information is
|
|
30
|
+
available.
|
|
31
|
+
variables:
|
|
32
|
+
ce_tracking_system:
|
|
33
|
+
default: "your CE tracking spreadsheet or HR/credentialing system"
|
|
34
|
+
description: Where completed CE hours and cycle end dates are recorded.
|
|
35
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
36
|
+
notes: Requires knowing each state board's specific CE hour requirement, which varies — verify against the actual state veterinary board rule before treating a flagged shortfall as final.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
id: conveyor-sortation-downtime-watch
|
|
2
|
+
version: 1
|
|
3
|
+
name: Conveyor & Sortation System Downtime Watch
|
|
4
|
+
description: >
|
|
5
|
+
Checks the material handling system's downtime log for conveyor and
|
|
6
|
+
sortation equipment and flags outages exceeding a target duration, or
|
|
7
|
+
a segment with repeat outages in the period. Use this if a conveyor
|
|
8
|
+
jam has ever backed up the whole outbound line for an hour while
|
|
9
|
+
everyone treated it as a one-off instead of the third time that
|
|
10
|
+
segment failed this week.
|
|
11
|
+
category: warehousing
|
|
12
|
+
tags: [warehousing, conveyor, sortation, downtime, equipment]
|
|
13
|
+
schedule: "0 21 * * *"
|
|
14
|
+
timezone: "UTC"
|
|
15
|
+
runner: shell
|
|
16
|
+
command: >
|
|
17
|
+
awk -F',' -v max_min="{{max_outage_minutes}}" -v repeat="{{repeat_outage_threshold}}" '
|
|
18
|
+
NR==1 {next}
|
|
19
|
+
{
|
|
20
|
+
segment=$1; minutes=$3; count[segment]++; total[segment]+=minutes;
|
|
21
|
+
if (minutes >= max_min) {
|
|
22
|
+
printf "LONG OUTAGE: segment %s — %d min outage (%s), reason: %s\n", segment, minutes, $2, $4;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
END {
|
|
26
|
+
for (s in count) {
|
|
27
|
+
if (count[s] >= repeat) {
|
|
28
|
+
printf "REPEAT OUTAGES: segment %s — %d outage(s) totaling %d min today\n", s, count[s], total[s];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
' "{{conveyor_downtime_csv_path}}"
|
|
33
|
+
variables:
|
|
34
|
+
conveyor_downtime_csv_path:
|
|
35
|
+
default: "./conveyor-downtime-log.csv"
|
|
36
|
+
description: "Path to a CSV with columns: segment_id,started_at,duration_minutes,reason — one row per conveyor/sortation outage."
|
|
37
|
+
max_outage_minutes:
|
|
38
|
+
default: 20
|
|
39
|
+
description: Minutes a single outage can run before it's flagged individually.
|
|
40
|
+
repeat_outage_threshold:
|
|
41
|
+
default: 3
|
|
42
|
+
description: Number of outages on the same segment in one day that triggers a repeat-outage flag.
|
|
43
|
+
compatible_agents: [generic, claude, codex]
|
|
44
|
+
notes: >
|
|
45
|
+
Covers material handling automation (conveyors, sorters) inside the
|
|
46
|
+
warehouse, distinct from manufacturing's production-line-downtime-watch,
|
|
47
|
+
which tracks stoppages on production/assembly lines rather than
|
|
48
|
+
outbound material handling systems.
|