I used Claude to analyze my uni’s program-picker app.
On my own, this would have been a fleeting thought; with Claude, it turned into an investigation.
Introduction
Today, lunchtime conversation amongst the members of the KdVI was dominated by an email we received about a quiz that helps the future students pick their programs. It seems that no matter how hard people tried, they could not get the program to output Wiskunde as their top choice. For me, it was in the first few of the fourth batch of 15 results, so somewhere between 46th and 60th place.
Later, I decided to investigate how this game worked — with the help of Claude Code — which led to this whole rabbit-hole.
The game is very simple.
- Students are given 20 pairs of words to choose between. This produces twenty ‘tags’.
- Each programme has some number of tags (about 9 on average). It then computes the percentage of the tags for the programs that the student picked and ranks the programs accordingly.
- It outputs the programmes in a Tinder-like format for students to swipe through.
Which tags does this game associate with math? We can answer it by looking at the code.
How I Downloaded the Files
When we view websites, the browser downloads client-side code and data that allow the page to be displayed and interacted with. This can include HTML, CSS, JavaScript, images, and data files such as JSON. Most of the time, this code runs inside the browser’s sandbox and does not infect your computer. Because the browser receives this code, we can often inspect it using tools such as “Inspect Element” or the browser’s developer tools. The Studyscanner quiz is not special in this respect.
So, I just went through the game and then downloaded the .js files that looked like they might be responsible for the game.
These files were very long, so I used Codex and Claude to process the code and extract the tags associated with each programme and the 20 pairs of code words. Then, I compared them in SageMath to make sure they are the same.
The twenty pairs that the students are shown appear in Table 1.
| Option A | Option B |
|---|---|
| mens | data |
| cijfers | taal |
| wereld-verbeteren | geld-verdienen |
| kunst-cultuur | natuur |
| debatteren | social-media |
| klimaat | kinderen |
| bitcoin | theater |
| puzzels | boeken |
| creativiteit | structuur-regels |
| computercode-schrijven | kunstwerk-analyseren |
| lange-teksten | laboratorium-werken |
| voorspellen | mensen-helpen |
| lichaam | geest |
| mensenlijk-gedrag | gezondheid |
| romeinen | robot |
| klas | kantoor |
| maatschappij | individu |
| nationaal | internationaal |
| veldwerk | verschillende-dingen-leren |
| nieuwe-dingen-uitvinden | adviseren |
I also made a list of programmes and their tags, which can be found in programme_tags.csv.
Looking at the Tags in Detail
There are 55 distinct tags. But only 40 are shown to students, so there should be 15 ‘phantom’ tags — tags which do not appear in the quiz. In fact, there are 20 such tags. There are actually 5 tags which are shown to the player in the game, but which are not tags for any program. That’s right, students are asked about ‘bitcoin’, ‘kinderen’, ‘klimaat’, ‘robot’, and ‘veldwerk’, but they never appear in the tags of any program.
The twenty phantom tags are the following:
No, I didn’t get confused; ‘Law and Economics (PPLE) [2]”’ is the name of a programme but it is also a tag for Politics.
We can do a frequency analysis of the phantom tags where we count how many programs have each phantom tag, see Table 2. The most common are ‘specialist’ and ‘politiek’; we can see which programmes are affected by having them as tags and present the full table of phantom tags and their programmes in Table 3.
| Programmes | Phantom tag |
|---|---|
| 20 | specialist |
| 16 | politiek |
| 8 | oudheid |
| 8 | onderzoek-buiten |
| 7 | artificial-intelligence |
| 5 | moleculen |
| 5 | gelijke-kansen |
| 3 | toekomst |
| 3 | onderzoek-achter-je-bureau |
| 3 | duurzaamheid |
| 2 | veel-rekenen |
| 2 | eigen-bedrijf |
| 1 | sterren kijken |
| 1 | programmeren |
| 1 | mensen-coachen |
| 1 | Technology & Innovation |
| 1 | Psychology |
| 1 | Law and Economics (PPLE) |
| 1 | Language and Communication |
| 1 | Culture and Politics |
| Phantom Tag | Programmes |
|---|---|
| specialist | Sign Language Linguistics (Taalwetenschap), Linguistics (Taalwetenschap), Religiewetenschappen, Spaanse en Latijns-Amerikaanse studies, Franse taal en cultuur, Hebreeuwse taal en cultuur, Griekse en Latijnse taal en cultuur, Muziekwetenschap, Duitslandstudies, Filosofie, Slavische talen en culturen, Scandinavie studies, Italie studies, Nieuwgriekse taal en cultuur, English Language and Culture, Arabische taal en cultuur, Kunstgeschiedenis, Oudheidwetenschappen, Nederlandse taal en cultuur, Theaterwetenschap |
| politiek | Geschiedenis, Spaanse en Latijns-Amerikaanse studies, Franse taal en cultuur, Hebreeuwse taal en cultuur, Griekse en Latijnse taal en cultuur, Duitslandstudies, Europese studies, Slavische talen en culturen, Scandinavie studies, Italie studies, Nieuwgriekse taal en cultuur, English Language and Culture, Arabische taal en cultuur, Nederlandse taal en cultuur, Theaterwetenschap, Global Arts, Culture and Politics |
| oudheid | Archeologie, Religiewetenschappen, Hebreeuwse taal en cultuur, Griekse en Latijnse taal en cultuur, Italie studies, Arabische taal en cultuur, Kunstgeschiedenis, Oudheidwetenschappen |
| onderzoek-buiten | Archeologie, Geschiedenis, Muziekwetenschap, Nieuwgriekse taal en cultuur, Kunstgeschiedenis, Oudheidwetenschappen, Theaterwetenschap, Biologie |
| artificial-intelligence | Wiskunde, Media and Information, Muziekwetenschap, Computational Social Science, Media en cultuur, Artificial Intelligence, Global Arts, Culture and Politics |
| moleculen | Psychobiologie, Scheikunde, Biomedische wetenschappen, Science, Technology & Innovation, Biologie |
| gelijke-kansen | Cognition, Language and Communication, Europese studies, Filosofie, Literary and Cultural Analysis, Global Arts, Culture and Politics |
| toekomst | Media and Information, Europese studies, Media en cultuur |
| onderzoek-achter-je-bureau | Media and Information, Informatica, Literary and Cultural Analysis |
| duurzaamheid | Scheikunde, Global Arts, Culture and Politics, Biologie |
| veel-rekenen | Wiskunde, Artificial Intelligence |
| eigen-bedrijf | Informatica, Media en cultuur |
| sterren kijken | Natuur- en Sterrenkunde |
| programmeren | Computational Social Science |
| mensen-coachen | Cognition, Language and Communication |
| Technology & Innovation | Science, Technology & Innovation |
| Psychology | Politics, Psychology, Law and Economics (PPLE) |
| Law and Economics (PPLE) | Politics, Psychology, Law and Economics (PPLE) |
| Language and Communication | Cognition, Language and Communication |
| Culture and Politics | Global Arts, Culture and Politics |
What does this mean for the game?
The Wiskunde program has 10 tags: artificial-intelligence, cijfers, computercode-schrijven, creativiteit, data, geld-verdienen, puzzels, structuur-regels, veel-rekenen, and voorspellen. There are 10 tags, but only 8 appear in the game; artificial-intelligence and veel-rekenen are phantom tags. So it looks like the maximum possible is 8, however one of the pairs is ‘creativiteit’ vs ‘structuur-regels’, of which the students can choose at most 1. Thus the maximum number of tags the students can choose is 7 out of 10, for a maximum of 70% match with this program.
This looks bad, but it is actually worse. Wiskunde cannot ever be the top choice for any student, no matter how they answer the questions, because “Econometrics and Data Science” has 8 tags (all of which appear in the game): data, cijfers, geld-verdienen, puzzels, computercode-schrijven, voorspellen, mensenlijk-gedrag, maatschappij. Six of these are the exact same tags you’re forced to pick for Wiskunde (to achieve our maximum match). So whenever we match with Wiskunde with the 70%, Econometrics automatically gets at least 6/8 = 75%.
Now we can compute the maximum percentage for each program. We need to find its number of tags, how many tags actually appear in the game, number of conflicts (pairs where both tags in the program), and compute the maximum percentage match possible. This is Table 4.
| Programme | Total tags | In game | Conflicts | Max matches | Max match % |
|---|---|---|---|---|---|
| Computational Social Science (6-tag) | 6 | 4 | 1 | 3 | 50.0% |
| Global Arts, Culture and Politics | 11 | 6 | 0 | 6 | 54.5% |
| Biologie | 10 | 7 | 1 | 6 | 60.0% |
| Media en cultuur | 10 | 7 | 1 | 6 | 60.0% |
| Cognition, Language and Communication | 11 | 8 | 1 | 7 | 63.6% |
| Science, Technology & Innovation | 10 | 8 | 1 | 7 | 70.0% |
| Arabische taal en cultuur | 10 | 7 | 0 | 7 | 70.0% |
| Archeologie | 10 | 8 | 1 | 7 | 70.0% |
| Artificial Intelligence | 10 | 8 | 1 | 7 | 70.0% |
| Europese studies | 10 | 7 | 0 | 7 | 70.0% |
| Griekse en Latijnse taal en cultuur | 10 | 7 | 0 | 7 | 70.0% |
| Hebreeuwse taal en cultuur | 10 | 7 | 0 | 7 | 70.0% |
| Italie studies | 10 | 7 | 0 | 7 | 70.0% |
| Kunstgeschiedenis | 10 | 7 | 0 | 7 | 70.0% |
| Literary and Cultural Analysis | 10 | 8 | 1 | 7 | 70.0% |
| Media and Information | 10 | 7 | 0 | 7 | 70.0% |
| Muziekwetenschap | 10 | 7 | 0 | 7 | 70.0% |
| Nieuwgriekse taal en cultuur | 10 | 7 | 0 | 7 | 70.0% |
| Oudheidwetenschappen | 10 | 7 | 0 | 7 | 70.0% |
| Theaterwetenschap | 10 | 7 | 0 | 7 | 70.0% |
| Wiskunde | 10 | 8 | 1 | 7 | 70.0% |
| Politics, Psychology, Law and Economics (PPLE) | 7 | 5 | 0 | 5 | 71.4% |
| Biomedische wetenschappen | 9 | 8 | 1 | 7 | 77.8% |
| Duitslandstudies | 10 | 8 | 0 | 8 | 80.0% |
| English Language and Culture | 10 | 8 | 0 | 8 | 80.0% |
| Filosofie | 10 | 8 | 0 | 8 | 80.0% |
| Franse taal en cultuur | 10 | 8 | 0 | 8 | 80.0% |
| Geschiedenis | 10 | 8 | 0 | 8 | 80.0% |
| Informatica | 10 | 8 | 0 | 8 | 80.0% |
| Nederlandse taal en cultuur | 10 | 8 | 0 | 8 | 80.0% |
| Psychobiologie | 10 | 9 | 1 | 8 | 80.0% |
| Religiewetenschappen | 10 | 8 | 0 | 8 | 80.0% |
| Scandinavie studies | 10 | 8 | 0 | 8 | 80.0% |
| Scheikunde | 10 | 8 | 0 | 8 | 80.0% |
| Slavische talen en culturen | 10 | 8 | 0 | 8 | 80.0% |
| Spaanse en Latijns-Amerikaanse studies | 10 | 8 | 0 | 8 | 80.0% |
| Geneeskunde | 7 | 7 | 1 | 6 | 85.7% |
| Medische informatiekunde | 7 | 7 | 1 | 6 | 85.7% |
| Sociologie | 7 | 7 | 1 | 6 | 85.7% |
| Universitaire Pabo van Amsterdam | 7 | 7 | 1 | 6 | 85.7% |
| Business Administration | 8 | 8 | 1 | 7 | 87.5% |
| Business Analytics | 8 | 8 | 1 | 7 | 87.5% |
| Interdisciplinaire sociale wetenschap | 8 | 8 | 1 | 7 | 87.5% |
| Onderwijswetenschappen | 8 | 8 | 1 | 7 | 87.5% |
| Sociale geografie en Planologie | 8 | 8 | 1 | 7 | 87.5% |
| Actuarial Science | 9 | 9 | 1 | 8 | 88.9% |
| Economics and Business Economics | 10 | 10 | 1 | 9 | 90.0% |
| Information Science (Informatiekunde) | 10 | 10 | 1 | 9 | 90.0% |
| Linguistics (Taalwetenschap) | 10 | 9 | 0 | 9 | 90.0% |
| Natuur- en Sterrenkunde | 10 | 9 | 0 | 9 | 90.0% |
| Sign Language Linguistics (Taalwetenschap) | 10 | 9 | 0 | 9 | 90.0% |
| Beta-gamma (Natural and Social Sciences) | 9 | 9 | 0 | 9 | 100.0% |
| Communicatiewetenschap | 6 | 6 | 0 | 6 | 100.0% |
| Computational Social Science (9-tag) | 9 | 9 | 0 | 9 | 100.0% |
| Cult. antropologie en ontw.sociologie | 5 | 5 | 0 | 5 | 100.0% |
| Econometrics and Data Science | 8 | 8 | 0 | 8 | 100.0% |
| Fiscaal Recht | 7 | 7 | 0 | 7 | 100.0% |
| Fiscale Economie | 8 | 8 | 0 | 8 | 100.0% |
| Future Planet Studies | 5 | 5 | 0 | 5 | 100.0% |
| Liberal Arts and Sciences (AUC) [1] | 9 | 9 | 0 | 9 | 100.0% |
| Liberal Arts and Sciences (AUC) [2] | 9 | 9 | 0 | 9 | 100.0% |
| Pedagogische wetenschappen | 6 | 6 | 0 | 6 | 100.0% |
| Politicologie | 7 | 7 | 0 | 7 | 100.0% |
| Psychologie | 7 | 7 | 0 | 7 | 100.0% |
| Rechtsgeleerdheid | 7 | 7 | 0 | 7 | 100.0% |
| Tandheelkunde | 6 | 6 | 0 | 6 | 100.0% |
Since no math note is complete without an exercise for the reader, I will leave it to the reader to find the other programs which, like Wiskunde, cannot appear as the top choice no matter how the user answers.
The programme most affected by this is Computational Social Science. It has 6 tags, but only 4 are in the game; artificial-intelligence and programmeren are never shown to the users. Even worse, students have to choose between ‘data’ and ‘mens’, so their maximum is 3, which is half.
A Bias in the Phantom Tags?
There are 20 programs with ‘specialist’ and 16 with ‘politiek’, with 13 having both. I’ve listed them here.
| Programme | specialist | politiek |
|---|---|---|
| Global Arts, Culture and Politics | y | |
| Arabische taal en cultuur | y | y |
| Duitslandstudies | y | y |
| English Language and Culture | y | y |
| Europese studies | y | |
| Filosofie | y | |
| Franse taal en cultuur | y | y |
| Geschiedenis | y | |
| Griekse en Latijnse taal en cultuur | y | y |
| Hebreeuwse taal en cultuur | y | y |
| Italie studies | y | y |
| Kunstgeschiedenis | y | |
| Linguistics (Taalwetenschap) | y | |
| Muziekwetenschap | y | |
| Nederlandse taal en cultuur | y | y |
| Nieuwgriekse taal en cultuur | y | y |
| Oudheidwetenschappen | y | |
| Religiewetenschappen | y | |
| Scandinavie studies | y | y |
| Sign Language Linguistics (Taalwetenschap) | y | |
| Slavische talen en culturen | y | y |
| Spaanse en Latijns-Amerikaanse studies | y | y |
| Theaterwetenschap | y | y |
It would appear these are all humanities courses, which raises questions about how the tags were assigned.
Conclusions
Choosing a study programme is an important decision for prospective students, and tools like this can shape their first impressions. The analysis shows that the quiz has some structural issues worth addressing — phantom tags, conflicts, and uneven coverage mean that some programmes are systematically disadvantaged in the rankings.
Beyond the structural issues, the tag choices themselves are worth revisiting. My personal tags as a mathematician would include: puzzels, creativiteit, nieuwe-dingen-uitvinden and, evidently, computercode-schrijven, but also mensen-helpen and gelijke-kansen.
Both "structuur-regels" and "creativiteit" are tags for math, so putting them in the same question sets up a bit of a false dichotomy. Wordsworth's sonnet "Nuns fret not at their convent's narrow room" advertises the sonnet, with all its rules and structural constraints, as a vehicle for creativity. No one would say Mozart was not creative because he wrote in sonata-allegro form. Across literature, music, and mathematics, some of the most interesting work comes from creativity within constraints, not in spite of them.
The mathematical community is known for being welcoming to people who may feel like outsiders in other settings. And, as we see here, the same critical thinking that powers mathematics can also be used to question how things works — even in a lighthearted quiz.
AI Usage
I used Claude Code to guide me through downloading the .js files and to extract the data I needed. I also used it to preview the findings. However, all results presented in this note, including the tables, were (re-)computed by me independently in SageMath.