proofessor reads your course material and points out what looks
wrong: typos, code that fails, statements that don't hold, etc. It
highlights these errors and suggests changes which in many cases can be
implemented by simply clicking a button. However, the decision on what to
change is left to the user.
What happens to your upload
Only the text is extracted from your files, so images, audio and
video are not looked at. If the files contain Python or R notebooks, the
code is executed in a sandbox with no network access to catch anything
that fails. A local large language model then reads each document and
reports what looks wrong and how it would fix it, and every finding and
suggested fix is checked against your file before it is shown to you.
Finally, each file gets a report page with its findings, where you review
them and decide what to do with each one.
Where your material goes
The app runs on a VM controlled by the University of Copenhagen. This
VM has a GPU which hosts Gemma 4 31B, a local open model that is used for
reviews and suggestions. Since there are no external calls to LLM
providers, you can upload anything you'd like. Your material is kept for
30 days, then deleted so that we don't
need extensive data protection procedures.
Source for example courses
The example reports were made from courses written and taught by the
Center for Health Data Science (HeaDS) at the University of Copenhagen, as published in
August 2026.
The two example courses from
HeaDS were evaluated by a
state-of-the-art LLM
(Fable 5.1) to list every major error: 14 in the Python course and 42 in
the R course. We also listed passages that look wrong but aren't, to
count false alarms. Each model was scored on how many of the known errors
and false positives it found.
Results
| Model | Python |
R |
| errors | false alarms |
errors | false alarms |
Gemma 4 31B open, local
hosting | 14/14 | 0/7 |
37/42 | 2/12 |
Fable 5.1 closed, external
API | 14/14 | 0/7 |
42/42 | 0/12 |
DeepSeek V4 Flash open, external
API | 14/14 | 0/7 |
41/42 | 3/12 |
GPT-5.6 Luna closed, external
API | 11/14 | 0/7 |
– | – |
GPT-5 nano closed, external
API | 4/14 | 1/7 |
– | – |
We also tested whether sending the same document more than one time
helps uncover more errors. Each single Gemma 4 run found all 14 Python
errors and 35–36 of the R errors, against 37 with three runs
combined. DeepSeek showed the same pattern, so one run is usually
enough.
While Gemma 4 doesn't reach a perfect score, it gets pretty close.
Since it has the great advantage of being locally hosted, it is the
default model used for this version of the app.
For each account we store a username, the password as a salted scrypt
hash (never the password itself), and an encryption key that only your
password can unlock. Your uploads, reports and accepted fixes are kept for
30 days and then deleted. They are
readable on the server only while a review runs and until ten minutes
after you last open them; the rest of the time they are encrypted with
your key, so nobody else, including the operator, can read them once you
have chosen your own password. The operator also keeps an activity log
for 180 days: when you sign in, how many reviews you run and on which
model, the types and sizes of your files, whether the reviews finished,
and when you view or download a report. The log never contains file
names or content.