Documentation: datadocs.teachinglab.org
R package and scripts for Teaching Lab data operations, dashboards, and automations.
# Install the package
devtools::install_github("TeachingLabHQ/TeachingLab")
# Load the package
library(TeachingLab)| Folder | Description |
|---|---|
| R/ | Internal package functions for data fetching, processing, and utilities |
| posit_automations/ | Scheduled automation scripts deployed to Posit Connect (see below) |
| api/ | REST APIs including Monday.com webhook handlers |
| analysis/ | Ad-hoc analyses, reports, and visualizations organized by year |
| dashboards/ | Interactive dashboards for data visualization (some deprecated) |
| data/ | Stored data files and cached datasets |
| data_scripts/ | Legacy data scripts (most moved to posit_automations) |
| tests/ | Package tests |
| man/ | Package documentation |
| inst/ | Rmd templates |
| html/ | HTML template files |
| images/ | Logos, graphics, and visual assets |
Scheduled scripts that run on Posit Connect. Auto-generated index available at posit_automations/INDEX.md.
posit_automations/
├── emails/ # Automated email scripts
├── reports/ # Report generation
├── data_updates/ # Monday, Qualtrics, and data sync scripts
├── validation/ # Data validation and quality checks
├── coaching_action_plans/ # CAP-specific scripts
├── misc/ # One-off and infrastructure scripts
├── cap_targets/ # Targets pipeline for CAP data
├── project_log_targets/ # Targets pipeline for project log
└── deprecated/ # Old scripts kept for reference
The index is automatically regenerated via GitHub Actions when scripts change.
Teaching Lab’s data platform integrates multiple data sources to track teacher professional learning outcomes. The system connects coaching activities, survey responses, classroom observations, and student work assessments.
┌─────────────────────────────────────────────────────────────────────────────────┐
│ TEACHING LAB DATA MODEL │
└─────────────────────────────────────────────────────────────────────────────────┘
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ SITE │ │ COACH │ │ TEACHER │
│ (District) │ │ (Employee) │ │ (Coachee) │
├──────────────┤ ├──────────────┤ ├──────────────┤
│ site_name │ │ employee │ │ teacher_name │
│ content_area │◄──────│ district │───────►│ school │
│ subsite │ │ project │ │ district │
│ type │ │ project_role │ │ content_area │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ │ │
│ │ │
│ ┌─────────────────┴─────────────────┐ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────────────────────────┐ │
│ │ COACHING LOG │ │
│ │ (Session Record) │ │
│ ├──────────────────────────────────────┤ │
│ │ id, Date, employee, District │ │
│ │ Subsite, Coachee, hours │ │
│ │ session_type, activities │ │
└──►│ [Links coach to teacher by session] │◄──┘
└──────────────────┬───────────────────┘
│
┌──────────────────┼──────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ IPG OBSERVATION │ │ STUDENT WORK │ │ EDUCATOR SURVEY │
│ (Classroom Obs) │ │ (Artifacts) │ │ (Diagnostic) │
├──────────────────┤ ├──────────────────┤ ├──────────────────┤
│ date │ │ Teacher Name │ │ ResponseId │
│ site, subsite │ │ Subject Area │ │ site │
│ teacher_select │ │ Site, Subsite │ │ prepost │
│ coach │ │ Grade Band │ │ role │
│ ipg_rubric │ │ Prepost │ │ mindsets_ts_* │
│ content_area │ │ Submitted Grades │ │ years_teaching │
│ direct_to_ts_obs │ │ Date Submitted │ │ grade_level │
│ k12_m_ca1a.. │ └──────────────────┘ └──────────────────┘
│ k12_ela_ca1a.. │
│ (CA1, CA2, CA3) │
└──────────────────┘
│
│ Timing: BOY/MOY/EOY
▼
┌──────────────────────────────────────────────────────────────┐
│ TRACKER (L&R Board) │
│ Aggregated completion status per teacher │
├──────────────────────────────────────────────────────────────┤
│ participant_name, site_district, school │
│ Diagnostic Educator Survey [TRUE/FALSE/In Progress] │
│ Followup Educator Survey [TRUE/FALSE/In Progress] │
│ Baseline observation [TRUE/FALSE/In Progress] │
│ Middle of year observation [TRUE/FALSE/In Progress] │
│ End of year observation [TRUE/FALSE/In Progress] │
│ Baseline Student Work [TRUE/FALSE/In Progress] │
│ Middle of Year Student Work [TRUE/FALSE/In Progress] │
│ Followup Student Work [TRUE/FALSE/In Progress] │
│ Participant Feedback [TRUE/FALSE] │
└──────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────┐
│ ADDITIONAL SURVEY INSTRUMENTS │
├──────────────────────────────────────────────────────────────┤
│ PARTICIPANT FEEDBACK │ STUDENT SURVEY │ KNOWLEDGE │
│ (Session-level) │ (Classroom-level) │ ASSESSMENTS │
├─────────────────────────┼────────────────────┼───────────────┤
│ ResponseId │ ResponseId │ id │
│ RecordedDate │ RecordedDate │ prepost │
│ site │ site │ site, subsite │
│ facilitator │ grade_level │ course_name │
│ course │ growth_mindset_* │ total_score │
│ satisfaction ratings │ self_efficacy_* │ max_possible │
│ relevance ratings │ math_enjoyment_* │ │
│ facilitator ratings │ achievement_id_* │ │
└─────────────────────────┴────────────────────┴───────────────┘
| Relationship | Join Keys | Description |
|---|---|---|
| Coach → Site |
District, site
|
Coach assigned to partner site/district |
| Coach → Teacher |
employee ↔︎ coach, Coachee ↔︎ teacher_name
|
Coaching roster assignment |
| Teacher → IPG |
teacher_select, site, subsite
|
Classroom observations of teacher |
| Teacher → Student Work |
Teacher Name, Site, Subsite
|
Student work artifacts submitted |
| Teacher → Educator Survey |
site + email/name matching |
Pre/post diagnostic surveys |
| Session → Tracker |
Coachee ↔︎ participant_name
|
Links coaching sessions to completion status |
| Site → Logistics Board |
L&R name, content_area
|
Routes webhook data to correct Monday board |
get_coaching_log())
Primary record of coaching sessions from Monday.com.
| Column | Type | Description |
|---|---|---|
id |
character | Monday.com item ID |
employee |
character | Coach name |
District |
character | Partner site (e.g., “NY_D11”, “DC_DCPS”) |
Subsite |
character | School name |
Date |
Date | Session date |
Coachee |
character | Teacher being coached |
hours |
numeric | Session duration in hours |
hours_total |
numeric | Total hours submitted |
project |
character | Project assignment (e.g., “NYC Reads”) |
project_role |
character | Role in project |
get_coach_roster())
Current coaching assignments linking coaches to teachers.
| Column | Type | Description |
|---|---|---|
coach |
character | Coach name |
teacher_name |
character | Coachee/participant name |
school |
character | School (subsite) |
district |
character | District/site |
content_area |
character | Subject area (Math, ELA, Science) |
status |
character | Active/Inactive |
get_ipg_forms())
Instructional Practice Guide classroom observation data.
| Column | Type | Description |
|---|---|---|
ResponseId |
character | Qualtrics response ID |
date |
Date | Observation date |
site |
character | District |
subsite |
character | School |
teacher_select |
character | Teacher observed |
coach |
character | Observer/coach |
ipg_rubric |
character | Rubric type (Math IPG, ELA IPG, FSOT, TERI, etc.) |
content_area |
character | Subject (Math, ELA, Science, Social Studies) |
direct_to_ts_obs |
character | Timing (Baseline, Mid-year, End of year, Ongoing) |
k12_m_ca1a..c |
character | Math Core Action 1 indicators (Yes/No) |
k12_m_ca2a..d |
integer | Math Core Action 2 indicators (1-4 scale) |
k12_m_ca3a..e |
integer | Math Core Action 3 indicators (1-4 scale) |
k12_ela_ca1a..c |
character | ELA Core Action 1 indicators (Yes/No) |
k12_ela_ca2a..d |
integer | ELA Core Action 2 indicators (1-4 scale) |
k12_ela_ca3a..f |
integer | ELA Core Action 3 indicators (1-4 scale) |
fsot_ac1..2 |
integer | FSOT Alphabetic Code indicators (1-4) |
fsot_td1..4 |
integer | FSOT Text Discussion indicators (1-4) |
fsot_sp1..4 |
integer | FSOT Spelling indicators (1-4) |
fsot_ad1..2 |
integer | FSOT Additional indicators (1-3) |
IPG Scoring Rules: - Character columns (Yes/No): Yes = TRUE, No = FALSE - Numeric 1-4 columns: 3-4 = TRUE (proficient), 1-2 = FALSE - Numeric 1-3 columns: 2-3 = TRUE, 1 = FALSE - Core Action scores = mean of indicators × 100
get_participant_feedback())
Session-level feedback from PD participants.
| Column | Type | Description |
|---|---|---|
ResponseId |
character | Qualtrics response ID |
StartDate |
POSIXct | Survey start time |
EndDate |
POSIXct | Survey end time |
RecordedDate |
POSIXct | Submission timestamp |
Finished |
logical | Survey completion status |
site |
character | Partner site |
facilitator |
character | Session facilitator |
course |
character | PD course name |
how_much_learned |
integer | Learning rating (1-5 Likert) |
relevance_to_work |
integer | Relevance rating (1-5 Likert) |
would_recommend |
integer | Recommendation likelihood (1-5) |
facilitator_knowledge |
integer | Facilitator rating (1-5) |
overall_satisfaction |
integer | Overall rating (1-5) |
get_student_survey())
Student perceptions of classroom instruction.
| Column | Type | Description |
|---|---|---|
ResponseId |
character | Qualtrics response ID |
RecordedDate |
POSIXct | Submission timestamp |
Finished |
logical | Survey completion |
site |
character | School/district |
grade_level |
character | Student grade |
growth_mindset_1..n |
integer | Growth mindset items (1-6 Likert) |
achievement_identity_1..n |
integer | Achievement identity items (1-6) |
self_efficacy_1..n |
integer | Self-efficacy items (1-6) |
math_enjoyment_1..n |
integer | Math enjoyment items (1-6) |
Student Survey Domains: - Growth Mindsets - Achievement Identity - Self-Efficacy - Math Enjoyment - Meta-cognition - Value/Importance - Task Persistence - Agency - CRSE Practices
get_knowledge_assessments())
Pre/post content knowledge assessments for educators.
| Column | Type | Description |
|---|---|---|
id |
character | Participant identifier |
ResponseId |
character | Qualtrics response ID |
RecordedDate |
POSIXct | Submission timestamp |
prepost |
character | Assessment timing (“pre” or “post”) |
site |
character | District |
subsite |
character | School |
course_name |
character | Assessment/course name |
question1 |
character | Usually “Score” |
total_score |
integer | Raw score achieved |
max_possible |
integer | Maximum possible score |
get_diagnostic_survey(), get_followup_educator())
Teacher beliefs and practices assessment.
| Column | Type | Description |
|---|---|---|
ResponseId |
character | Qualtrics response ID |
RecordedDate |
POSIXct | Submission timestamp |
Finished |
logical | Completion status |
site |
character | District |
prepost |
character | Timing (“pre” or “post”) |
role |
character | Teacher, Coach, Admin, etc. |
years_teaching |
integer | Years of experience |
grade_level |
character | Elementary, Middle, High School |
mindsets_ts_1_1..14 |
integer | Teaching staff mindset items (1-6 Likert) |
non_ts_mindsets_1..15 |
integer | Non-teaching staff mindsets (1-6) |
get_student_work_grades())
Rubric scores for student work artifacts.
| Column | Type | Description |
|---|---|---|
Teacher Name |
character | Submitting teacher |
Subject Area |
character | Math, ELA, Science |
Site |
character | District code |
Subsite |
character | School name |
Student Work File |
character | File identifier |
Grade Band |
character | K-2, 3-5, 6-8, 9-12, Pre-K, etc. |
Prepost |
character | Pre, Post, Beginning, End |
Submitted Grade/s |
character | Comma-separated rubric scores (e.g., “2, 1, 2”) |
Date of Submission |
Date | When submitted |
Aggregated completion status per teacher (from Monday.com).
| Column | Type | Description |
|---|---|---|
participant_name |
character | Teacher name |
site_district |
character | District |
school |
character | School name |
Diagnostic Educator Survey |
character | TRUE/FALSE/In Progress |
Followup Educator Survey |
character | TRUE/FALSE/In Progress |
Baseline observation |
character | TRUE/FALSE/In Progress |
Middle of year observation |
character | TRUE/FALSE/In Progress |
End of year observation |
character | TRUE/FALSE/In Progress |
Baseline Student Work |
character | TRUE/FALSE/In Progress |
Middle of Year Student Work |
character | TRUE/FALSE/In Progress |
Followup Student Work |
character | TRUE/FALSE/In Progress |
Participant Feedback |
character | TRUE/FALSE |
| Data Type | Source | Bucket/Location | File Format |
|---|---|---|---|
| Participant Feedback | Qualtrics | tl-surveys-26 |
.parquet |
| Student Survey | Qualtrics | tl-surveys-25 |
.parquet |
| IPG Forms | Qualtrics | tl-surveys-26 |
.parquet |
| Knowledge Assessments | Qualtrics | tl-surveys-26 |
.parquet |
| Diagnostic Survey | Qualtrics | tl-surveys-26 |
.parquet |
| Coaching Log | Monday.com | coaching-data-tl |
.parquet |
| Coach Roster | Monday.com | coaching-data-tl |
.parquet |
| Facilitator Board | Monday.com | tl-monday |
.parquet |
| Staffing Match | Monday.com | tl-monday |
.parquet |
| Project Log | Monday.com | tl-monday |
.parquet |
| Logistics Lookup | Monday.com | tl-monday |
.parquet |
| Tracker | Monday.com | tl-monday |
.parquet |
| Attendance | Google Sheets | Direct API | - |
| Partner Sites | Google Sheets | Direct API | - |
| Student Work Grades | Google Sheets | tl-surveys-26 |
.parquet |
Bucket Naming Convention: - tl-surveys-26 → FY26 (July 2025 - June 2026) survey data - tl-surveys-25 → FY25 (July 2024 - June 2025) survey data - tl-surveys → Historical data (FY24 and earlier) - coaching-data-tl → Coaching operational data - tl-monday → Monday.com board exports
posit_automations/
See open issues for more.
git checkout -b feature/my-feature)Teaching Lab - contact@teachinglab.org