Your syllabus already tells you how the course is scored. Homework 20 percent, two midterms at 20 each, a final worth 30, participation for the last 10. Then the semester starts and the numbers arrive one at a time, out of order, on different scales — an 88 on a 50-point lab, a 71 on the first midterm, a 17 out of 20 on a reading quiz. Six weeks in you have a pile of individual scores and no honest answer to the only question that matters, which is where you actually stand.

Averaging them does not work. A 100 on a two-percent reading quiz does not cancel a 71 on a midterm worth a quarter of the course, and pretending otherwise is how people get blindsided in week eleven. Dividing by the full semester's weight does not work either — it counts every assignment that has not happened yet as a zero, so your grade looks catastrophic in September and recovers for reasons that have nothing to do with your work.

Grade tracking in Semora does the arithmetic your syllabus describes, over the work that has actually been graded, and nothing else. You enter a score, it updates a running weighted average, derives a letter from your course's grade scale, and rolls every course into a semester GPA estimate. It is part of the free plan — categories, dropped lowest grades, extra-credit rules, and all. Pro adds the two things free deliberately leaves out: editing the cutoffs themselves, and the what-if calculators that tell you what you need on what is left.

Recording a grade takes about five seconds

Open any task and there is a GRADE RECEIVED block. You pick one of two entry modes and type what your professor posted.

Points mode is the default and it is labeled with an example — Points (13/15). You enter points earned and total points possible. That total is the raw point value of the assignment, never its weight in the course: a midterm worth 20 percent of your grade can still be scored out of 50 points, and Semora keeps those two ideas separate. It converts to a percentage rounded to two decimal places and stores all three numbers, so the task afterward reads 88% with 44/50 points underneath it.

Percentage mode is a single field for a number from 0 to 100. Switching between the two modes clears whatever you had typed, so you never accidentally submit a points figure into a percentage box.

The guardrails are specific. Points possible has to be greater than zero. Points earned cannot exceed the total unless the task is flagged as extra credit — the alert says so directly, telling you to mark it extra credit if it genuinely can go over. A percentage outside 0 to 100 is rejected. And if the assignment has no weight recorded, an amber warning appears before you type anything: no weight set for this assignment, add weight in Edit or enter total below. If it does have a weight, you get the reassurance instead — this assignment is worth 20% of your grade.

  • Two entry modes per assignment: points earned out of points possible, or a straight percentage
  • Points possible is the assignment's own point total, independent of its weight in the course
  • Percentages are stored to two decimal places; the original points are kept and displayed alongside
  • Points earned above points possible is blocked unless the task is marked extra credit
  • Assignments with no weight get a visible warning rather than silently skewing your average
  • Canvas-synced assignments arrive with their score already filled in, computed the same way

What the weighted average actually calculates

For a course where you have put a weight on individual assignments, Semora tracks two totals. Weight total is the sum of the weights across every non-extra-credit assignment that has a weight, graded or not. Weight attempted is the slice of that which has been graded so far.

Your current grade is the weighted sum of your scores divided by weight attempted, not by weight total. That single choice is what keeps the number honest early in the term. Three graded assignments covering 45 percent of the course produce a grade based on 45 percent of the course, and the card says so: 9 of 21 graded on the left, 45% of 100% attempted on the right, and a note underneath reading "Based on 45% of coursework completed."

It also tracks earned points, which is the sum of weight times score divided by 100 — the percentage points you have banked toward the final grade. That figure is what the forecasting calculator later works backward from. Percentages are rounded to two decimals, weights to one, and the displayed grade is capped at 100 because every letter scale tops out anyway and a raw 108 tells you nothing a 100 does not.

There is a deliberate fallback for the very common case where an instructor never publishes weights. If none of your graded assignments carry a weight but some of them have scores, Semora uses a straight average of the posted grades rather than showing nothing at all. It is less precise, and it is better than a blank card.

Categories, and dropping the lowest

Most syllabi do not assign a percentage to each individual assignment. They assign it to a bucket: Homework 25%, Quizzes 15%, Exams 45%, Final Project 15%. The Grade Setup screen for each course mirrors that structure.

You add categories with a name, a weight percent, and a drop-lowest stepper. A running total sits at the top of the screen and stays amber until the categories add up to exactly 100, at which point it turns green. Saving is blocked otherwise, and the error tells you your current total to a tenth of a percent so you can see what is missing. Every category needs a name, and each weight has to land between 1 and 100.

Once a course has categories they take over the math. Inside each category, Semora looks at how the work was scored. If every counted item has both points earned and points possible, the category average is total points earned over total points possible, so a 50-point exam legitimately outweighs a 10-point quiz sitting in the same bucket. If the items are a mix of point scores and bare percentages, it falls back to a plain mean of the percentages.

Drop-lowest runs per category, from 0 up to 20, and drops the lowest scores by percentage. It has one safety rule worth knowing: it will never drop your only graded item. The drop count is capped at one fewer than the number of graded candidates, so setting "drop 2" in a category with two grades drops exactly one. The course card shows what happened — "2 lowest grades currently dropped", and the per-category breakdown lists each bucket with its weight and its current average.

Categories with nothing graded yet are simply left out of the denominator. They show as "No grades" in the breakdown, and the header meta switches to reading "40% of category mix reporting" so you know how much of the mix your grade is standing on. An unscored final worth 30 percent never drags your October grade toward zero.

  • Category weights must total exactly 100% before the setup screen will save
  • Drop-lowest is per category, 0 to 20, and never removes your last remaining grade
  • A category where every item has point values is averaged by total points, not by mean percentage
  • Categories with no graded work are excluded from the running grade rather than counted as zero
  • Deleting a category leaves its tasks uncategorized and does not delete any scores
  • Courses that never define categories keep the per-assignment weighting they already had

Three different meanings of extra credit

Extra credit is where most grade calculators quietly get it wrong, because "extra credit" means at least three different things depending on the professor. Semora makes it a per-course setting with three options that take effect once the course has grade categories, and the wording in the app is plain about what each one does.

Bonus points is the default. The extra-credit item's worth is a flat number of percentage points added on top of your course grade, scaled by how well you did on it. If your Homework category is 10 percent of the course and you are averaging 80 in it, your base grade reads 80.0; a 5-point extra-credit assignment scored 90 contributes 5 × 0.90, so 4.5 points, and your grade becomes 84.5. Adding it into the weighted numerator instead — the naive approach — would have produced something absurd like 125 early in the term, which is exactly why it is handled separately.

Inside category folds the extra-credit item into its category's average like any other assignment, which can push that category above 100 percent. That is the right model when your professor drops a bonus question onto a quiz. Ignore keeps the work visible in your task list and excludes it from every calculation, for when the credit is real but you have no idea how it will be applied.

When you mark a task as extra credit, the weight field relabels itself to "Extra credit worth (% points)" with a hint explaining that the number is bonus points added on top, scaled by your score. Leave it blank and the item contributes zero under the bonus rule — it is visible, but it cannot move a grade it was never given a value for. The final number is capped at 100 either way.

Letter grades and the grade scale

Semora ships with the plain scale: A at 90, B at 80, C at 70, D at 60, F at 0. To turn a percentage into a letter, it sorts the scale from highest cutoff down and takes the first threshold your grade meets or beats, falling back to F if you are below all of them.

The scan can replace that with your professor's actual scale. When the syllabus prints a grading table, the parser extracts it, keeps plus and minus grades if they are listed, and sorts it high to low. It applies that scale to a newly created course, or to an existing course whose scale is still the untouched default — it will not overwrite a scale you edited yourself.

Editing the scale by hand is the Pro line. Free accounts see a locked "Customize grade scale" row with a PRO badge that opens the paywall; Pro accounts see the scale rendered as chips (A: 90%+, B: 80%+, and so on) that tap through to an editor. Pro turns that into an editor where each row is a letter and a minimum percentage, you can add and delete rows, and the scale is re-sorted descending when you save. Schools that cut A− at 90 and A at 93, or run an eleven-row plus-minus ladder, get modeled exactly.

The letter badge on the grade card is color-coded by its first character (green for anything starting with A, blue for B, amber for C, orange for D, red otherwise) so the color survives whatever custom labels you use.

The semester GPA estimate

The Courses tab carries a header card labeled CURRENT SEMESTER GPA ESTIMATE with a number to two decimal places and a line explaining its basis: how many of your courses are reporting a letter, and how many graded credits that represents.

Each course has a credit-hours field, editable from 0.5 to 12 and defaulting to 3. The estimate multiplies each course's grade points by its credit hours, sums that, and divides by total credits. Courses without a letter yet are excluded rather than counted as zero, which is why the card tells you it is reporting on 3 of 5 courses.

The default grade-point table is the standard 4.0 ladder: A+ and A both at 4.0, A− 3.7, B+ 3.3, B 3.0, B− 2.7, C+ 2.3, C 2.0, C− 1.7, D+ 1.3, D 1.0, D− 0.7, F 0. Letter matching is forgiving — it normalizes case and whitespace, and if there is no exact row it falls back to the leading letter-and-sign, so a custom scale label like "A (Excellent)" still maps to 4.0.

The GPA scale editor lives in Settings and is Pro. Free accounts can open it and read the table but cannot edit it. Pro accounts can set the exact points their school awards for each letter, anywhere from 0 to 10 points, with duplicate letters rejected and a one-tap restore to the standard 4.0 scale. It is worth being clear about what this changes: it changes GPA estimates, not the percentage cutoffs that determine your letter in a course. Those two live in different places on purpose.

Forecasting: what do I need on the rest?

This is the Pro half of grade tracking, and it is built entirely out of numbers you already have.

The "What do I need?" card takes every letter on your course's scale and works backward. Required average equals your target percentage times weight total, minus the points you have already banked, divided by the weight still outstanding. Each row gets a verdict. "Locked in" with a check mark when you have already secured that letter no matter what happens. "avg 84% on the rest" when it is reachable, rounded up so the number is never optimistic, and colored coral when the requirement climbs above 90. "Needs extra credit" when the only path runs through the ungraded extra-credit work still on your list. "Out of reach" when the arithmetic says no. The header tells you how much is still in play: "38% still to play for."

The final-exam what-if is the other direction. It pulls up to six ungraded assignments, preferring anything typed as an exam or titled with final, midterm, or exam, and lets you tap a hypothetical score — 70, 80, 85, 90, or 100, defaulting to 85. It then re-runs your entire course grade calculation with that score substituted in, categories, drop-lowest, extra-credit policy and all, and shows the projected course grade and letter. It is labeled "Projected, not saved," and nothing is written to your record.

Free accounts see the card in place with the real remaining number in it, and a tap takes you to the paywall. One case is identical for both tiers: once every weighted assignment has been graded, both see the same line (all weighted work is graded, your final grade is locked in) because a forecast with nothing left to forecast is not worth charging for.

How it connects to everything else in Semora

Grades are not a standalone screen. The scores you enter feed the rest of the app.

Your Courses tab shows each course's letter and percentage under its name, next to what is due next. When the current Pro Canvas token connector is permitted by your institution, assignment scores can arrive with points earned and points possible, get converted to percentages with the same arithmetic, and land in the same running average. Canvas can also carry the late flag, and Semora tracks late submissions separately: you can record an expected penalty and the task screen will show the estimated maximum you can still earn until the real grade is posted, without ever docking a posted score twice.

On the Pro side, Academic Risk alerts read your grade history directly. A course needs at least two graded items; Semora then compares the average of your three most recent grades against the three before them, ordered by when the work was due rather than when you happened to enter it, and raises a falling-grade alert when the drop is seven points or more, or when the course estimate sits below 70. Below 65 it escalates to high severity. Progress Insights needs four graded items before it will draw a trend, and exports a semester CSV with columns for current grade, letter, completion percentage, on-time percentage, missing work, and graded count, plus a print view you can bring to an advising appointment. The Workload dashboard shows how much of each course's grade is still in play.

All of it is one account across iPhone, iPad, and web, syncing in near real time, so a score you enter walking out of a lecture hall is on your laptop when you open it.

Who this is for, what it costs, and who should skip it

Grade tracking with weighted averages is on the free plan, and that means the whole engine: point or percentage entry, per-assignment weights, categories, drop-lowest rules, all three extra-credit policies, letter grades from your course's scale, and the semester GPA estimate. Free accounts are capped at 5 syllabus scans per calendar month and up to 4 courses within one semester, with one semester total on free, which for a lot of students is a full course load already.

Pro is $3.99 per month or $19.99 per year, which works out to about $1.67 a month annually. It adds editing your course grade scale, editing your GPA scale, both what-if calculators, Academic Risk alerts, and Progress Insights, along with everything else in the Pro tier. Pro is purchased inside the iOS app and applies to your whole account, including the web app — there is no separate web checkout.

It is genuinely useful if your syllabus states weights and your school's LMS does not show a live weighted grade, or shows one you do not trust. It is useful if you have ever rebuilt the same spreadsheet in October. It is useful if your professor drops the lowest two quizzes and you cannot be bothered to model that by hand.

It is less useful if your LMS already publishes an accurate weighted grade you check regularly and you never wonder what you need on the final. And it is not a gradebook of record. It is your estimate, built from what you enter; your instructor's number is the one that goes on the transcript. If you never get around to typing in scores, it will correctly show you nothing.

The awkward cases

Nothing graded yet. The card reads "No grades yet" with no letter and no bar, and the GPA card says to add grades to completed work to begin tracking. It shows blank rather than a zero, because a zero would be a lie. Weights on the assignments but nothing scored gives the same result — the math needs at least one graded item before it will report anything. No weights anywhere, and the straight-average fallback engages so the card and the GPA estimate stay useful.

Categories that do not total 100 are refused at save, with your current total named in the error. This is intentional friction: a category set that sums to 87 produces a grade that is quietly wrong in a way you would not notice. Drop-lowest set higher than you have grades drops down to one remaining item and stops. Extra credit with no worth entered contributes zero under the bonus rule — the field is there and unfilled, not broken.

A raw grade above 100 is displayed as 100. Extra credit can carry you past the cap in the raw arithmetic; the display clamps. Deleting a category leaves its tasks uncategorized and their scores untouched, and the confirmation says exactly that before you commit.

A grade you entered wrong is the easiest case. Tap the score and it reopens in the mode you originally used, prefilled with the points or the percentage you typed, so correcting a typo does not mean re-deriving anything.

  • No graded work yet shows "No grades yet" rather than 0%
  • Category weights that do not sum to 100% block the save, with your current total shown
  • Drop-lowest stops at one remaining grade no matter how high you set it
  • Extra credit with no point value entered contributes nothing under the bonus rule
  • Any raw grade over 100 is displayed as 100
  • Editing a posted score reopens it prefilled in the entry mode you originally used