@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,35 @@
|
|
|
1
|
+
id: teacher-certification-expiry-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Teacher Certification Expiry Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Checks teaching certifications and endorsements against their renewal
|
|
6
|
+
dates and flags anything expiring soon. Use this if a teacher has ever
|
|
7
|
+
had their state license lapse mid-year because the renewal deadline
|
|
8
|
+
wasn't on anyone's radar until an audit or licensing-board notice.
|
|
9
|
+
category: education
|
|
10
|
+
tags: [education, staff, certification, compliance]
|
|
11
|
+
schedule: "0 8 1 * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: agent-prompt
|
|
14
|
+
prompt: |
|
|
15
|
+
Review teaching certification/endorsement records from
|
|
16
|
+
{{credentialing_system_hint}} for all instructional staff.
|
|
17
|
+
1. List any certification or endorsement expiring within
|
|
18
|
+
{{warn_days}} days.
|
|
19
|
+
2. Separate staff whose core teaching license is expiring (cannot
|
|
20
|
+
legally teach without it) from those with a secondary endorsement
|
|
21
|
+
lapsing (may still teach, but affects course assignments).
|
|
22
|
+
3. Note any continuing-education or renewal-credit requirements that
|
|
23
|
+
still need to be completed before the deadline, if that data is
|
|
24
|
+
available.
|
|
25
|
+
4. Summarize so HR/administration can start the renewal process with
|
|
26
|
+
enough lead time.
|
|
27
|
+
variables:
|
|
28
|
+
credentialing_system_hint:
|
|
29
|
+
default: "your state licensing portal or HR credentialing system"
|
|
30
|
+
description: Where certification/endorsement records and expiration dates live.
|
|
31
|
+
warn_days:
|
|
32
|
+
default: 60
|
|
33
|
+
description: Days before expiration to start warning — certification renewals often take longer than typical HR paperwork.
|
|
34
|
+
compatible_agents: [claude, codex, hermes, openclaw, generic]
|
|
35
|
+
notes: Distinct from general HR compliance training tracking — this is specifically about the state teaching license/endorsements required to legally hold a classroom assignment.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
id: textbook-inventory-shortage-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Textbook Inventory Shortage Check
|
|
4
|
+
description: >
|
|
5
|
+
Compares textbook/material stock counts against enrolled class sizes and
|
|
6
|
+
flags courses that are short. Use this if a class has ever started the
|
|
7
|
+
term with more students than available textbooks because nobody checked
|
|
8
|
+
inventory against the roster ahead of time.
|
|
9
|
+
category: education
|
|
10
|
+
tags: [education, inventory, textbooks, materials]
|
|
11
|
+
schedule: "0 8 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
awk -F',' -v buffer="{{buffer_copies}}" '
|
|
16
|
+
NR==1 {next}
|
|
17
|
+
{
|
|
18
|
+
needed = $2 + buffer;
|
|
19
|
+
if ($3 < needed) {
|
|
20
|
+
printf "SHORTAGE: %s — %d in stock, %d needed (%d enrolled + %d buffer)\n", $1, $3, needed, $2, buffer;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
' "{{inventory_csv_path}}"
|
|
24
|
+
variables:
|
|
25
|
+
inventory_csv_path:
|
|
26
|
+
default: "./textbook-inventory.csv"
|
|
27
|
+
description: "Path to a CSV with columns: course_title,enrolled_count,copies_in_stock."
|
|
28
|
+
buffer_copies:
|
|
29
|
+
default: 3
|
|
30
|
+
description: Extra copies to keep on hand beyond the enrolled count.
|
|
31
|
+
compatible_agents: [generic, claude, codex]
|
|
32
|
+
notes: Run this before the start of term and again a few weeks in, since enrollment (and thus the shortfall) can shift after add/drop.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
id: accounts-payable-aging-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Accounts Payable Aging Check
|
|
4
|
+
description: >
|
|
5
|
+
Buckets bills you owe (not invoices you've sent) into aging ranges —
|
|
6
|
+
current, 30, 60, 90+ days past due — so nothing quietly slips into a
|
|
7
|
+
late-fee zone. Use this if you or your business pay vendors on terms
|
|
8
|
+
and want a standing view of what's coming due versus already overdue.
|
|
9
|
+
category: finance
|
|
10
|
+
tags: [accounts-payable, bills, aging, finance]
|
|
11
|
+
schedule: "0 8 * * *"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
file={{payables_file}};
|
|
16
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
17
|
+
today=$(date +%s);
|
|
18
|
+
tail -n +2 "$file" | while IFS=, read -r vendor invoice_id amount due paid; do
|
|
19
|
+
[ "$paid" = "yes" ] && continue;
|
|
20
|
+
due_epoch=$(date -j -f %Y-%m-%d "$due" +%s 2>/dev/null || date -d "$due" +%s);
|
|
21
|
+
days=$(( (today-due_epoch)/86400 ));
|
|
22
|
+
if [ "$days" -le 0 ]; then bucket="current";
|
|
23
|
+
elif [ "$days" -le 30 ]; then bucket="1-30 days";
|
|
24
|
+
elif [ "$days" -le 60 ]; then bucket="31-60 days";
|
|
25
|
+
elif [ "$days" -le 90 ]; then bucket="61-90 days";
|
|
26
|
+
else bucket="90+ days"; fi;
|
|
27
|
+
echo "$bucket | $vendor invoice $invoice_id — \$$amount (due $due)";
|
|
28
|
+
done | sort
|
|
29
|
+
variables:
|
|
30
|
+
payables_file:
|
|
31
|
+
default: "./accounts-payable.csv"
|
|
32
|
+
description: >
|
|
33
|
+
CSV with header "vendor,invoice_id,amount,due_date,paid" (due_date
|
|
34
|
+
is YYYY-MM-DD, paid is yes/no) — bills you owe, not invoices you've
|
|
35
|
+
sent (see invoice-overdue-check for receivables).
|
|
36
|
+
compatible_agents: [generic, claude, codex]
|
|
37
|
+
notes: >
|
|
38
|
+
Zero-token. You maintain accounts-payable.csv yourself (mark paid=yes
|
|
39
|
+
once settled) — this is the payables mirror of invoice-overdue-check,
|
|
40
|
+
which tracks receivables instead.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
id: bank-statement-reconciliation-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Bank Statement Reconciliation Check
|
|
4
|
+
description: >
|
|
5
|
+
Compares your internal ledger against a bank/card statement export and
|
|
6
|
+
flags transactions present in one but not the other, plus any balance
|
|
7
|
+
mismatch. Use this if your books have ever quietly drifted from what
|
|
8
|
+
the bank actually shows and you only found out at tax time.
|
|
9
|
+
category: finance
|
|
10
|
+
tags: [reconciliation, bookkeeping, bank, finance]
|
|
11
|
+
schedule: "0 9 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
ledger={{ledger_csv}}; statement={{statement_csv}};
|
|
16
|
+
[ -f "$ledger" ] || { echo "ERROR: $ledger not found"; exit 1; };
|
|
17
|
+
[ -f "$statement" ] || { echo "ERROR: $statement not found"; exit 1; };
|
|
18
|
+
echo "-- in statement but missing from ledger --";
|
|
19
|
+
tail -n +2 "$statement" | cut -d, -f1,3 | sort > /tmp/_stmt_ids.$$;
|
|
20
|
+
tail -n +2 "$ledger" | cut -d, -f1,3 | sort > /tmp/_ledger_ids.$$;
|
|
21
|
+
comm -23 /tmp/_stmt_ids.$$ /tmp/_ledger_ids.$$;
|
|
22
|
+
echo "-- in ledger but missing from statement --";
|
|
23
|
+
comm -13 /tmp/_stmt_ids.$$ /tmp/_ledger_ids.$$;
|
|
24
|
+
rm -f /tmp/_stmt_ids.$$ /tmp/_ledger_ids.$$
|
|
25
|
+
variables:
|
|
26
|
+
ledger_csv:
|
|
27
|
+
default: "./ledger.csv"
|
|
28
|
+
description: >
|
|
29
|
+
CSV with header "date,description,amount" — your internal
|
|
30
|
+
bookkeeping record of transactions.
|
|
31
|
+
statement_csv:
|
|
32
|
+
default: "./bank-statement.csv"
|
|
33
|
+
description: >
|
|
34
|
+
CSV with header "date,description,amount" exported from your bank
|
|
35
|
+
or card provider for the same period.
|
|
36
|
+
compatible_agents: [generic, claude, codex]
|
|
37
|
+
notes: >
|
|
38
|
+
Zero-token, matches on date+amount only (description text often differs
|
|
39
|
+
between ledger and bank export) — near-matches on rounding or
|
|
40
|
+
same-day-different-amount won't be caught, review flagged rows by hand.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
id: budget-vs-actual-variance-report
|
|
2
|
+
version: 1
|
|
3
|
+
name: Budget vs. Actual Variance Report
|
|
4
|
+
description: >
|
|
5
|
+
Compares budgeted vs. actual spend across every category or department
|
|
6
|
+
in one pass and reports the percentage variance for each, not just a
|
|
7
|
+
single category's pass/fail. Use this if you need a monthly variance
|
|
8
|
+
report across a whole budget (department, project, or household), which
|
|
9
|
+
is different from budget-overspend-check watching one category's limit.
|
|
10
|
+
category: finance
|
|
11
|
+
tags: [budget, variance, finance, reporting]
|
|
12
|
+
schedule: "0 9 2 * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
file={{budget_file}}; threshold={{variance_threshold_pct}};
|
|
17
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
18
|
+
tail -n +2 "$file" | while IFS=, read -r category budgeted actual; do
|
|
19
|
+
variance=$(awk -v b="$budgeted" -v a="$actual" 'BEGIN{if(b==0){print "NA"} else {printf "%.1f", ((a-b)/b)*100}}');
|
|
20
|
+
if [ "$variance" = "NA" ]; then echo "$category: budget \$0, actual \$$actual (no budget set)"; continue; fi;
|
|
21
|
+
flag="";
|
|
22
|
+
if awk -v v="$variance" -v t="$threshold" 'BEGIN{exit !(v+0 > t || v+0 < -t)}'; then flag=" <-- OVER THRESHOLD"; fi;
|
|
23
|
+
echo "$category: budget \$$budgeted, actual \$$actual, variance ${variance}%$flag";
|
|
24
|
+
done
|
|
25
|
+
variables:
|
|
26
|
+
budget_file:
|
|
27
|
+
default: "./budget-vs-actual.csv"
|
|
28
|
+
description: >
|
|
29
|
+
CSV with header "category,budgeted,actual" — one row per
|
|
30
|
+
category/department for the current period.
|
|
31
|
+
variance_threshold_pct:
|
|
32
|
+
default: 10
|
|
33
|
+
description: Percentage-point variance (over or under) that triggers a flag.
|
|
34
|
+
compatible_agents: [generic, claude, codex]
|
|
35
|
+
notes: >
|
|
36
|
+
Zero-token. Distinct from budget-overspend-check, which watches a single
|
|
37
|
+
category against one hard dollar limit day-to-day — this one is a
|
|
38
|
+
periodic multi-category variance report across an entire budget.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
id: contractor-1099-threshold-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Contractor 1099 Threshold Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Tracks year-to-date payments per contractor and flags anyone
|
|
6
|
+
approaching or past the tax reporting threshold that triggers a 1099.
|
|
7
|
+
Use this if you pay freelancers or contractors and don't want to
|
|
8
|
+
discover in January that you're missing W-9s for someone you owe a
|
|
9
|
+
filing for.
|
|
10
|
+
category: finance
|
|
11
|
+
tags: ["1099", contractors, tax, finance]
|
|
12
|
+
schedule: "0 9 1 * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
file={{payments_file}}; threshold={{reporting_threshold}}; warn_pct={{warn_pct}};
|
|
17
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
18
|
+
year=$(date +%Y);
|
|
19
|
+
awk -F, -v year="$year" -v threshold="$threshold" -v warnpct="$warn_pct" '
|
|
20
|
+
NR>1 && $3 ~ "^"year"-" { total[$1] += $2 }
|
|
21
|
+
END {
|
|
22
|
+
for (contractor in total) {
|
|
23
|
+
pct = (total[contractor] / threshold) * 100;
|
|
24
|
+
if (total[contractor] >= threshold) print "OVER THRESHOLD: " contractor " paid $" total[contractor] " this year (1099 required)";
|
|
25
|
+
else if (pct >= warnpct) printf "APPROACHING: %s paid $%.2f this year (%.0f%% of $%.0f threshold)\n", contractor, total[contractor], pct, threshold;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
' "$file"
|
|
29
|
+
variables:
|
|
30
|
+
payments_file:
|
|
31
|
+
default: "./contractor-payments.csv"
|
|
32
|
+
description: "CSV with header \"contractor,amount,date\" (date is YYYY-MM-DD), one row per payment."
|
|
33
|
+
reporting_threshold:
|
|
34
|
+
default: 600
|
|
35
|
+
description: Cumulative annual payment amount that triggers a 1099 filing requirement (US default is $600; adjust for your jurisdiction/year).
|
|
36
|
+
warn_pct:
|
|
37
|
+
default: 75
|
|
38
|
+
description: Percentage of the threshold at which to start warning ahead of a required filing.
|
|
39
|
+
compatible_agents: [generic, claude, codex]
|
|
40
|
+
notes: >
|
|
41
|
+
Zero-token. US-centric default threshold — verify current IRS rules
|
|
42
|
+
and any state-specific thresholds for your situation; this doesn't
|
|
43
|
+
file anything, it only flags who needs a W-9/1099.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
id: credit-utilization-watch
|
|
2
|
+
version: 1
|
|
3
|
+
name: Credit Utilization Watch
|
|
4
|
+
description: >
|
|
5
|
+
Checks the balance-to-limit ratio on a credit card or line of credit
|
|
6
|
+
and warns when utilization crosses a threshold. Use this if you want
|
|
7
|
+
to protect your credit score or stay within a business line of
|
|
8
|
+
credit's comfortable operating range, rather than finding out only
|
|
9
|
+
when a statement arrives.
|
|
10
|
+
category: finance
|
|
11
|
+
tags: [credit, utilization, finance]
|
|
12
|
+
schedule: "0 8 * * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
balance={{current_balance}}; limit={{credit_limit}}; threshold={{warn_pct}};
|
|
17
|
+
util=$(awk -v b="$balance" -v l="$limit" 'BEGIN{if(l==0){print 0} else {printf "%.1f", (b/l)*100}}');
|
|
18
|
+
if awk -v u="$util" -v t="$threshold" 'BEGIN{exit !(u+0 >= t)}'; then
|
|
19
|
+
echo "WARNING: {{account_name}} utilization at ${util}% (\$$balance of \$$limit) — over ${threshold}% threshold";
|
|
20
|
+
else
|
|
21
|
+
echo "OK: {{account_name}} utilization at ${util}% (\$$balance of \$$limit)";
|
|
22
|
+
fi
|
|
23
|
+
variables:
|
|
24
|
+
account_name:
|
|
25
|
+
default: "business line of credit"
|
|
26
|
+
description: Label for the account being checked.
|
|
27
|
+
current_balance:
|
|
28
|
+
default: 0
|
|
29
|
+
description: Current outstanding balance — update this manually or via your bank export before each run.
|
|
30
|
+
credit_limit:
|
|
31
|
+
default: 10000
|
|
32
|
+
description: Total credit limit on the account.
|
|
33
|
+
warn_pct:
|
|
34
|
+
default: 30
|
|
35
|
+
description: Utilization percentage at or above which to warn (30% is a common credit-score-friendly ceiling).
|
|
36
|
+
compatible_agents: [generic, claude, codex]
|
|
37
|
+
notes: >
|
|
38
|
+
Zero-token. current_balance is a manual input (or piped in from a
|
|
39
|
+
balance-export script) — this job doesn't fetch live balances from any
|
|
40
|
+
bank API itself.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
id: duplicate-payment-detection
|
|
2
|
+
version: 1
|
|
3
|
+
name: Duplicate Payment Detection
|
|
4
|
+
description: >
|
|
5
|
+
Scans a payments/disbursements log for the same vendor and invoice
|
|
6
|
+
number (or same vendor/amount/date) paid more than once. Use this if
|
|
7
|
+
a bill has ever gotten paid twice because it was submitted through two
|
|
8
|
+
channels or reprocessed after a system hiccup.
|
|
9
|
+
category: finance
|
|
10
|
+
tags: [duplicate-payment, accounts-payable, fraud-prevention, finance]
|
|
11
|
+
schedule: "0 9 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
file={{payments_file}};
|
|
16
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
17
|
+
echo "-- duplicate vendor+invoice_id --";
|
|
18
|
+
tail -n +2 "$file" | awk -F, '{key=$1"|"$2; count[key]++; rows[key]=rows[key]"\n " $0} END{for (k in count) if (count[k]>1) print "DUPLICATE: " k " paid " count[k] " times:" rows[k]}';
|
|
19
|
+
echo "-- same vendor+amount within {{same_amount_window_days}} day(s) --";
|
|
20
|
+
tail -n +2 "$file" | sort -t, -k1,1 -k4,4 | awk -F, -v win="{{same_amount_window_days}}" '
|
|
21
|
+
{
|
|
22
|
+
cmd="date -d \"" $4 "\" +%s 2>/dev/null || date -jf \"%Y-%m-%d\" \"" $4 "\" +%s";
|
|
23
|
+
cmd | getline ts; close(cmd);
|
|
24
|
+
key=$1"|"$3;
|
|
25
|
+
if (key == prevkey && (ts - prevts) <= win*86400) print "POSSIBLE DUPLICATE: " $1 " $" $3 " paid on " prevdate " and again on " $4;
|
|
26
|
+
prevkey=key; prevts=ts; prevdate=$4;
|
|
27
|
+
}
|
|
28
|
+
'
|
|
29
|
+
variables:
|
|
30
|
+
payments_file:
|
|
31
|
+
default: "./payments-log.csv"
|
|
32
|
+
description: >
|
|
33
|
+
CSV with header "vendor,invoice_id,amount,date" (date is
|
|
34
|
+
YYYY-MM-DD) — one row per outgoing payment made.
|
|
35
|
+
same_amount_window_days:
|
|
36
|
+
default: 14
|
|
37
|
+
description: Flag same vendor+amount payments made within this many days of each other, even without a matching invoice_id.
|
|
38
|
+
compatible_agents: [generic, claude, codex]
|
|
39
|
+
notes: >
|
|
40
|
+
Zero-token. Exact-match check on vendor+invoice_id catches clear
|
|
41
|
+
duplicates; the amount+window check is a heuristic for reprocessed
|
|
42
|
+
payments without a shared invoice_id — review flagged pairs before
|
|
43
|
+
assuming either is a real duplicate.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
id: expense-report-compliance-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Expense Report Compliance Check
|
|
4
|
+
description: >
|
|
5
|
+
Scans submitted expense report line items for missing receipts or
|
|
6
|
+
amounts over your policy limit for that category. Use this if
|
|
7
|
+
reimbursements have ever gone out the door with a missing receipt or a
|
|
8
|
+
suspiciously large "meals" line nobody double-checked.
|
|
9
|
+
category: finance
|
|
10
|
+
tags: [expenses, compliance, policy, finance]
|
|
11
|
+
schedule: "0 9 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
file={{expenses_file}};
|
|
16
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
17
|
+
tail -n +2 "$file" | while IFS=, read -r employee category amount has_receipt date; do
|
|
18
|
+
flagged="";
|
|
19
|
+
if [ "$has_receipt" != "yes" ] && awk "BEGIN{exit !($amount > {{receipt_required_over}})}"; then
|
|
20
|
+
flagged="$flagged missing-receipt";
|
|
21
|
+
fi;
|
|
22
|
+
limit=$(awk -F, -v cat="$category" '$1==cat{print $2}' {{category_limits_file}} 2>/dev/null);
|
|
23
|
+
if [ -n "$limit" ] && awk "BEGIN{exit !($amount > $limit)}"; then
|
|
24
|
+
flagged="$flagged over-limit(\$$limit)";
|
|
25
|
+
fi;
|
|
26
|
+
if [ -n "$flagged" ]; then echo "FLAGGED: $employee — $category \$$amount on $date —$flagged"; fi;
|
|
27
|
+
done
|
|
28
|
+
variables:
|
|
29
|
+
expenses_file:
|
|
30
|
+
default: "./expense-reports.csv"
|
|
31
|
+
description: >
|
|
32
|
+
CSV with header "employee,category,amount,has_receipt,date"
|
|
33
|
+
(has_receipt is yes/no, date is YYYY-MM-DD).
|
|
34
|
+
category_limits_file:
|
|
35
|
+
default: "./expense-category-limits.csv"
|
|
36
|
+
description: >
|
|
37
|
+
CSV with header "category,limit" giving the max allowed amount per
|
|
38
|
+
category; categories not listed are treated as unlimited.
|
|
39
|
+
receipt_required_over:
|
|
40
|
+
default: 25
|
|
41
|
+
description: Require a receipt for any expense above this amount.
|
|
42
|
+
compatible_agents: [generic, claude, codex]
|
|
43
|
+
notes: >
|
|
44
|
+
Zero-token. You export expense-reports.csv from whatever expense tool
|
|
45
|
+
you use (or fill it in by hand) — this doesn't connect to a live expense
|
|
46
|
+
platform.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
id: late-fee-interest-risk-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Late Fee & Interest Accrual Risk Check
|
|
4
|
+
description: >
|
|
5
|
+
Estimates the dollar cost of leaving an overdue bill unpaid by
|
|
6
|
+
projecting late fees and accrued interest against its grace period.
|
|
7
|
+
Use this if you want to know what an overdue balance is actually
|
|
8
|
+
costing you, not just that it's overdue (see accounts-payable-aging-check
|
|
9
|
+
for the plain aging list).
|
|
10
|
+
category: finance
|
|
11
|
+
tags: [late-fees, interest, accounts-payable, finance]
|
|
12
|
+
schedule: "0 9 * * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
file={{payables_file}};
|
|
17
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
18
|
+
today=$(date +%s);
|
|
19
|
+
tail -n +2 "$file" | while IFS=, read -r vendor amount due grace_days annual_rate_pct flat_fee paid; do
|
|
20
|
+
[ "$paid" = "yes" ] && continue;
|
|
21
|
+
due_epoch=$(date -j -f %Y-%m-%d "$due" +%s 2>/dev/null || date -d "$due" +%s);
|
|
22
|
+
days_over=$(( (today-due_epoch)/86400 ));
|
|
23
|
+
days_over_grace=$(( days_over - grace_days ));
|
|
24
|
+
if [ "$days_over_grace" -gt 0 ]; then
|
|
25
|
+
accrued=$(awk -v p="$amount" -v r="$annual_rate_pct" -v d="$days_over_grace" 'BEGIN{printf "%.2f", p*(r/100/365)*d}');
|
|
26
|
+
total_risk=$(awk -v a="$accrued" -v f="$flat_fee" 'BEGIN{printf "%.2f", a+f}');
|
|
27
|
+
echo "RISK: $vendor — \$$amount overdue, $days_over_grace day(s) past grace period, est. accrued cost so far: \$$total_risk (fee \$$flat_fee + interest \$$accrued)";
|
|
28
|
+
fi;
|
|
29
|
+
done
|
|
30
|
+
variables:
|
|
31
|
+
payables_file:
|
|
32
|
+
default: "./late-fee-risk.csv"
|
|
33
|
+
description: >
|
|
34
|
+
CSV with header
|
|
35
|
+
"vendor,amount,due_date,grace_days,annual_rate_pct,flat_fee,paid"
|
|
36
|
+
— grace_days is the interest-free window after due_date,
|
|
37
|
+
annual_rate_pct is the penalty APR once grace expires, flat_fee is
|
|
38
|
+
a one-time late fee.
|
|
39
|
+
compatible_agents: [generic, claude, codex]
|
|
40
|
+
notes: >
|
|
41
|
+
Zero-token, simple daily-accrual estimate (principal x rate/365 x
|
|
42
|
+
days) — not a substitute for the vendor/creditor's actual fee schedule,
|
|
43
|
+
which may compound or cap differently.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
id: loan-covenant-compliance-check
|
|
2
|
+
version: 1
|
|
3
|
+
name: Loan Covenant Compliance Check
|
|
4
|
+
description: >
|
|
5
|
+
Computes financial ratios required by a loan agreement (e.g. debt
|
|
6
|
+
service coverage, current ratio) from your latest financials and flags
|
|
7
|
+
any that breach the covenant threshold. Use this if a lender requires
|
|
8
|
+
you to maintain certain ratios and a breach could trigger default or a
|
|
9
|
+
call on the loan.
|
|
10
|
+
category: finance
|
|
11
|
+
tags: [loan, covenants, ratios, finance]
|
|
12
|
+
schedule: "0 9 1 * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
file={{financials_file}};
|
|
17
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
18
|
+
tail -n +2 "$file" | while IFS=, read -r ratio_name value min_required max_allowed; do
|
|
19
|
+
breach="";
|
|
20
|
+
if [ -n "$min_required" ] && awk -v v="$value" -v m="$min_required" 'BEGIN{exit !(v+0 < m+0)}'; then breach="below minimum ($min_required)"; fi;
|
|
21
|
+
if [ -n "$max_allowed" ] && awk -v v="$value" -v m="$max_allowed" 'BEGIN{exit !(v+0 > m+0)}'; then breach="above maximum ($max_allowed)"; fi;
|
|
22
|
+
if [ -n "$breach" ]; then echo "COVENANT BREACH: $ratio_name = $value — $breach"; else echo "OK: $ratio_name = $value"; fi;
|
|
23
|
+
done
|
|
24
|
+
variables:
|
|
25
|
+
financials_file:
|
|
26
|
+
default: "./loan-covenant-ratios.csv"
|
|
27
|
+
description: >
|
|
28
|
+
CSV with header "ratio_name,value,min_required,max_allowed" — one
|
|
29
|
+
row per covenant (leave min_required or max_allowed blank if that
|
|
30
|
+
side isn't part of the covenant). You compute/update the current
|
|
31
|
+
value each period from your financial statements.
|
|
32
|
+
compatible_agents: [generic, claude, codex]
|
|
33
|
+
notes: >
|
|
34
|
+
Zero-token, pure comparison. You calculate each ratio's current value
|
|
35
|
+
yourself (e.g. DSCR, current ratio, debt-to-equity) from your
|
|
36
|
+
financial statements — this doesn't derive ratios from raw
|
|
37
|
+
balance-sheet/income-statement data.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
id: month-end-close-checklist-tracker
|
|
2
|
+
version: 1
|
|
3
|
+
name: Month-End Close Checklist Tracker
|
|
4
|
+
description: >
|
|
5
|
+
Tracks a list of month-end financial close tasks (reconcile bank,
|
|
6
|
+
post accruals, review AR/AP, close subledgers, etc.) and flags
|
|
7
|
+
incomplete items as the close deadline approaches. Use this if your
|
|
8
|
+
monthly close has ever slipped a step because nobody had a single
|
|
9
|
+
place tracking whether every task actually got done.
|
|
10
|
+
category: finance
|
|
11
|
+
tags: [month-end-close, checklist, bookkeeping, finance]
|
|
12
|
+
schedule: "0 9 25 * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
file={{checklist_file}}; close_day={{close_day_of_month}};
|
|
17
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
18
|
+
today=$(date +%d);
|
|
19
|
+
incomplete=$(tail -n +2 "$file" | awk -F, '$2 != "done" {print}');
|
|
20
|
+
if [ -z "$incomplete" ]; then
|
|
21
|
+
echo "All month-end close tasks marked done.";
|
|
22
|
+
else
|
|
23
|
+
echo "INCOMPLETE close tasks (target close day: $close_day, today is day $today):";
|
|
24
|
+
echo "$incomplete" | awk -F, '{print " - " $1 " (" $2 ")"}';
|
|
25
|
+
fi
|
|
26
|
+
variables:
|
|
27
|
+
checklist_file:
|
|
28
|
+
default: "./month-end-close-checklist.csv"
|
|
29
|
+
description: >
|
|
30
|
+
CSV with header "task,status" (status is done/pending) — reset
|
|
31
|
+
status to pending for each task at the start of a new month.
|
|
32
|
+
close_day_of_month:
|
|
33
|
+
default: 5
|
|
34
|
+
description: Target day of the following month by which close should be finished (informational, shown in output).
|
|
35
|
+
compatible_agents: [generic, claude, codex]
|
|
36
|
+
notes: >
|
|
37
|
+
Zero-token. You maintain the checklist file and mark tasks done as you
|
|
38
|
+
complete them — this doesn't verify the underlying accounting work
|
|
39
|
+
itself, just whether each task is checked off.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
id: multi-account-cash-position-rollup
|
|
2
|
+
version: 1
|
|
3
|
+
name: Multi-Account Cash Position Rollup
|
|
4
|
+
description: >
|
|
5
|
+
Sums balances across multiple bank/cash accounts into one total
|
|
6
|
+
position and flags if the total or any single account drops below a
|
|
7
|
+
minimum threshold. Use this if cash is spread across several accounts
|
|
8
|
+
or entities and you want a single low-balance tripwire instead of
|
|
9
|
+
checking each account separately.
|
|
10
|
+
category: finance
|
|
11
|
+
tags: [cash, balances, multi-account, finance]
|
|
12
|
+
schedule: "0 8 * * *"
|
|
13
|
+
timezone: "UTC"
|
|
14
|
+
runner: shell
|
|
15
|
+
command: >
|
|
16
|
+
file={{balances_file}}; min_total={{min_total_balance}}; min_account={{min_per_account_balance}};
|
|
17
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
18
|
+
total=0;
|
|
19
|
+
tail -n +2 "$file" | while IFS=, read -r account balance; do
|
|
20
|
+
if awk -v b="$balance" -v m="$min_account" 'BEGIN{exit !(b+0 < m+0)}'; then
|
|
21
|
+
echo "LOW: $account balance \$$balance is below per-account minimum \$$min_account";
|
|
22
|
+
fi;
|
|
23
|
+
done;
|
|
24
|
+
total=$(tail -n +2 "$file" | awk -F, '{sum+=$2} END{printf "%.2f", sum}');
|
|
25
|
+
echo "TOTAL CASH POSITION: \$$total across $(tail -n +2 "$file" | wc -l | tr -d ' ') accounts";
|
|
26
|
+
if awk -v t="$total" -v m="$min_total" 'BEGIN{exit !(t+0 < m+0)}'; then
|
|
27
|
+
echo "WARNING: total cash position \$$total is below minimum \$$min_total";
|
|
28
|
+
fi
|
|
29
|
+
variables:
|
|
30
|
+
balances_file:
|
|
31
|
+
default: "./account-balances.csv"
|
|
32
|
+
description: >
|
|
33
|
+
CSV with header "account,balance" — one row per account/entity,
|
|
34
|
+
updated manually or via bank export before each run.
|
|
35
|
+
min_total_balance:
|
|
36
|
+
default: 5000
|
|
37
|
+
description: Minimum acceptable combined cash position across all accounts.
|
|
38
|
+
min_per_account_balance:
|
|
39
|
+
default: 500
|
|
40
|
+
description: Minimum acceptable balance in any single account.
|
|
41
|
+
compatible_agents: [generic, claude, codex]
|
|
42
|
+
notes: >
|
|
43
|
+
Zero-token. balances are a manual/exported snapshot, not a live bank
|
|
44
|
+
feed — refresh account-balances.csv before each run for accurate
|
|
45
|
+
results.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
id: petty-cash-float-reconciliation
|
|
2
|
+
version: 1
|
|
3
|
+
name: Petty Cash Float Reconciliation
|
|
4
|
+
description: >
|
|
5
|
+
Checks that a petty cash log's starting float minus logged expenses
|
|
6
|
+
plus replenishments matches the expected remaining balance, and flags
|
|
7
|
+
any variance. Use this if a physical cash box or float has ever come
|
|
8
|
+
up short (or over) and nobody could explain why.
|
|
9
|
+
category: finance
|
|
10
|
+
tags: [petty-cash, reconciliation, cash, finance]
|
|
11
|
+
schedule: "0 9 * * 1"
|
|
12
|
+
timezone: "UTC"
|
|
13
|
+
runner: shell
|
|
14
|
+
command: >
|
|
15
|
+
file={{petty_cash_log}}; expected_on_hand={{expected_on_hand}}; tolerance={{tolerance}};
|
|
16
|
+
[ -f "$file" ] || { echo "ERROR: $file not found"; exit 1; };
|
|
17
|
+
starting=$(head -2 "$file" | tail -1 | cut -d, -f2);
|
|
18
|
+
net=$(awk -F, 'NR>1 { if ($3=="expense") sum -= $2; else if ($3=="replenishment") sum += $2 } END {print sum+0}' "$file");
|
|
19
|
+
computed=$(awk -v s="$starting" -v n="$net" 'BEGIN{printf "%.2f", s+n}');
|
|
20
|
+
variance=$(awk -v c="$computed" -v e="$expected_on_hand" 'BEGIN{printf "%.2f", c-e}');
|
|
21
|
+
if awk -v v="$variance" -v t="$tolerance" 'BEGIN{v=(v<0?-v:v); exit !(v > t)}'; then
|
|
22
|
+
echo "VARIANCE: computed balance \$$computed vs. counted on-hand \$$expected_on_hand (diff \$$variance) — investigate";
|
|
23
|
+
else
|
|
24
|
+
echo "OK: computed balance \$$computed matches counted on-hand \$$expected_on_hand within \$$tolerance";
|
|
25
|
+
fi
|
|
26
|
+
variables:
|
|
27
|
+
petty_cash_log:
|
|
28
|
+
default: "./petty-cash-log.csv"
|
|
29
|
+
description: >
|
|
30
|
+
CSV with header "date,amount,type,note" where type is
|
|
31
|
+
starting/expense/replenishment, first data row is the starting
|
|
32
|
+
float.
|
|
33
|
+
expected_on_hand:
|
|
34
|
+
default: 0
|
|
35
|
+
description: Actual counted cash currently in the box/float, entered manually after a physical count.
|
|
36
|
+
tolerance:
|
|
37
|
+
default: 5
|
|
38
|
+
description: Dollar variance allowed before flagging a discrepancy.
|
|
39
|
+
compatible_agents: [generic, claude, codex]
|
|
40
|
+
notes: >
|
|
41
|
+
Zero-token. Requires a manual physical cash count entered as
|
|
42
|
+
expected_on_hand before each run — this doesn't track cash movement
|
|
43
|
+
automatically.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
id: quarterly-estimated-tax-calculator
|
|
2
|
+
version: 1
|
|
3
|
+
name: Quarterly Estimated Tax Calculator
|
|
4
|
+
description: >
|
|
5
|
+
Calculates a suggested quarterly estimated tax payment from your
|
|
6
|
+
logged year-to-date income and a target tax rate, and warns as the
|
|
7
|
+
next IRS-style quarterly due date approaches. Use this if you're
|
|
8
|
+
self-employed or have untaxed income and want the actual dollar
|
|
9
|
+
amount worked out, not just a bare date reminder (see
|
|
10
|
+
tax-deadline-reminder for a generic multi-jurisdiction deadline list).
|
|
11
|
+
category: finance
|
|
12
|
+
tags: [tax, estimated-tax, quarterly, finance]
|
|
13
|
+
schedule: "0 9 * * *"
|
|
14
|
+
timezone: "UTC"
|
|
15
|
+
runner: shell
|
|
16
|
+
command: >
|
|
17
|
+
income_file={{income_ytd_csv}}; rate={{effective_tax_rate_pct}}; warn_days={{warn_days}};
|
|
18
|
+
[ -f "$income_file" ] || { echo "ERROR: $income_file not found"; exit 1; };
|
|
19
|
+
year=$(date +%Y);
|
|
20
|
+
ytd_income=$(awk -F, -v y="$year" 'NR>1 && $1 ~ "^"y"-" {sum+=$2} END{printf "%.2f", sum+0}' "$income_file");
|
|
21
|
+
owed=$(awk -v i="$ytd_income" -v r="$rate" 'BEGIN{printf "%.2f", i*(r/100)}');
|
|
22
|
+
echo "YTD income: \$$ytd_income | estimated tax owed so far ($rate%): \$$owed";
|
|
23
|
+
today=$(date +%s);
|
|
24
|
+
next_due="";
|
|
25
|
+
for d in {{q1_date}} {{q2_date}} {{q3_date}} {{q4_date}}; do
|
|
26
|
+
d_epoch=$(date -j -f %Y-%m-%d "$d" +%s 2>/dev/null || date -d "$d" +%s);
|
|
27
|
+
if [ "$d_epoch" -ge "$today" ]; then next_due="$d"; next_epoch="$d_epoch"; break; fi;
|
|
28
|
+
done;
|
|
29
|
+
if [ -n "$next_due" ]; then
|
|
30
|
+
days_left=$(( (next_epoch-today)/86400 ));
|
|
31
|
+
if [ "$days_left" -le "$warn_days" ]; then
|
|
32
|
+
echo "REMINDER: next estimated payment due $next_due (in $days_left day(s)) — suggested payment ~\$$owed based on YTD income";
|
|
33
|
+
else
|
|
34
|
+
echo "Next estimated payment due $next_due (in $days_left day(s))";
|
|
35
|
+
fi;
|
|
36
|
+
else
|
|
37
|
+
echo "No remaining estimated tax due dates configured for this year.";
|
|
38
|
+
fi
|
|
39
|
+
variables:
|
|
40
|
+
income_ytd_csv:
|
|
41
|
+
default: "./income-log.csv"
|
|
42
|
+
description: "CSV with header \"date,amount\" (date YYYY-MM-DD) — one row per income event, self-employment or 1099 income."
|
|
43
|
+
effective_tax_rate_pct:
|
|
44
|
+
default: 25
|
|
45
|
+
description: Combined effective rate (federal + self-employment + state, as applicable) to apply to YTD income for an estimate.
|
|
46
|
+
q1_date:
|
|
47
|
+
default: "2026-04-15"
|
|
48
|
+
description: Q1 estimated payment due date for the current tax year.
|
|
49
|
+
q2_date:
|
|
50
|
+
default: "2026-06-15"
|
|
51
|
+
description: Q2 estimated payment due date.
|
|
52
|
+
q3_date:
|
|
53
|
+
default: "2026-09-15"
|
|
54
|
+
description: Q3 estimated payment due date.
|
|
55
|
+
q4_date:
|
|
56
|
+
default: "2027-01-15"
|
|
57
|
+
description: Q4 estimated payment due date.
|
|
58
|
+
warn_days:
|
|
59
|
+
default: 14
|
|
60
|
+
description: Days before the next due date to start showing the reminder line.
|
|
61
|
+
compatible_agents: [generic, claude, codex]
|
|
62
|
+
notes: >
|
|
63
|
+
Zero-token, rough estimate only — not tax advice; confirm your actual
|
|
64
|
+
liability and safe-harbor rules with a tax professional. Default due
|
|
65
|
+
dates follow the typical US federal quarterly schedule; adjust for
|
|
66
|
+
your jurisdiction and update dates yearly.
|