andrei calapod

management platform

Coordinating hundreds of internships without losing the thread

A platform for coordinating the internships of a degree programme — explicit states, a territorial map, cohort calendars and weekly reports.

Client
Degree programme of a public Italian university · described anonymously
Period
In production · academic year 2025/2026
Role
Analysis, UX/UI, full-stack development, deployment and maintenance
Stack
  • PHP
  • MySQL
  • JavaScript
  • Interactive cartography (ISTAT / Natural Earth data)
  • Caddy · Linux
Territorial map of the platform showing schools across central Italy, per-city seat counters and an assignment completion rate of 94 percent.
fig. 01 The map of schools and assignments. Demo data.

Context

A degree programme that trains teachers manages hundreds of internships every year, across the schools of an entire region and beyond. Each case involves at least three people — the coordinator, the host tutor, the trainee — and runs through a months-long cycle of documents, hours to log and a final evaluation.

Coordination needed an overview that generic tools could not give. Where are seats available? Who has not started yet? Which documents are missing? Who is at school today? These are daily operational questions, and every answer used to require manual digging.

The problem

  • Each case moves through more than ten steps between assignment, start, completion and evaluation — hard to track by hand across hundreds of cases.
  • Seats in partner schools are limited and scattered across a wide territory, with no overview of capacity and gaps.
  • Missing documents and passed deadlines surfaced late, when they were already a problem.
  • Three different roles each needed to know what was theirs to do, without chasing each other by email.

Users and goals

Programme coordination

Overall control — assigning, monitoring critical issues, declaring eligibility, producing reports.

Host tutors in schools

Confirming starts and completions, checking hours and logbooks, with minimal effort.

Trainees

Knowing where to go, tracking their path, declaring when their hours are done.

  • Make the state of every case visible and unambiguous, at any moment.
  • Give coordinators a dashboard of critical issues that updates itself.
  • Turn territorial distribution from a problem into information (map, capacities, delays).
  • Reduce communication load between the three roles by making responsibilities explicit.

The process

  1. Analysis

    Study of the real process with the people coordinating it — normal cases, exceptions, documents and out-of-sequence steps.

  2. Modelling

    The case journey was formalised as a state machine with actions and responsibilities per role.

  3. UX/UI

    An interface designed around operational questions ("who is at school today?", "where are seats missing?"), not around database tables.

  4. Development and release

    Full-stack development, a demo environment with synthetic data for training and testing, deployment and maintenance.

Architecture and modules

The platform is organised into modules, each answering one precise operational question.

Dashboard

Critical issues up front — not started, past due, missing documents, schools with no seats — plus the overall pipeline of cases.

Internships

The list of cases with state, filters and role-aware actions.

Map

Schools and assignments across the territory — capacities, full sites, delays, search by city or student.

Calendar

Daily and weekly presence by cohort — who is at school today, in which institutes, at which times.

Missing seats

Where new agreements or extra seats are needed, before it becomes urgent.

Registries

Students, schools and seats, tutors — with case history.

Configuration

Academic years, hour requirements, users and access, operations log.

Dashboard with critical issues to check, the case pipeline split by state and the weekly presence trend.
fig. 02 The dashboard — critical issues, case pipeline and weekly trend. Demo data.

The key flow

The journey of a case

Every internship moves through explicit states. Every transition has a clear owner — the coordinator, the tutor or the trainee — and the platform always shows whose move is next.

  1. To assign coordination

    No school yet. Assignment is up to the coordination team.

  2. Assigned coordination

    School, site and tutor chosen. Waiting for the first day.

  3. In progress start confirmation

    The start is confirmed by tutor, trainee or coordinator. The internship is running.

  4. To confirm host tutor

    Hours are done and completion is declared. Verification is up to the host tutor.

  5. Completed host tutor

    The tutor has checked hours and logbook and confirmed completion.

  6. Eligible coordination

    The yearly evaluation is passed; the case closes for this year.

  7. Archived year end

    Past years remain browsable, outside the operational flow.

Out-of-sequence actions exist too — cancelling or moving a case back — treated as explicit exceptions, not hidden shortcuts.

Operating guide of the platform showing the full sequence of case states and the actions of coordinators and tutors.
fig. 03 The built-in operating guide — the case journey explained inside the product. Demo data.

Main features

Critical issues first

The dashboard opens with what needs attention, not with a list of everything.

A decision-making map

Assignment percentage, full sites, cities needing seats — geography becomes a working tool.

Cohort calendars

Weekly and daily views with filters by year of study and state.

Weekly report

A concise summary ready to share with the degree programme.

Operations log

Every relevant action is tracked — who did what, when.

Built-in operating guide

The manual lives inside the platform, with the case journey explained visually.

UX decisions

States as a shared language

Coloured state badges are the platform's lingua franca — the same words in dashboard, lists, calendar and guide. No implicit states.

Actions carry the role's name

Every transition says explicitly whose move it is ("Up to the host tutor."), cutting email and ambiguity.

Questions, not tables

Views answer real operational questions — "who is here today", "where are seats missing" — instead of exposing the data structure.

The manual inside the product

The guide is not a separate PDF — it is a section of the platform, always in sync with the real flow.

Security and privacy

  • Role-based access with distinct permissions for coordination and tutors.
  • An operations log for traceability of relevant actions.
  • A separate demo environment with fully synthetic data, used for training, testing and for the images on this page.
  • Personal data limited to what case management requires.

Challenges and solutions

Challenge. The real process is full of exceptions — cancelled cases, second thoughts, special situations.

Solution. The state machine explicitly models out-of-sequence actions, instead of leaving them to users' creativity.

Challenge. Territorial scale — dozens of sites with different capacities — made assignment a puzzle.

Solution. The map with capacities, full sites and uncovered cities turns the puzzle into a view with evident priorities.

Challenge. Three roles with very different digital habits had to use the same tool.

Solution. An essential interface, few actions with explicit names, and a built-in visual guide.

Outcomes

  • In production for the current academic year, with the full case cycle — from assignment to eligibility and archive — managed on the platform.
  • Critical issues (missing documents, delays, exhausted seats) surface on the dashboard without manual digging.
  • Coordinators and tutors work on the same explicit states, each with their own actions.

The images on this page come from the demo environment with synthetic data.

Possible evolutions

  • Automatic reminders on deadlines and pending steps.
  • Exports towards university systems.
  • Multi-year statistics on schools and capacities to plan agreements.

Does this process sound familiar?

Tell me about it: the first orientation call is free of obligations.