catool: Compensation Analysis Tool

CRAN status
R-CMD-check
Lifecycle: experimental
GitHub version
Walkthrough Vignette

catool (Compensation Analysis Tool) is an R package that calculates fair and transparent overload pay for college instructors. It analyzes course schedules and applies institutional policy rules to determine qualified credit hours and compensation—prorated when needed.


🔧 Key Features


📦 Installation

# Install from GitHub
# install.packages("remotes")
remotes::install_github("dawit3000/catool")

🗂️ Input Format

Your course schedule data must include:

Column Description
INSTRUCTOR Instructor’s name (e.g., “Smith, C”)
ENRLD Enrollment in each course
HRS Credit hours assigned per course

Optional: SUBJ, DEPARTMENT, COLLEGE, and PROGRAM for advanced filtering.


📂 Sample input: The schedule.csv file provides a realistic example of course schedule data used by the package. It includes columns such as SUBJ, CRN, INSTRUCTOR, DEPARTMENT, and COLLEGE.


🧪 Quick Start

library(catool)

schedule <- data.frame(
  INSTRUCTOR = c("al-Abdul", "baxter", "Smith, Courtney"),
  ENRLD = c(12, 7, 4),
  HRS = c(3, 3, 3)
)

# Analyze one instructor
ol_comp(get_instructor_schedule("baxter", schedule))

# Apply one instructor with  a custom policy
ol_comp(get_instructor_schedule("Smith", schedule),
        L = 4, U = 9, rate_per_cr = 2500 / 3, reg_load = 12)

# Summarize full schedule (patroll ready summary of all instructors in the schedule)
ol_comp_summary(schedule)

🔍 Filtering Options

# Filter by subject
filter_schedule(schedule, subject_pattern = "MATH|STAT")
filter_schedule(schedule, subject_pattern = "^MATH|^STAT") # If subject codes are always exact prefi

# Filter by department
filter_schedule(schedule, department_pattern = "Business")

# Filter by instructor
get_instructor_schedule("davis", schedule)

# List all instructors
get_unique_instructors(schedule)

📊 Output Structure

The ol_comp_summary() function returns a clean tibble with:

Note: Pay is never per-course—only on qualified credit hours.


⚖️ Policy Logic

Default institutional policy:

  1. Regular teaching load = 12 credit hours

  2. Courses with ENRLD < 4 are excluded

  3. Qualified credit hours beyond regular load are paid at $2,500 / 3 per hour

  4. For ENRLD < 10, pay is prorated:

    \[ \text{Compensation} = \left(\frac{\text{ENRLD}}{10}\right) \times \text{rate per CR} \times \text{qualified CR} \]

  5. Overload hours are counted starting with the least-enrolled eligible courses


🧭 Instructor vs Institutional Interest Inclination Strategy

You can specify how regular teaching load is assigned when determining overload pay:

This option is supported in both ol_comp() and ol_comp_summary() functions.


📖 Full Walkthrough

🔗 Vignette & Examples