Passionfruit Design

Survey analysis dashboard

A dashboard of a whole university's National Student Survey results. It was running within three hours of the results being published. It shows each faculty, school and course what its students scored and what they wrote. A university faculty adopted it.

Who it is for

A university faculty, which adopted it. It covers every faculty, school and course in the university.

The problem

Every year, students across the UK answer the National Student Survey. The results are published as large spreadsheets.

The published results are sorted by subject, not by course, and not by the school or faculty that runs the course. Somebody has to work out which numbers belong to whom before anyone can act on them.

The people

Staff at the university who need to know how their own courses did, and what to do about it.

What I built

A dashboard that takes the published results and works through all of them. I had it running within three hours of the results being published.

It sorts the results by faculty, school and course, so each person sees their own part. For each one it picks out the three things students rated highest and the three they rated lowest, and names the question behind each.

It compares this year with last year. It flags any course that has fallen well below the university's own figure, or dropped sharply since last year, and says why it was flagged.

It reads what students wrote as well as what they scored. It gathers the comments into themes and counts how many students raised each one. Across nine years of comments it shows which themes come up every year, which are new and which are fading.

Each course, school and faculty gets a short written summary. The outcome is a page a person can read, not another spreadsheet.

Keeping it right and keeping it private

Every average on the dashboard is worked out a second time by a separate check before it goes out.

The AI that reads the comments and writes the summaries runs on my own computer. No outside AI service ever saw what students wrote.

Staff sign in with their university account. The dashboard shows summaries and counts. Students' own words are shown only to the senior staff allowed to read them.

Where it is now

It has been in use since July 2026, for that year's results. Next year's results go in the same way.

What I did here

  • Research and data analysis

    Survey design, research and data analysis, including large amounts of data. You get findings in plain English that you can act on, not a spreadsheet.

For IT people

National Student Survey analysis for a whole university. Adopted across a faculty. In use since July 2026.

  • Running within three hours of the national results being published.
  • Reads the Office for Students' National Student Survey workbooks and full-data extract directly.
  • Rolls up institution, faculty, school and course, with year-on-year comparison when two years are loaded.
  • Concern flags: five points below the institution's own figure, below 70% overall, or a fall of more than five points in a year.
  • Nine years of tagged free-text comments (2018 to 2026) analysed deterministically for consistent, new and receding themes.
  • A local model through Ollama handles the sentiment analysis and writes the per-unit narratives, so no cloud AI service saw student comments. Output is paraphrase and counts only, scanned for personal details.
  • Node and vanilla JavaScript ES modules, with tokenised CSS. No framework.
  • Google sign-in limited to the institution's domain, verified server-side, with a signed session cookie. Raw comments sit behind an allowlist of senior staff.
  • The test suite recomputes every school and faculty mean and standard deviation independently, and renders every view in jsdom.
  • nginx and pm2 on a VPS.

All the work, with the tools named

Tell me what you need

A few lines about the project is enough. I read every message myself. I meet people face to face within about 30 miles of Portsmouth, and work with organisations anywhere in the UK.

Send me a message

Or email hello@passionfruit.design, or call or WhatsApp 07385 509278.