Students answer a text in seconds. They open their course portal when they remember to.
So this one has no app. You connect your school once, then text one number: what’s due, remind me, I finished it. Every morning it texts you what’s coming up. It isn’t live yet, and this page is about what I’ve learned building it so far.
Checking the data before building on it
The whole thing depends on the Brightspace calendar feed, the link LEARN and MyLearningSpace give you to subscribe to your calendar. Before building the product, I pulled real feeds from Waterloo and Laurier and went through what was actually in them.
Good news first: both feeds worked with one copied link, and the same code read both schools with no special cases. The bad news: at Waterloo, only one of my four courses put its deadlines in the calendar. Neither feed had a single real exam. And courses copied from old terms still carried dates from 2018, 2021 and 2024, including a fake midterm in each.
So the feed can be the main source, but it can’t be the only one. Old dates and non-course noise get filtered out from day one, and syllabus upload went from a nice extra to a core feature.
A week, as a departures board
Here’s a sample week the way the assistant sees it. Send it a text and watch the board change. The empty CS 115 row is the real problem from above: a course that just doesn’t post anything.
Text the assistant:
Pick a text above to send it.
The one thing it can’t get wrong
A wrong deadline is worse than no answer. So the AI never decides what’s due. It only picks which tools to call, like “list this week’s deadlines”, and phrases the answer. The dates come from the database.
Then every reply gets checked before it’s sent. Any date, time or weekday in it has to appear in a tool result or in the student’s own message. If one doesn’t, the reply is thrown out and the model gets one retry with a nudge to check its tools. If it still makes something up, the student gets an honest “I couldn’t double-check that” instead.
Small things that matter in a text
One emoji switches a whole text to a different encoding: 70 characters per message instead of 160, so it costs about twice as much to send. The AI is told not to use them, and anything that slips through gets stripped.
It also shouldn’t be annoying. At most six automatic texts a day, nothing between 10 PM and 8 AM, and the calendar re-syncs every three hours so a moved deadline gets its own heads-up.
Where it’s at
Sign-up by text, the connect page, syncing, reminders, morning texts and the AI all work locally, tested with a fake phone that runs in the terminal, plus about 80 automated tests. Next is deploying it and a closed beta with around 20 students. After that, syllabus upload and grades.