Case study
Education · Warsaw, Poland

Teach for Poland

Turning student surveys into evidence in minutes, not weeks.

An evidence platform that imports raw survey data and instantly reveals how students across Poland feel about belonging, agency and their classrooms. School by school, cohort by cohort.

FIG. 01 — CASE FILM TEACH FOR POLAND
A Teach for Poland fellow with students in a Polish classroom
Case film · Teach for Poland

Inside a Polish classroom: where every number on the dashboard begins.

Runtime 01:44 Quality 1080 Year 2026
FIG. 02 — THE LIVE DASHBOARD dane.teachforpoland.org
The Teach for Poland wellbeing dashboard on a desktop monitor
Client Teach for Poland

National teaching fellowship, Warsaw.

Sector Education · Nonprofit

Student wellbeing measurement & MERL (Monitoring, Evaluation, Research and Learning).

Year 2026

Active partnership, currently in production.

Scope Platform, Data, Dashboard

Import pipeline, analytics, staff portal.

Stack Rails · Postgres

Hotwire, Chart.js, Solid Queue.

01 · The challenge

The data was rich. Reaching it was slow.

Teach for Poland measures what most education systems overlook: belonging, agency, confidence, safety, the texture of a classroom. Every round, thousands of students respond.

But turning those responses into something a teacher could act on meant exporting CSVs, cleaning rows, and rebuilding spreadsheets and charts by hand. One MERL lead. Roughly a week of work after every single survey round.

The old workflow · Per survey round ~7 days end-to-end
01 Survey
02 Export CSV
03 Clean data
04 Spreadsheets
05 Build charts
06 · Late Reports
02 · The approach

From raw upload to living evidence.

Four moves

One continuous flow, from the survey file to a decision a teacher can make today.

01 Import

Raw files, straight in.

Survey files drop straight in. Rows are validated, de-duplicated and mapped to dimensions automatically.

Deliverable XLSX importer, validation, auto-created teachers
02 Visualize

Charted the moment it lands.

The moment an import finishes, every question is charted. No spreadsheets, no manual setup.

Deliverable Automatic pie charts, dimension rollups
03 Filter

Answers in seconds.

Slice by school, cohort, tutor, class, survey or period. Answers in seconds, not rebuilt spreadsheets.

Deliverable Faceted, multi-level filtering
04 Track

Movement, year on year.

Compare survey waves side by side to see genuine movement in wellbeing over the school year.

Deliverable Longitudinal compare, delta badges
Feature 01 · Import

Imported, not wrangled.

CSV or XLSX files upload straight into the platform. A four-row header maps every question to its dimension in Polish and English; rows are validated and de-duplicated, and teacher accounts are provisioned automatically. On a background job built to handle thousands of rows without timing out.

Formats CSV · XLSX
Languages Polish · English
Validation Row-level QA
Processing Background queue
survey_2025.xlsx 6,264 rows · 3.4 MB
Imported
Processing complete 100%
Total rows 6,264
Imported 6,142
Duplicates flagged 98
Teachers auto-created 41
Filters · Faceted TFP Staff
School SP nr 12, Warszawa
Cohort 5
Tutor All
Class 6B
Survey 2025
Matching responses
412 updated live

Each filter narrows the others, only valid combinations stay selectable.

Feature 02 · Filter

Answers in seconds, not rebuilds.

Staff slice every result by school, cohort, tutor, class, survey or period. Filters are faceted, pick one and the rest narrow to what's actually possible. No dead ends, no empty charts, no rebuilding a spreadsheet to ask a new question.

How does Cohort 5 compare to Cohort 4?
Which tutors most improve student belonging?
Which schools gained the most in agency?
Feature 03 · Track

Two waves, side by side.

Compare mode links survey rounds together. For every matched question it sets the 2024 baseline against 2025, combines “agree” and “strongly agree”, and surfaces the shift. So real progress in belonging or agency is visible at a glance, not buried. One click exports the whole comparison to CSV.

Compare 2024 2025
Export CSV
2024
2025

“I feel accepted in my class.”

+6 pts agree
Largest shifts · Year on year
Belonging
73→79 +6.4
Self-belief
71→76 +5.1
Agency
80→84 +4.1
03 · Under the hood

Boring where it counts.

A deliberately conventional Rails stack. Uploads run on a background queue with a 30-minute ceiling, so a survey of any size lands without a timeout.

Step 01 Upload

CSV or XLSX, read with Roo.

Step 02 Solid Queue

Background job, 30-min ceiling.

Step 03 Importer

Validate, dedupe, map to dimensions.

Store PostgreSQL

Responses, answers, questions.

Serve Chart.js

Aggregated live via Hotwire.

Built with
  • Ruby 3.2
  • Rails 7.2
  • PostgreSQL
  • Hotwire
  • Turbo + Stimulus
  • Chart.js
  • Solid Queue
  • ActiveAdmin
  • Tailwind
  • Devise
04 · Results

What the numbers do for students.

Measurement window 2025 → 2026

Two survey waves across the network.

Time to insight
5 min
Was ~7 days ~2000× faster

What used to take the MERL (Monitoring Evaluation Research and Learning) lead roughly a week of exporting, cleaning and charting now happens in about five minutes. The strongest measurable outcome of the project.

Survey responses
6,000 +
Per survey wave

Student voices imported, cleaned and charted across the network every round. Duplicates automatically flagged and teacher accounts provisioned on the way in.

Schools 70+

Across the Teach for Poland network, all reporting from one dashboard.

Wellbeing dimensions 9

Belonging, agency, self-belief, class culture and more — tracked over time.

Bilingual PL / EN

Every question and label in Polish and English, for teachers and migrant students alike.

In their words · MERL lead
“The time I used to lose to spreadsheets now goes back to working with teachers and students.”
Alexis Ramos Teach for Poland
Next case study · Nº 04 / 21

FanBants .

An immersive fantasy football platform built for real fans across 70+ leagues.

View case study
A similar challenge?

Let's turn your data into decisions.