Inspiration

USC's rules live on dozens of pages and change without anyone being told. In 2026, Student Government's funding page rewrote one sentence: travel funding went from eight academic weeks before the event to nine weeks before the first payment. A club planning a March 20 trip by the old sentence would have applied a week late. Nobody got a message. We wanted that message to exist.

What it does

Kyros is one text thread for everything USC.

  • Rules with receipts. Every answer carries the official sentence it came from, with the document and date.
  • It texts first. When a watched page changes, Kyros re-checks every saved plan and texts the people it touches: old sentence, new sentence, new date.
  • It looks things up. It reads the page and answers from it, with the address. Official usc.edu pages come first.
  • It acts only with your yes. It can sign in with a saved login it never sees, and asks before any click that changes something.

The site opens on a real change, replayed from the Internet Archive's March and October 2026 copies of the funding page.

How we built it

TypeScript on Node. A rule engine with no model in it, a page watcher, a message loop with tools, saved logins in the macOS Keychain, iMessage and a web page as the two faces. 641 automated tests. The model talks and looks things up; code computes every date and decides whether a rule really changed.

Challenges we ran into

Making a model's reading of a rule safe to act on. A page that says "submit now" cannot make anything happen: page text is treated as data, and every action is judged by code. On the real October sentence both model readers declined, so the demo reads rule changes with a built-in reader that has no model in it. Sign-in is tested against a stand-in page, not yet USC's own.

What we learned

A model that says "I can't tell" is doing its job. What people must trust (dates, permissions, what counts as a change) belongs in tested code, not in a prompt.

What's next

USC single sign-on, then classes and grades, room booking, meals after class, and registration with a go-ahead each time.

Built With

Share this project:

Updates

Submission history