attività.mi concept prototype A clickable concept prototype for a year-round family activity planner in Milan. Nine end-to-end journeys over twenty screens, on a seed catalogue of fourteen real Milan activities. 9 journeys 20 situations 80 user actions 38 requirements
Not a live service. This is a design prototype with example data and no backend. Municipal prices, dates and rules are quoted from public 2026 sources for realism; private-provider figures are plausible examples, not offers. Nothing here can be booked, and the in-prototype date is fixed at 17 March 2026 — two days before the Comune's summer-camp registrations open — so the deadline features have something real to point at.
Delivery stage

A year-round family activity planner for Milan

Milanese parents plan a summer across municipal summer centres, sports campuses, neighbourhood community centres and private providers. That supply is published as a PDF once a year, as tables on four different sites, and as Instagram posts — with registration windows that open and close inside three weeks. Finding one activity is a search problem. Covering seven weeks for two children inside a budget is not.

This service does both: one catalogue that stays true because every record carries where it came from and when it was last checked, and a planner that composes the whole summer under real constraints — budget, distance, working hours, two children who cannot be in the same place — and says plainly which weeks it cannot cover.

20screens, clickable
9end-to-end journeys
€70,800to build, planning included

Start with one journey, then open the product

Everything in the prototype, at a glance

The screens — click any one to open it

Find an activity
9:41
2/4

Who is the summer for?

Their age is all we need. No name, no school, no photo.

Children

8 Child 1Age 8 · orange in your calendar +
13 Child 2Age 13 · blue in your calendar +
+ Add another child

Where you start from

Municipio 3 · Città StudiDistances are measured from here
Why we ask so little Age decides which activities a child may join. Name, school and exact address decide nothing, so the product never asks for them.
Next

Skip, I will search myself

Search Plan Calendar Alerts
1.01Onboarding
9:41
⚲  Search camps, sports, arts…
All Sports Arts Nature STEM

Your filters

age 8 × 15 Jun – 31 Jul × within 8 km × lunch included × I need to work free + filters
Home
Summer centre
Mincio
Cambini
Coding
Iseo
8 km radius
5 activities · 4 of 5 from public sources · ranked by relevance
Municipal Summer Centre — Casa del Sole
Comune di Milano · Education Directorate
€0–254/period
City of Milan ISEE Registration in 2 days
6–11 yrs8:30–16:30Lunch + snack1.2 km
SmartCamp — Cambini Fossati Centre
Milanosport S.p.A.
€164/wk
Milanosport ISEE Registration open
5–14 yrs8:30–17:30Lunch included1.8 km
Multisport Campus — Mincio Centre
Milanosport S.p.A.
€194/wk
Milanosport ISEE Registration open
5–14 yrs8:30–17:30Lunch included2.9 km
SwimCamp — Iseo Centre
Milanosport S.p.A.
€154/wk
Milanosport ISEE Registration open
6–12 yrs8:30–17:30Lunch included3.4 km
Coding and robotics — summer week
Codemotion Kids! Milano
€245/wk
Private Last 3 places
8–13 yrs9:00–13:00No meals1.4 kmends at 13:00
Ranking uses the preferences you stated. No behavioural profiling. See it unpersonalised
Search Plan Calendar Alerts
1.02Search and map
9:41
City of Milan ISEE Opens soon Registration in 2 days

Municipal Summer Centre — Casa del Sole

Comune di Milano · Education Directorate · Mixed activities · 1.2 km from home

6–11years
8:30–16:30Mon–Fri
Lunchincluded
From €0 to €254.04
per period · meals included
21 ISEE bands
One fee per period across 21 ISEE income bands: €0 up to an ISEE of 3,000, €169.36 above 40,000 (period A). Meals included.
Sibling discount −30% from the second child, same centre and same period.

Bookable periods

A · 10–19 Jun8 days€169.36
B · 22 Jun – 3 Jul10 days€211.70
C · 6–21 Jul12 days€254.04

You can book one period or several, and they need not be consecutive.

The day

Hours
8:30–16:30
Before / after
drop-off from 7:30, pick-up until 18:00
Meals
Lunch + snack (Milano Ristorazione)
Dietary
vegetarian, gluten free, allergies managed
Ages
6–11 · primary school only
Where
Via Giacosa 46, Milan · 1.2 km from home
Fits your working dayWith after-care until 18:00 it covers a working day that ends at 17:00.

Registration

Opens 19 March at 12:00, closes 7 April at 12:00Online only, with a SPID or CIE digital identity. Places are allocated by score (two working parents = 10 points).

This is not first come, first served — places go by score. Two working parents are worth 10 points; a sibling aged 0–14 adds 1.2.

Alert me when it opensGo to the Comune website ↗

Where this data comes from

Source
Comune di Milano — Centri Estivi 2026 (comunicato di servizio)
Licence
Public document — CAD art. 52 / D.Lgs. 36/2006, attribution
Fetched
2026-03-17 08:12
Verified
2026-03-17 09:40 by editor:giulia.m

Report an error on this listing

Search Plan Calendar Alerts
1.03Activity page
Comparison · 3 activities Child 1 · age 8
Municipal Summer Centre — Casa del Sole
Comune di Milano · Education Directorate
City of Milan ISEE Opens soon
Multisport Campus — Mincio Centre
Milanosport S.p.A.
Milanosport ISEE
English Summer Camp
Pingu's English Milano Città Studi
Private
Normalised price
€105.85 /week/child
cheapest
€194.00 /week/child
€285.00 /week/child
Comune: period B fee €211.70 ÷ 2 weeks. Pingu's: €230 + €35 lunch + €20 after-camp, because you asked for meals and cover until 17:00.
Hours8:30–16:30
covers until 18:00
8:30–17:30
covers until 17:30
9:00–16:00
until 16:00 — after-camp costs extra
MealsLunch + snack
in the price
Lunch included
in the price
Lunch included
+€35 a week
Distance from home1.2 km2.9 km1.6 km
Registration deadline7 April, 12:00
opens 19 March · SPID required
5 June
registration open
15 June
registration open
Eligible ages6–11 years
primary school only — Child 2, aged 13, is not eligible
5–14 years4–10 years
ConcessionsISEE — 21 bands, free below €3,000ISEE below €20,000 → −16%none
In one lineThe cheapest option also has the nearest deadline and the tightest age limit: it covers Child 1 but not Child 2.
Send all three to the plannerOpen the first listing
1.04Comparison
9:41
Search activities, sports, courses…
age 13 × 15 Jun – 31 Jul × within 2 km × lunch included ×

No activity matches these filters

For a 13-year-old within 2 km, with lunch included, the catalogue has nothing today. That is not a bug: it is a gap in supply, and we are tracking it.

The smallest change that works

Widen the radius to 6 km
Multisport Campus Mincio · Summer Lab Teens at BAM
2 results
Drop “lunch included”
Coding and robotics, mornings only
1 result
Alert me if something matching appears Know an activity we are missing? Tell us
What happens behind the scenes This empty search is logged with its filters. It is the signal that decides which providers we approach first.
Search Plan Calendar Alerts
1.05No results
Compose the summer
9:41
3/4

A few more preferences

These decide what the planner may bend when no perfect summer exists.

2 children · 8 and 13 15 Jun – 31 Jul €1,300 8 km

7 weeks × 2 children = 14 child-weeks to cover. Tap any chip to change it.

Hard constraints non-negotiable

€1,300 totalCovers roughly 8–9 of the 14 child-weeks 8 km from homeMeasured from Municipio 3 · Città Studi

Preferences can bend

I work until 17:00Activities must cover the working day 🍴 Lunch included, where possibleNot a reason to reject a week on its own

If the two children clash

Cover as many weeks as possible Even if one child gets more than the other Split evenly between them The same number of weeks each

Activity types optional

Sports 🎨Arts 🌲Nature 🔬STEM 💬Languages Other
Combinations are computed by a constraint solver, not by a language model. The AI only writes the explanation, and we say so every time (EU Reg. 2024/1689, art. 50).
Plan my summer
Search Plan Calendar Alerts
2.01Constraints
9:41
2.3 s · CP-SAT LF

Your summer plan

15 June – 31 July · 2 children · €1,300 budget · within 8 km

€1,241.74of €1,300 · €58.26 left
8/14weeks covered
2.9 kmlongest trip
Lowest cost · €1,242Least travel · €1,286Most variety · €1,244
ScheduleMapComparison
15–19
Jun
8Multisport Campus€194.00 · 8:30–17:3013Multisport Campus€194.00 · 8:30–17:30
22–26
Jun
8Municipal Summer Centre€211.70 / 2 wks · 8:30–16:3013Multisport Campus€194.00 · 8:30–17:30
29
Jun – 3 Jul
8Municipal Summer Centre€211.70 / 2 wks · 8:30–16:3013Multisport Campus€194.00 · 8:30–17:30
6–10
Jul
8Municipal Summer Centre€254.04 / 2 wks · 8:30–16:3013UncoveredNothing inside your limits that week
13–17
Jul
8Municipal Summer Centre€254.04 / 2 wks · 8:30–16:3013UncoveredNothing inside your limits that week
20–24
Jul
8UncoveredNothing inside your limits that week13UncoveredNothing inside your limits that week
27–31
Jul
8UncoveredNothing inside your limits that week13UncoveredNothing inside your limits that week
6 child-weeks stay uncoveredChild 1 (8): 20–24 Jul, 27–31 Jul
Child 2 (13): 6–10 Jul, 13–17 Jul, 20–24 Jul, 27–31 Jul
Explanation generated by AI. Leans on the municipal summer centre, which even at the top ISEE band costs less than half a private week. Child 2 cannot attend the municipal summer centre — it is primary school only — so her weeks cost more.

The other two plans

Least travel
Everything within 1.8 km of home: one trip in the morning, both centres walkable or a short ride.
€1,286
9/14 wks
max 1.8 km2 categorieslunch always included
Most variety
Four different categories instead of one. One week ends at 13:00 and needs cover.
€1,244
8/14 wks
max 4.6 km4 categorieslunch always included
Save to calendarAdd the sailing week
Search Plan Calendar Alerts
2.02Three plans
9:41
0.2 s · CP-SAT

This week cannot fit the plan

Junior Sailing — weekly course for Child 2, week of 29 June.

Two constraints cannot both hold

Maximum distance 8 kmhard

actual value: 9.4 km
Junior Sailing is at the Idroscalo, 9.4 km from home — beyond the 8 km limit you set.

Total budget €1,300hard

actual value: €1,307.74
Dropping Child 2's week W3 (−€194.00) and adding the sailing course (+€260.00) takes the total from €1,241.74 to €1,307.74 — over the €1,300.00 budget.

Three ways out

Raise the radius to 10 km and the budget to €1,310
Resolves both conflicts. No week changes and neither child loses anything.
€1,307.74
+€66.00
recommended the smallest change that resolves both conflicts
Take the shuttle from Piazzale Loreto (+€25) and raise the budget
The 8 km limit stays: your own trip drops to 1.1 km. But it costs more.
€1,332.74
+€91.00
Drop Child 1's week of 15–19 June (−€194.00)
Back inside the budget, but you still need the 10 km radius and one more week goes uncovered.
€1,113.74
−€128.00
Conflicts are computed by the solver. No option is applied on its own: you choose which constraint gives way.
Never mind, back to the plan
Search Plan Calendar Alerts
2.03Conflicts
9:41
Summer 2026

Family calendar

“Most variety” plan · €1,243.74 · 8 weeks of 14

Child 1 · 8Child 2 · 13
15–19 JunSwimCamp€154.00 · 8:30Multisport Campus€194.00 · 8:30
22–26 JunMunicipal Summer Centre€211.70 / 2 wks · 8:30Summer Lab Teens€215.00 · 9:00
29 Jun – 3 JulMunicipal Summer Centre€211.70 / 2 wks · 8:30Summer Lab Teens€215.00 · 9:00
6–10 JulMunicipal Summer Centre€254.04 / 2 wks · 8:30uncovered
13–17 JulMunicipal Summer Centre€254.04 / 2 wks · 8:30uncovered
20–24 JulGrandparents, Sestri Levanteyours · no bookingGrandparents, Sestri Levanteyours · no booking
27–31 JulFamily holidayyours · no bookingFamily holidayyours · no booking
green public · blue private · amber uncovered · violet yours
Clash · week of 15 JuneBoth children start at 8:30 but at different centres: SwimCamp Iseo (3.4 km) and Multisport Mincio (2.9 km). You need a second adult or a swap.
2 weeks still uncoveredChild 2: 6–10 Jul, 13–17 Jul
Two more were covered by what you added yourself.
+ Add your ownChange one child

Deadlines attached to this plan

Dote Sport Lombardy — applications close tomorrow
€100 per child aged 6–17 towards sports courses, for an ISEE up to €20,000. The window closes on 18 March.
1 day
Municipal summer centres — registration opens in 2 days
From 19 March at 12:00 to 7 April at 12:00, with a SPID or CIE digital identity only. Child 1 is inside the 6–11 age range; Child 2 is not.
2 days
Milanosport — promotional window from 21 April
Weeks bought between 21 April and 12 May cost €175 instead of €194. On your current plan that saves €76.
35 days
Export .icsFill the gaps
Search Plan Calendar Alerts
2.04Calendar
9:41
0.6 s · CP-SAT

Change one child's weeks

The other child keeps everything already agreed.

Child 1 · 8
weeks stay as they are
unchanged
Child 2 · 13
weeks being reworked
in this change
Child 1’s weeks stay as they areChild 1 keeps 5 weeks at €619.74, including two municipal periods that are already applied for. That leaves €680.26 of the €1,300 budget for Child 2.

What changes for Child 2

WeekWasBecomesCost
15–19 JunMultisport Campus
€194.00
SmartCamp
€164.00
−€30.00
22–26 JunSummer Lab Teens
€215.00
SmartCamp
€164.00
−€51.00
29 Jun – 3 JulSummer Lab Teens
€215.00
SmartCamp
€164.00
−€51.00
6–10 Julnothing
SmartCamp
€164.00
+€164.00
3 → 4weeks covered
+€32.00on these weeks
1.8 kmlongest trip, was 4.6 km
Explanation generated by AI. Child 2 keeps a whole week more and every centre is inside 1.8 km, for €32.00 more. The whole of Child 1's summer is untouched.
New total €1,275.74€24.26 left of the budget. One week is still uncovered for Child 2 — the week of 13–17 Jul.
Accept these changesTry another
Cover a week ourselves instead
Search Plan Calendar Alerts
2.05Change one child
9:41
Your own entry

Add your own

For the weeks nobody sells you: the grandparents, the holiday, the fortnight you take off. The plan needs to know about them.

Grandparents, Sestri Levante
Child 1 · 8Child 2 · 13
15–19 Jun22–26 Jun29 Jun – 3 Jul6–10 Jul13–17 Jul20–24 Jul27–31 Jul
€0.00 optional
Family
They take both of them for the week. Train on the Monday.
What this will doCovers 2 children for the week of 20–24 Jul. Uncovered weeks in your plan fall from 6 to 4, and the planner will stop proposing activities for that week.
🔒 This stays yoursPrivate to your household. Never published, never shown to providers, never used to rank anything. It exists to make your calendar true.
Add to the calendarAdd it and re-plan around it

Already added

Family holiday
27–31 Jul · both children
yours
All four of us. Nothing to book here.
Search Plan Calendar Alerts
2.06Add your own
9:41

Planning their perfect summer…

Two children, seven weeks, one budget.

Finding activities near you
Checking availability and ages
Optimising the schedule
Writing the explanation
Before you see it At €1,300 within 8 km we can usually cover 8 or 9 of the 14 child-weeks. The plan will name the weeks it cannot cover rather than quietly dropping them.
The combination is computed by a constraint solver. Only the paragraph explaining it is written by AI (EU Reg. 2024/1689, art. 50).
See the plans

Cancel and change a constraint

Search Plan Calendar Alerts
2.07Solver working
Stay ahead of deadlines
9:41
17 March 2026

Alerts

Ordered by urgency, not by date. Two of them close this week.

Dote Sport Lombardy — applications close tomorrow
by tomorrow
€100 per child aged 6–17 towards sports courses, for an ISEE up to €20,000. The window closes on 18 March.
Child 1 · 8 Child 2 · 13
Check the requirementsDismiss
Municipal summer centres — registration opens in 2 days
in 2 days
From 19 March at 12:00 to 7 April at 12:00, with a SPID or CIE digital identity only. Child 1 is inside the 6–11 age range; Child 2 is not.
Child 1 · 8
Get SPID readyDismiss
Estate Vacanza — registration from 18 March
in 1 day
Residential stays for ages 6–14 in Liguria and Piedmont, seven sessions from 10 June to 5 September.
Child 1 · 8 Child 2 · 13
See the sessionsDismiss
Milanosport — promotional window from 21 April
in 35 days
Weeks bought between 21 April and 12 May cost €175 instead of €194. On your current plan that saves €76.
Child 1 · 8 Child 2 · 13
Remind me on 21 AprilDismiss
Coding and robotics — last 3 places
in 85 days
Codemotion Kids! Milano updated availability yesterday at 18:02.
Child 1 · 8 Child 2 · 13
Open the activityDismiss
You only get the alert types you turned on: openings, deadlines, new matching activities, price changes. Manage preferences and consents
Search Plan Calendar Alerts
3.01Alerts
9:41
Preferences

Weekly digest

Last sent on 12 March · you saved 2 activities from it.

Thursday
08:00 Europe/Rome

What it may contain

Summer centres
Year-round courses
Free and municipal activities
Weekend one-offs
Vouchers and ISEE concessions

Immediate alerts

Registration opening
Registration deadline
New places available
New activities that fit
Price change or promotion

Consents

Service and account required
Required to use the service.
Weekly digest by email
A commercial communication under art. 130 of the Italian privacy code. Revocable from every message.
Alerts on deadlines and places
Only for activities you saved or that match your profile.
Behavioural profiling
Off by default. The service runs on the preferences you stated.
How we measure the digestWe count clicks, saves and registrations. We do not count opens: more than half of them today are mail-client fetches and would tell us something untrue.

Your data

The account belongs to an adult. Of the children we keep only an age band and interests. No name, no photo, no school, no exact address.

Export the dataDelete the account
Search Plan Calendar Alerts
3.02Preferences
Publish and keep current
Provider portal ASD Vela Idroscalo Milano verified

Vela Junior — corso settimanale

Unpublished draft · last edited today at 09:55

We cannot publish: two fields are missingWithout hours the listing does not appear in the “I need to work” filter, the one parents use most. Without a deadline we cannot alert families when registration is about to close.
9
14
Sailing and outdoors
15–19 Jun22–26 Jun29 Jun – 3 Jul6–10 Jul13–17 Jul20–24 Jul27–31 Jul

Enter a start time.

Families filter on this field.

Lunch included
€260
per week
4
15 February 2026

This is the field that generates alerts.

Not stated — families with allergies filter on this field
PublishSave as draftConnect an automatic source

Listing completeness

82%
  • Dietary information not stated
  • No photo on 1 of 3 activities
  • Hours and deadline missing

Last 30 days

Views
1,842
Saves
96
Clicks to register
41

No commission on registrations. Registration happens on your own site.

Data verification

Last confirmed: today, 09:55 by you.

Families see this date on the public listing. After 30 days without confirmation the listing is flagged for review.

4.01Listing editor
Provider portal · Sources ASD Vela Idroscalo Milano

Where we get your data

Only from channels you connect yourself. We do not scrape your site without an agreement, and every automatic extraction passes through your confirmation.

✎ Manual entry
3 activities published
active
What we read: Manual entry. No external access.
📅 ICS calendar feed
Paste an .ics URL and the dates keep themselves up to date
available
What we read: We read only dates, times and titles from the .ics file you give us.
Connect
◉ Instagram Business
Connect your account: we read only your own posts, and ask you to confirm
available
What we read: We read only your own business account posts. Never direct messages, never other accounts.
Connect
✈ Telegram channel
Add our bot as an administrator of your channel
available
What we read: We read only the channel where you add us as an administrator.
Connect
✉ Newsletter forwarding
Forward your newsletter to listings@…: we extract the dates and ask you to confirm
available
What we read: We read only the emails forwarded to that address. No access to your mailbox.
Connect

Waiting for your confirmation · 2

Extracted from your own posts. Until you confirm them, families do not see them.

Junior Sailing — extra week 27–31 July
extracted 2026-03-17 06:00 · overall confidence 0.96
ready
ageRange
9–14
confidence 0.99
weeks
W7
confidence 0.98
price
€260 / week
confidence 0.97
hours
9:00–17:00
confidence 0.99
meals
lunch included
confidence 0.95
Confirm and publishCorrectNot ours
Sailing open day — Saturday 12 April
extracted 2026-03-16 18:40 · overall confidence 0.58
needs checking
ageRange
8–16
confidence 0.71
weeks
one-off event
confidence 0.80
price
free?
confidence 0.35
hours
not stated
confidence 0.22
meals
none
confidence 0.78
To checkPrice inferred from “come and try” — confirm whether it is free
Hours missing — a required field
Confirm and publishCorrectNot ours
Why we ask you to confirmAn automatic extractor gets the price or the age range wrong on about one listing in five. Your confirmation is what makes the catalogue trustworthy — and it puts the “verified by the provider” stamp on the public listing.
4.02Connected sources
Publisher console Comune di Milanoconsent active

What we read from you

One page, kept honest. You can change any of it without asking us.

32activities live from your documents
1,842families reached, 30 days
263clicks sent to your registration pages
11clean reads in a row

What was agreed

Signed
2026-02-24 · PROT-2026-0112458
Contact
Ufficio Servizi all'Infanzia
Licence
Public documents, CAD art. 52 / D.Lgs. 36/2006, attribution required
How often
Daily during registration windows, weekly otherwise
In scope — we read these
  • Centri Estivi — annual service notice (PDF)
  • Sezioni Estive — infant schools page
  • Estate Vacanza — residential programme page
Out of scope — we never read these
  • Anything behind a login
  • Personal data of any kind
  • Pages not listed in the scope above

Last read

Centri Estivi 2026
2026-03-17 08:12:04 · 6 stages · took 47.2 s
waiting on our editor
Compared against Centri Estivi 2025: 3 new sites, 1 removed, 4 changed. Nothing is published until one of our editors has seen the four we were unsure about.
Previous failure: 2026-02-28 — host returned 403 for 40 minutes
See the full reading log

Two things only you can fix

Two records have no opening hours
Why it matters: Families filter on hours; without them the two sites are invisible in the busiest filter
What would fix it: Add the hours to the notice, or tell us and we will record them
We have fixed itRecord the answer for us
Annex 2-bis is a scanned image
Why it matters: We cannot read it reliably, so the PEG fee table is not published
What would fix it: A text PDF of that annex would fix it permanently
We have fixed itRecord the answer for us

Your controls

Pause reading
We stop fetching. What is already published stays, marked as not verified since today.
Change how often
Daily, weekly or only when you tell us.
Give us a feed instead
Publish an ICS or CSV and we stop parsing the PDF altogether. Fewer mistakes, on both sides.
Withdraw consent
We stop reading and unpublish everything sourced from you within 24 hours.
The deal, in one lineYou publish what you already publish. We read only what is listed above, tell you what we could not read, and send families back to your own registration pages. You can stop us at any time.
4.03Municipality console
Keep the catalogue true
Back office Queue · 4 Source health →

Moderation queue

Nothing extracted automatically goes public without passing through here. Auto-publish threshold: confidence ≥ 0.90 on every required field.

Estate Ragazzi 2026 — Oratorio San Luigi
San Luigi Parish · Provider Instagram Business (2 connected) · extracted 2026-03-17 05:31
needs provider confirmation
confidence 0.62
ageRange
6–13
0.91
weeks
W2–W6
0.74
price
€45 / week
0.48
hours
not stated
0.20
meals
not stated
0.20
FlagsPrice inferred from a caption, not from a price page
Hours missing — a required field
Publish anywayCorrect a fieldAsk the provider to confirmReject
Summer Lab Teens — extra week
Fondazione Riccardo Catella · Provider ICS feeds (3 connected) · extracted 2026-03-17 06:00
ready to publish
confidence 0.96
ageRange
12–16
0.99
weeks
W5
0.98
price
€215 / week
0.97
hours
9:00–17:30
0.99
meals
lunch included
0.95
PublishCorrect a fieldAsk the provider to confirmReject
Summer Centre — Scuola Rinnovata Pizzigoni
Comune di Milano · Comune di Milano — Centri Estivi 2026 (comunicato di servizio) · extracted 2026-03-17 08:12
needs an editor check
confidence 0.88
ageRange
6–11
0.99
weeks
A, B, C
0.94
price
21 ISEE bands
0.86
hours
8:30–16:30
0.99
meals
lunch + snack
0.93
FlagsNew venue compared with the 2025 edition — check the address
Publish anywayCorrect a fieldAsk the provider to confirmReject
Youth theatre course — autumn enrolment
Teatro del Buratto · Provider Instagram Business (2 connected) · extracted 2026-03-16 19:14
needs provider confirmation
confidence 0.41
ageRange
11–15
0.55
weeks
n/a — year-long course
0.60
price
not stated
0.15
hours
Wednesday afternoon
0.44
meals
none
0.80
FlagsConfidence below the 0.70 threshold — not publishable
Two independent extractions disagree on the price
Publish anywayCorrect a fieldAsk the provider to confirmReject
Why the queue existsPublished benchmarks on extraction from listing pages give 65–85% exact values per field. With four required fields, about one listing in five would carry an error. One editor-hour a day is what keeps the catalogue true.
5.01Moderation
Back office · Sources ← Moderation queue

Source freshness

Checked at 10:00 · 14 published activities · 11 complete · 2 awaiting confirmation · 1 to re-verify

14published activities
79%with complete data
2sources to watch
1.3 daverage data age
SourceTypeRecordsLast fetchLast human checkCadenceHealth
Comune di Milano — Centri Estivi 2026 (comunicato di servizio)
Public document — CAD art. 52 / D.Lgs. 36/2006, attribution
PDF322026-03-17 08:122026-03-17 09:40
editor:giulia.m
dailyokOpen run
Milanosport — Campus Estivi 2026
Public body website — editorial import, attributed
Web page402026-03-16 06:052026-03-16 11:20
editor:giulia.m
dailyokRe-run
Case di Quartiere — calendario estate 2026
Host returns 403 to non-browser agents; only 2 of 42 rows are for children.
Public body website — editorial import, attributed
Web page42
of which 2 for children
2026-03-15 07:302026-03-15 10:05
editor:paolo.r
weeklywatchRe-run
dati.comune.milano.it — Municipi and NIL polygons
CC BY 4.0
Open data972026-03-01 03:002026-03-01 03:00
system
monthlyokRe-run
Provider ICS feeds (3 connected)
Provider-supplied under listing agreement
ICS feed182026-03-17 06:002026-03-17 06:00
provider
hourlyokRe-run
Provider Instagram Business (2 connected)
2 extracted posts awaiting provider confirmation for 26h.
Provider-consented, Instagram Login (own account)
Instagram112026-03-17 05:302026-03-16 18:02
provider
dailywatchRe-run
Provider portal (self-listed)
Provider-supplied under listing agreement
Portal632026-03-17 09:552026-03-17 09:55
provider
liveokRe-run

Coverage by Municipio

Municipio 1
1
Municipio 2
1
Municipio 3
5
Municipio 4
1
Municipio 5
1
Municipio 8
1
Municipio 9
1
Outside the city
2

Municipio 3 is covered because it is the pilot district. Municipi 6, 7 and northern 9 are at zero: that is where acquisition goes next.

Coverage by age band

3–5 years
1
6–8 years
8
9–11 years
9
12–14 years
6
15–17 years
1

The 15–17 band has a single activity. It is the same gap the zero-result searches have been reporting for two weeks.

See the zero-result searches
5.02Source freshness
Back office · Source scan ← Source freshness

Centri Estivi 2026

Comune di Milano — Centri Estivi 2026 (comunicato di servizio)

needs review
scan-2026-03-17-0812
Triggered by
change detected — document hash differs from the 15 March snapshot
Started
2026-03-17 08:12:04 · took 47.2 s
Compared with
Centri Estivi 2025
Consent
PROT-2026-0112458 · what the Comune sees
1
Fetch
clean
2.1 s
2
Parse
clean
18.4 s
3
Extract
look
21.3 s
4
Diff vs 2025
clean
0.9 s
5
Validate
look
0.3 s
6
Gate
waiting
0.2 s

What each stage did

Fetch
The bytes are kept, so a re-parse can be compared against the same input.
clean
HTTP status200
Size1.24 MB
SHA-256a41f…9e02
Snapshotstored, replayable
User agentbrowser UA — this host answers 403 to bots
Parse
Layout matched the 2025 template, so the table locator did not have to be relearned.
clean
ParserDocling (MIT)
Pages16
Tables found4
Table rows32 sites + 21 fee bands
Text layernative, no OCR needed
Extract
Two records disagreed between the two extractions on the address line.
look
Records32 summer centres
Fields per record9
Mean confidence0.94
Below threshold2 records
Modelstrict JSON schema, two independent prompts
Diff vs 2025
A whole-table change is normal in March; a single changed address is the thing to check.
clean
New sites3
Removed1
Changed4
Unchanged25
Fee tableall 21 bands changed — expected, annual revision
Validate
Two records cannot be published as they stand: the filter would silently drop them.
look
Schema errors2
Missing required fieldhours on 2 records
Date sanity3 periods, all inside the school year
Fee monotonic across ISEE bandsyes
Gate
Publication waits for a human on everything the run could not settle by itself.
waiting
Auto-publishable26 of 32
To an editor4
Blocked2 — missing hours
Nothing published yetcorrect

What changed since Centri Estivi 2025

SiteWhat changedConfidenceRoute
newScuola Rinnovata Pizzigoni
Municipio 8
Not in the 2025 edition. Address needs a human check against the school register.
0.88
To an editor
newScuola Primaria Cavalieri
Municipio 2
New site, address parsed cleanly and geocoded to Via Anemoni.
0.96
auto
newScuola Primaria Trilussa
Municipio 6
New site, matches an existing school record in the open-data register.
0.97
auto
removedScuola Primaria Pini
Municipio 4
Present in 2025, absent in 2026. Unpublish rather than delete, with the reason recorded.
1.00
To an editor
changedCasa del Sole
Municipio 3
Period C extended by two days; fee for the top ISEE band moves 249.10 → 254.04.
0.99
auto
changedScuola Primaria Muzio
Municipio 9
Address line differs from 2025 and the two extractions disagree on the house number.
0.61
To an editor

What we could not read

Annex 2-bis, fee table for PEG pupilsScanned image, no text layer. Plan: OCR pass queued; 21-band table is unaffected.
Footnote 4 on page 11Footnote text sits outside the table region. Plan: Read by an editor; it concerns refunds, not sites.
Why this screen existsA municipal document is republished once a year without notice, and it carries the prices and deadlines that matter most. Treating each read as a replayable run — snapshot in, named stages, diff against last year, explicit unread list — is what turns an annual PDF into a source we can promise families is true.
Review the 4 flagged recordsReplay on the stored bytesTell the Comune what we could not read
5.03Municipal scan

What it costs, and how it is built

The stages, and what each one costs

Six stages. Each is separately fundable, each delivers something you can use or judge on its own, and each ends at a gate you can decline to pass. Prices round up to the nearest hundred euros and time up to whole weeks, so every figure here is the pessimistic one; elapsed time assumes the stages run in sequence, because a gate is only a decision point if the next stage has not already started.

15 weeksend to end, if every stage is funded
€70,800all six stages together
€4,000the only commitment needed today
S0Planning and product focusingfixed price, two weeks
2 weekselapsed
€4,000cost
What it delivers

A detailed architecture of the service, a stage-by-stage timeline, and a budget for building it — the three documents this estimate is a draft of, made specific to the decisions you have taken by then.

What it proves

That the product is focused enough to cost properly: what is in the first release, what is deliberately out, and which assumptions the price depends on.

Passes whenA signed-off architecture, timeline and budget — or a decision not to build, taken for €4,000 instead of after the first invoice
Working by the end of it
No new screens — this stage is evidence and decisions, not interface.
S1Evidence and interviewsbefore any product code
1 weekelapsed
€5,900cost
What it delivers

No product. A measured answer to whether Milan has enough true, maintainable supply, the clickable prototype you are reading, and a hand-labelled evaluation set no vendor sells.

What it proves

Whether the MVP is worth commissioning at all.

Passes when≥300 complete listings · ≥15 of 20 providers willing to list · extraction ≥0.85 on required fields · at most one public source changing faster than weekly
Working by the end of it
No new screens — this stage is evidence and decisions, not interface.
S2Catalogue livethe supply engine and the public catalogue
5 weekselapsed
€28,100cost
What it delivers

Search, map, activity pages with provenance, the whole ingestion pipeline, the municipal scan console, the municipality's own consent monitor, moderation and the freshness ledger.

What it proves

That a stranger can find a real Milan activity, and that the catalogue stays true without heroics.

Passes whenFreshness carried six consecutive weeks under one editor-hour a day · zero-result rate below 5%
S3Householdaccounts, saving, alerts, the digest
3 weekselapsed
€15,100cost
What it delivers

Onboarding, favourites and collections, comparison, the family calendar with your own entries, deadline alerts, the weekly digest and the preference centre.

What it proves

That families come back — the only thing that makes a catalogue a product.

Passes whenWeekly return rate and saves per household at or above the pilot targets
S4Plannerthe feature nobody else has
2 weekselapsed
€10,500cost
What it delivers

The constraint solver, three objectives, explained infeasibility, revising one child's weeks while the other's stay as they are, and the AI layer that reads intent and writes the explanation.

What it proves

That the distinctive claim survives contact with real catalogue density.

Passes when≥150 summer sessions with dates, prices and hours by March 2027
S5Supply self-servicethe providers maintain it, not us
2 weekselapsed
€7,200cost
What it delivers

The provider portal, listing validation, consented ingestion from ICS, Instagram, Telegram and forwarded newsletters, and provider-side analytics.

What it proves

That editorial cost stops growing with the catalogue.

Passes when≥30 providers self-updating; editorial minutes per listing falling

What the system does

Eight branches of functionality. Together they are the product; separately they are what can be moved between stages, cut or deferred without breaking the others. Each one is visible in the prototype, and each one is priced in the estimate.

Pick a delivery stage above to see which of these are working by the end of it.

01
Finding an activityParent

One catalogue for a city whose supply is scattered across four kinds of publisher.

  • Municipal, non-profit and private supply in one ranked list, each labelled
  • Thirteen families of filter that combine: age, dates, cost, type, hours, meals, dietary needs, logistics, format, registration state, discounts, sector, support
  • Search by radius from home, by Municipio, or by neighbourhood
  • A map with the radius drawn, because distance is a decision and not a number
  • A dead end that proposes the two smallest changes that would return something
02
Knowing what a place really costsParent

Four providers quote four different units. Comparison is impossible until they are reduced to one.

  • Normalised price per week per child, with what it includes
  • Municipal fees across all twenty-one ISEE bands, from free upward
  • Registration fees, meals, before- and after-care counted in, not left as footnotes
  • Sibling, multi-week and early-booking discounts applied where they exist
  • Two to four activities side by side on price, dates, hours, meals, distance, deadline
03
Planning a whole summerParent

The feature no competitor offers: not one activity, but seven weeks for every child inside one budget.

  • Constraints stated once — children, dates, budget, distance, working day, meals
  • Three complete plans that trade differently: cheapest, least travel, most variety
  • The weeks it cannot cover, named child by child rather than quietly dropped
  • When a request cannot fit, the two constraints that collide and costed ways out
  • Re-plan one child while the other's weeks stay exactly as they are
  • Your own weeks — the grandparents, the holiday — count as cover
04
Not missing the deadlineParent

The cheapest places in Milan have the tightest windows. Deadlines are data here, not sentences inside a description.

  • Registration openings, closings, last places and newly matching activities as typed events
  • Alerts per child, opt-in and individually switchable
  • A weekly digest ranked like the search, with a reason beside each item
  • A family calendar across all children, with clashes outlined before June
  • Export to the calendar the family already uses
05
Keeping the catalogue trueOur editor

The hardest part of the product, and the one that decides whether it is still useful in a year.

  • Every source read under a named agreement or an open licence, recorded as data
  • Six-stage reads: fetch, parse, extract, diff, validate, gate — each one inspectable
  • The bytes kept, so a fix can be judged against the same document
  • Compared against last year's edition, so a republication is three changes and not thirty-two records
  • Two independent extractions, and anything they disagree on goes to a person
  • The same camp found in three places collapses to one record
06
Letting publishers own what we publishComune · providers

A municipality is a consenting publisher, not a target. A provider is the only person who knows their own prices.

  • A console showing what was agreed, what is live, and what we could not read
  • Change the cadence, hand us a feed instead of a PDF, pause, or withdraw — no email needed
  • Providers create and correct their own listings, with validation as they type
  • Places and deadlines on their own quick path, because they go stale fastest
  • Connect a calendar feed, Instagram, Telegram or a forwarded newsletter instead of typing
07
Handling family data carefullyEveryone

A product for households with children, designed so that most of the data simply is not collected.

  • The account belongs to an adult; a child exists as an age and some interests
  • No name, school, photo or precise location asked for at any point
  • Separate consents for the digest, alerts and personalisation, each revocable
  • Ranking runs on what the family stated, not on what it was observed doing
  • Anything written by a model says so, and the model never decides a number
08
Knowing whether it worksYou

The measurements that tell you whether to fund the next stage.

  • Searches that returned nothing, ranked — the supply to acquire next
  • Coverage by Municipio and by age band, so gaps are visible before they are complaints
  • Saves per household and the weekly return rate
  • Clicks sent onward to a provider or a municipal registration page
  • Which providers keep their own listings current, and which never come back

Architecture, and what we are not building twice

Six components, four surfaces, one ingestion engine. The colour on each box says where the code comes from: most of the plumbing is already running in one of our own products, the operator surfaces are our own studio kernel, and the genuinely new work is concentrated in two places — the constraint solver and everything that makes a municipal document trustworthy.

pREfabricated a metacomponent in our library covers this: ingestion, extraction, accounts, consent, calendars, operator surfaces open-source build assembled for this product on open-source foundations third-party adopted, not written by us

Sources · read under consent, never taken

Comune di MilanoAnnual service notice as PDF, plus two HTML pages. Read under a named agreement.open-source build
MilanosportEight campus products, weekly prices, HTML.pREfabricated
Case di QuartiereLiferay table that refuses non-browser agents.pREfabricated
Open data (CKAN)Municipi and NIL polygons, school and facility locations. CC BY 4.0.open-source build
Provider channelsICS, Instagram Business, Telegram, forwarded newsletters — all connected by the provider.open-source build

C.5 · Ingestion and trust — the engine the product lives on

Source registry + ratificationWhich source is trusted, who ratified it, when. Becomes the consent record.pREfabricated
Fetch + snapshot storeBytes kept so a re-parse is judged against the same input.pREfabricated
Parse stageDocling for PDFs, table adapters for HTML, CKAN for open data.open-source build
ExtractionStrict JSON schema, two prompts, per-field confidence.pREfabricated
De-duplicationSemantic dedup in pgvector across sources.pREfabricated
Scan run + edition diffNamed stages, compared against last year. The transparency layer.open-source build
Moderation + gateHuman gate nothing skips. Decisions logged as training signal.third-party
Freshness ledgerPer-source health, last fetch, last human verification.pREfabricated

C.0 · Platform and data model

Activity storeOpenActive-shaped: SessionSeries, ScheduledSession, ageRange, provenance.open-source build
Postgrespgvector + pg_trgm + PostGIS in one database.third-party
Identity + GDPRAccounts, roles, consent log, export and deletion.pREfabricated
Scheduler + queueJobs, retries, change-triggered re-extraction.pREfabricated
LLM routerProvider-agnostic routing and a prompt registry.third-party

Domain services

C.1 DiscoveryHybrid retrieval, 13 filters, radius, ranking with written reasons.pREfabricated
C.2 PlannerCP-SAT over children × weeks. Unsat cores become costed relaxations.open-source build
C.3 NotificationsDeadlines as typed events, alerts, the weekly digest.pREfabricated
C.4 PublishersConsent records, listing validation, connected channels.pREfabricated

Surfaces

Family PWAReact, Italian, installable. The only surface a parent sees.third-party
Provider portalListing editor and connected sources.pREfabricated
Publisher consoleWhat a municipality sees: scope, what is live, what we could not read, and the off switch.pREfabricated
Back office studioModeration, freshness and the scan console, built in our studio kernel as a workspace for managing materials.pREfabricated

The municipal scan, stage by stage

A municipality is a consenting publisher, so the pipeline is built to be inspected by two different people: our editor, who needs to know what each stage did, and the Comune's own staff, who need to know what we read and what we could not. Every run is an object with a snapshot, named stages and a diff against the previous edition — which is the shape our prefabricated pipeline already uses for its alert stages, with the stages renamed and another language's assumptions removed.

FetchConsented pull of a named document. Bytes snapshotted so a re-parse can be judged against the same input.pREfabricated
ParseDocling for the PDF, table locator carried over from last year's layout.open-source build
ExtractStrict JSON schema, two independent prompts, per-field confidence.pREfabricated
DiffCompared against the previous edition, never against nothing.open-source build
ValidateSchema and sanity rules. Missing hours blocks publication.open-source build
GateAuto-publish above threshold; everything else to an editor or the publisher.third-party

How the prefabricated ingestion metacomponent is reused, and where it stops

What transfers. The service skeleton, taken as a template and stripped to one pair of modules; the ingest, normalise and emit shape, and with it the idea our catalogue calls source ratification as data — which source is trusted, who ratified it, when — which becomes the municipal consent record; language-model snippet extraction with semantic de-duplication into a vector index, which becomes activity extraction and cross-source de-duplication; the deterministic pipeline whose stages are individually nameable, which is what makes the scan console possible at all; and the corpus layout with dated result manifests, which becomes the Milan evaluation set.

What does not. The source adapters are specific to the product they were built for and are replaced by a PDF stage, an HTML table adapter and an open-data reader. The language normalisation runs through the whole corpus and has to come out; Italian temporal expressions have no maintained library, so that is new work with its own evaluation set. The trend detection and clustering solve a problem this product does not have. And the service topology is far too much operational surface for a team this size — our own catalogue's advice is to take the template and delete the rest.

Component readiness by stage

ComponentS0S1S2S3S4S5Modules
C.0 Platform and data model
The activity schema, the database, geography, identity, scheduling and deployment. Nothing user-facing lives here and everything depends on it.
73%100%100%100%15
C.1 Discovery
Everything a parent touches while looking: search, filters, the map, the activity page, comparison and the honest dead end.
64%100%100%100%14
C.2 Planner
The constraint solver and everything around it: objectives, infeasibility, revision, the calendar and the family's own entries.
27%100%100%15
C.3 Notifications
Deadlines as data, the alert types built on them, and the weekly digest that carries them.
12%100%100%100%8
C.4 Publishers and providers
The supply side: the light provider portal, consented ingestion channels, and the municipality's own consent monitor.
21%21%21%100%14
C.5 Ingestion and trust
Where the product lives or dies: adapters, extraction, de-duplication, the municipal scan console, moderation and the freshness ledger.
100%100%100%100%19

Read by row. C.5 is finished at S1 because a catalogue that is not true is not worth shipping. C.2 waits for S3 because a planner over a thin catalogue produces trivial plans. C.4 splits: the municipality console ships in S1, before we read a single document, while the commercial provider portal waits until there are families to justify it.

What is prefabricated, and what is assembled from open source

Every module in the estimate was checked against our own library before it was priced. For 47 of 85 we have a prefabricated metacomponent that covers the same problem; the remaining 38 are built for this product on open-source foundations. This page is that check, component by component and source by source — including the part usually left out, which is where each piece of reuse stops being free.

47covered by a prefabricated metacomponent in our library — priced as adaptation
38to be built on open-source components — priced as assembly and integration
9families of metacomponent the library draws on
55%of modules anchored, which is 38% of the build effort behind them

A prefabricated metacomponent halves what a piece costs. Where the library already covers the problem, the work is adaptation and integration; where it does not, the piece is assembled on open-source components and priced accordingly. That makes this page load-bearing rather than reassuring: a quarter of the engagement rests on these verdicts being right, and anything whose metacomponent turns out to cover less than our catalogue claims is repriced as an open-source build. The catalogue reads structure, not runtime, so the metacomponents carrying the most weight are the ones we verify first.

Component by component

C.0Platform and data model
11 of 15
C.1Discovery
5 of 14
C.2Planner
3 of 15
C.3Notifications
5 of 8
C.4Publishers and providers
8 of 14
C.5Ingestion and trust
15 of 19

The shape of that chart is the argument for this team on this project. Ingestion and the platform are where we have the most depth, and they are also where a family activity portal usually dies — not on the search box, but on the data going stale three weeks after launch. The planner is where the library covers nothing at all, and it is the feature no competitor offers. We are strongest exactly where the risk is, and we say plainly that we are weakest exactly where the differentiation is.

The metacomponents the library brings

Marketplace platformLift with work

A two-sided marketplace we run in production: a staged matcher that returns a handful of matches with written reasons, a profile wizard, a slot calendar, a services catalogue, five-role access control, consent logging with export and deletion, an internationalised progressive web app and its single-server operations.

where reuse stopsDocumented at a level that means lifting is code archaeology, and the taxonomy stage is specific to another domain and is replaced wholesale. Neither of its two languages is Italian.
13 modules · C.0 C.1 C.2 C.3 C.4
Ingestion and extraction engineLift with work

The ingestion engine behind a live news product: an aggregator that records which source is trusted and who ratified it, language-model extraction with semantic de-duplication into a vector index, a pipeline whose stages are individually nameable, a scheduler, and a corpus layout for evaluation sets.

where reuse stopsIts source adapters are specific to a newsroom, and its language normalisation runs through the whole corpus and comes out. Its trend detection solves a problem this product does not have, and its service topology is far too much operational surface for a team this size.
12 modules · C.0 C.3 C.5
Operator studioLift via the kernel

The kernel behind our operator surfaces: navigator, tabs, document-type registry and design tokens, used as a studio for managing materials rather than a bespoke admin panel. Plus the proactive digest design.

where reuse stopsSynced as one package with automated guards rather than edited in place: a change that belongs upstream goes upstream. Delivery of the digest itself is specified and unbuilt.
7 modules · C.0 C.3 C.4 C.5
Retrieval and model routingLift as-is

Hybrid retrieval — vector and fuzzy lexical search in one database — a model router with a versioned prompt registry, and an extract, plan, retrieve and verify pipeline.

where reuse stopsNothing structural. The same database also answers the geography queries, which is why geography needs no second store.
4 modules · C.0 C.1 C.2
Feeds, filters and product analyticsLift as-is

A virtualised feed with a template registry and a declarative filter model, plus the product analytics service with guest-to-account stitching that answers the brief's KPI list.

where reuse stopsConsumed through a shared kernel rather than copied, which is a dependency on keeping that kernel in sync.
4 modules · C.0 C.1 C.4
Moderation with a human in the loopLift as-is

Human-in-the-loop moderation: flagged items to a moderator surface with five inline decisions, every decision logged and fed back.

where reuse stopsThe cost cascade around the loop needs its own thresholds; only the loop transfers unchanged.
2 modules · C.4 C.5
Multi-source collectionLift with work

Multi-source collection: feeds, general web scraping, concurrency, exponential backoff, language detection and storage adapters.

where reuse stopsIts selectors have rotted. What carries is the retry policy and the adapter shape, not any particular scraper.
2 modules · C.5
Self-hosted crawler and mailLift as-is per container

A working, Ansible-deployed crawler container and the outbound mail server we operate.

where reuse stopsOur mail server needs DNS, reverse DNS and reputation management to actually deliver; a commercial provider is the safer pilot choice and is priced as the alternative.
2 modules · C.3 C.5
Third-party, self-hostedAdopt, do not build

A self-hosted change-detection service watching the municipal pages that republish without notice.

where reuse stopsNot ours and not maintained by us. It is configuration, and it is listed so the estimate is not credited with work nobody did.
1 modules · C.5

Five components to be built on open-source foundations

No metacomponent in our library covers these, so each is assembled on open-source components rather than written from nothing. Four are adopt-and-integrate decisions, small against the whole. The fifth is the product itself: a constraint solver on OR-Tools, built against fifty hand-solved households before a single line of the AI layer is written.

Constraint solver
C.2 Planner

No metacomponent in our library covers optimisation or scheduling. Assembled on OR-Tools CP-SAT, and built against fifty hand-solved households before the AI layer.

the callBuild. Two weeks of known engineering, and it is the product's differentiator.
PDF and document parsing
C.5 Ingestion

No metacomponent of ours parses documents. The Comune publishes a Word-to-PDF communiqué once a year carrying thirty-two sites and every fee band.

the callBuy the library, build the stage: Docling in our own pipeline, snapshotted bytes, replayable on a parser change.
Geocoding and radius search
C.0 Platform

No metacomponent in our library geocodes an address or answers a distance query.

the callAdopt: PostGIS in the Postgres we already run, Nominatim or Photon for geocoding.
Map UI
C.1 Discovery

No map metacomponent exists in our library; the prototype's map is drawn, not live.

the callAdopt MapLibre with an open tile source; clustering and the radius circle are ours.
Notification and digest delivery
C.3 Notifications

Our library specifies this metacomponent but has not built it: the digest design exists, the sending of it does not.

the callBuy for the pilot — an ESP with deliverability — and keep Postal as the fallback.

How the estimate was obtained

The figure is not a judgement about how long a product like this usually takes. It is an inventory of every part of the service, written out one by one and priced against what we have already built, plus the design, QA and evidence work that ships no feature. Shown here in full, so you can disagree with a line rather than with a total. Every price on this page is rounded up to the nearest hundred euros and every duration up to whole weeks.

Recommended first step: planning and product focusing

Before any of the build below is commissioned, two weeks of work with your team to turn this proposal into a plan: what is in the first release and what is deliberately out, the architecture of the service in detail, the stage-by-stage timeline, and the budget for building it. Fixed price, no dependency on the rest.

You end it holding three documents you own outright — and if they say the product should not be built, you have learned that for €4,000 rather than after the first build invoice.

€4,000fixed price
2 weekselapsed
3 documentsarchitecture · timeline · budget
1
Planning and product focusingThe first two weeks, quoted as a fixed price and committed to on their own. Their purpose is to replace everything below with figures specific to the decisions you take in them. You end them holding a detailed architecture, a timeline and a budget.
€4,000
2
Building the productEvery part of the service, written out one by one and priced against our library. Roughly half is covered by a prefabricated metacomponent and priced as adaptation; the rest is assembled on open-source components. What each part is and why it is needed is listed on the architecture page.
€46,900
3
Design, QA, evidence and architectureWork that ships no feature and is real: the design pass from this prototype into built screens, the QA harness, the Milan evaluation set, fixing the architecture, and the solver's hand-solved test cases. Broken out by stage below.
€13,800
4
CoordinationTen per cent: planning, review, and the cost of a team not being one person. The low end of the usual range, and it assumes people who have worked together.
€6,100
5
TotalWhat the work costs to do, planning included. It carries no margin, no contingency, and no licence or infrastructure line.
€70,800
6
ElapsedAssuming full parallelism inside a stage and none between them, because every stage ends at a gate. Real calendars run longer; this is the floor.
15 weeks

Stage by stage, with what each one delivers and what it costs, is on the stages page.

Where the cost sits

The service is six components, each decomposed into the individual pieces of backend and frontend work it needs. That list is the argument. If something in it does not belong, take it out and the total moves with it. The full list, piece by piece with the reason for each, is at the foot of the architecture.

share of the build, by component

18%C.0 Platform and data model
16%C.1 Discovery
18%C.2 Planner
9%C.3 Notifications
16%C.4 Publishers and providers
22%C.5 Ingestion and trust

Ingestion and the platform carry the most, which is where a catalogue product actually lives. The planner carries the most work that has never been built before.

what could move it

Every anchor holds — the estimate€66,700
Half of them need a full build€76,500+8%
None of them hold; everything is built from nothing€86,400+22%

The single assumption the figure turns on. Anything a prefabricated metacomponent covers is priced at half of an open-source build, so these verdicts carry real money. We verify the heaviest of them before committing to a fixed scope.

Design and QA, separately

Design and QA have their own budgets here rather than hiding inside a build figure, because that is how both get cut first and missed last. Design is this prototype carried into built screens — twenty screens and nine journeys exist, so what remains is state coverage, responsive behaviour and handover. QA is the harness: browser automation, the vision-model checks and the CI wiring. Testing each piece of the build sits inside that piece.

CategoryS0S1S2S3S4S5Total
Design€1,600€1,200€800€3,500
QA harness€2,300€800€800€3,900
Evidence and research€3,500€3,500
Architecture and contracts€2,000€2,000
Solver test fixtures€1,200€1,200
All of it€5,400€3,900€2,000€2,000€800€13,800

The interviews are yours, and here is what each split costs

The estimate assumes you hold the interviews, record them and have them transcribed, in Italian and with your own contacts. We read the transcripts and revise the requirements, which is ours whoever holds them. Two other splits are priced, because “you run them, we attend” is a real option and it is not free.

Who holds the interviewsStage 0TotalAgainst the default
Client runs them, we read the transcripts€5,900€70,700the default
We attend half the sessions€8,200€73,000+€2,400
We run all of them€11,800€76,500+€5,900

If the budget allows one addition we would argue for the middle row. A transcript flattens hesitation, and hesitation is the finding when you ask a provider whether they would pay €29 a month.

Three checks run against the result

Bottom-up against top-down

An independent top-down read of our component library, made a day earlier by a different method, sized the MVP build at eleven to fourteen weeks. This piece-by-piece inventory lands inside that range. Two methods that disagreed would mean one of them was wrong.

The inventory against the prototype

Every screen in the clickable prototype maps to at least one piece of frontend work, and every product requirement to at least one piece of backend work. Anything with no screen and no requirement behind it was removed.

Cost against price

This is what the work costs to do. It carries no margin, no contingency, and no licence or infrastructure line, and it is not a quotation.

End-to-end journey · 5 screens

Composing the summer for two children

Composing a whole summer for two children under real constraints
Who
Parent · Giulia M., €1,300 budget, works until 17:00
When
Seven weeks, two children, fourteen child-weeks to cover, and one child the municipal centre cannot take.
Why
This is the feature no product anywhere offers today. The value is not finding an activity: it is composing the whole summer and saying honestly what stays uncovered.

Read left to right. Each screen is the one the person is looking at; the dashed note under it is the action that takes them to the next. Scroll the strip sideways, and any single screen inside its own frame.

1 US.CC.2.01 · Constraints

“Plan my summer” — the constraints

Giulia states the constraints once: two children, 15 June to 31 July, €1,300, 8 km, cover until 17:00, lunch where possible. She also chooses how clashes between the two children are settled — her decision, not the model's.

9:41
3/4

A few more preferences

These decide what the planner may bend when no perfect summer exists.

7 weeks × 2 children = 14 child-weeks to cover. Tap any chip to change it.

Hard constraints non-negotiable

Preferences can bend

If the two children clash

Activity types optional

Combinations are computed by a constraint solver, not by a language model. The AI only writes the explanation, and we say so every time (EU Reg. 2024/1689, art. 50).
Plan my summer
Experience the app starting from this screen →
UA.CC.2.01.3 — generate the plans
2 US.CC.2.07 · Solver working

The solver is working — what it is doing, and for how long

The wait is two seconds and the product spends them explaining itself: four named steps tick past, and a note says that €1,300 will cover 8 or 9 of the 14 child-weeks. Giulia meets the shortfall here, not as a disappointment on the next screen.

9:41

Planning their perfect summer…

Two children, seven weeks, one budget.

Finding activities near you
Checking availability and ages
Optimising the schedule
Writing the explanation
Before you see it At €1,300 within 8 km we can usually cover 8 or 9 of the 14 child-weeks. The plan will name the weeks it cannot cover rather than quietly dropping them.
The combination is computed by a constraint solver. Only the paragraph explaining it is written by AI (EU Reg. 2024/1689, art. 50).
See the plans

Cancel and change a constraint

Experience the app starting from this screen →
UA.CC.2.07.1 — wait for the plans
3 US.CC.2.02 · Three plans

Three proposed plans, with cost and uncovered weeks

Three complete plans come back in two seconds. The cheapest costs €1,241.74 and covers 8 of the 14 child-weeks. The grid shows who goes where each week, and uncovered cells are marked rather than left blank.

9:41
2.3 s · CP-SAT LF

Your summer plan

15 June – 31 July · 2 children · €1,300 budget · within 8 km

€1,241.74of €1,300 · €58.26 left
8/14weeks covered
2.9 kmlongest trip
6 child-weeks stay uncoveredChild 1 (8): 20–24 Jul, 27–31 Jul
Child 2 (13): 6–10 Jul, 13–17 Jul, 20–24 Jul, 27–31 Jul
Explanation generated by AI. Leans on the municipal summer centre, which even at the top ISEE band costs less than half a private week. Child 2 cannot attend the municipal summer centre — it is primary school only — so her weeks cost more.

The other two plans

Least travel
Everything within 1.8 km of home: one trip in the morning, both centres walkable or a short ride.
€1,286
9/14 wks
max 1.8 km2 categorieslunch always included
Most variety
Four different categories instead of one. One week ends at 13:00 and needs cover.
€1,244
8/14 wks
max 4.6 km4 categorieslunch always included
Experience the app starting from this screen →
UA.CC.2.02.2 — try to fit the sailing course in
4 US.CC.2.03 · Conflicts

Constraints in conflict — why, and what to give up

The sailing week does not fit, and the product says exactly why: 9.4 km against an 8 km limit, and €1,307.74 against a €1,300 budget. Three ways out, each with its price. None is applied on its own.

9:41
0.2 s · CP-SAT

This week cannot fit the plan

Junior Sailing — weekly course for Child 2, week of 29 June.

Two constraints cannot both hold

Maximum distance 8 kmhard

actual value: 9.4 km
Junior Sailing is at the Idroscalo, 9.4 km from home — beyond the 8 km limit you set.

Total budget €1,300hard

actual value: €1,307.74
Dropping Child 2's week W3 (−€194.00) and adding the sailing course (+€260.00) takes the total from €1,241.74 to €1,307.74 — over the €1,300.00 budget.

Three ways out

Raise the radius to 10 km and the budget to €1,310
Resolves both conflicts. No week changes and neither child loses anything.
€1,307.74
+€66.00
recommended the smallest change that resolves both conflicts
Take the shuttle from Piazzale Loreto (+€25) and raise the budget
The 8 km limit stays: your own trip drops to 1.1 km. But it costs more.
€1,332.74
+€91.00
Drop Child 1's week of 15–19 June (−€194.00)
Back inside the budget, but you still need the 10 km radius and one more week goes uncovered.
€1,113.74
−€128.00
Conflicts are computed by the solver. No option is applied on its own: you choose which constraint gives way.
Never mind, back to the plan
Experience the app starting from this screen →
UA.CC.2.03.1 — raise the radius and the budget
5 US.CC.2.04 · Calendar

Family calendar with clashes and deadlines

The plan becomes a calendar. One week is outlined in red: both children start at 8:30 at different centres. Below it, the plan's deadlines in order of urgency.

9:41
Summer 2026

Family calendar

“Most variety” plan · €1,243.74 · 8 weeks of 14

Child 1 · 8Child 2 · 13
15–19 JunSwimCamp€154.00 · 8:30Multisport Campus€194.00 · 8:30
22–26 JunMunicipal Summer Centre€211.70 / 2 wks · 8:30Summer Lab Teens€215.00 · 9:00
29 Jun – 3 JulMunicipal Summer Centre€211.70 / 2 wks · 8:30Summer Lab Teens€215.00 · 9:00
6–10 JulMunicipal Summer Centre€254.04 / 2 wks · 8:30uncovered
13–17 JulMunicipal Summer Centre€254.04 / 2 wks · 8:30uncovered
20–24 JulGrandparents, Sestri Levanteyours · no bookingGrandparents, Sestri Levanteyours · no booking
27–31 JulFamily holidayyours · no bookingFamily holidayyours · no booking
green public · blue private · amber uncovered · violet yours
Clash · week of 15 JuneBoth children start at 8:30 but at different centres: SwimCamp Iseo (3.4 km) and Multisport Mincio (2.9 km). You need a second adult or a swap.
2 weeks still uncoveredChild 2: 6–10 Jul, 13–17 Jul
Two more were covered by what you added yourself.

Deadlines attached to this plan

Dote Sport Lombardy — applications close tomorrow
€100 per child aged 6–17 towards sports courses, for an ISEE up to €20,000. The window closes on 18 March.
1 day
Municipal summer centres — registration opens in 2 days
From 19 March at 12:00 to 7 April at 12:00, with a SPID or CIE digital identity only. Child 1 is inside the 6–11 age range; Child 2 is not.
2 days
Milanosport — promotional window from 21 April
Weeks bought between 21 April and 12 May cost €175 instead of €194. On your current plan that saves €76.
35 days
Experience the app starting from this screen →
End of the journey

How it ends

Giulia has a complete plan, knows what it costs, knows which six child-weeks stay uncovered, and knows one week has a clash to resolve. She would have discovered none of that until June.

End-to-end journey · 8 screens

A first visit that turns into a plan for both children

A parent who has never used the product, from one search to a summer for two
Who
Parent · arrives from a web search, no account, one child in mind
When
A parent searches for a summer camp in Città Studi in March and lands on a listing. They are not thinking about the whole summer yet, and they are certainly not thinking about signing up for anything.
Why
Every product like this is judged in the first thirty seconds, before anyone has told it anything. This journey shows the catalogue working with nothing known about the visitor, and then shows the moment the product earns the right to ask: when the parent realises the same question has to be answered for a second child, for seven weeks, inside one budget.

Read left to right. Each screen is the one the person is looking at; the dashed note under it is the action that takes them to the next. Scroll the strip sideways, and any single screen inside its own frame.

1 US.CC.1.02 · Search and map

Search results with map and filters

No account and nothing stored. The filters on screen are the ones typed into this search — an age, some dates, a distance — not a profile the product kept, and every one of them is removable. Public and private supply come back in one list. The product is useful before it is personal.

Experience the app starting from this screen →
UA.CC.1.02.1 — open the first listing
2 US.CC.1.03 · Activity page

Activity page — municipal summer centre

One listing, read properly: the normalised weekly price, what it includes, the hours against a working day, the registration window — and at the foot, where this came from and when it was last checked. The age range is 6–11, which is the moment the parent notices it does not cover the older child.

9:41
City of Milan ISEE Opens soon Registration in 2 days

Municipal Summer Centre — Casa del Sole

Comune di Milano · Education Directorate · Mixed activities · 1.2 km from home

6–11years
8:30–16:30Mon–Fri
Lunchincluded
From €0 to €254.04
per period · meals included
21 ISEE bands
One fee per period across 21 ISEE income bands: €0 up to an ISEE of 3,000, €169.36 above 40,000 (period A). Meals included.
Sibling discount −30% from the second child, same centre and same period.

Bookable periods

A · 10–19 Jun8 days€169.36
B · 22 Jun – 3 Jul10 days€211.70
C · 6–21 Jul12 days€254.04

You can book one period or several, and they need not be consecutive.

The day

Hours
8:30–16:30
Before / after
drop-off from 7:30, pick-up until 18:00
Meals
Lunch + snack (Milano Ristorazione)
Dietary
vegetarian, gluten free, allergies managed
Ages
6–11 · primary school only
Where
Via Giacosa 46, Milan · 1.2 km from home
Fits your working dayWith after-care until 18:00 it covers a working day that ends at 17:00.

Registration

Opens 19 March at 12:00, closes 7 April at 12:00Online only, with a SPID or CIE digital identity. Places are allocated by score (two working parents = 10 points).

This is not first come, first served — places go by score. Two working parents are worth 10 points; a sibling aged 0–14 adds 1.2.

Alert me when it opensGo to the Comune website ↗

Where this data comes from

Source
Comune di Milano — Centri Estivi 2026 (comunicato di servizio)
Licence
Public document — CAD art. 52 / D.Lgs. 36/2006, attribution
Fetched
2026-03-17 08:12
Verified
2026-03-17 09:40 by editor:giulia.m

Report an error on this listing

Experience the app starting from this screen →
UA.CC.1.03.3 — put it beside two others
3 US.CC.1.04 · Comparison

Comparing three activities

Three activities side by side, three price units reduced to one comparable number. The comparison makes the second problem obvious: these are answers for one child, and there are two.

Comparison · 3 activities Child 1 · age 8
Municipal Summer Centre — Casa del Sole
Comune di Milano · Education Directorate
City of Milan ISEE Opens soon
Multisport Campus — Mincio Centre
Milanosport S.p.A.
Milanosport ISEE
English Summer Camp
Pingu's English Milano Città Studi
Private
Normalised price
€105.85 /week/child
cheapest
€194.00 /week/child
€285.00 /week/child
Comune: period B fee €211.70 ÷ 2 weeks. Pingu's: €230 + €35 lunch + €20 after-camp, because you asked for meals and cover until 17:00.
Hours8:30–16:30
covers until 18:00
8:30–17:30
covers until 17:30
9:00–16:00
until 16:00 — after-camp costs extra
MealsLunch + snack
in the price
Lunch included
in the price
Lunch included
+€35 a week
Distance from home1.2 km2.9 km1.6 km
Registration deadline7 April, 12:00
opens 19 March · SPID required
5 June
registration open
15 June
registration open
Eligible ages6–11 years
primary school only — Child 2, aged 13, is not eligible
5–14 years4–10 years
ConcessionsISEE — 21 bands, free below €3,000ISEE below €20,000 → −16%none
In one lineThe cheapest option also has the nearest deadline and the tightest age limit: it covers Child 1 but not Child 2.
Experience the app starting from this screen →
UA.CC.1.04.3 — send all three to the planner
4 US.CC.1.01 · Onboarding

Onboarding — who you are and what you need

Only now does the product ask for anything, and it asks for very little: an age per child and a starting neighbourhood. No name, no school, no photo, with a line on the screen saying why it needs so little.

9:41
2/4

Who is the summer for?

Their age is all we need. No name, no school, no photo.

Children

8 Child 1Age 8 · orange in your calendar +
13 Child 2Age 13 · blue in your calendar +
+ Add another child

Where you start from

Municipio 3 · Città StudiDistances are measured from here
Why we ask so little Age decides which activities a child may join. Name, school and exact address decide nothing, so the product never asks for them.
Next

Skip, I will search myself

Experience the app starting from this screen →
UA.CC.1.01.1 — add the second child
5 US.CC.1.02 · Search and map

Search results with map and filters

The same search, now doing two jobs at once: the age chip is one per child rather than one in total, and what suits neither is gone. The parent has changed nothing about how they search; the product has changed what it returns.

Experience the app starting from this screen →
UA.CC.1.02.5 — state the whole summer instead
6 US.CC.2.01 · Constraints

“Plan my summer” — the constraints

The step a search box cannot take: seven weeks, two children, one budget, a distance limit and a working day, stated once. Hard constraints and preferences marked apart, and the rule for settling clashes between siblings chosen by the parent.

9:41
3/4

A few more preferences

These decide what the planner may bend when no perfect summer exists.

7 weeks × 2 children = 14 child-weeks to cover. Tap any chip to change it.

Hard constraints non-negotiable

Preferences can bend

If the two children clash

Activity types optional

Combinations are computed by a constraint solver, not by a language model. The AI only writes the explanation, and we say so every time (EU Reg. 2024/1689, art. 50).
Plan my summer
Experience the app starting from this screen →
UA.CC.2.01.3 — run the solver
7 US.CC.2.07 · Solver working

The solver is working — what it is doing, and for how long

Two seconds with the work named rather than a spinner, and an honest warning before the result: at this budget roughly 8 or 9 of the 14 child-weeks can be covered.

9:41

Planning their perfect summer…

Two children, seven weeks, one budget.

Finding activities near you
Checking availability and ages
Optimising the schedule
Writing the explanation
Before you see it At €1,300 within 8 km we can usually cover 8 or 9 of the 14 child-weeks. The plan will name the weeks it cannot cover rather than quietly dropping them.
The combination is computed by a constraint solver. Only the paragraph explaining it is written by AI (EU Reg. 2024/1689, art. 50).
See the plans

Cancel and change a constraint

Experience the app starting from this screen →
UA.CC.2.07.1 — wait for the plans
8 US.CC.2.02 · Three plans

Three proposed plans, with cost and uncovered weeks

Three complete summers, each a different compromise, with the uncovered weeks stated child by child rather than hidden. Forty seconds ago this was one camp for one child.

9:41
2.3 s · CP-SAT LF

Your summer plan

15 June – 31 July · 2 children · €1,300 budget · within 8 km

€1,241.74of €1,300 · €58.26 left
8/14weeks covered
2.9 kmlongest trip
6 child-weeks stay uncoveredChild 1 (8): 20–24 Jul, 27–31 Jul
Child 2 (13): 6–10 Jul, 13–17 Jul, 20–24 Jul, 27–31 Jul
Explanation generated by AI. Leans on the municipal summer centre, which even at the top ISEE band costs less than half a private week. Child 2 cannot attend the municipal summer centre — it is primary school only — so her weeks cost more.

The other two plans

Least travel
Everything within 1.8 km of home: one trip in the morning, both centres walkable or a short ride.
€1,286
9/14 wks
max 1.8 km2 categorieslunch always included
Most variety
Four different categories instead of one. One week ends at 13:00 and needs cover.
€1,244
8/14 wks
max 4.6 km4 categorieslunch always included
Experience the app starting from this screen →
End of the journey

How it ends

A parent who arrived for one camp leaves with three costed plans for two children, having given the product two ages and nothing else. Nothing was asked before it was useful.

End-to-end journey · 6 screens

A returning parent the product already knows

A second season, with both children and their constraints already stored
Who
Parent · returning in September, children now 9 and 14, profile already in the product
When
An alert arrives: autumn course registrations are opening, and one of them closes in three days.
Why
The summer is the acquisition moment; the school year is the retention one. This journey shows what the product is worth to someone who has already told it everything — which is the difference between a directory people visit once a year and a service they keep.

Read left to right. Each screen is the one the person is looking at; the dashed note under it is the action that takes them to the next. Scroll the strip sideways, and any single screen inside its own frame.

1 US.CC.3.01 · Alerts

Alerts — deadlines, openings and price changes

The product opens on what is urgent rather than on a search box, because it already knows who this family is: three deadlines ordered by how soon they close, each naming which child it concerns and what happens if it is missed.

9:41
17 March 2026

Alerts

Ordered by urgency, not by date. Two of them close this week.

Dote Sport Lombardy — applications close tomorrow
by tomorrow
€100 per child aged 6–17 towards sports courses, for an ISEE up to €20,000. The window closes on 18 March.
Child 1 · 8 Child 2 · 13
Municipal summer centres — registration opens in 2 days
in 2 days
From 19 March at 12:00 to 7 April at 12:00, with a SPID or CIE digital identity only. Child 1 is inside the 6–11 age range; Child 2 is not.
Child 1 · 8
Estate Vacanza — registration from 18 March
in 1 day
Residential stays for ages 6–14 in Liguria and Piedmont, seven sessions from 10 June to 5 September.
Child 1 · 8 Child 2 · 13
Milanosport — promotional window from 21 April
in 35 days
Weeks bought between 21 April and 12 May cost €175 instead of €194. On your current plan that saves €76.
Child 1 · 8 Child 2 · 13
Coding and robotics — last 3 places
in 85 days
Codemotion Kids! Milano updated availability yesterday at 18:02.
Child 1 · 8 Child 2 · 13
You only get the alert types you turned on: openings, deadlines, new matching activities, price changes. Manage preferences and consents
Experience the app starting from this screen →
UA.CC.3.01.1 — act on the one closing first
2 US.CC.1.02 · Search and map

Search results with map and filters

Search comes back already filtered from the stored profile — two age bands, the same 8 km, lunch where possible — and the ages have moved on a year without anyone being asked to update anything.

Experience the app starting from this screen →
UA.CC.1.02.2 — compare the two that fit
3 US.CC.1.04 · Comparison

Comparing three activities

Two autumn courses side by side on the axes that decide it for a working parent: normalised monthly price, the hour the day ends, the distance, and the registration deadline.

Comparison · 3 activities Child 1 · age 8
Municipal Summer Centre — Casa del Sole
Comune di Milano · Education Directorate
City of Milan ISEE Opens soon
Multisport Campus — Mincio Centre
Milanosport S.p.A.
Milanosport ISEE
English Summer Camp
Pingu's English Milano Città Studi
Private
Normalised price
€105.85 /week/child
cheapest
€194.00 /week/child
€285.00 /week/child
Comune: period B fee €211.70 ÷ 2 weeks. Pingu's: €230 + €35 lunch + €20 after-camp, because you asked for meals and cover until 17:00.
Hours8:30–16:30
covers until 18:00
8:30–17:30
covers until 17:30
9:00–16:00
until 16:00 — after-camp costs extra
MealsLunch + snack
in the price
Lunch included
in the price
Lunch included
+€35 a week
Distance from home1.2 km2.9 km1.6 km
Registration deadline7 April, 12:00
opens 19 March · SPID required
5 June
registration open
15 June
registration open
Eligible ages6–11 years
primary school only — Child 2, aged 13, is not eligible
5–14 years4–10 years
ConcessionsISEE — 21 bands, free below €3,000ISEE below €20,000 → −16%none
In one lineThe cheapest option also has the nearest deadline and the tightest age limit: it covers Child 1 but not Child 2.
Experience the app starting from this screen →
UA.CC.1.04.2 — open the one that fits the working day
4 US.CC.1.03 · Activity page

Activity page — municipal summer centre

The listing, and the one line that matters to someone who has been let down before: who verified this and when. The registration link goes to the provider's own page; nothing is booked here.

9:41
City of Milan ISEE Opens soon Registration in 2 days

Municipal Summer Centre — Casa del Sole

Comune di Milano · Education Directorate · Mixed activities · 1.2 km from home

6–11years
8:30–16:30Mon–Fri
Lunchincluded
From €0 to €254.04
per period · meals included
21 ISEE bands
One fee per period across 21 ISEE income bands: €0 up to an ISEE of 3,000, €169.36 above 40,000 (period A). Meals included.
Sibling discount −30% from the second child, same centre and same period.

Bookable periods

A · 10–19 Jun8 days€169.36
B · 22 Jun – 3 Jul10 days€211.70
C · 6–21 Jul12 days€254.04

You can book one period or several, and they need not be consecutive.

The day

Hours
8:30–16:30
Before / after
drop-off from 7:30, pick-up until 18:00
Meals
Lunch + snack (Milano Ristorazione)
Dietary
vegetarian, gluten free, allergies managed
Ages
6–11 · primary school only
Where
Via Giacosa 46, Milan · 1.2 km from home
Fits your working dayWith after-care until 18:00 it covers a working day that ends at 17:00.

Registration

Opens 19 March at 12:00, closes 7 April at 12:00Online only, with a SPID or CIE digital identity. Places are allocated by score (two working parents = 10 points).

This is not first come, first served — places go by score. Two working parents are worth 10 points; a sibling aged 0–14 adds 1.2.

Alert me when it opensGo to the Comune website ↗

Where this data comes from

Source
Comune di Milano — Centri Estivi 2026 (comunicato di servizio)
Licence
Public document — CAD art. 52 / D.Lgs. 36/2006, attribution
Fetched
2026-03-17 08:12
Verified
2026-03-17 09:40 by editor:giulia.m

Report an error on this listing

Experience the app starting from this screen →
UA.CC.1.03.1 — save it into the family calendar
5 US.CC.2.04 · Calendar

Family calendar with clashes and deadlines

It lands in a calendar that already holds both children, and the calendar does the thing only a calendar can: it shows that the new Tuesday collides with the older child's existing course.

9:41
Summer 2026

Family calendar

“Most variety” plan · €1,243.74 · 8 weeks of 14

Child 1 · 8Child 2 · 13
15–19 JunSwimCamp€154.00 · 8:30Multisport Campus€194.00 · 8:30
22–26 JunMunicipal Summer Centre€211.70 / 2 wks · 8:30Summer Lab Teens€215.00 · 9:00
29 Jun – 3 JulMunicipal Summer Centre€211.70 / 2 wks · 8:30Summer Lab Teens€215.00 · 9:00
6–10 JulMunicipal Summer Centre€254.04 / 2 wks · 8:30uncovered
13–17 JulMunicipal Summer Centre€254.04 / 2 wks · 8:30uncovered
20–24 JulGrandparents, Sestri Levanteyours · no bookingGrandparents, Sestri Levanteyours · no booking
27–31 JulFamily holidayyours · no bookingFamily holidayyours · no booking
green public · blue private · amber uncovered · violet yours
Clash · week of 15 JuneBoth children start at 8:30 but at different centres: SwimCamp Iseo (3.4 km) and Multisport Mincio (2.9 km). You need a second adult or a swap.
2 weeks still uncoveredChild 2: 6–10 Jul, 13–17 Jul
Two more were covered by what you added yourself.

Deadlines attached to this plan

Dote Sport Lombardy — applications close tomorrow
€100 per child aged 6–17 towards sports courses, for an ISEE up to €20,000. The window closes on 18 March.
1 day
Municipal summer centres — registration opens in 2 days
From 19 March at 12:00 to 7 April at 12:00, with a SPID or CIE digital identity only. Child 1 is inside the 6–11 age range; Child 2 is not.
2 days
Milanosport — promotional window from 21 April
Weeks bought between 21 April and 12 May cost €175 instead of €194. On your current plan that saves €76.
35 days
Experience the app starting from this screen →
UA.CC.2.04.4 — check what else is coming
6 US.CC.3.02 · Preferences

Digest preferences and consents

Four minutes in, the parent narrows what they hear about: Thursday mornings, autumn courses and free municipal activities only. Behavioural profiling stays off, because it was never on.

9:41
Preferences

Weekly digest

Last sent on 12 March · you saved 2 activities from it.

Thursday
08:00 Europe/Rome

What it may contain

Summer centres
Year-round courses
Free and municipal activities
Weekend one-offs
Vouchers and ISEE concessions

Immediate alerts

Registration opening
Registration deadline
New places available
New activities that fit
Price change or promotion

Consents

Service and account required
Required to use the service.
Weekly digest by email
A commercial communication under art. 130 of the Italian privacy code. Revocable from every message.
Alerts on deadlines and places
Only for activities you saved or that match your profile.
Behavioural profiling
Off by default. The service runs on the preferences you stated.
How we measure the digestWe count clicks, saves and registrations. We do not count opens: more than half of them today are mail-client fetches and would tell us something untrue.

Your data

The account belongs to an adult. Of the children we keep only an age band and interests. No name, no photo, no school, no exact address.

Experience the app starting from this screen →
End of the journey

How it ends

A parent who opened an email finished four minutes later with an autumn course booked into a calendar that already knew both children, and a digest tuned to the only two things they want to hear about.

End-to-end journey · 6 screens

Securing a place at the municipal summer centre

Securing a municipal summer place before registrations close
Who
Parent · Giulia M., Municipio 3, children aged 8 and 13
When
It is 17 March. Municipal summer-centre registration opens in two days and closes on 7 April.
Why
The cheapest place in the city is also the one with the nearest deadline and the tightest age limit. This journey takes a parent from not knowing it exists to knowing exactly what to do, and when.

Read left to right. Each screen is the one the person is looking at; the dashed note under it is the action that takes them to the next. Scroll the strip sideways, and any single screen inside its own frame.

1 US.CC.1.01 · Onboarding

Onboarding — who you are and what you need

Giulia opens the product for the first time and states her area, her children's ages, their interests and a budget. Nothing about the children is asked beyond age.

9:41
2/4

Who is the summer for?

Their age is all we need. No name, no school, no photo.

Children

8 Child 1Age 8 · orange in your calendar +
13 Child 2Age 13 · blue in your calendar +
+ Add another child

Where you start from

Municipio 3 · Città StudiDistances are measured from here
Why we ask so little Age decides which activities a child may join. Name, school and exact address decide nothing, so the product never asks for them.
Next

Skip, I will search myself

Experience the app starting from this screen →
UA.CC.1.01.2 — continue to results that are already filtered
2 US.CC.1.02 · Search and map

Search results with map and filters

Search is already filtered by her answers: age 8, 15 June to 31 July, within 8 km, lunch included. Public and private supply in one list; the municipal centre is the first result and opens in two days.

Experience the app starting from this screen →
UA.CC.1.02.2 — put three options side by side
3 US.CC.1.04 · Comparison

Comparing three activities

Three prices in three different units become one price per week per child: €105.85 municipal, €194 Milanosport, €285 for the private camp once lunch and after-camp are counted. The cheapest also has the nearest deadline.

Comparison · 3 activities Child 1 · age 8
Municipal Summer Centre — Casa del Sole
Comune di Milano · Education Directorate
City of Milan ISEE Opens soon
Multisport Campus — Mincio Centre
Milanosport S.p.A.
Milanosport ISEE
English Summer Camp
Pingu's English Milano Città Studi
Private
Normalised price
€105.85 /week/child
cheapest
€194.00 /week/child
€285.00 /week/child
Comune: period B fee €211.70 ÷ 2 weeks. Pingu's: €230 + €35 lunch + €20 after-camp, because you asked for meals and cover until 17:00.
Hours8:30–16:30
covers until 18:00
8:30–17:30
covers until 17:30
9:00–16:00
until 16:00 — after-camp costs extra
MealsLunch + snack
in the price
Lunch included
in the price
Lunch included
+€35 a week
Distance from home1.2 km2.9 km1.6 km
Registration deadline7 April, 12:00
opens 19 March · SPID required
5 June
registration open
15 June
registration open
Eligible ages6–11 years
primary school only — Child 2, aged 13, is not eligible
5–14 years4–10 years
ConcessionsISEE — 21 bands, free below €3,000ISEE below €20,000 → −16%none
In one lineThe cheapest option also has the nearest deadline and the tightest age limit: it covers Child 1 but not Child 2.
Experience the app starting from this screen →
UA.CC.1.04.2 — open the cheapest listing
4 US.CC.1.03 · Activity page

Activity page — municipal summer centre

The listing explains what that price really means: 21 ISEE bands, from €0 to €254.04, meals included. And it explains the rule that decides everything: places go by score, not by arrival. At the foot, where the data came from and who verified it.

9:41
City of Milan ISEE Opens soon Registration in 2 days

Municipal Summer Centre — Casa del Sole

Comune di Milano · Education Directorate · Mixed activities · 1.2 km from home

6–11years
8:30–16:30Mon–Fri
Lunchincluded
From €0 to €254.04
per period · meals included
21 ISEE bands
One fee per period across 21 ISEE income bands: €0 up to an ISEE of 3,000, €169.36 above 40,000 (period A). Meals included.
Sibling discount −30% from the second child, same centre and same period.

Bookable periods

A · 10–19 Jun8 days€169.36
B · 22 Jun – 3 Jul10 days€211.70
C · 6–21 Jul12 days€254.04

You can book one period or several, and they need not be consecutive.

The day

Hours
8:30–16:30
Before / after
drop-off from 7:30, pick-up until 18:00
Meals
Lunch + snack (Milano Ristorazione)
Dietary
vegetarian, gluten free, allergies managed
Ages
6–11 · primary school only
Where
Via Giacosa 46, Milan · 1.2 km from home
Fits your working dayWith after-care until 18:00 it covers a working day that ends at 17:00.

Registration

Opens 19 March at 12:00, closes 7 April at 12:00Online only, with a SPID or CIE digital identity. Places are allocated by score (two working parents = 10 points).

This is not first come, first served — places go by score. Two working parents are worth 10 points; a sibling aged 0–14 adds 1.2.

Alert me when it opensGo to the Comune website ↗

Where this data comes from

Source
Comune di Milano — Centri Estivi 2026 (comunicato di servizio)
Licence
Public document — CAD art. 52 / D.Lgs. 36/2006, attribution
Fetched
2026-03-17 08:12
Verified
2026-03-17 09:40 by editor:giulia.m

Report an error on this listing

Experience the app starting from this screen →
UA.CC.1.03.2 — ask to be alerted when it opens
5 US.CC.3.01 · Alerts

Alerts — deadlines, openings and price changes

The alert is set. On the same screen Giulia finds two deadlines she did not know she had: the regional Dote Sport voucher closes tomorrow, and Estate Vacanza opens the same day.

9:41
17 March 2026

Alerts

Ordered by urgency, not by date. Two of them close this week.

Dote Sport Lombardy — applications close tomorrow
by tomorrow
€100 per child aged 6–17 towards sports courses, for an ISEE up to €20,000. The window closes on 18 March.
Child 1 · 8 Child 2 · 13
Municipal summer centres — registration opens in 2 days
in 2 days
From 19 March at 12:00 to 7 April at 12:00, with a SPID or CIE digital identity only. Child 1 is inside the 6–11 age range; Child 2 is not.
Child 1 · 8
Estate Vacanza — registration from 18 March
in 1 day
Residential stays for ages 6–14 in Liguria and Piedmont, seven sessions from 10 June to 5 September.
Child 1 · 8 Child 2 · 13
Milanosport — promotional window from 21 April
in 35 days
Weeks bought between 21 April and 12 May cost €175 instead of €194. On your current plan that saves €76.
Child 1 · 8 Child 2 · 13
Coding and robotics — last 3 places
in 85 days
Codemotion Kids! Milano updated availability yesterday at 18:02.
Child 1 · 8 Child 2 · 13
You only get the alert types you turned on: openings, deadlines, new matching activities, price changes. Manage preferences and consents
Experience the app starting from this screen →
UA.CC.3.01.3 — adjust what she wants to receive
6 US.CC.3.02 · Preferences

Digest preferences and consents

She sets the digest for Thursday morning, limited to summer centres, free activities and concessions. Behavioural profiling stays off, as it was.

9:41
Preferences

Weekly digest

Last sent on 12 March · you saved 2 activities from it.

Thursday
08:00 Europe/Rome

What it may contain

Summer centres
Year-round courses
Free and municipal activities
Weekend one-offs
Vouchers and ISEE concessions

Immediate alerts

Registration opening
Registration deadline
New places available
New activities that fit
Price change or promotion

Consents

Service and account required
Required to use the service.
Weekly digest by email
A commercial communication under art. 130 of the Italian privacy code. Revocable from every message.
Alerts on deadlines and places
Only for activities you saved or that match your profile.
Behavioural profiling
Off by default. The service runs on the preferences you stated.
How we measure the digestWe count clicks, saves and registrations. We do not count opens: more than half of them today are mail-client fetches and would tell us something untrue.

Your data

The account belongs to an adult. Of the children we keep only an age band and interests. No name, no photo, no school, no exact address.

Experience the app starting from this screen →
End of the journey

How it ends

Giulia knows she needs her SPID ready at 12:00 on 19 March, that places go by score rather than by arrival, and that this centre covers only her 8-year-old. Her 13-year-old's summer is still unsolved — that is UC.2.

End-to-end journey · 3 screens

Revising one child's summer, and adding what we already knew

Changing one child's plan, and telling the calendar what it could not find out
Who
Parent · Giulia M., three weeks after the plan was saved
When
The plan is saved, the municipal application is in, and then two things change: the grandparents offer a week, and Child 2 wants out of the creative camp.
Why
A plan that cannot be revised is a plan a family abandons. This journey is the product's second week of life rather than its first, and it is where most planners quietly fail: they can generate a schedule and cannot amend one.

Read left to right. Each screen is the one the person is looking at; the dashed note under it is the action that takes them to the next. Scroll the strip sideways, and any single screen inside its own frame.

1 US.CC.2.05 · Change one child

Change the plan for one child only

Giulia keeps Child 1's weeks as they are — five weeks, €619.74, two municipal periods already applied for — and asks the planner to work only on Child 2 inside the €680.26 that is left. The answer comes back as a diff, not as a new plan: three weeks swapped, one week added, €32.00 more, every centre now inside 1.8 km.

9:41
0.6 s · CP-SAT

Change one child's weeks

The other child keeps everything already agreed.

Child 1’s weeks stay as they areChild 1 keeps 5 weeks at €619.74, including two municipal periods that are already applied for. That leaves €680.26 of the €1,300 budget for Child 2.

What changes for Child 2

WeekWasBecomesCost
15–19 JunMultisport Campus
€194.00
SmartCamp
€164.00
−€30.00
22–26 JunSummer Lab Teens
€215.00
SmartCamp
€164.00
−€51.00
29 Jun – 3 JulSummer Lab Teens
€215.00
SmartCamp
€164.00
−€51.00
6–10 Julnothing
SmartCamp
€164.00
+€164.00
3 → 4weeks covered
+€32.00on these weeks
1.8 kmlongest trip, was 4.6 km
Explanation generated by AI. Child 2 keeps a whole week more and every centre is inside 1.8 km, for €32.00 more. The whole of Child 1's summer is untouched.
New total €1,275.74€24.26 left of the budget. One week is still uncovered for Child 2 — the week of 13–17 Jul.
Cover a week ourselves instead
Experience the app starting from this screen →
UA.CC.2.05.4 — a week the grandparents already have
2 US.CC.2.06 · Add your own

Add something the catalogue will never know

One week needs no activity at all: the grandparents are taking both children to Sestri Levante. Giulia records it herself, with the children it covers and the week it fills. The preview says what it will do before she saves — uncovered weeks fall from six to four — and a standing note says the entry is private, never published and never shown to a provider.

9:41
Your own entry

Add your own

For the weeks nobody sells you: the grandparents, the holiday, the fortnight you take off. The plan needs to know about them.

Grandparents, Sestri Levante
Child 1 · 8Child 2 · 13
15–19 Jun22–26 Jun29 Jun – 3 Jul6–10 Jul13–17 Jul20–24 Jul27–31 Jul
€0.00 optional
Family
They take both of them for the week. Train on the Monday.
What this will doCovers 2 children for the week of 20–24 Jul. Uncovered weeks in your plan fall from 6 to 4, and the planner will stop proposing activities for that week.
🔒 This stays yoursPrivate to your household. Never published, never shown to providers, never used to rank anything. It exists to make your calendar true.
Add to the calendarAdd it and re-plan around it

Already added

Family holiday
27–31 Jul · both children
yours
All four of us. Nothing to book here.
Experience the app starting from this screen →
UA.CC.2.06.2 — add it to the calendar
3 US.CC.2.04 · Calendar

Family calendar with clashes and deadlines

The calendar now tells the whole truth. Municipal and private weeks in green and blue, the two weeks the family owns in violet, and only two genuine gaps left. The deadlines below it are unchanged, because revising a plan never revises the calendar the Comune keeps.

9:41
Summer 2026

Family calendar

“Most variety” plan · €1,243.74 · 8 weeks of 14

Child 1 · 8Child 2 · 13
15–19 JunSwimCamp€154.00 · 8:30Multisport Campus€194.00 · 8:30
22–26 JunMunicipal Summer Centre€211.70 / 2 wks · 8:30Summer Lab Teens€215.00 · 9:00
29 Jun – 3 JulMunicipal Summer Centre€211.70 / 2 wks · 8:30Summer Lab Teens€215.00 · 9:00
6–10 JulMunicipal Summer Centre€254.04 / 2 wks · 8:30uncovered
13–17 JulMunicipal Summer Centre€254.04 / 2 wks · 8:30uncovered
20–24 JulGrandparents, Sestri Levanteyours · no bookingGrandparents, Sestri Levanteyours · no booking
27–31 JulFamily holidayyours · no bookingFamily holidayyours · no booking
green public · blue private · amber uncovered · violet yours
Clash · week of 15 JuneBoth children start at 8:30 but at different centres: SwimCamp Iseo (3.4 km) and Multisport Mincio (2.9 km). You need a second adult or a swap.
2 weeks still uncoveredChild 2: 6–10 Jul, 13–17 Jul
Two more were covered by what you added yourself.

Deadlines attached to this plan

Dote Sport Lombardy — applications close tomorrow
€100 per child aged 6–17 towards sports courses, for an ISEE up to €20,000. The window closes on 18 March.
1 day
Municipal summer centres — registration opens in 2 days
From 19 March at 12:00 to 7 April at 12:00, with a SPID or CIE digital identity only. Child 1 is inside the 6–11 age range; Child 2 is not.
2 days
Milanosport — promotional window from 21 April
Weeks bought between 21 April and 12 May cost €175 instead of €194. On your current plan that saves €76.
35 days
Experience the app starting from this screen →
End of the journey

How it ends

Child 1's summer never moved, Child 2 gained a week for €32.00, and two weeks the catalogue could never have known about are on the calendar as cover rather than as gaps. Six uncovered weeks became two, and only one of those needs solving.

End-to-end journey · 4 screens

A provider joins the catalogue and keeps it true

A provider joins, connects a source, and their listing goes live verified
Who
Provider · ASD Vela Idroscalo Milano, then the editorial team
When
The club wants to be found by Milan families, but has no intention of maintaining a second database.
Why
Catalogue freshness is the product's main risk. This journey shows how it is solved: not by taking the data, but by being given it — with consent as both the legal basis and the verification signal.

Read left to right. Each screen is the one the person is looking at; the dashed note under it is the action that takes them to the next. Scroll the strip sideways, and any single screen inside its own frame.

1 US.CC.4.01 · Listing editor

Provider portal — the listing editor

The editor refuses to publish: hours and deadline are missing. Validation explains the consequence in the provider's own interest — without hours it never appears in the working-day filter, without a deadline it generates no alerts.

Provider portal ASD Vela Idroscalo Milano verified

Vela Junior — corso settimanale

Unpublished draft · last edited today at 09:55

We cannot publish: two fields are missingWithout hours the listing does not appear in the “I need to work” filter, the one parents use most. Without a deadline we cannot alert families when registration is about to close.
9
14
Sailing and outdoors
15–19 Jun22–26 Jun29 Jun – 3 Jul6–10 Jul13–17 Jul20–24 Jul27–31 Jul

Enter a start time.

Families filter on this field.

Lunch included
€260
per week
4
15 February 2026

This is the field that generates alerts.

Not stated — families with allergies filter on this field

Listing completeness

82%
  • Dietary information not stated
  • No photo on 1 of 3 activities
  • Hours and deadline missing

Last 30 days

Views
1,842
Saves
96
Clicks to register
41

No commission on registrations. Registration happens on your own site.

Data verification

Last confirmed: today, 09:55 by you.

Families see this date on the public listing. After 30 days without confirmation the listing is flagged for review.

Experience the app starting from this screen →
UA.CC.4.01.3 — connect an automatic source instead of typing
2 US.CC.4.02 · Connected sources

Connecting a provider’s own sources, with consent

Four channels, each stating in one line what we read and what we do not: an ICS feed, the club's own Instagram Business account, a Telegram channel, newsletter forwarding. Two extractions wait for the provider to confirm them.

Provider portal · Sources ASD Vela Idroscalo Milano

Where we get your data

Only from channels you connect yourself. We do not scrape your site without an agreement, and every automatic extraction passes through your confirmation.

✎ Manual entry
3 activities published
active
What we read: Manual entry. No external access.
📅 ICS calendar feed
Paste an .ics URL and the dates keep themselves up to date
available
What we read: We read only dates, times and titles from the .ics file you give us.
Connect
◉ Instagram Business
Connect your account: we read only your own posts, and ask you to confirm
available
What we read: We read only your own business account posts. Never direct messages, never other accounts.
Connect
✈ Telegram channel
Add our bot as an administrator of your channel
available
What we read: We read only the channel where you add us as an administrator.
Connect
✉ Newsletter forwarding
Forward your newsletter to listings@…: we extract the dates and ask you to confirm
available
What we read: We read only the emails forwarded to that address. No access to your mailbox.
Connect

Waiting for your confirmation · 2

Extracted from your own posts. Until you confirm them, families do not see them.

Junior Sailing — extra week 27–31 July
extracted 2026-03-17 06:00 · overall confidence 0.96
ready
ageRange
9–14
confidence 0.99
weeks
W7
confidence 0.98
price
€260 / week
confidence 0.97
hours
9:00–17:00
confidence 0.99
meals
lunch included
confidence 0.95
Sailing open day — Saturday 12 April
extracted 2026-03-16 18:40 · overall confidence 0.58
needs checking
ageRange
8–16
confidence 0.71
weeks
one-off event
confidence 0.80
price
free?
confidence 0.35
hours
not stated
confidence 0.22
meals
none
confidence 0.78
To checkPrice inferred from “come and try” — confirm whether it is free
Hours missing — a required field
Why we ask you to confirmAn automatic extractor gets the price or the age range wrong on about one listing in five. Your confirmation is what makes the catalogue trustworthy — and it puts the “verified by the provider” stamp on the public listing.
Experience the app starting from this screen →
UA.CC.4.02.3 — confirm an extraction
3 US.CC.5.01 · Moderation

Back office — the moderation queue

Whatever the provider does not confirm lands in the editorial queue, with confidence per field and the reason it was flagged. Below 0.70 nothing is published.

Back office Queue · 4 Source health →

Moderation queue

Nothing extracted automatically goes public without passing through here. Auto-publish threshold: confidence ≥ 0.90 on every required field.

Estate Ragazzi 2026 — Oratorio San Luigi
San Luigi Parish · Provider Instagram Business (2 connected) · extracted 2026-03-17 05:31
needs provider confirmation
confidence 0.62
ageRange
6–13
0.91
weeks
W2–W6
0.74
price
€45 / week
0.48
hours
not stated
0.20
meals
not stated
0.20
FlagsPrice inferred from a caption, not from a price page
Hours missing — a required field
Summer Lab Teens — extra week
Fondazione Riccardo Catella · Provider ICS feeds (3 connected) · extracted 2026-03-17 06:00
ready to publish
confidence 0.96
ageRange
12–16
0.99
weeks
W5
0.98
price
€215 / week
0.97
hours
9:00–17:30
0.99
meals
lunch included
0.95
Summer Centre — Scuola Rinnovata Pizzigoni
Comune di Milano · Comune di Milano — Centri Estivi 2026 (comunicato di servizio) · extracted 2026-03-17 08:12
needs an editor check
confidence 0.88
ageRange
6–11
0.99
weeks
A, B, C
0.94
price
21 ISEE bands
0.86
hours
8:30–16:30
0.99
meals
lunch + snack
0.93
FlagsNew venue compared with the 2025 edition — check the address
Youth theatre course — autumn enrolment
Teatro del Buratto · Provider Instagram Business (2 connected) · extracted 2026-03-16 19:14
needs provider confirmation
confidence 0.41
ageRange
11–15
0.55
weeks
n/a — year-long course
0.60
price
not stated
0.15
hours
Wednesday afternoon
0.44
meals
none
0.80
FlagsConfidence below the 0.70 threshold — not publishable
Two independent extractions disagree on the price
Why the queue existsPublished benchmarks on extraction from listing pages give 65–85% exact values per field. With four required fields, about one listing in five would carry an error. One editor-hour a day is what keeps the catalogue true.
Experience the app starting from this screen →
UA.CC.5.01.1 — approve an item
4 US.CC.1.03 · Activity page

Activity page — municipal summer centre

The listing is public, and at its foot it carries its provenance: source, licence, when it was fetched, when it was verified and by whom. That is the fact a parent can check.

9:41
City of Milan ISEE Opens soon Registration in 2 days

Municipal Summer Centre — Casa del Sole

Comune di Milano · Education Directorate · Mixed activities · 1.2 km from home

6–11years
8:30–16:30Mon–Fri
Lunchincluded
From €0 to €254.04
per period · meals included
21 ISEE bands
One fee per period across 21 ISEE income bands: €0 up to an ISEE of 3,000, €169.36 above 40,000 (period A). Meals included.
Sibling discount −30% from the second child, same centre and same period.

Bookable periods

A · 10–19 Jun8 days€169.36
B · 22 Jun – 3 Jul10 days€211.70
C · 6–21 Jul12 days€254.04

You can book one period or several, and they need not be consecutive.

The day

Hours
8:30–16:30
Before / after
drop-off from 7:30, pick-up until 18:00
Meals
Lunch + snack (Milano Ristorazione)
Dietary
vegetarian, gluten free, allergies managed
Ages
6–11 · primary school only
Where
Via Giacosa 46, Milan · 1.2 km from home
Fits your working dayWith after-care until 18:00 it covers a working day that ends at 17:00.

Registration

Opens 19 March at 12:00, closes 7 April at 12:00Online only, with a SPID or CIE digital identity. Places are allocated by score (two working parents = 10 points).

This is not first come, first served — places go by score. Two working parents are worth 10 points; a sibling aged 0–14 adds 1.2.

Alert me when it opensGo to the Comune website ↗

Where this data comes from

Source
Comune di Milano — Centri Estivi 2026 (comunicato di servizio)
Licence
Public document — CAD art. 52 / D.Lgs. 36/2006, attribution
Fetched
2026-03-17 08:12
Verified
2026-03-17 09:40 by editor:giulia.m

Report an error on this listing

Experience the app starting from this screen →
End of the journey

How it ends

The club published without typing anything twice, the public listing carries a dated “verified by the provider” stamp, and the editorial team worked only on what the automation could not settle.

End-to-end journey · 4 screens

The scanning administrator's morning

One operator, one hour, and a catalogue that stays true
Who
Editorial operator · the person whose hour a day the whole product depends on
When
Overnight the scheduler ran eleven sources. One of them is the Comune's annual notice, and its bytes changed.
Why
A catalogue is only as good as the hour someone spends on it each morning, and that hour is the product's real running cost. This journey is the operator's whole job in four screens, and it is the evidence that the cost does not grow with the catalogue.

Read left to right. Each screen is the one the person is looking at; the dashed note under it is the action that takes them to the next. Scroll the strip sideways, and any single screen inside its own frame.

1 US.CC.5.02 · Source freshness

Back office — source freshness

The morning starts on the ledger, not in a log file: every source with when it was last fetched, when a human last verified it, under what licence, and whether it is healthy. Two rows are amber and both say why in a sentence rather than in a status code.

Back office · Sources ← Moderation queue

Source freshness

Checked at 10:00 · 14 published activities · 11 complete · 2 awaiting confirmation · 1 to re-verify

14published activities
79%with complete data
2sources to watch
1.3 daverage data age
SourceTypeRecordsLast fetchLast human checkCadenceHealth
Comune di Milano — Centri Estivi 2026 (comunicato di servizio)
Public document — CAD art. 52 / D.Lgs. 36/2006, attribution
PDF322026-03-17 08:122026-03-17 09:40
editor:giulia.m
dailyokOpen run
Milanosport — Campus Estivi 2026
Public body website — editorial import, attributed
Web page402026-03-16 06:052026-03-16 11:20
editor:giulia.m
dailyokRe-run
Case di Quartiere — calendario estate 2026
Host returns 403 to non-browser agents; only 2 of 42 rows are for children.
Public body website — editorial import, attributed
Web page42
of which 2 for children
2026-03-15 07:302026-03-15 10:05
editor:paolo.r
weeklywatchRe-run
dati.comune.milano.it — Municipi and NIL polygons
CC BY 4.0
Open data972026-03-01 03:002026-03-01 03:00
system
monthlyokRe-run
Provider ICS feeds (3 connected)
Provider-supplied under listing agreement
ICS feed182026-03-17 06:002026-03-17 06:00
provider
hourlyokRe-run
Provider Instagram Business (2 connected)
2 extracted posts awaiting provider confirmation for 26h.
Provider-consented, Instagram Login (own account)
Instagram112026-03-17 05:302026-03-16 18:02
provider
dailywatchRe-run
Provider portal (self-listed)
Provider-supplied under listing agreement
Portal632026-03-17 09:552026-03-17 09:55
provider
liveokRe-run

Coverage by Municipio

Municipio 1
1
Municipio 2
1
Municipio 3
5
Municipio 4
1
Municipio 5
1
Municipio 8
1
Municipio 9
1
Outside the city
2

Municipio 3 is covered because it is the pilot district. Municipi 6, 7 and northern 9 are at zero: that is where acquisition goes next.

Coverage by age band

3–5 years
1
6–8 years
8
9–11 years
9
12–14 years
6
15–17 years
1

The 15–17 band has a single activity. It is the same gap the zero-result searches have been reporting for two weeks.

See the zero-result searches
Experience the app starting from this screen →
UA.CC.5.02.5 — open the municipal run that changed
2 US.CC.5.03 · Municipal scan

Back office — one municipal scan, stage by stage

One run, six named stages. The fetch kept the bytes so a re-parse can be judged against the same input; the extract ran two independent prompts and flagged where they disagreed; the diff compared against last year's edition rather than against nothing, which turns thirty-two records into three new sites and one removal.

Back office · Source scan ← Source freshness

Centri Estivi 2026

Comune di Milano — Centri Estivi 2026 (comunicato di servizio)

needs review
scan-2026-03-17-0812
Triggered by
change detected — document hash differs from the 15 March snapshot
Started
2026-03-17 08:12:04 · took 47.2 s
Compared with
Centri Estivi 2025
Consent
PROT-2026-0112458 · what the Comune sees
1
Fetch
clean
2.1 s
2
Parse
clean
18.4 s
3
Extract
look
21.3 s
4
Diff vs 2025
clean
0.9 s
5
Validate
look
0.3 s
6
Gate
waiting
0.2 s

What each stage did

Fetch
The bytes are kept, so a re-parse can be compared against the same input.
clean
HTTP status200
Size1.24 MB
SHA-256a41f…9e02
Snapshotstored, replayable
User agentbrowser UA — this host answers 403 to bots
Parse
Layout matched the 2025 template, so the table locator did not have to be relearned.
clean
ParserDocling (MIT)
Pages16
Tables found4
Table rows32 sites + 21 fee bands
Text layernative, no OCR needed
Extract
Two records disagreed between the two extractions on the address line.
look
Records32 summer centres
Fields per record9
Mean confidence0.94
Below threshold2 records
Modelstrict JSON schema, two independent prompts
Diff vs 2025
A whole-table change is normal in March; a single changed address is the thing to check.
clean
New sites3
Removed1
Changed4
Unchanged25
Fee tableall 21 bands changed — expected, annual revision
Validate
Two records cannot be published as they stand: the filter would silently drop them.
look
Schema errors2
Missing required fieldhours on 2 records
Date sanity3 periods, all inside the school year
Fee monotonic across ISEE bandsyes
Gate
Publication waits for a human on everything the run could not settle by itself.
waiting
Auto-publishable26 of 32
To an editor4
Blocked2 — missing hours
Nothing published yetcorrect

What changed since Centri Estivi 2025

SiteWhat changedConfidenceRoute
newScuola Rinnovata Pizzigoni
Municipio 8
Not in the 2025 edition. Address needs a human check against the school register.
0.88
To an editor
newScuola Primaria Cavalieri
Municipio 2
New site, address parsed cleanly and geocoded to Via Anemoni.
0.96
auto
newScuola Primaria Trilussa
Municipio 6
New site, matches an existing school record in the open-data register.
0.97
auto
removedScuola Primaria Pini
Municipio 4
Present in 2025, absent in 2026. Unpublish rather than delete, with the reason recorded.
1.00
To an editor
changedCasa del Sole
Municipio 3
Period C extended by two days; fee for the top ISEE band moves 249.10 → 254.04.
0.99
auto
changedScuola Primaria Muzio
Municipio 9
Address line differs from 2025 and the two extractions disagree on the house number.
0.61
To an editor

What we could not read

Annex 2-bis, fee table for PEG pupilsScanned image, no text layer. Plan: OCR pass queued; 21-band table is unaffected.
Footnote 4 on page 11Footnote text sits outside the table region. Plan: Read by an editor; it concerns refunds, not sites.
Why this screen existsA municipal document is republished once a year without notice, and it carries the prices and deadlines that matter most. Treating each read as a replayable run — snapshot in, named stages, diff against last year, explicit unread list — is what turns an annual PDF into a source we can promise families is true.
Experience the app starting from this screen →
UA.CC.5.03.2 — send what the run could not settle to review
3 US.CC.5.01 · Moderation

Back office — the moderation queue

Four records reach a person with the evidence beside them and per-field confidence: a new site whose address needs checking, and one where the two extractions disagree on a house number. Five inline decisions, every one logged and fed back into the evaluation set.

Back office Queue · 4 Source health →

Moderation queue

Nothing extracted automatically goes public without passing through here. Auto-publish threshold: confidence ≥ 0.90 on every required field.

Estate Ragazzi 2026 — Oratorio San Luigi
San Luigi Parish · Provider Instagram Business (2 connected) · extracted 2026-03-17 05:31
needs provider confirmation
confidence 0.62
ageRange
6–13
0.91
weeks
W2–W6
0.74
price
€45 / week
0.48
hours
not stated
0.20
meals
not stated
0.20
FlagsPrice inferred from a caption, not from a price page
Hours missing — a required field
Summer Lab Teens — extra week
Fondazione Riccardo Catella · Provider ICS feeds (3 connected) · extracted 2026-03-17 06:00
ready to publish
confidence 0.96
ageRange
12–16
0.99
weeks
W5
0.98
price
€215 / week
0.97
hours
9:00–17:30
0.99
meals
lunch included
0.95
Summer Centre — Scuola Rinnovata Pizzigoni
Comune di Milano · Comune di Milano — Centri Estivi 2026 (comunicato di servizio) · extracted 2026-03-17 08:12
needs an editor check
confidence 0.88
ageRange
6–11
0.99
weeks
A, B, C
0.94
price
21 ISEE bands
0.86
hours
8:30–16:30
0.99
meals
lunch + snack
0.93
FlagsNew venue compared with the 2025 edition — check the address
Youth theatre course — autumn enrolment
Teatro del Buratto · Provider Instagram Business (2 connected) · extracted 2026-03-16 19:14
needs provider confirmation
confidence 0.41
ageRange
11–15
0.55
weeks
n/a — year-long course
0.60
price
not stated
0.15
hours
Wednesday afternoon
0.44
meals
none
0.80
FlagsConfidence below the 0.70 threshold — not publishable
Two independent extractions disagree on the price
Why the queue existsPublished benchmarks on extraction from listing pages give 65–85% exact values per field. With four required fields, about one listing in five would carry an error. One editor-hour a day is what keeps the catalogue true.
Experience the app starting from this screen →
UA.CC.5.01.4 — back to the ledger to close the loop
4 US.CC.4.03 · Municipality console

Municipality console — consent, and what we read from you

Two of the problems are not ours to fix: an annex published as a scanned image, and two records with no hours at all. They go back to the publisher in their own console, stated as what it costs them rather than as a complaint.

Publisher console Comune di Milanoconsent active

What we read from you

One page, kept honest. You can change any of it without asking us.

32activities live from your documents
1,842families reached, 30 days
263clicks sent to your registration pages
11clean reads in a row

What was agreed

Signed
2026-02-24 · PROT-2026-0112458
Contact
Ufficio Servizi all'Infanzia
Licence
Public documents, CAD art. 52 / D.Lgs. 36/2006, attribution required
How often
Daily during registration windows, weekly otherwise
In scope — we read these
  • Centri Estivi — annual service notice (PDF)
  • Sezioni Estive — infant schools page
  • Estate Vacanza — residential programme page
Out of scope — we never read these
  • Anything behind a login
  • Personal data of any kind
  • Pages not listed in the scope above

Last read

Centri Estivi 2026
2026-03-17 08:12:04 · 6 stages · took 47.2 s
waiting on our editor
Compared against Centri Estivi 2025: 3 new sites, 1 removed, 4 changed. Nothing is published until one of our editors has seen the four we were unsure about.
Previous failure: 2026-02-28 — host returned 403 for 40 minutes
See the full reading log

Two things only you can fix

Two records have no opening hours
Why it matters: Families filter on hours; without them the two sites are invisible in the busiest filter
What would fix it: Add the hours to the notice, or tell us and we will record them
Annex 2-bis is a scanned image
Why it matters: We cannot read it reliably, so the PEG fee table is not published
What would fix it: A text PDF of that annex would fix it permanently

Your controls

The deal, in one lineYou publish what you already publish. We read only what is listed above, tell you what we could not read, and send families back to your own registration pages. You can stop us at any time.
Experience the app starting from this screen →
End of the journey

How it ends

Eleven sources reviewed, one municipal republication absorbed, four uncertain records settled by a person, and two problems only the publisher can fix sent back to them — inside an hour, with every decision logged.

End-to-end journey · 4 screens

A gap becomes an acquisition target

A query that returns nothing becomes the next provider to contact
Who
Parent, then editorial team — two sides of the same event
When
Giulia narrows the search to a 13-year-old within 2 km with lunch included. The catalogue has nothing.
Why
This journey shows the product's growth model: what the parent experiences as a dead end is, on the other side, the most valuable signal the product collects.

Read left to right. Each screen is the one the person is looking at; the dashed note under it is the action that takes them to the next. Scroll the strip sideways, and any single screen inside its own frame.

2 US.CC.1.05 · No results

No results — and what to do about it

No results — and the product does not merely say so. It proposes the two smallest changes that would work, with how many results each would return, and offers to alert her if something appears.

9:41
Search activities, sports, courses…
age 13 × 15 Jun – 31 Jul × within 2 km × lunch included ×

No activity matches these filters

For a 13-year-old within 2 km, with lunch included, the catalogue has nothing today. That is not a bug: it is a gap in supply, and we are tracking it.

The smallest change that works

Widen the radius to 6 km
Multisport Campus Mincio · Summer Lab Teens at BAM
2 results
Drop “lunch included”
Coding and robotics, mornings only
1 result
Alert me if something matching appears Know an activity we are missing? Tell us
What happens behind the scenes This empty search is logged with its filters. It is the signal that decides which providers we approach first.
Experience the app starting from this screen →
UA.CC.1.05.3 — ask to be alerted
3 US.CC.5.02 · Source freshness

Back office — source freshness

On the other side, the same search shows up in coverage: the 15–17 band has one activity, and Municipi 6, 7 and northern 9 are at zero. The gap is not an opinion, it is a bar.

Back office · Sources ← Moderation queue

Source freshness

Checked at 10:00 · 14 published activities · 11 complete · 2 awaiting confirmation · 1 to re-verify

14published activities
79%with complete data
2sources to watch
1.3 daverage data age
SourceTypeRecordsLast fetchLast human checkCadenceHealth
Comune di Milano — Centri Estivi 2026 (comunicato di servizio)
Public document — CAD art. 52 / D.Lgs. 36/2006, attribution
PDF322026-03-17 08:122026-03-17 09:40
editor:giulia.m
dailyokOpen run
Milanosport — Campus Estivi 2026
Public body website — editorial import, attributed
Web page402026-03-16 06:052026-03-16 11:20
editor:giulia.m
dailyokRe-run
Case di Quartiere — calendario estate 2026
Host returns 403 to non-browser agents; only 2 of 42 rows are for children.
Public body website — editorial import, attributed
Web page42
of which 2 for children
2026-03-15 07:302026-03-15 10:05
editor:paolo.r
weeklywatchRe-run
dati.comune.milano.it — Municipi and NIL polygons
CC BY 4.0
Open data972026-03-01 03:002026-03-01 03:00
system
monthlyokRe-run
Provider ICS feeds (3 connected)
Provider-supplied under listing agreement
ICS feed182026-03-17 06:002026-03-17 06:00
provider
hourlyokRe-run
Provider Instagram Business (2 connected)
2 extracted posts awaiting provider confirmation for 26h.
Provider-consented, Instagram Login (own account)
Instagram112026-03-17 05:302026-03-16 18:02
provider
dailywatchRe-run
Provider portal (self-listed)
Provider-supplied under listing agreement
Portal632026-03-17 09:552026-03-17 09:55
provider
liveokRe-run

Coverage by Municipio

Municipio 1
1
Municipio 2
1
Municipio 3
5
Municipio 4
1
Municipio 5
1
Municipio 8
1
Municipio 9
1
Outside the city
2

Municipio 3 is covered because it is the pilot district. Municipi 6, 7 and northern 9 are at zero: that is where acquisition goes next.

Coverage by age band

3–5 years
1
6–8 years
8
9–11 years
9
12–14 years
6
15–17 years
1

The 15–17 band has a single activity. It is the same gap the zero-result searches have been reporting for two weeks.

See the zero-result searches
Experience the app starting from this screen →
UA.CC.5.02.4 — read the zero-result searches
4 US.CC.5.01 · Moderation

Back office — the moderation queue

A suggested provider enters the queue with its fields and its confidence scores. If it clears the gate, the gap closes and the parent who generated it gets the alert.

Back office Queue · 4 Source health →

Moderation queue

Nothing extracted automatically goes public without passing through here. Auto-publish threshold: confidence ≥ 0.90 on every required field.

Estate Ragazzi 2026 — Oratorio San Luigi
San Luigi Parish · Provider Instagram Business (2 connected) · extracted 2026-03-17 05:31
needs provider confirmation
confidence 0.62
ageRange
6–13
0.91
weeks
W2–W6
0.74
price
€45 / week
0.48
hours
not stated
0.20
meals
not stated
0.20
FlagsPrice inferred from a caption, not from a price page
Hours missing — a required field
Summer Lab Teens — extra week
Fondazione Riccardo Catella · Provider ICS feeds (3 connected) · extracted 2026-03-17 06:00
ready to publish
confidence 0.96
ageRange
12–16
0.99
weeks
W5
0.98
price
€215 / week
0.97
hours
9:00–17:30
0.99
meals
lunch included
0.95
Summer Centre — Scuola Rinnovata Pizzigoni
Comune di Milano · Comune di Milano — Centri Estivi 2026 (comunicato di servizio) · extracted 2026-03-17 08:12
needs an editor check
confidence 0.88
ageRange
6–11
0.99
weeks
A, B, C
0.94
price
21 ISEE bands
0.86
hours
8:30–16:30
0.99
meals
lunch + snack
0.93
FlagsNew venue compared with the 2025 edition — check the address
Youth theatre course — autumn enrolment
Teatro del Buratto · Provider Instagram Business (2 connected) · extracted 2026-03-16 19:14
needs provider confirmation
confidence 0.41
ageRange
11–15
0.55
weeks
n/a — year-long course
0.60
price
not stated
0.15
hours
Wednesday afternoon
0.44
meals
none
0.80
FlagsConfidence below the 0.70 threshold — not publishable
Two independent extractions disagree on the price
Why the queue existsPublished benchmarks on extraction from listing pages give 65–85% exact values per field. With four required fields, about one listing in five would carry an error. One editor-hour a day is what keeps the catalogue true.
Experience the app starting from this screen →
End of the journey

How it ends

One parent's empty search has become a line on an acquisition list with a number beside it. No competitor in Milan closes this loop.

End-to-end journey · 4 screens

A municipality lets us read, and watches us do it

Consent, a scan, and the publisher seeing exactly what we took
Who
Comune di Milano · Ufficio Servizi all'Infanzia, then our editor
When
The summer-centre notice is republished without warning on 17 March, and the document hash changes.
Why
Municipal supply is the cheapest and most trusted in the city, and it arrives as one annual PDF. Reading it is easy; being trusted to read it is the product. This journey is what that trust looks like in screens rather than in a contract.

Read left to right. Each screen is the one the person is looking at; the dashed note under it is the action that takes them to the next. Scroll the strip sideways, and any single screen inside its own frame.

1 US.CC.4.03 · Municipality console

Municipality console — consent, and what we read from you

The Comune's own console states what was agreed on 24 February: three documents in scope, anything behind a login explicitly out of it, daily reads during registration windows. It reports what that produced — 32 activities live, 1,842 families, 263 clicks sent back to the Comune's own pages — and two things only they can fix.

Publisher console Comune di Milanoconsent active

What we read from you

One page, kept honest. You can change any of it without asking us.

32activities live from your documents
1,842families reached, 30 days
263clicks sent to your registration pages
11clean reads in a row

What was agreed

Signed
2026-02-24 · PROT-2026-0112458
Contact
Ufficio Servizi all'Infanzia
Licence
Public documents, CAD art. 52 / D.Lgs. 36/2006, attribution required
How often
Daily during registration windows, weekly otherwise
In scope — we read these
  • Centri Estivi — annual service notice (PDF)
  • Sezioni Estive — infant schools page
  • Estate Vacanza — residential programme page
Out of scope — we never read these
  • Anything behind a login
  • Personal data of any kind
  • Pages not listed in the scope above

Last read

Centri Estivi 2026
2026-03-17 08:12:04 · 6 stages · took 47.2 s
waiting on our editor
Compared against Centri Estivi 2025: 3 new sites, 1 removed, 4 changed. Nothing is published until one of our editors has seen the four we were unsure about.
Previous failure: 2026-02-28 — host returned 403 for 40 minutes
See the full reading log

Two things only you can fix

Two records have no opening hours
Why it matters: Families filter on hours; without them the two sites are invisible in the busiest filter
What would fix it: Add the hours to the notice, or tell us and we will record them
Annex 2-bis is a scanned image
Why it matters: We cannot read it reliably, so the PEG fee table is not published
What would fix it: A text PDF of that annex would fix it permanently

Your controls

The deal, in one lineYou publish what you already publish. We read only what is listed above, tell you what we could not read, and send families back to your own registration pages. You can stop us at any time.
Experience the app starting from this screen →
UA.CC.4.03.5 — open the full reading log
2 US.CC.5.03 · Municipal scan

Back office — one municipal scan, stage by stage

Behind that summary sits one run. Six named stages: the fetch kept the bytes, the parse found last year's table layout intact, the extract ran two prompts and flagged where they disagreed, the diff compared against the 2025 edition rather than against nothing. Two records fail validation for missing hours and nothing is published yet.

Back office · Source scan ← Source freshness

Centri Estivi 2026

Comune di Milano — Centri Estivi 2026 (comunicato di servizio)

needs review
scan-2026-03-17-0812
Triggered by
change detected — document hash differs from the 15 March snapshot
Started
2026-03-17 08:12:04 · took 47.2 s
Compared with
Centri Estivi 2025
Consent
PROT-2026-0112458 · what the Comune sees
1
Fetch
clean
2.1 s
2
Parse
clean
18.4 s
3
Extract
look
21.3 s
4
Diff vs 2025
clean
0.9 s
5
Validate
look
0.3 s
6
Gate
waiting
0.2 s

What each stage did

Fetch
The bytes are kept, so a re-parse can be compared against the same input.
clean
HTTP status200
Size1.24 MB
SHA-256a41f…9e02
Snapshotstored, replayable
User agentbrowser UA — this host answers 403 to bots
Parse
Layout matched the 2025 template, so the table locator did not have to be relearned.
clean
ParserDocling (MIT)
Pages16
Tables found4
Table rows32 sites + 21 fee bands
Text layernative, no OCR needed
Extract
Two records disagreed between the two extractions on the address line.
look
Records32 summer centres
Fields per record9
Mean confidence0.94
Below threshold2 records
Modelstrict JSON schema, two independent prompts
Diff vs 2025
A whole-table change is normal in March; a single changed address is the thing to check.
clean
New sites3
Removed1
Changed4
Unchanged25
Fee tableall 21 bands changed — expected, annual revision
Validate
Two records cannot be published as they stand: the filter would silently drop them.
look
Schema errors2
Missing required fieldhours on 2 records
Date sanity3 periods, all inside the school year
Fee monotonic across ISEE bandsyes
Gate
Publication waits for a human on everything the run could not settle by itself.
waiting
Auto-publishable26 of 32
To an editor4
Blocked2 — missing hours
Nothing published yetcorrect

What changed since Centri Estivi 2025

SiteWhat changedConfidenceRoute
newScuola Rinnovata Pizzigoni
Municipio 8
Not in the 2025 edition. Address needs a human check against the school register.
0.88
To an editor
newScuola Primaria Cavalieri
Municipio 2
New site, address parsed cleanly and geocoded to Via Anemoni.
0.96
auto
newScuola Primaria Trilussa
Municipio 6
New site, matches an existing school record in the open-data register.
0.97
auto
removedScuola Primaria Pini
Municipio 4
Present in 2025, absent in 2026. Unpublish rather than delete, with the reason recorded.
1.00
To an editor
changedCasa del Sole
Municipio 3
Period C extended by two days; fee for the top ISEE band moves 249.10 → 254.04.
0.99
auto
changedScuola Primaria Muzio
Municipio 9
Address line differs from 2025 and the two extractions disagree on the house number.
0.61
To an editor

What we could not read

Annex 2-bis, fee table for PEG pupilsScanned image, no text layer. Plan: OCR pass queued; 21-band table is unaffected.
Footnote 4 on page 11Footnote text sits outside the table region. Plan: Read by an editor; it concerns refunds, not sites.
Why this screen existsA municipal document is republished once a year without notice, and it carries the prices and deadlines that matter most. Treating each read as a replayable run — snapshot in, named stages, diff against last year, explicit unread list — is what turns an annual PDF into a source we can promise families is true.
Experience the app starting from this screen →
UA.CC.5.03.2 — review the diff against last year
3 US.CC.5.01 · Moderation

Back office — the moderation queue

The four records the run could not settle reach an editor with per-field confidence and the reason each was flagged. A new site whose address needs checking against the school register, and one where the two extractions disagree on a house number.

Back office Queue · 4 Source health →

Moderation queue

Nothing extracted automatically goes public without passing through here. Auto-publish threshold: confidence ≥ 0.90 on every required field.

Estate Ragazzi 2026 — Oratorio San Luigi
San Luigi Parish · Provider Instagram Business (2 connected) · extracted 2026-03-17 05:31
needs provider confirmation
confidence 0.62
ageRange
6–13
0.91
weeks
W2–W6
0.74
price
€45 / week
0.48
hours
not stated
0.20
meals
not stated
0.20
FlagsPrice inferred from a caption, not from a price page
Hours missing — a required field
Summer Lab Teens — extra week
Fondazione Riccardo Catella · Provider ICS feeds (3 connected) · extracted 2026-03-17 06:00
ready to publish
confidence 0.96
ageRange
12–16
0.99
weeks
W5
0.98
price
€215 / week
0.97
hours
9:00–17:30
0.99
meals
lunch included
0.95
Summer Centre — Scuola Rinnovata Pizzigoni
Comune di Milano · Comune di Milano — Centri Estivi 2026 (comunicato di servizio) · extracted 2026-03-17 08:12
needs an editor check
confidence 0.88
ageRange
6–11
0.99
weeks
A, B, C
0.94
price
21 ISEE bands
0.86
hours
8:30–16:30
0.99
meals
lunch + snack
0.93
FlagsNew venue compared with the 2025 edition — check the address
Youth theatre course — autumn enrolment
Teatro del Buratto · Provider Instagram Business (2 connected) · extracted 2026-03-16 19:14
needs provider confirmation
confidence 0.41
ageRange
11–15
0.55
weeks
n/a — year-long course
0.60
price
not stated
0.15
hours
Wednesday afternoon
0.44
meals
none
0.80
FlagsConfidence below the 0.70 threshold — not publishable
Two independent extractions disagree on the price
Why the queue existsPublished benchmarks on extraction from listing pages give 65–85% exact values per field. With four required fields, about one listing in five would carry an error. One editor-hour a day is what keeps the catalogue true.
Experience the app starting from this screen →
UA.CC.5.01.1 — approve what is clean
4 US.CC.1.03 · Activity page

Activity page — municipal summer centre

What a parent finally sees: the fee table across 21 ISEE bands, the registration window, the points rule — and at the foot, the source document, its licence, when it was read and who verified it. The whole chain is inspectable from the public page backwards.

9:41
City of Milan ISEE Opens soon Registration in 2 days

Municipal Summer Centre — Casa del Sole

Comune di Milano · Education Directorate · Mixed activities · 1.2 km from home

6–11years
8:30–16:30Mon–Fri
Lunchincluded
From €0 to €254.04
per period · meals included
21 ISEE bands
One fee per period across 21 ISEE income bands: €0 up to an ISEE of 3,000, €169.36 above 40,000 (period A). Meals included.
Sibling discount −30% from the second child, same centre and same period.

Bookable periods

A · 10–19 Jun8 days€169.36
B · 22 Jun – 3 Jul10 days€211.70
C · 6–21 Jul12 days€254.04

You can book one period or several, and they need not be consecutive.

The day

Hours
8:30–16:30
Before / after
drop-off from 7:30, pick-up until 18:00
Meals
Lunch + snack (Milano Ristorazione)
Dietary
vegetarian, gluten free, allergies managed
Ages
6–11 · primary school only
Where
Via Giacosa 46, Milan · 1.2 km from home
Fits your working dayWith after-care until 18:00 it covers a working day that ends at 17:00.

Registration

Opens 19 March at 12:00, closes 7 April at 12:00Online only, with a SPID or CIE digital identity. Places are allocated by score (two working parents = 10 points).

This is not first come, first served — places go by score. Two working parents are worth 10 points; a sibling aged 0–14 adds 1.2.

Alert me when it opensGo to the Comune website ↗

Where this data comes from

Source
Comune di Milano — Centri Estivi 2026 (comunicato di servizio)
Licence
Public document — CAD art. 52 / D.Lgs. 36/2006, attribution
Fetched
2026-03-17 08:12
Verified
2026-03-17 09:40 by editor:giulia.m

Report an error on this listing

Experience the app starting from this screen →
End of the journey

How it ends

Thirty-two sites are published carrying their source, licence and verification date; four uncertain records were settled by a human; two things only the Comune can fix were sent back to them; and the Comune can see all of it and switch us off whenever it likes.

US.CC.1.01

Onboarding — who you are and what you need

CC.1 · Find an activity — the parent side
S3 ships in stage 3
9:41
2/4

Who is the summer for?

Their age is all we need. No name, no school, no photo.

Children

8 Child 1Age 8 · orange in your calendar +
13 Child 2Age 13 · blue in your calendar +
+ Add another child

Where you start from

Municipio 3 · Città StudiDistances are measured from here
Why we ask so little Age decides which activities a child may join. Name, school and exact address decide nothing, so the product never asks for them.
Next

Skip, I will search myself

US.CC.1.03

Activity page — municipal summer centre

CC.1 · Find an activity — the parent side
S2 ships in stage 2
9:41
City of Milan ISEE Opens soon Registration in 2 days

Municipal Summer Centre — Casa del Sole

Comune di Milano · Education Directorate · Mixed activities · 1.2 km from home

6–11years
8:30–16:30Mon–Fri
Lunchincluded
From €0 to €254.04
per period · meals included
21 ISEE bands
One fee per period across 21 ISEE income bands: €0 up to an ISEE of 3,000, €169.36 above 40,000 (period A). Meals included.
Sibling discount −30% from the second child, same centre and same period.

Bookable periods

A · 10–19 Jun8 days€169.36
B · 22 Jun – 3 Jul10 days€211.70
C · 6–21 Jul12 days€254.04

You can book one period or several, and they need not be consecutive.

The day

Hours
8:30–16:30
Before / after
drop-off from 7:30, pick-up until 18:00
Meals
Lunch + snack (Milano Ristorazione)
Dietary
vegetarian, gluten free, allergies managed
Ages
6–11 · primary school only
Where
Via Giacosa 46, Milan · 1.2 km from home
Fits your working dayWith after-care until 18:00 it covers a working day that ends at 17:00.

Registration

Opens 19 March at 12:00, closes 7 April at 12:00Online only, with a SPID or CIE digital identity. Places are allocated by score (two working parents = 10 points).

This is not first come, first served — places go by score. Two working parents are worth 10 points; a sibling aged 0–14 adds 1.2.

Alert me when it opensGo to the Comune website ↗

Where this data comes from

Source
Comune di Milano — Centri Estivi 2026 (comunicato di servizio)
Licence
Public document — CAD art. 52 / D.Lgs. 36/2006, attribution
Fetched
2026-03-17 08:12
Verified
2026-03-17 09:40 by editor:giulia.m

Report an error on this listing

US.CC.1.04

Comparing three activities

CC.1 · Find an activity — the parent side
S3 ships in stage 3
Comparison · 3 activities Child 1 · age 8
Municipal Summer Centre — Casa del Sole
Comune di Milano · Education Directorate
City of Milan ISEE Opens soon
Multisport Campus — Mincio Centre
Milanosport S.p.A.
Milanosport ISEE
English Summer Camp
Pingu's English Milano Città Studi
Private
Normalised price
€105.85 /week/child
cheapest
€194.00 /week/child
€285.00 /week/child
Comune: period B fee €211.70 ÷ 2 weeks. Pingu's: €230 + €35 lunch + €20 after-camp, because you asked for meals and cover until 17:00.
Hours8:30–16:30
covers until 18:00
8:30–17:30
covers until 17:30
9:00–16:00
until 16:00 — after-camp costs extra
MealsLunch + snack
in the price
Lunch included
in the price
Lunch included
+€35 a week
Distance from home1.2 km2.9 km1.6 km
Registration deadline7 April, 12:00
opens 19 March · SPID required
5 June
registration open
15 June
registration open
Eligible ages6–11 years
primary school only — Child 2, aged 13, is not eligible
5–14 years4–10 years
ConcessionsISEE — 21 bands, free below €3,000ISEE below €20,000 → −16%none
In one lineThe cheapest option also has the nearest deadline and the tightest age limit: it covers Child 1 but not Child 2.
US.CC.1.05

No results — and what to do about it

CC.1 · Find an activity — the parent side
S2 ships in stage 2
9:41
Search activities, sports, courses…
age 13 × 15 Jun – 31 Jul × within 2 km × lunch included ×

No activity matches these filters

For a 13-year-old within 2 km, with lunch included, the catalogue has nothing today. That is not a bug: it is a gap in supply, and we are tracking it.

The smallest change that works

Widen the radius to 6 km
Multisport Campus Mincio · Summer Lab Teens at BAM
2 results
Drop “lunch included”
Coding and robotics, mornings only
1 result
Alert me if something matching appears Know an activity we are missing? Tell us
What happens behind the scenes This empty search is logged with its filters. It is the signal that decides which providers we approach first.
US.CC.2.01

“Plan my summer” — the constraints

CC.2 · Compose the summer — the hero feature
S4 ships in stage 4
9:41
3/4

A few more preferences

These decide what the planner may bend when no perfect summer exists.

7 weeks × 2 children = 14 child-weeks to cover. Tap any chip to change it.

Hard constraints non-negotiable

Preferences can bend

If the two children clash

Activity types optional

Combinations are computed by a constraint solver, not by a language model. The AI only writes the explanation, and we say so every time (EU Reg. 2024/1689, art. 50).
Plan my summer
US.CC.2.02

Three proposed plans, with cost and uncovered weeks

CC.2 · Compose the summer — the hero feature
S4 ships in stage 4
9:41
2.3 s · CP-SAT LF

Your summer plan

15 June – 31 July · 2 children · €1,300 budget · within 8 km

€1,241.74of €1,300 · €58.26 left
8/14weeks covered
2.9 kmlongest trip
6 child-weeks stay uncoveredChild 1 (8): 20–24 Jul, 27–31 Jul
Child 2 (13): 6–10 Jul, 13–17 Jul, 20–24 Jul, 27–31 Jul
Explanation generated by AI. Leans on the municipal summer centre, which even at the top ISEE band costs less than half a private week. Child 2 cannot attend the municipal summer centre — it is primary school only — so her weeks cost more.

The other two plans

Least travel
Everything within 1.8 km of home: one trip in the morning, both centres walkable or a short ride.
€1,286
9/14 wks
max 1.8 km2 categorieslunch always included
Most variety
Four different categories instead of one. One week ends at 13:00 and needs cover.
€1,244
8/14 wks
max 4.6 km4 categorieslunch always included
US.CC.2.03

Constraints in conflict — why, and what to give up

CC.2 · Compose the summer — the hero feature
S4 ships in stage 4
9:41
0.2 s · CP-SAT

This week cannot fit the plan

Junior Sailing — weekly course for Child 2, week of 29 June.

Two constraints cannot both hold

Maximum distance 8 kmhard

actual value: 9.4 km
Junior Sailing is at the Idroscalo, 9.4 km from home — beyond the 8 km limit you set.

Total budget €1,300hard

actual value: €1,307.74
Dropping Child 2's week W3 (−€194.00) and adding the sailing course (+€260.00) takes the total from €1,241.74 to €1,307.74 — over the €1,300.00 budget.

Three ways out

Raise the radius to 10 km and the budget to €1,310
Resolves both conflicts. No week changes and neither child loses anything.
€1,307.74
+€66.00
recommended the smallest change that resolves both conflicts
Take the shuttle from Piazzale Loreto (+€25) and raise the budget
The 8 km limit stays: your own trip drops to 1.1 km. But it costs more.
€1,332.74
+€91.00
Drop Child 1's week of 15–19 June (−€194.00)
Back inside the budget, but you still need the 10 km radius and one more week goes uncovered.
€1,113.74
−€128.00
Conflicts are computed by the solver. No option is applied on its own: you choose which constraint gives way.
Never mind, back to the plan
US.CC.2.04

Family calendar with clashes and deadlines

CC.2 · Compose the summer — the hero feature
S3 ships in stage 3
9:41
Summer 2026

Family calendar

“Most variety” plan · €1,243.74 · 8 weeks of 14

Child 1 · 8Child 2 · 13
15–19 JunSwimCamp€154.00 · 8:30Multisport Campus€194.00 · 8:30
22–26 JunMunicipal Summer Centre€211.70 / 2 wks · 8:30Summer Lab Teens€215.00 · 9:00
29 Jun – 3 JulMunicipal Summer Centre€211.70 / 2 wks · 8:30Summer Lab Teens€215.00 · 9:00
6–10 JulMunicipal Summer Centre€254.04 / 2 wks · 8:30uncovered
13–17 JulMunicipal Summer Centre€254.04 / 2 wks · 8:30uncovered
20–24 JulGrandparents, Sestri Levanteyours · no bookingGrandparents, Sestri Levanteyours · no booking
27–31 JulFamily holidayyours · no bookingFamily holidayyours · no booking
green public · blue private · amber uncovered · violet yours
Clash · week of 15 JuneBoth children start at 8:30 but at different centres: SwimCamp Iseo (3.4 km) and Multisport Mincio (2.9 km). You need a second adult or a swap.
2 weeks still uncoveredChild 2: 6–10 Jul, 13–17 Jul
Two more were covered by what you added yourself.

Deadlines attached to this plan

Dote Sport Lombardy — applications close tomorrow
€100 per child aged 6–17 towards sports courses, for an ISEE up to €20,000. The window closes on 18 March.
1 day
Municipal summer centres — registration opens in 2 days
From 19 March at 12:00 to 7 April at 12:00, with a SPID or CIE digital identity only. Child 1 is inside the 6–11 age range; Child 2 is not.
2 days
Milanosport — promotional window from 21 April
Weeks bought between 21 April and 12 May cost €175 instead of €194. On your current plan that saves €76.
35 days
US.CC.2.05

Change the plan for one child only

CC.2 · Compose the summer — the hero feature
S4 ships in stage 4
9:41
0.6 s · CP-SAT

Change one child's weeks

The other child keeps everything already agreed.

Child 1’s weeks stay as they areChild 1 keeps 5 weeks at €619.74, including two municipal periods that are already applied for. That leaves €680.26 of the €1,300 budget for Child 2.

What changes for Child 2

WeekWasBecomesCost
15–19 JunMultisport Campus
€194.00
SmartCamp
€164.00
−€30.00
22–26 JunSummer Lab Teens
€215.00
SmartCamp
€164.00
−€51.00
29 Jun – 3 JulSummer Lab Teens
€215.00
SmartCamp
€164.00
−€51.00
6–10 Julnothing
SmartCamp
€164.00
+€164.00
3 → 4weeks covered
+€32.00on these weeks
1.8 kmlongest trip, was 4.6 km
Explanation generated by AI. Child 2 keeps a whole week more and every centre is inside 1.8 km, for €32.00 more. The whole of Child 1's summer is untouched.
New total €1,275.74€24.26 left of the budget. One week is still uncovered for Child 2 — the week of 13–17 Jul.
Cover a week ourselves instead
US.CC.2.06

Add something the catalogue will never know

CC.2 · Compose the summer — the hero feature
S3 ships in stage 3
9:41
Your own entry

Add your own

For the weeks nobody sells you: the grandparents, the holiday, the fortnight you take off. The plan needs to know about them.

Grandparents, Sestri Levante
Child 1 · 8Child 2 · 13
15–19 Jun22–26 Jun29 Jun – 3 Jul6–10 Jul13–17 Jul20–24 Jul27–31 Jul
€0.00 optional
Family
They take both of them for the week. Train on the Monday.
What this will doCovers 2 children for the week of 20–24 Jul. Uncovered weeks in your plan fall from 6 to 4, and the planner will stop proposing activities for that week.
🔒 This stays yoursPrivate to your household. Never published, never shown to providers, never used to rank anything. It exists to make your calendar true.
Add to the calendarAdd it and re-plan around it

Already added

Family holiday
27–31 Jul · both children
yours
All four of us. Nothing to book here.
US.CC.2.07

The solver is working — what it is doing, and for how long

CC.2 · Compose the summer — the hero feature
S4 ships in stage 4
9:41

Planning their perfect summer…

Two children, seven weeks, one budget.

Finding activities near you
Checking availability and ages
Optimising the schedule
Writing the explanation
Before you see it At €1,300 within 8 km we can usually cover 8 or 9 of the 14 child-weeks. The plan will name the weeks it cannot cover rather than quietly dropping them.
The combination is computed by a constraint solver. Only the paragraph explaining it is written by AI (EU Reg. 2024/1689, art. 50).
See the plans

Cancel and change a constraint

US.CC.3.01

Alerts — deadlines, openings and price changes

CC.3 · Stay ahead of deadlines — the retention loop
S3 ships in stage 3
9:41
17 March 2026

Alerts

Ordered by urgency, not by date. Two of them close this week.

Dote Sport Lombardy — applications close tomorrow
by tomorrow
€100 per child aged 6–17 towards sports courses, for an ISEE up to €20,000. The window closes on 18 March.
Child 1 · 8 Child 2 · 13
Municipal summer centres — registration opens in 2 days
in 2 days
From 19 March at 12:00 to 7 April at 12:00, with a SPID or CIE digital identity only. Child 1 is inside the 6–11 age range; Child 2 is not.
Child 1 · 8
Estate Vacanza — registration from 18 March
in 1 day
Residential stays for ages 6–14 in Liguria and Piedmont, seven sessions from 10 June to 5 September.
Child 1 · 8 Child 2 · 13
Milanosport — promotional window from 21 April
in 35 days
Weeks bought between 21 April and 12 May cost €175 instead of €194. On your current plan that saves €76.
Child 1 · 8 Child 2 · 13
Coding and robotics — last 3 places
in 85 days
Codemotion Kids! Milano updated availability yesterday at 18:02.
Child 1 · 8 Child 2 · 13
You only get the alert types you turned on: openings, deadlines, new matching activities, price changes. Manage preferences and consents
US.CC.3.02

Digest preferences and consents

CC.3 · Stay ahead of deadlines — the retention loop
S3 ships in stage 3
9:41
Preferences

Weekly digest

Last sent on 12 March · you saved 2 activities from it.

Thursday
08:00 Europe/Rome

What it may contain

Summer centres
Year-round courses
Free and municipal activities
Weekend one-offs
Vouchers and ISEE concessions

Immediate alerts

Registration opening
Registration deadline
New places available
New activities that fit
Price change or promotion

Consents

Service and account required
Required to use the service.
Weekly digest by email
A commercial communication under art. 130 of the Italian privacy code. Revocable from every message.
Alerts on deadlines and places
Only for activities you saved or that match your profile.
Behavioural profiling
Off by default. The service runs on the preferences you stated.
How we measure the digestWe count clicks, saves and registrations. We do not count opens: more than half of them today are mail-client fetches and would tell us something untrue.

Your data

The account belongs to an adult. Of the children we keep only an age band and interests. No name, no photo, no school, no exact address.

US.CC.4.01

Provider portal — the listing editor

CC.4 · Publish and keep current — the supply side
S5 ships in stage 5
Provider portal ASD Vela Idroscalo Milano verified

Vela Junior — corso settimanale

Unpublished draft · last edited today at 09:55

We cannot publish: two fields are missingWithout hours the listing does not appear in the “I need to work” filter, the one parents use most. Without a deadline we cannot alert families when registration is about to close.
9
14
Sailing and outdoors
15–19 Jun22–26 Jun29 Jun – 3 Jul6–10 Jul13–17 Jul20–24 Jul27–31 Jul

Enter a start time.

Families filter on this field.

Lunch included
€260
per week
4
15 February 2026

This is the field that generates alerts.

Not stated — families with allergies filter on this field

Listing completeness

82%
  • Dietary information not stated
  • No photo on 1 of 3 activities
  • Hours and deadline missing

Last 30 days

Views
1,842
Saves
96
Clicks to register
41

No commission on registrations. Registration happens on your own site.

Data verification

Last confirmed: today, 09:55 by you.

Families see this date on the public listing. After 30 days without confirmation the listing is flagged for review.

US.CC.4.02

Connecting a provider’s own sources, with consent

CC.4 · Publish and keep current — the supply side
S5 ships in stage 5
Provider portal · Sources ASD Vela Idroscalo Milano

Where we get your data

Only from channels you connect yourself. We do not scrape your site without an agreement, and every automatic extraction passes through your confirmation.

✎ Manual entry
3 activities published
active
What we read: Manual entry. No external access.
📅 ICS calendar feed
Paste an .ics URL and the dates keep themselves up to date
available
What we read: We read only dates, times and titles from the .ics file you give us.
Connect
◉ Instagram Business
Connect your account: we read only your own posts, and ask you to confirm
available
What we read: We read only your own business account posts. Never direct messages, never other accounts.
Connect
✈ Telegram channel
Add our bot as an administrator of your channel
available
What we read: We read only the channel where you add us as an administrator.
Connect
✉ Newsletter forwarding
Forward your newsletter to listings@…: we extract the dates and ask you to confirm
available
What we read: We read only the emails forwarded to that address. No access to your mailbox.
Connect

Waiting for your confirmation · 2

Extracted from your own posts. Until you confirm them, families do not see them.

Junior Sailing — extra week 27–31 July
extracted 2026-03-17 06:00 · overall confidence 0.96
ready
ageRange
9–14
confidence 0.99
weeks
W7
confidence 0.98
price
€260 / week
confidence 0.97
hours
9:00–17:00
confidence 0.99
meals
lunch included
confidence 0.95
Sailing open day — Saturday 12 April
extracted 2026-03-16 18:40 · overall confidence 0.58
needs checking
ageRange
8–16
confidence 0.71
weeks
one-off event
confidence 0.80
price
free?
confidence 0.35
hours
not stated
confidence 0.22
meals
none
confidence 0.78
To checkPrice inferred from “come and try” — confirm whether it is free
Hours missing — a required field
Why we ask you to confirmAn automatic extractor gets the price or the age range wrong on about one listing in five. Your confirmation is what makes the catalogue trustworthy — and it puts the “verified by the provider” stamp on the public listing.
US.CC.4.03

Municipality console — consent, and what we read from you

CC.4 · Publish and keep current — the supply side
S2 ships in stage 2
Publisher console Comune di Milanoconsent active

What we read from you

One page, kept honest. You can change any of it without asking us.

32activities live from your documents
1,842families reached, 30 days
263clicks sent to your registration pages
11clean reads in a row

What was agreed

Signed
2026-02-24 · PROT-2026-0112458
Contact
Ufficio Servizi all'Infanzia
Licence
Public documents, CAD art. 52 / D.Lgs. 36/2006, attribution required
How often
Daily during registration windows, weekly otherwise
In scope — we read these
  • Centri Estivi — annual service notice (PDF)
  • Sezioni Estive — infant schools page
  • Estate Vacanza — residential programme page
Out of scope — we never read these
  • Anything behind a login
  • Personal data of any kind
  • Pages not listed in the scope above

Last read

Centri Estivi 2026
2026-03-17 08:12:04 · 6 stages · took 47.2 s
waiting on our editor
Compared against Centri Estivi 2025: 3 new sites, 1 removed, 4 changed. Nothing is published until one of our editors has seen the four we were unsure about.
Previous failure: 2026-02-28 — host returned 403 for 40 minutes
See the full reading log

Two things only you can fix

Two records have no opening hours
Why it matters: Families filter on hours; without them the two sites are invisible in the busiest filter
What would fix it: Add the hours to the notice, or tell us and we will record them
Annex 2-bis is a scanned image
Why it matters: We cannot read it reliably, so the PEG fee table is not published
What would fix it: A text PDF of that annex would fix it permanently

Your controls

The deal, in one lineYou publish what you already publish. We read only what is listed above, tell you what we could not read, and send families back to your own registration pages. You can stop us at any time.
US.CC.5.01

Back office — the moderation queue

CC.5 · Keep the catalogue true — the operator side
S2 ships in stage 2
Back office Queue · 4 Source health →

Moderation queue

Nothing extracted automatically goes public without passing through here. Auto-publish threshold: confidence ≥ 0.90 on every required field.

Estate Ragazzi 2026 — Oratorio San Luigi
San Luigi Parish · Provider Instagram Business (2 connected) · extracted 2026-03-17 05:31
needs provider confirmation
confidence 0.62
ageRange
6–13
0.91
weeks
W2–W6
0.74
price
€45 / week
0.48
hours
not stated
0.20
meals
not stated
0.20
FlagsPrice inferred from a caption, not from a price page
Hours missing — a required field
Summer Lab Teens — extra week
Fondazione Riccardo Catella · Provider ICS feeds (3 connected) · extracted 2026-03-17 06:00
ready to publish
confidence 0.96
ageRange
12–16
0.99
weeks
W5
0.98
price
€215 / week
0.97
hours
9:00–17:30
0.99
meals
lunch included
0.95
Summer Centre — Scuola Rinnovata Pizzigoni
Comune di Milano · Comune di Milano — Centri Estivi 2026 (comunicato di servizio) · extracted 2026-03-17 08:12
needs an editor check
confidence 0.88
ageRange
6–11
0.99
weeks
A, B, C
0.94
price
21 ISEE bands
0.86
hours
8:30–16:30
0.99
meals
lunch + snack
0.93
FlagsNew venue compared with the 2025 edition — check the address
Youth theatre course — autumn enrolment
Teatro del Buratto · Provider Instagram Business (2 connected) · extracted 2026-03-16 19:14
needs provider confirmation
confidence 0.41
ageRange
11–15
0.55
weeks
n/a — year-long course
0.60
price
not stated
0.15
hours
Wednesday afternoon
0.44
meals
none
0.80
FlagsConfidence below the 0.70 threshold — not publishable
Two independent extractions disagree on the price
Why the queue existsPublished benchmarks on extraction from listing pages give 65–85% exact values per field. With four required fields, about one listing in five would carry an error. One editor-hour a day is what keeps the catalogue true.
US.CC.5.02

Back office — source freshness

CC.5 · Keep the catalogue true — the operator side
S2 ships in stage 2
Back office · Sources ← Moderation queue

Source freshness

Checked at 10:00 · 14 published activities · 11 complete · 2 awaiting confirmation · 1 to re-verify

14published activities
79%with complete data
2sources to watch
1.3 daverage data age
SourceTypeRecordsLast fetchLast human checkCadenceHealth
Comune di Milano — Centri Estivi 2026 (comunicato di servizio)
Public document — CAD art. 52 / D.Lgs. 36/2006, attribution
PDF322026-03-17 08:122026-03-17 09:40
editor:giulia.m
dailyokOpen run
Milanosport — Campus Estivi 2026
Public body website — editorial import, attributed
Web page402026-03-16 06:052026-03-16 11:20
editor:giulia.m
dailyokRe-run
Case di Quartiere — calendario estate 2026
Host returns 403 to non-browser agents; only 2 of 42 rows are for children.
Public body website — editorial import, attributed
Web page42
of which 2 for children
2026-03-15 07:302026-03-15 10:05
editor:paolo.r
weeklywatchRe-run
dati.comune.milano.it — Municipi and NIL polygons
CC BY 4.0
Open data972026-03-01 03:002026-03-01 03:00
system
monthlyokRe-run
Provider ICS feeds (3 connected)
Provider-supplied under listing agreement
ICS feed182026-03-17 06:002026-03-17 06:00
provider
hourlyokRe-run
Provider Instagram Business (2 connected)
2 extracted posts awaiting provider confirmation for 26h.
Provider-consented, Instagram Login (own account)
Instagram112026-03-17 05:302026-03-16 18:02
provider
dailywatchRe-run
Provider portal (self-listed)
Provider-supplied under listing agreement
Portal632026-03-17 09:552026-03-17 09:55
provider
liveokRe-run

Coverage by Municipio

Municipio 1
1
Municipio 2
1
Municipio 3
5
Municipio 4
1
Municipio 5
1
Municipio 8
1
Municipio 9
1
Outside the city
2

Municipio 3 is covered because it is the pilot district. Municipi 6, 7 and northern 9 are at zero: that is where acquisition goes next.

Coverage by age band

3–5 years
1
6–8 years
8
9–11 years
9
12–14 years
6
15–17 years
1

The 15–17 band has a single activity. It is the same gap the zero-result searches have been reporting for two weeks.

See the zero-result searches
US.CC.5.03

Back office — one municipal scan, stage by stage

CC.5 · Keep the catalogue true — the operator side
S2 ships in stage 2
Back office · Source scan ← Source freshness

Centri Estivi 2026

Comune di Milano — Centri Estivi 2026 (comunicato di servizio)

needs review
scan-2026-03-17-0812
Triggered by
change detected — document hash differs from the 15 March snapshot
Started
2026-03-17 08:12:04 · took 47.2 s
Compared with
Centri Estivi 2025
Consent
PROT-2026-0112458 · what the Comune sees
1
Fetch
clean
2.1 s
2
Parse
clean
18.4 s
3
Extract
look
21.3 s
4
Diff vs 2025
clean
0.9 s
5
Validate
look
0.3 s
6
Gate
waiting
0.2 s

What each stage did

Fetch
The bytes are kept, so a re-parse can be compared against the same input.
clean
HTTP status200
Size1.24 MB
SHA-256a41f…9e02
Snapshotstored, replayable
User agentbrowser UA — this host answers 403 to bots
Parse
Layout matched the 2025 template, so the table locator did not have to be relearned.
clean
ParserDocling (MIT)
Pages16
Tables found4
Table rows32 sites + 21 fee bands
Text layernative, no OCR needed
Extract
Two records disagreed between the two extractions on the address line.
look
Records32 summer centres
Fields per record9
Mean confidence0.94
Below threshold2 records
Modelstrict JSON schema, two independent prompts
Diff vs 2025
A whole-table change is normal in March; a single changed address is the thing to check.
clean
New sites3
Removed1
Changed4
Unchanged25
Fee tableall 21 bands changed — expected, annual revision
Validate
Two records cannot be published as they stand: the filter would silently drop them.
look
Schema errors2
Missing required fieldhours on 2 records
Date sanity3 periods, all inside the school year
Fee monotonic across ISEE bandsyes
Gate
Publication waits for a human on everything the run could not settle by itself.
waiting
Auto-publishable26 of 32
To an editor4
Blocked2 — missing hours
Nothing published yetcorrect

What changed since Centri Estivi 2025

SiteWhat changedConfidenceRoute
newScuola Rinnovata Pizzigoni
Municipio 8
Not in the 2025 edition. Address needs a human check against the school register.
0.88
To an editor
newScuola Primaria Cavalieri
Municipio 2
New site, address parsed cleanly and geocoded to Via Anemoni.
0.96
auto
newScuola Primaria Trilussa
Municipio 6
New site, matches an existing school record in the open-data register.
0.97
auto
removedScuola Primaria Pini
Municipio 4
Present in 2025, absent in 2026. Unpublish rather than delete, with the reason recorded.
1.00
To an editor
changedCasa del Sole
Municipio 3
Period C extended by two days; fee for the top ISEE band moves 249.10 → 254.04.
0.99
auto
changedScuola Primaria Muzio
Municipio 9
Address line differs from 2025 and the two extractions disagree on the house number.
0.61
To an editor

What we could not read

Annex 2-bis, fee table for PEG pupilsScanned image, no text layer. Plan: OCR pass queued; 21-band table is unaffected.
Footnote 4 on page 11Footnote text sits outside the table region. Plan: Read by an editor; it concerns refunds, not sites.
Why this screen existsA municipal document is republished once a year without notice, and it carries the prices and deadlines that matter most. Treating each read as a replayable run — snapshot in, named stages, diff against last year, explicit unread list — is what turns an annual PDF into a source we can promise families is true.