# Blackboard program health dashboard for department chairs

> See how every section in the term is really doing, with class averages shown next to how much has actually been graded, and no instructor screenshots needed.

- Workflow type: app
- Services: Blackboard, Google Sheets
- Categories: Operations
- Published: 2026-08-16

## What it does

- Lists every course in the term you choose with its class average, how much of the work has actually been graded, and how many submissions are still waiting on a grade.
- Sorts so the sections that need attention rise to the top, and clearly flags the ones where too little has been graded for an average to mean anything yet.
- Opens any section to show how scores are spread across each assignment, plus the enrolled students running below the passing mark you set.
- Saves a weekly snapshot to a Google Sheet so you can watch sections move over the term and share the tab with your dean.

## What you'll need

- A Blackboard login that can see grades for the courses you oversee
- A Google account and a spreadsheet to hold the weekly snapshots, if you want the export
- The term you want to review and the score you treat as passing

## Prompt

Build me a program health dashboard for Blackboard that department chairs and program directors open each week to see how every section in the current term is actually performing, without asking instructors for screenshots or exports.

The landing view is a sortable table of the term's courses, pulled with Get Courses and filtered to the term I select. Each row is one section with a computed health summary: the class average across graded work, the share of assignments that have already been graded, and the count of submissions still sitting ungraded. Let me sort by any of those columns so the sections in trouble float to the top, and let me search the table by course name or code.

Build each row from the gradebook. For a course, Get Grade Columns lists the assignments, Get Column Grades returns the scores recorded against a column, and Get Column Attempts shows the submissions and their grading status, so an attempt that has been submitted but not yet scored counts toward the ungraded backlog. Compute the class average over graded scores only, normalized against each column's possible points, so assignments worth different amounts do not distort the number.

Never show an average as a bare number. Every average needs its graded coverage sitting next to it, and when a section has almost nothing graded yet, the row should say so rather than implying the class is struggling. Sections below a small coverage floor, for example fewer than a couple of graded assignments or under a low percentage of graded work, render as not enough graded yet with the average de-emphasized, and they must not be ranked among the worst performers when I sort by average. Make that coverage floor a setting rather than a hardcoded number.

Clicking a section opens a detail page. Show each assignment in that course with its grade distribution, built from Get Grade Column for the column definition and Get Column Grades for the scores, so I can tell whether a low average comes from one brutal assignment or a broad slide. Below that, list the enrolled students from Get Course Memberships whose running score sits below the passing threshold I set in the app, showing each student's current score and how many pieces of work they are missing. Expanding a student row calls Get User Grades so I can see how that person is doing across their other courses too, which tells me whether it is this section or a wider problem.

Give me a button that writes the current snapshot to a Google Sheet with Append Values: one row per section carrying the term, course name and code, class average, graded coverage, ungraded count, number of students below the threshold, and the snapshot date. Appending rather than overwriting is the whole point, so we can track section performance week over week and share the tab with the dean. Let me pick the spreadsheet and tab, and remember that choice.

Store the passing threshold, the coverage floor, the term filter, and the snapshot destination per user, so each chair sees their own settings when they open the app and those choices are still there the following week.

Be careful with Blackboard's request budget. The site quota is 10,000 requests per 24 hours, so the landing view should load the course list first and pull per-assignment detail only when I open a section, instead of walking every gradebook up front. Blackboard list endpoints page with offset and limit and return a paging.nextPage link, so follow that until it is absent when a course list, roster, or grade list runs long. Render section rows as they resolve rather than blocking the whole table on the slowest course, and let me refresh a single section without reloading everything.

## How to customize

- Set your own passing threshold and change it whenever the standard shifts
- Adjust how little grading counts as too early to judge a section
- Point the snapshot at a different spreadsheet or tab, and choose which columns get saved

## FAQ

### Do instructors have to send me anything?

No. The dashboard reads the gradebooks you already have access to in Blackboard, so nobody needs to export a report or send you a screenshot.

### Will a section that has barely been graded look like it is failing?

No, and this is the point of the design. Every average is shown next to how much of the work has been graded, and a section with almost nothing graded yet is labeled that way rather than ranked as a poor performer.

### Can I see how a struggling student is doing in their other classes?

Yes. Open a student from the section view and you get their scores across the other courses they are enrolled in, which tells you whether the problem is this one class or a wider pattern.

### Does this change anything in Blackboard?

No. It only reads from Blackboard. The one thing it writes is a row in the Google Sheet you pick when you save a snapshot.

### Can two chairs use it with different passing marks?

Yes. The passing threshold and the term filter are saved for each person, so every chair opens the app with their own settings already applied.

Use this prompt in General Input: https://www.generalinput.com/prompts/blackboard-program-health-dashboard-for-department-chairs