Flag at-risk students in Canvas before they fall behind

By General Input

Every weekday at 7am, your active courses are checked for missing work, silent logins, and slipping grades, with a ranked list sent to your advising channel.

Integrations

  • Canvas
  • Google Sheets
  • Slack Bot

Type

Agentic Task

Categories

  • Operations

Every weekday at 7am, check my active Canvas courses and flag students who are slipping before it becomes a crisis. Use a cron trigger for this.

Start with Canvas List Courses to get my active courses. For each course, gather three signals: Get Course-Level Student Summaries for participation and page view counts, List Missing Submissions for past-due unsubmitted work, and Get Student-in-Course Assignment Analytics for recent grade trends on the students who look questionable from the first two signals.

Weigh those signals into a short risk tier per student: high, medium, or low. As a starting point, treat each of these as a risk signal: no login or participation in the last 7 days, two or more missing assignments, or a recent grade drop of more than 10 percent. A student hitting several signals should tier higher than one hitting a single signal. For every flagged student, write a one-line plain-English reason, for example "No login in 9 days and 3 assignments missing in BIO 210". Keep each reason specific enough that an advisor can act on it without opening Canvas.

Before posting anything, read the existing rows from the tracking tab with Google Sheets Get Values so you know what was flagged on previous runs. Only include a student in today's output if they are newly flagged or their reason has changed since the last time they appeared. If a student's reason is effectively the same as their most recent row, skip them, so the advising channel does not get the same names every morning.

For each student you are flagging today, append one row to the Google Sheets tracking tab with Append Values. Include the run date, course name, student name, risk tier, and the one-line reason, one row per flagged student, so advisors keep a running history across the term.

Then post a grouped digest to the advising channel with Slack Bot Send a Message. Group by risk tier with the most severe first, show the student name, course, and reason on each line, and cap the message at the top 15 students. If more than 15 qualify, note how many additional students were flagged and point to the tracking sheet. If nobody is new or changed since the previous run, post a short note saying there are no new or changed flags today rather than staying silent.

The audience is instructors, advisors, and student success staff, so write the digest in plain language and keep technical detail out of it.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerA brand asset library your marketing team actually searchesTurn Mailjet email clicks into ranked HubSpot follow-upsClean out the Looker dashboards and Looks nobody opensStop cold emails to anyone with a live deal in PipedriveLiveKit live operations console for room moderationWake up dormant Keap leads with a researched reasoniMessage campaign console with pre-flight checks and delivery board