GradesInteli
An open-source UI layer over Adalove that computes module grades and absences, and predicts what a student still needs to pass. Runs in the browser over the existing platform — no accounts, no scraping servers.
- Role
- Author
- Year
- 2026
- Stack
- TypeScript, React, Browser Extension, UI/UX
The problem
Inteli runs on Adalove. Adalove stores your grades. What it does not do is answer the only question a student in the middle of a module actually has:
Given what I have already scored, what do I still need on what is left?
Every student was doing this by hand, in a spreadsheet, badly — and re-deriving the weighting rules from scratch each module.
The approach
GradesInteli is an open-source UI layer that sits over the platform students already log into. It reads what is there, applies the module's weighting, and answers the question directly: your current standing, your absences, and the score you need on everything remaining.
The important design constraint was no new account and no server holding anyone's grades. It runs in the browser, over the page you were already looking at. There is no database of student records to leak, because there is no database.
What I learned
That the distance between "annoying" and "unbearable" is often one missing number, and that shipping the number is usually a weekend of work that nobody has done because everyone assumed someone else would.
68 stars, mostly from people who had the same problem. That is the metric I care about.
Links
Live at gradesinteli.com. Source on GitHub.
/** The only question a student asks:
* what do I still need? */
export function requiredOnRemaining(
earned: Assessment[],
remaining: Assessment[],
target = 6,
) {
const done = earned.reduce(
(sum, a) => sum + a.score * a.weight,
0,
);
const open = remaining.reduce(
(sum, a) => sum + a.weight,
0,
);
if (open === 0) {
return done >= target ? 0 : Infinity;
}
return clamp((target - done) / open, 0, 10);
}