[
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Arabianrannan perhefutis talvi 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Arabian peruskoulu",
    "address": "Berliininkatu 4",
    "district": "Arabianranta",
    "weekday": "lauantai",
    "start_time": "09:00",
    "end_time": "09:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-17",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 79.0,
    "price_basis": "8 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet ja juomapullo; vakuutus ja HJK-tuote sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "source_quote": "Perhefutis on tarkoitettu 1–3-vuotiaille; Arabianranta 17.10.–12.12.2026; kurssihinta 79 €.",
    "activity_id": "hel-2026-0001",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 109.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-17",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-10-17",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 79,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK:n jäsenmaksu; voi olla jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 44.69,
    "monthly_cost_basis": "79.0 € / course jaettuna 1.87 kuukaudelle (2026-10-17–2026-12-12, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Arabianranta",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Kalasataman perhefutis talvi 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Kalasataman peruskoulu",
    "address": "Polariksenkatu 1",
    "district": "Kalasatama",
    "weekday": "lauantai",
    "start_time": "15:00",
    "end_time": "15:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-17",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 79.0,
    "price_basis": "8 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet ja juomapullo; vakuutus ja HJK-tuote sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "source_quote": "Perhefutis on tarkoitettu 1–3-vuotiaille; Kalasatama 17.10.–12.12.2026; kurssihinta 79 €.",
    "activity_id": "hel-2026-0002",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 109.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-17",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-10-17",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 79,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK:n jäsenmaksu; voi olla jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 44.69,
    "monthly_cost_basis": "79.0 € / course jaettuna 1.87 kuukaudelle (2026-10-17–2026-12-12, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Roihuvuoren perhefutis talvi 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Porolahden peruskoulu",
    "address": "Satumaanpolku 2",
    "district": "Roihuvuori",
    "weekday": "sunnuntai",
    "start_time": "09:00",
    "end_time": "09:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-18",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 79.0,
    "price_basis": "8 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet ja juomapullo; vakuutus ja HJK-tuote sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "source_quote": "Perhefutis on tarkoitettu 1–3-vuotiaille; Roihuvuori 18.10.–13.12.2026; kurssihinta 79 €.",
    "activity_id": "hel-2026-0003",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 109.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-18",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-10-18",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 79,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK:n jäsenmaksu; voi olla jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 44.69,
    "monthly_cost_basis": "79.0 € / course jaettuna 1.87 kuukaudelle (2026-10-18–2026-12-13, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Roihuvuori",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HIFK Soccer rf",
    "group_name": "Perhefutis 3–5-vuotiaille",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3–5-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Katajanokan liikuntahalli",
    "address": null,
    "district": "Katajanokka",
    "weekday": "lauantai",
    "start_time": "09:00",
    "end_time": "10:00",
    "season": "talvikausi 2026–2027",
    "start_date": "2026-10-24",
    "end_date": "2027-04-17",
    "sessions_count": null,
    "price_eur": 120.0,
    "price_basis": "koko talvikausi",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma pallo ja juomapullo; harjoitukset sisällä.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://hifksoccer.myclub.fi/flow/courses/11494953",
    "source_quote": "Perhefutis on suunnattu 3–5-vuotiaille; osallistumismaksu 120 €.",
    "activity_id": "hel-2026-0004",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 120.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "full_season",
    "price_period_start": "2026-10-24",
    "price_period_end": "2027-04-17",
    "season_start_date": "2026-10-24",
    "season_end_date": "2027-04-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 120,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 20.75,
    "monthly_cost_basis": "120.0 € / full_season jaettuna 5.78 kuukaudelle (2026-10-24–2027-04-17, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Katajanokka",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "FC Viikingit ry",
    "group_name": "Jalkapallokoulu 2019–2022 syntyneille",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2019–2022 syntyneet",
    "parent_child": "no",
    "venue_name": "Kartanon kenttä 2",
    "address": "Pallokuja 4, 00980 Helsinki",
    "district": "Vuosaari",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-03",
    "end_date": "2026-10-05",
    "sessions_count": null,
    "price_eur": 70.0,
    "price_basis": "kurssi, vain harjoitukset",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "90 € paketti sisältää harjoitukset, pallon ja paidan; 70 € vaihtoehto vain harjoitukset.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://fcviikingit.fi/uutiset/150179/jalkapallokoulu-20192022-syntyneille-385102026",
    "source_quote": "2019–2022 syntyneille; koko paketti 90 €, vain harjoitukset 70 €.",
    "activity_id": "hel-2026-0005",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 70.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-03",
    "price_period_end": "2026-10-05",
    "season_start_date": "2026-08-03",
    "season_end_date": "2026-10-05",
    "birth_year_min": 2019,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "conditional",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "course",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Vain harjoitukset",
        "amount_eur": 70,
        "applies_if": "riittää osallistumiseen",
        "includes": "10 harjoitusta"
      },
      {
        "label": "Koko paketti",
        "amount_eur": 90,
        "applies_if": "valinnainen varustepaketti",
        "includes": "10 harjoitusta, pallo ja paita"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 33.29,
    "monthly_cost_basis": "70.0 € / course jaettuna 2.10 kuukaudelle (2026-08-03–2026-10-05, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Voimistelukoulu 3–5 v., Vuosaari",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Vuoniityn peruskoulu",
    "address": "Venemestarintie 14",
    "district": "Vuosaari",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "lukukausi",
    "membership_fee_eur": 39,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Avoimet ovet kauden ensimmäisillä viikoilla.",
    "enrollment_status": "open",
    "source_url": "https://www.elise.fi/harrasteryhmat/harrasteryhmat/",
    "source_quote": "Vuosaari, Voimistelukoulu 3–5 v. to 17.00–17.45; 170 € + jäsenmaksu 39 €.",
    "activity_id": "hel-2026-0006",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Vuoden 2026 jäsenmaksu."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.0,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.42 kuukaudelle (2026-08-31–2026-12-12, price_period_start) + membership 39 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Voimistelukoulu 4–5 v., Herttoniemi",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Hertsikan ala-aste",
    "address": "Hillerikuja 4",
    "district": "Herttoniemi",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "lukukausi",
    "membership_fee_eur": 39,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Avoimet ovet kauden ensimmäisillä viikoilla.",
    "enrollment_status": "unknown",
    "source_url": "https://www.elise.fi/harrasteryhmat/harrasteryhmat/",
    "source_quote": "Herttoniemi, Voimistelukoulu 4–5 v. ti 17.00–17.45; 170 € + jäsenmaksu 39 €.",
    "activity_id": "hel-2026-0007",
    "city": "Helsinki",
    "checked_at": "2026-09-20",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": null,
    "season_start_date": "2026-08-31",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Vuoden 2026 jäsenmaksu."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "not_found_in_source",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Voimistelukoulu 4–5 v., Laajasalo",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Laajasalon palloiluhalli",
    "address": "Sarvastonkaari 23",
    "district": "Laajasalo",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "lukukausi",
    "membership_fee_eur": 39,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Avoimet ovet kauden ensimmäisillä viikoilla.",
    "enrollment_status": "open",
    "source_url": "https://www.elise.fi/harrasteryhmat/harrasteryhmat/",
    "source_quote": "Laajasalo, Voimistelukoulu 4–5 v. ma 17.00–17.45; 170 € + jäsenmaksu 39 €.",
    "activity_id": "hel-2026-0008",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Vuoden 2026 jäsenmaksu."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.0,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.42 kuukaudelle (2026-08-31–2026-12-12, price_period_start) + membership 39 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Laajasalo",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin kaupunki",
    "group_name": "Temppujumppa 5–6-vuotiaat, Liikuntamylly",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Liikuntamylly",
    "address": "Jauhokuja 3",
    "district": "Myllypuro",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": 14,
    "price_eur": 31.0,
    "price_basis": "14 kertaa (Itäinen Ryhmäliikunta Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84509",
    "source_quote": "Liikuntamylly ma 17.00–17.45, 5–6-vuotiaat; hinta 31 €.",
    "activity_id": "hel-2026-0009",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 31.0,
    "price_per_session_eur": 2.21,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84509",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 31,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-22",
    "monthly_cost_eur": 9.53,
    "monthly_cost_basis": "31.0 € / course jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin kaupunki",
    "group_name": "Temppujumppa perheet 2–6-vuotiaat, Latokartano",
    "min_age": 2,
    "max_age": 6,
    "eligibility_text": "2–6-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Latokartanon liikuntahalli",
    "address": "Agronominkatu 26",
    "district": "Latokartano",
    "weekday": "tiistai",
    "start_time": "16:15",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": 14,
    "price_eur": 31.0,
    "price_basis": "14 kertaa (Pohjoinen Ryhmäliikunta Lapsi 2-6 -vuotiaat), lapsi + aikuinen",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84198",
    "source_quote": "Latokartano ti 16.15–17.00, 2–6-vuotiaat; 31 € / kausi lapselle ja aikuiselle.",
    "activity_id": "hel-2026-0010",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 31.0,
    "price_per_session_eur": 2.21,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84198",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 31,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": "Toinen lapsi maksaa 31 € lisää.",
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-22",
    "monthly_cost_eur": 9.53,
    "monthly_cost_basis": "31.0 € / course jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Latokartano",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 4–5 v. (26468)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Nordsjö lågstadieskola (Rastis)",
    "address": "Ulapparaitti 6, 00980 Helsinki",
    "district": "Vuosaari",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-10",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi, 21 viikkoa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Tanssipuku tai shortsit ja vartalonmyötäinen t-paita; paljaat jalat.",
    "trial_info": "Yksittäistunti 15 €, jos ryhmässä on tilaa.",
    "enrollment_status": "full",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "4–5 v.; ma 17.00 Vuosaari; syyslukukausi 21 vk, 45 min, 245,70 €.",
    "activity_id": "hel-2026-0011",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "PDF vahvistaa 21 viikon syyslukukauden hinnan ja lukujärjestyksen, ei ryhmäkohtaista saatavuutta eikä ensimmäistä/viimeistä toteutuvaa tuntia.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 4–6 v. (26476)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Hertsikan ala-aste",
    "address": "Hillerikuja 4, 00800 Helsinki",
    "district": "Herttoniemi",
    "weekday": "perjantai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-14",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi, 21 viikkoa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Tanssipuku tai shortsit ja vartalonmyötäinen t-paita; paljaat jalat.",
    "trial_info": "Yksittäistunti 15 €, jos ryhmässä on tilaa.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "4–6 v.; pe 17.30 Herttoniemi; syyslukukausi 21 vk, 45 min, 245,70 €.",
    "activity_id": "hel-2026-0012",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "PDF vahvistaa 21 viikon syyslukukauden hinnan ja lukujärjestyksen, ei ryhmäkohtaista saatavuutta eikä ensimmäistä/viimeistä toteutuvaa tuntia.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 3–4 v. (26479)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Viikin asukastalo Kunto",
    "address": "Leskirouva Freytagin kuja 10, 00790 Helsinki",
    "district": "Viikki",
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi, 21 viikkoa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Tanssipuku tai shortsit ja vartalonmyötäinen t-paita; paljaat jalat.",
    "trial_info": "Yksittäistunti 15 €, jos ryhmässä on tilaa.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "3–4 v.; la 10.00 Viikki; syyslukukausi 21 vk, 45 min, 245,70 €.",
    "activity_id": "hel-2026-0013",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "PDF vahvistaa 21 viikon syyslukukauden hinnan ja lukujärjestyksen, ei ryhmäkohtaista saatavuutta eikä ensimmäistä/viimeistä toteutuvaa tuntia.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Viikki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 3–4 v. (26214)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Päiväkoti/sivukoulu Kanava",
    "address": "Aurinkotuulenkatu 11, 00990 Helsinki",
    "district": "Aurinkolahti",
    "weekday": "perjantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-09-04",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi, 21 viikkoa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Tanssipuku tai shortsit ja vartalonmyötäinen t-paita; paljaat jalat.",
    "trial_info": "Yksittäistunti 15 €, jos ryhmässä on tilaa.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "3–4 v.; pe 17.00 Aurinkolahti; syyslukukausi 21 vk, 45 min, 245,70 €.",
    "activity_id": "hel-2026-0014",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "PDF vahvistaa 21 viikon syyslukukauden hinnan ja lukujärjestyksen, ei ryhmäkohtaista saatavuutta eikä ensimmäistä/viimeistä toteutuvaa tuntia.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Aurinkolahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 5–6 v. (26489)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Porolahden peruskoulu",
    "address": "Roihuvuorentie 2, 00820 Helsinki",
    "district": "Roihuvuori",
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-11",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi, 21 viikkoa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Tanssipuku, jossa on helppo liikkua; paljaat jalat.",
    "trial_info": "Yksittäistunti 15 €, jos ryhmässä on tilaa.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "5–6 v.; ti 17.30 Roihuvuori; syyslukukausi 21 vk, 45 min, 245,70 €.",
    "activity_id": "hel-2026-0015",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "PDF vahvistaa 21 viikon syyslukukauden hinnan ja lukujärjestyksen, ei ryhmäkohtaista saatavuutta eikä ensimmäistä/viimeistä toteutuvaa tuntia.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Roihuvuori",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kontulan uimahalli",
    "address": "Ostostie 4, 00940 Helsinki",
    "district": "Kontula",
    "weekday": "maanantai",
    "start_time": "16:30",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 × 30 min",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100534",
    "source_quote": "5–6-vuotiaille; 8 kertaa; hinta 76 €.",
    "activity_id": "hel-2026-0016",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100534",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kontula",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kontulan uimahalli",
    "address": "Ostostie 4, 00940 Helsinki",
    "district": "Kontula",
    "weekday": "maanantai",
    "start_time": "17:10",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 × 30 min",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100535",
    "source_quote": "5–6-vuotiaille; 8 kertaa; hinta 76 €.",
    "activity_id": "hel-2026-0017",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100535",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kontula",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten uintikerho",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kontulan uimahalli",
    "address": "Ostostie 4, 00940 Helsinki",
    "district": "Kontula",
    "weekday": "keskiviikko",
    "start_time": "17:10",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 × 30 min",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100593",
    "source_quote": "5–6-vuotiaille; 8 kertaa; hinta 76 €.",
    "activity_id": "hel-2026-0018",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100593",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kontula",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Vuosaaren uimahalli",
    "address": "Vuosaarentie 5, 00980 Helsinki",
    "district": "Vuosaari",
    "weekday": "lauantai",
    "start_time": "08:00",
    "end_time": "08:30",
    "season": "syksy 2026",
    "start_date": "2026-10-24",
    "end_date": "2026-12-12",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 × 30 min",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100678",
    "source_quote": "5–6-vuotiaille; 8 kertaa; hinta 76 €.",
    "activity_id": "hel-2026-0019",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-24",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-10-24",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100678",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-24–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Vuosaaren uimahalli",
    "address": "Vuosaarentie 5, 00980 Helsinki",
    "district": "Vuosaari",
    "weekday": "lauantai",
    "start_time": "08:30",
    "end_time": "09:00",
    "season": "syksy 2026",
    "start_date": "2026-10-24",
    "end_date": "2026-12-12",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 × 30 min",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100679",
    "source_quote": "5–6-vuotiaille; 8 kertaa; hinta 76 €.",
    "activity_id": "hel-2026-0020",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-24",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-10-24",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100679",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-24–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "taekwondo",
    "provider": "Herttoniemen Taekwondo / Suomen Kamppailutaito Oy",
    "group_name": "Taapero-taekwondo",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2–4-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Herttoniemen Taekwondon sali",
    "address": "Mekaanikonkatu 15 B, 00880 Helsinki",
    "district": "Roihupelto",
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "kuukausi, lapsi ja vanhempi yhteensä",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Aluksi verkkarit ja t-paita; paljain jaloin.",
    "trial_info": "Kaksi viikkoa maksutta 15.–22.8.2026.",
    "enrollment_status": "open",
    "source_url": "https://www.herttoniementaekwondo.fi/taekwondoa-perheille",
    "source_quote": "Taapero-taekwondo 2–4-vuotiaille ja vanhemmille; 35 €/kk yhteensä.",
    "activity_id": "hel-2026-0021",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": "2026-08-15",
    "price_period_end": null,
    "season_start_date": "2026-08-15",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "monthly",
        "applies_if": null,
        "note": "Laskutetaan 3 kuukauden jaksoissa, yhteensä 105 €."
      }
    ],
    "price_options": [
      {
        "label": "Kuukausihinta",
        "amount_eur": 35,
        "applies_if": "laskutus 3 kuukauden jaksoissa",
        "includes": "lapsi ja vanhempi"
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 35.0,
    "monthly_cost_basis": "35.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Roihupelto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "taekwondo",
    "provider": "Herttoniemen Taekwondo / Suomen Kamppailutaito Oy",
    "group_name": "Perhe-taekwondo",
    "min_age": 5,
    "max_age": 10,
    "eligibility_text": "5–10-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Herttoniemen Taekwondon sali",
    "address": "Mekaanikonkatu 15 B, 00880 Helsinki",
    "district": "Roihupelto",
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-11",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 70.0,
    "price_basis": "kuukausi, lapsi ja vanhempi yhteensä",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Aluksi verkkarit ja t-paita; paljain jaloin.",
    "trial_info": "Yksi maksuton kokeilukerta yleisehtojen mukaan.",
    "enrollment_status": "closed",
    "source_url": "https://www.herttoniementaekwondo.fi/taekwondoa-perheille",
    "source_quote": "Perhe-taekwondo 5–10-vuotiaille; lapsi ja vanhempi yhteensä 70 €/kk.",
    "activity_id": "hel-2026-0022",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 210.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": "2026-08-11",
    "price_period_end": null,
    "season_start_date": "2026-08-11",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "closed",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "monthly",
        "applies_if": null,
        "note": "Lapsi 35 €/kk + aikuinen 35 €/kk; kumpikin laskutetaan 3 kuukauden jaksoissa, yhteensä 210 €."
      }
    ],
    "price_options": [
      {
        "label": "Kuukausihinta",
        "amount_eur": 70,
        "applies_if": "laskutus 3 kuukauden jaksoissa",
        "includes": "yksi lapsi ja yksi aikuinen"
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 70.0,
    "monthly_cost_basis": "70.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Roihupelto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "judo",
    "provider": "Tapanilan Erä ry / Judo",
    "group_name": "Muksujudo 3–6 v",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Tapanilan Urheilukeskus, monitoimihalli",
    "address": "Erätie 3, 00730 Helsinki",
    "district": "Tapanila",
    "weekday": "sunnuntai",
    "start_time": "15:15",
    "end_time": "16:00",
    "season": "syksy 2026",
    "start_date": "2026-09-06",
    "end_date": "2026-12-20",
    "sessions_count": null,
    "price_eur": 80.0,
    "price_basis": "syyskausi",
    "membership_fee_eur": 14,
    "other_required_fees": "Judoliiton pakollinen jäsen- ja vakuutusmaksu 46 € syyskaudelta tai 67 € syys–kevätkaudelta.",
    "equipment_notes": "Jumppavaatteet riittävät.",
    "trial_info": "Kaksi kokeilukertaa maksutta.",
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/events/11015297",
    "source_quote": "Muksujudo 3–6-vuotiaat; harjoitusmaksu 80 € syyskausi.",
    "activity_id": "hel-2026-0023",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 140.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-06",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-09-06",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 80,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": null
      },
      {
        "type": "license_and_insurance",
        "amount_eur": 46,
        "mandatory": true,
        "included": false,
        "recurrence": "term",
        "applies_if": "syyskausi 2026",
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 37.35,
    "monthly_cost_basis": "126.0 € / term jaettuna 3.48 kuukaudelle (2026-09-06–2026-12-20, price_period_start) + membership 14 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "karate",
    "provider": "JKS Finland",
    "group_name": "Karate Kids – alkeiskurssi",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "JKS Finland dojo",
    "address": "Mekaanikonkatu 17, 00880 Helsinki",
    "district": "Roihupelto",
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:50",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 90.0,
    "price_basis": "syyskausi, kerran viikossa",
    "membership_fee_eur": 22.5,
    "other_required_fees": "Karateliiton jäsenlisenssi pakollinen, 15 € (ilman vakuutusta); laskutetaan erikseen liitolta, ei sisälly kurssin hintaan.",
    "equipment_notes": "Aluksi liikuntavaatteet ja vesipullo.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://jksfinland.fi/small-kids-karate-beginners-course-autumn-2026/",
    "source_quote": "Ages 5–6; course fee 90 €, one training session per week.",
    "activity_id": "hel-2026-0024",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 127.5,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 90,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 22.5,
        "mandatory": true,
        "included": false,
        "recurrence": "term",
        "applies_if": null,
        "note": "Veloitusehto tarkistettava ennen ostoa."
      },
      {
        "type": "license",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Karateliiton jäsenlisenssi ilman vakuutusta, kausi 2026 (15 €; karateliitto.fi/lisenssit-ja-vakuutukset/, tarkistettu 22.9.2026). Vakuutuksen sisältävä paketti 75 € on vaihtoehto, ei pakollinen lisäys."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-22",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Roihupelto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "karate",
    "provider": "Tapanilan Erä Karate ry",
    "group_name": "Karate Kids 5–6 v",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Tapanilan Erä Karaten sali",
    "address": "Jäkälätie 2, 00730 Helsinki",
    "district": "Tapanila",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "syyskausi",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "T-paita ja pandapassi sisältyvät.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://erankarate.fi/file/98/syksyn2026kurssit_220526.pdf",
    "source_quote": "Karate Kids 5–6 v ti 17.00–17.45; hinta 160 €.",
    "activity_id": "hel-2026-0025",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-20",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Seura ei vakuuta harrastajia; kamppailulajin kattavaa tapaturmavakuutusta suositellaan.",
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.38,
    "monthly_cost_basis": "160.0 € / term jaettuna 3.45 kuukaudelle (2026-08-31–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Viikingit Jääkiekko ry",
    "group_name": "Lapsi ja aikuinen -luistelu",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022 syntyneet ja nuoremmat",
    "parent_child": "yes",
    "venue_name": "Aimo Mäkinen Areena / Vuosaaren jäähalli",
    "address": "Pallokuja 6, 00980 Helsinki",
    "district": "Vuosaari",
    "weekday": "sunnuntai",
    "start_time": "10:30",
    "end_time": "11:30",
    "season": "syyskausi 2026",
    "start_date": "2026-09-27",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 90.0,
    "price_basis": "syyskausi, noin 12 jäätä",
    "membership_fee_eur": null,
    "other_required_fees": "Kiekkokoulurekisteröinti vaaditaan; hintaa ei julkaistu.",
    "equipment_notes": "Harjoituspaita sisältyy.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.viikingit.fi/kiekkokoulut/lapsi-ja-aikuinen-luistelu/",
    "source_quote": "2022 syntyneet ja nuoremmat; yhden kauden hinta 90 €.",
    "activity_id": "hel-2026-0026",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 90.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-27",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-27",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-20",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 90,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "registration_and_insurance",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "season",
        "applies_if": null,
        "note": "Jääkiekkoliiton kiekkokoulurekisteröinti; hintaa ei ilmoiteta ryhmäsivulla."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 35.12,
    "monthly_cost_basis": "90.0 € / term jaettuna 2.56 kuukaudelle (2026-09-27–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jääkiekko",
    "provider": "Viikingit Jääkiekko ry",
    "group_name": "Viikingit-Kiekkokoulu",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2019–2021 syntyneet",
    "parent_child": "no",
    "venue_name": "Aimo Mäkinen Areena / Vuosaaren jäähalli",
    "address": "Pallokuja 6, 00980 Helsinki",
    "district": "Vuosaari",
    "weekday": "sunnuntai",
    "start_time": "11:30",
    "end_time": "12:30",
    "season": "syyskausi 2026",
    "start_date": "2026-09-27",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 90.0,
    "price_basis": "syyskausi, noin 12 jäätä",
    "membership_fee_eur": null,
    "other_required_fees": "Kiekkokoulurekisteröinti vaaditaan; hintaa ei julkaistu.",
    "equipment_notes": "Omat luistimet; muita varusteita voi lainata; harjoituspaita sisältyy.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.viikingit.fi/kiekkokoulut/leijonakiekkokoulu/",
    "source_quote": "2019–2021 syntyneet; yhden kauden hinta 90 €.",
    "activity_id": "hel-2026-0027",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 90.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-27",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-27",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2019,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-20",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 90,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "registration_and_insurance",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "season",
        "applies_if": null,
        "note": "Jääkiekkoliiton kiekkokoulurekisteröinti; hintaa ei ilmoiteta ryhmäsivulla."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 35.12,
    "monthly_cost_basis": "90.0 € / term jaettuna 2.56 kuukaudelle (2026-09-27–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingfors Skridskoklubb rf",
    "group_name": "Lasten luistelukoulu 3–7-vuotiaille, Herttoniemi",
    "min_age": 3,
    "max_age": 7,
    "eligibility_text": "3–7-vuotiaat",
    "parent_child": "no",
    "venue_name": "Herttoniemen harjoitusjäähalli, kenttä 1",
    "address": "Abraham Wetterin tie 1, Helsinki",
    "district": "Herttoniemi",
    "weekday": "tiistai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syyskausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 14,
    "price_eur": 155.0,
    "price_basis": "syyskausi, yksi harjoitus viikossa (14 krt); normaalihinta 155 €, uusi alle 4-v 80 €",
    "membership_fee_eur": 30,
    "other_required_fees": "Uudelta luistelijalta 30 € jäsenmaksu ja alle 15-vuotiaalta 15 € luistelukoulupassi.",
    "equipment_notes": "Omat luistimet vaaditaan.",
    "trial_info": "Voi perua maksutta ensimmäisen osallistumiskerran jälkeen.",
    "enrollment_status": "unknown",
    "source_url": "https://hsk.fi/luistelukoulut/lasten-ja-nuorten-luistelukoulut/",
    "source_quote": "3–7-vuotiaille; syyskausi 155 €, 14 kertaa; uusi alle 4-vuotias 80 €.",
    "activity_id": "hel-2026-0028",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-08",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-09-08",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://hsk.fi/luistelukoulut/lasten-ja-nuorten-luistelukoulut/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-20",
    "purchasable_now": false,
    "price_completeness": "conditional",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 155,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Uusi alle 4-vuotias (luistelukoulun alkaessa): 80 € / syyskausi, ks. price_options."
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "uusi luistelija kaudella 2026–2027",
        "note": null
      },
      {
        "type": "skating_school_pass",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "uusi alle 15-vuotias",
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Uusi alle 4-vuotias",
        "amount_eur": 125,
        "applies_if": "80 € kausimaksu + 30 € jäsenmaksu + 15 € passi",
        "includes": null
      },
      {
        "label": "Muu uusi luistelija",
        "amount_eur": 200,
        "applies_if": "155 € kausimaksu + 30 € jäsenmaksu + 15 € passi",
        "includes": null
      },
      {
        "label": "Jatkava luistelija",
        "amount_eur": 155,
        "applies_if": "jos saman jäsen-/passikauden maksut ovat jo voimassa",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-22",
    "monthly_cost_eur": 51.89,
    "monthly_cost_basis": "155.0 € / term jaettuna 3.22 kuukaudelle (2026-09-08–2026-12-14, price_period_start) + membership 30 €/v ÷ 12 + skating_school_pass 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Myllypuron Taitoluisteluklubi ry",
    "group_name": "Luistelukoulu 3–6-vuotiaille, tiistai",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Myllypuron jäähalli",
    "address": "Ratasmyllynkuja 1, 00900 Helsinki",
    "district": "Myllypuro",
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syyskausi 2026",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 155.0,
    "price_basis": "syyskausi, 15 kertaa",
    "membership_fee_eur": 15,
    "other_required_fees": null,
    "equipment_notes": "Vakuutuksellinen luistelukoulupassi sisältyy.",
    "trial_info": "Kaksi kokeilukertaa 15 € jäsenmaksulla.",
    "enrollment_status": "open",
    "source_url": "https://myllypurontaitoluisteluklubi.net/luistelukoulu/ryhmatjahinnat/",
    "source_quote": "3–6-vuotiaille ti 17.30–18.15; 155 € + 15 € jäsenmaksu.",
    "activity_id": "hel-2026-0029",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 155,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu; hinta sisältää Pandapassin ja vakuutuksellisen luistelupassin."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 47.05,
    "monthly_cost_basis": "155.0 € / term jaettuna 3.38 kuukaudelle (2026-09-01–2026-12-12, price_period_start) + membership 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Myllypuron Taitoluisteluklubi ry",
    "group_name": "Luistelukoulu 3–6-vuotiaille, sunnuntai",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Herttoniemen jäähalli",
    "address": "Abraham Wetterin tie 1, Helsinki",
    "district": "Herttoniemi",
    "weekday": "sunnuntai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syyskausi 2026",
    "start_date": "2026-09-06",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 155.0,
    "price_basis": "syyskausi, 15 kertaa",
    "membership_fee_eur": 15,
    "other_required_fees": null,
    "equipment_notes": "Vakuutuksellinen luistelukoulupassi sisältyy.",
    "trial_info": "Kaksi kokeilukertaa 15 € jäsenmaksulla.",
    "enrollment_status": "open",
    "source_url": "https://myllypurontaitoluisteluklubi.net/luistelukoulu/ryhmatjahinnat/",
    "source_quote": "3–6-vuotiaille su 17.15–18.00; 155 € + 15 € jäsenmaksu.",
    "activity_id": "hel-2026-0030",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-06",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-06",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 155,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu; hinta sisältää Pandapassin ja vakuutuksellisen luistelupassin."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.39,
    "monthly_cost_basis": "155.0 € / term jaettuna 3.22 kuukaudelle (2026-09-06–2026-12-12, price_period_start) + membership 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "koripallo",
    "provider": "WB-Pantterit",
    "group_name": "Skidikoris 3–5-vuotiaat – Vuosaari",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3–5-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Puistopolun peruskoulu",
    "address": "Punakiventie 4, Helsinki",
    "district": "Vuosaari",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "2026–2027",
    "start_date": "2026-08-31",
    "end_date": "2027-04-26",
    "sessions_count": null,
    "price_eur": 380.0,
    "price_basis": "koko toimintakausi, 1 × viikossa",
    "membership_fee_eur": 50.0,
    "other_required_fees": "Mahdollinen henkilökohtainen lisenssimaksu; ryhmäkohtainen pakollisuus ja hinta eivät käy ilmi toimivasta lähteestä.",
    "equipment_notes": "WaPa-paita ja uudelle pelaajalle pallo sisältyvät; seura vakuuttaa alle 16-vuotiaat.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://wb-pantterit.fi/kerhotoiminta/skidikoris-3-5v/",
    "price_source_url": "https://wb-pantterit.myclub.fi/flow/courses/10968263",
    "source_quote": "Skidit 3–5-vuotiaat; Skidikoris 380 €.",
    "activity_id": "hel-2026-0031",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 430.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "billing_period": "full_season",
    "price_period_start": "2026-09-01",
    "price_period_end": "2027-04-30",
    "season_start_date": "2026-09-01",
    "season_end_date": "2027-04-30",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 380,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Koko kauden hinta; kesken kauden aloittavalla aloitusajankohta huomioidaan kausimaksussa; laskutetaan useammassa erässä."
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "season",
        "applies_if": null,
        "note": "Jäsenmaksu kausi 2026-2027 (myClub Hintatiedot)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "trial_info",
      "required_license"
    ],
    "verification_notes": "Hinta 380 € ja jäsenmaksu 50 € seuran myClub-ilmoittautumissivulta (https://wb-pantterit.myclub.fi/flow/courses/10968263, 21.9.2026: 'Hinta: 380€ + jäsenmaksu 50€'); seuran kausimaksut-sivu on yhä rikki (näyttää vain taulukkokoodit). Henkilökohtaisen lisenssimaksun pakollisuus ja hinta eivät käy ilmi → hinta osittain tiedossa.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 51.96,
    "monthly_cost_basis": "380.0 € / full_season jaettuna 7.95 kuukaudelle (2026-09-01–2027-04-30, price_period_start) + membership 50 €/v ÷ 12",
    "monthly_cost_complete": false,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "koripallo",
    "provider": "WB-Pantterit",
    "group_name": "Skidikoris 3–5-vuotiaat – Roihuvuori",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3–5-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Porolahden peruskoulu",
    "address": "Roihuvuorentie 2, Helsinki",
    "district": "Roihuvuori",
    "weekday": "perjantai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "2026–2027",
    "start_date": "2026-09-04",
    "end_date": "2027-05-07",
    "sessions_count": null,
    "price_eur": 380.0,
    "price_basis": "koko toimintakausi, 1 × viikossa",
    "membership_fee_eur": 50.0,
    "other_required_fees": "Mahdollinen henkilökohtainen lisenssimaksu; ryhmäkohtainen pakollisuus ja hinta eivät käy ilmi toimivasta lähteestä.",
    "equipment_notes": "WaPa-paita ja uudelle pelaajalle pallo sisältyvät; seura vakuuttaa alle 16-vuotiaat.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://wb-pantterit.fi/kerhotoiminta/skidikoris-3-5v/",
    "price_source_url": "https://wb-pantterit.myclub.fi/flow/courses/10968540",
    "source_quote": "Skidit 3–5-vuotiaat; Skidikoris 380 €.",
    "activity_id": "hel-2026-0032",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 430.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "billing_period": "full_season",
    "price_period_start": "2026-09-01",
    "price_period_end": "2027-04-30",
    "season_start_date": "2026-09-01",
    "season_end_date": "2027-04-30",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 380,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Koko kauden hinta; kesken kauden aloittavalla aloitusajankohta huomioidaan kausimaksussa; laskutetaan useammassa erässä."
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "season",
        "applies_if": null,
        "note": "Jäsenmaksu kausi 2026-2027 (myClub Hintatiedot)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "trial_info",
      "required_license"
    ],
    "verification_notes": "Hinta 380 € ja jäsenmaksu 50 € seuran myClub-ilmoittautumissivulta (https://wb-pantterit.myclub.fi/flow/courses/10968540, 21.9.2026: 'Hinta: 380€ + jäsenmaksu 50€'); seuran kausimaksut-sivu on yhä rikki (näyttää vain taulukkokoodit). Henkilökohtaisen lisenssimaksun pakollisuus ja hinta eivät käy ilmi → hinta osittain tiedossa.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 51.96,
    "monthly_cost_basis": "380.0 € / full_season jaettuna 7.95 kuukaudelle (2026-09-01–2027-04-30, price_period_start) + membership 50 €/v ÷ 12",
    "monthly_cost_complete": false,
    "district_derived": "Roihuvuori",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "koripallo",
    "provider": "WB-Pantterit",
    "group_name": "Pikkusuperit 5–6-vuotiaat – Vuosaari",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Puistopolun peruskoulu",
    "address": "Punakiventie 4, Helsinki",
    "district": "Vuosaari",
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "2026–2027",
    "start_date": "2026-08-31",
    "end_date": "2027-04-26",
    "sessions_count": null,
    "price_eur": 380.0,
    "price_basis": "koko toimintakausi, 1 × viikossa",
    "membership_fee_eur": 50.0,
    "other_required_fees": "Mahdollinen henkilökohtainen lisenssimaksu; ryhmäkohtainen pakollisuus ja hinta eivät käy ilmi toimivasta lähteestä.",
    "equipment_notes": "Uudelle pelaajalle pallo sisältyy; seura vakuuttaa alle 16-vuotiaat.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://wb-pantterit.fi/kerhotoiminta/pienetsuperit-5-6v/",
    "price_source_url": "https://wb-pantterit.myclub.fi/flow/courses/10968692",
    "source_quote": "Pikkusuperit 5–6-vuotiaat; Pienet superit 380 €.",
    "activity_id": "hel-2026-0033",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 430.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "billing_period": "full_season",
    "price_period_start": "2026-09-01",
    "price_period_end": "2027-04-30",
    "season_start_date": "2026-09-01",
    "season_end_date": "2027-04-30",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 380,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Koko kauden hinta; kesken kauden aloittavalla aloitusajankohta huomioidaan kausimaksussa; laskutetaan useammassa erässä."
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "season",
        "applies_if": null,
        "note": "Jäsenmaksu kausi 2026-2027 (myClub Hintatiedot)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "trial_info",
      "required_license"
    ],
    "verification_notes": "Hinta 380 € ja jäsenmaksu 50 € seuran myClub-ilmoittautumissivulta (https://wb-pantterit.myclub.fi/flow/courses/10968692, 21.9.2026: 'Hinta: 380€ + jäsenmaksu 50€'); seuran kausimaksut-sivu on yhä rikki (näyttää vain taulukkokoodit). Henkilökohtaisen lisenssimaksun pakollisuus ja hinta eivät käy ilmi → hinta osittain tiedossa.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 51.96,
    "monthly_cost_basis": "380.0 € / full_season jaettuna 7.95 kuukaudelle (2026-09-01–2027-04-30, price_period_start) + membership 50 €/v ÷ 12",
    "monthly_cost_complete": false,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "koripallo",
    "provider": "WB-Pantterit",
    "group_name": "Pikkusuperit 5–6-vuotiaat – Roihuvuori",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Porolahden peruskoulu",
    "address": "Roihuvuorentie 2, Helsinki",
    "district": "Roihuvuori",
    "weekday": "perjantai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "2026–2027",
    "start_date": "2026-09-04",
    "end_date": "2027-05-07",
    "sessions_count": null,
    "price_eur": 380.0,
    "price_basis": "koko toimintakausi, 1 × viikossa",
    "membership_fee_eur": 50.0,
    "other_required_fees": "Mahdollinen henkilökohtainen lisenssimaksu; ryhmäkohtainen pakollisuus ja hinta eivät käy ilmi toimivasta lähteestä.",
    "equipment_notes": "Uudelle pelaajalle pallo sisältyy; seura vakuuttaa alle 16-vuotiaat.",
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://wb-pantterit.fi/kerhotoiminta/pienetsuperit-5-6v/",
    "price_source_url": "https://wb-pantterit.myclub.fi/flow/courses/10968708",
    "source_quote": "Pikkusuperit 5–6-vuotiaat; Pienet superit 380 €.",
    "activity_id": "hel-2026-0034",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 430.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "billing_period": "full_season",
    "price_period_start": "2026-09-01",
    "price_period_end": "2027-04-30",
    "season_start_date": "2026-09-01",
    "season_end_date": "2027-04-30",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 380,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Koko kauden hinta; kesken kauden aloittavalla aloitusajankohta huomioidaan kausimaksussa; laskutetaan useammassa erässä."
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "season",
        "applies_if": null,
        "note": "Jäsenmaksu kausi 2026-2027 (myClub Hintatiedot)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "trial_info",
      "required_license"
    ],
    "verification_notes": "Hinta 380 € ja jäsenmaksu 50 € seuran myClub-ilmoittautumissivulta (https://wb-pantterit.myclub.fi/flow/courses/10968708, 21.9.2026: 'Hinta: 380€ + jäsenmaksu 50€'); seuran kausimaksut-sivu on yhä rikki (näyttää vain taulukkokoodit). Henkilökohtaisen lisenssimaksun pakollisuus ja hinta eivät käy ilmi → hinta osittain tiedossa.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 51.96,
    "monthly_cost_basis": "380.0 € / full_season jaettuna 7.95 kuukaudelle (2026-09-01–2027-04-30, price_period_start) + membership 50 €/v ÷ 12",
    "monthly_cost_complete": false,
    "district_derived": "Roihuvuori",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "koripallo",
    "provider": "ToPo Juniorit ry",
    "group_name": "Torpan Poikaset 2021–2022 – Taivallahti",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2021–2022 syntyneet",
    "parent_child": "no",
    "venue_name": "Taivallahden ala-aste",
    "address": null,
    "district": "Töölö",
    "weekday": "tiistai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "2026–2027",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 350.0,
    "price_basis": "koko kausi, 1 × viikossa",
    "membership_fee_eur": 100,
    "other_required_fees": "Pelaajan lisenssi ja vakuutus eivät sisälly; hintaa ei ilmoiteta hinnastosivulla.",
    "equipment_notes": "Pallo ja tossut eivät sisälly.",
    "trial_info": "Kahden viikon maksuton kokeilu.",
    "enrollment_status": "unknown",
    "source_url": "https://www.topo.fi/juniorit/tytot/torpan-poikaset-2021-2022/",
    "price_source_url": "https://www.topo.fi/seura/info/kausimaksut/",
    "source_quote": "2021–2022 syntyneille; 1 × viikossa kausimaksu 350 €.",
    "activity_id": "hel-2026-0035",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 450.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "billing_period": "full_season",
    "price_period_start": "2026-08-31",
    "price_period_end": null,
    "season_start_date": "2026-08-31",
    "season_end_date": null,
    "birth_year_min": 2021,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 350,
        "mandatory": true,
        "included": true,
        "recurrence": "full_season",
        "applies_if": "1 harjoitus viikossa",
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 100,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": null
      },
      {
        "type": "player_license_and_insurance",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "season",
        "applies_if": null,
        "note": "Ei sisälly kausimaksuun; hintaa ei ilmoiteta hinnastosivulla."
      }
    ],
    "price_options": [
      {
        "label": "1 harjoitus viikossa",
        "amount_eur": 350,
        "applies_if": "Taivallahden tiistain harjoitus",
        "includes": null
      },
      {
        "label": "2 harjoitusta viikossa",
        "amount_eur": 425,
        "applies_if": "Taivallahti + Munkkiniemi",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tennis",
    "provider": "HVS-Tennis ry",
    "group_name": "U10 Tempon Taaperotennis – alkusyksy, maanantai",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022–2025 syntyneet",
    "parent_child": "yes",
    "venue_name": "Taivallahden Tenniskeskus",
    "address": "Hiekkarannantie 2, Helsinki",
    "district": "Töölö",
    "weekday": "maanantai",
    "start_time": "16:45",
    "end_time": "17:25",
    "season": "alkusyksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-10-05",
    "sessions_count": null,
    "price_eur": 125.0,
    "price_basis": "8 kerran kurssi",
    "membership_fee_eur": 0,
    "other_required_fees": null,
    "equipment_notes": "Omaa mailaa suositellaan.",
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://hvstennis.fi/tuote/taapero-syksy-2026/",
    "source_quote": "2022–2025 syntyneille lapsille ja läheiselle; 125 €/kurssi, jäsenyys sisältyy.",
    "activity_id": "hel-2026-0036",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-10-05",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-10-05",
    "birth_year_min": 2022,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity_and_membership",
        "amount_eur": 125,
        "mandatory": true,
        "included": true,
        "recurrence": "course",
        "applies_if": null,
        "note": "Sisältää kurssin ja vuoden jäsenyyden."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 76.09,
    "monthly_cost_basis": "125.0 € / course jaettuna 1.64 kuukaudelle (2026-08-17–2026-10-05, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tennis",
    "provider": "HVS-Tennis ry",
    "group_name": "U10 Tempon Taaperotennis – alkusyksy, torstai",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022–2025 syntyneet",
    "parent_child": "yes",
    "venue_name": "Taivallahden Tenniskeskus",
    "address": "Hiekkarannantie 2, Helsinki",
    "district": "Töölö",
    "weekday": "torstai",
    "start_time": "16:45",
    "end_time": "17:25",
    "season": "alkusyksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-10-08",
    "sessions_count": null,
    "price_eur": 125.0,
    "price_basis": "8 kerran kurssi",
    "membership_fee_eur": 0,
    "other_required_fees": null,
    "equipment_notes": "Omaa mailaa suositellaan.",
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://hvstennis.fi/tuote/taapero-syksy-2026/",
    "source_quote": "2022–2025 syntyneille lapsille ja läheiselle; 125 €/kurssi, jäsenyys sisältyy.",
    "activity_id": "hel-2026-0037",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-20",
    "price_period_end": "2026-10-08",
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-10-08",
    "birth_year_min": 2022,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity_and_membership",
        "amount_eur": 125,
        "mandatory": true,
        "included": true,
        "recurrence": "course",
        "applies_if": null,
        "note": "Sisältää kurssin ja vuoden jäsenyyden."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 76.09,
    "monthly_cost_basis": "125.0 € / course jaettuna 1.64 kuukaudelle (2026-08-20–2026-10-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tennis",
    "provider": "HVS-Tennis ry",
    "group_name": "U10 Tempon Taaperotennis – loppusyksy, maanantai",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022–2025 syntyneet",
    "parent_child": "yes",
    "venue_name": "Taivallahden Tenniskeskus",
    "address": "Hiekkarannantie 2, Helsinki",
    "district": "Töölö",
    "weekday": "maanantai",
    "start_time": "16:45",
    "end_time": "17:25",
    "season": "loppusyksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 125.0,
    "price_basis": "8 kerran kurssi",
    "membership_fee_eur": 0,
    "other_required_fees": null,
    "equipment_notes": "Omaa mailaa suositellaan.",
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://hvstennis.fi/tuote/taapero-syksy-2026/",
    "source_quote": "2022–2025 syntyneille lapsille ja läheiselle; 125 €/kurssi, jäsenyys sisältyy.",
    "activity_id": "hel-2026-0038",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": 2022,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity_and_membership",
        "amount_eur": 125,
        "mandatory": true,
        "included": true,
        "recurrence": "course",
        "applies_if": null,
        "note": "Sisältää kurssin ja vuoden jäsenyyden."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 76.09,
    "monthly_cost_basis": "125.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tennis",
    "provider": "HVS-Tennis ry",
    "group_name": "U10 Tempon Taaperotennis – loppusyksy, torstai",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022–2025 syntyneet",
    "parent_child": "yes",
    "venue_name": "Taivallahden Tenniskeskus",
    "address": "Hiekkarannantie 2, Helsinki",
    "district": "Töölö",
    "weekday": "torstai",
    "start_time": "16:45",
    "end_time": "17:25",
    "season": "loppusyksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 125.0,
    "price_basis": "8 kerran kurssi",
    "membership_fee_eur": 0,
    "other_required_fees": null,
    "equipment_notes": "Omaa mailaa suositellaan.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://hvstennis.fi/tuote/taapero-syksy-2026/",
    "source_quote": "2022–2025 syntyneille lapsille ja läheiselle; 125 €/kurssi, jäsenyys sisältyy.",
    "activity_id": "hel-2026-0039",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-10",
    "birth_year_min": 2022,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity_and_membership",
        "amount_eur": 125,
        "mandatory": true,
        "included": true,
        "recurrence": "course",
        "applies_if": null,
        "note": "Sisältää kurssin ja vuoden jäsenyyden."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 76.09,
    "monthly_cost_basis": "125.0 € / course jaettuna 1.64 kuukaudelle (2026-10-22–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tennis",
    "provider": "HVS-Tennis ry",
    "group_name": "U10 Tempon Taaperotennis – loppusyksy, lauantai",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022–2025 syntyneet",
    "parent_child": "yes",
    "venue_name": "Taivallahden Tenniskeskus",
    "address": "Hiekkarannantie 2, Helsinki",
    "district": "Töölö",
    "weekday": "lauantai",
    "start_time": "08:45",
    "end_time": "09:25",
    "season": "loppusyksy 2026",
    "start_date": "2026-10-24",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 125.0,
    "price_basis": "8 kerran kurssi",
    "membership_fee_eur": 0,
    "other_required_fees": null,
    "equipment_notes": "Omaa mailaa suositellaan.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://hvstennis.fi/tuote/taapero-syksy-2026/",
    "source_quote": "2022–2025 syntyneille lapsille ja läheiselle; 125 €/kurssi, jäsenyys sisältyy.",
    "activity_id": "hel-2026-0040",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-24",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-10-24",
    "season_end_date": "2026-12-12",
    "birth_year_min": 2022,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity_and_membership",
        "amount_eur": 125,
        "mandatory": true,
        "included": true,
        "recurrence": "course",
        "applies_if": null,
        "note": "Sisältää kurssin ja vuoden jäsenyyden."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 76.09,
    "monthly_cost_basis": "125.0 € / course jaettuna 1.64 kuukaudelle (2026-10-24–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Voimistelukoulu 5–6 v., Laajasalo",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Laajasalon palloiluhalli",
    "address": "Sarvastonkaari 23, 00840 Helsinki",
    "district": "Laajasalo",
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:55",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10750512",
    "source_quote": "Laajasalo voimistelukoulu 5-6 v; Laajasalon 5-6-vuotiaiden voimistelukoulu järjestetään maanantaina klo 18:00-18:55 Laajasalon Palloiluhallilla, osoitteessa Sarvastonkaari 23. Syyskauden 2026 harjoitusmaksu 170,00 € + Elisen jäsenmaksu 2026 39,00 €.",
    "activity_id": "hel-2026-0041",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Elisen jäsenmaksu 2026 (myClubin 'Vaadittavat tuotteet'); peritään vuoden ensimmäisen harjoitusmaksun yhteydessä."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "myClubin aikataulussa 14 harjoitusta (2026-08-31–2026-12-07, ei viikolla 42); joulunäytös la 12.12.2026 erillinen tapahtuma, ei laskettu. Kertahinta sisältää vuoden 2026 jäsenmaksun.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_01.json",
      "staging_id": "batch_2026-09-21_01-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_01/emc_10750512_bd50f887e370.html",
      "capture_sha256": "bd50f887e3704c7ea99bc69efc376189f90556f20c6b03447c7d0262c526a7dc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T10:04:56+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.0,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.42 kuukaudelle (2026-08-31–2026-12-12, price_period_start) + membership 39 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Laajasalo",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Voimistelukoulu 5–7 v., Laajasalo/Kruunuvuorenranta",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5–7-vuotiaat",
    "parent_child": "no",
    "venue_name": "Tahvonlahden ala-aste",
    "address": "Gunillantie 12, 00870 Helsinki",
    "district": "Laajasalo",
    "weekday": "tiistai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10751129",
    "source_quote": "Laajasalo / Kruunuvuorenranta voimistelukoulu 5-7 v; Laajasalon / Kruunuvuorenrannan 5-7-vuotiaiden voimistelukoulu järjestetään tiistaisin klo 17:45-18:30 Tahvonlahden ala-asteella, osoitteessa gunillantie 12. Syyskauden 2026 harjoitusmaksu 170,00 € + Elisen jäsenmaksu 2026 39,00 €.",
    "activity_id": "hel-2026-0042",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Elisen jäsenmaksu 2026 (myClubin 'Vaadittavat tuotteet'); peritään vuoden ensimmäisen harjoitusmaksun yhteydessä."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "myClubin aikataulussa 14 harjoitusta (2026-09-01–2026-12-08, ei viikolla 42); joulunäytös la 12.12.2026 erillinen tapahtuma, ei laskettu. Kertahinta sisältää vuoden 2026 jäsenmaksun.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_01.json",
      "staging_id": "batch_2026-09-21_01-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_01/emc_10751129_e23a143c79ac.html",
      "capture_sha256": "e23a143c79acb10c52b7d91507640bf5a8b2957558c9ebe67128272fceda12b0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T10:04:56+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.49,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.38 kuukaudelle (2026-09-01–2026-12-12, price_period_start) + membership 39 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Laajasalo",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Myllypuron Taitoluisteluklubi ry",
    "group_name": "Luistelukoulu 3–6-vuotiaille, lauantai",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Myllypuron jäähalli",
    "address": null,
    "district": "Myllypuro",
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "11:45",
    "season": "syyskausi 2026",
    "start_date": "2026-09-05",
    "end_date": null,
    "sessions_count": 15,
    "price_eur": 155.0,
    "price_basis": "syyskausi 2026, 1 × viikossa, 15 kertaa",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": "Vakuutuksellinen luistelukoulupassi ja Pandapassi sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://mtk.myclub.fi/flow/courses/10944480",
    "source_quote": "Luistelukoulu 3-6-vuotiaille/LAUANTAISIN klo 11:00-11:45 Myllypuron jäähallilla; Hinta 1 x viikossa 155 € + 15 € jäsenmaksu; tapahtumia 15 syksyn 2026 aikana; ryhmä aloittaa 5.9.2026.",
    "activity_id": "hel-2026-0043",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": 11.33,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://mtk.myclub.fi/flow/courses/10944480",
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 155,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää luistelumaksun, Pandapassin ja Taitoluisteluliiton vakuutuksellisen luistelukoulupassin."
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "MTK:n jäsenmaksu; keväällä jatkava ei maksa uudelleen (seuran ilmoittautumissivu)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kurssijakso myClubissa 'Luistelukoulu syksy 2026' päättyy 12.12.2026; viimeistä harjoituspäivää ei ilmoitettu (end_date null). Osoite jätetty tyhjäksi: kurssisivu ei ilmoita hallin osoitetta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_01.json",
      "staging_id": "batch_2026-09-21_01-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_01/mtkmc_10944480_2b83919a209c.html",
      "capture_sha256": "2b83919a209c7fb854274a31f83a112611b1984a9c16fe243d1129588e3027cc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T10:04:56+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.9,
    "monthly_cost_basis": "155.0 € / term jaettuna 3.25 kuukaudelle (2026-09-05–2026-12-12, price_period_start) + membership 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Myllypuron Taitoluisteluklubi ry",
    "group_name": "Luistelukoulu 5–12-vuotiaille, torstai",
    "min_age": 5,
    "max_age": 12,
    "eligibility_text": "5–12-vuotiaat",
    "parent_child": "no",
    "venue_name": "Myllypuron jäähalli",
    "address": null,
    "district": "Myllypuro",
    "weekday": "torstai",
    "start_time": "18:15",
    "end_time": "19:00",
    "season": "syyskausi 2026",
    "start_date": "2026-09-03",
    "end_date": null,
    "sessions_count": 15,
    "price_eur": 155.0,
    "price_basis": "syyskausi 2026, 1 × viikossa, 15 kertaa",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": "Vakuutuksellinen luistelukoulupassi ja Pandapassi sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://mtk.myclub.fi/flow/courses/10944384",
    "source_quote": "Luistelukoulu 5-12-vuotiaille/TORSTAISIN klo 18:15-19:00 Myllypuron jäähallilla; Hinta 1 x viikossa 155 € + 15 € jäsenmaksu; tapahtumia 15 syksyn 2026 aikana; ryhmä aloittaa 3.9.2026.",
    "activity_id": "hel-2026-0044",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": 11.33,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://mtk.myclub.fi/flow/courses/10944384",
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 155,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää luistelumaksun, Pandapassin ja Taitoluisteluliiton vakuutuksellisen luistelukoulupassin."
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "MTK:n jäsenmaksu; keväällä jatkava ei maksa uudelleen (seuran ilmoittautumissivu)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kurssijakso myClubissa 'Luistelukoulu syksy 2026' päättyy 12.12.2026; viimeistä harjoituspäivää ei ilmoitettu (end_date null). Osoite jätetty tyhjäksi: kurssisivu ei ilmoita hallin osoitetta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_01.json",
      "staging_id": "batch_2026-09-21_01-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_01/mtkmc_10944384_6e3107866c24.html",
      "capture_sha256": "6e3107866c243b98210db6efdc37c6d6796345dffa0f42f7a3df1a4c85d0cecc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T10:04:56+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 47.96,
    "monthly_cost_basis": "155.0 € / term jaettuna 3.32 kuukaudelle (2026-09-03–2026-12-12, price_period_start) + membership 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Kontula",
    "address": "Ostostie 4, 00940 Helsinki",
    "district": "Kontula",
    "weekday": "keskiviikko",
    "start_time": "17:50",
    "end_time": "18:20",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100594",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0045",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100594",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_02.json",
      "staging_id": "batch_2026-09-21_02-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_02/uh_100594_60174dfb8685.json",
      "capture_sha256": "60174dfb86853b09e2c03ed26baae2d2c76ed7f8a6ac1d663b73cfea7649f2de",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T10:04:56+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kontula",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Kontula",
    "address": "Ostostie 4, 00940 Helsinki",
    "district": "Kontula",
    "weekday": "keskiviikko",
    "start_time": "18:30",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100595",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0046",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100595",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_02.json",
      "staging_id": "batch_2026-09-21_02-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_02/uh_100595_0be6bce62ce2.json",
      "capture_sha256": "0be6bce62ce2e480f81028e0a40c7dcdcfa4c991149a5a3563c6c637c457a3f2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T10:04:56+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kontula",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Kontula",
    "address": "Ostostie 4, 00940 Helsinki",
    "district": "Kontula",
    "weekday": "lauantai",
    "start_time": "09:00",
    "end_time": "09:30",
    "season": "syksy 2026",
    "start_date": "2026-10-24",
    "end_date": "2026-12-12",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100680",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0047",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-24",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-10-24",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100680",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_02.json",
      "staging_id": "batch_2026-09-21_02-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_02/uh_100680_263db7d74ca7.json",
      "capture_sha256": "263db7d74ca75e76e5ed764f26da762b8a1e387c9677d64e0357d7ef8cc9aba4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T10:04:56+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-24–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kontula",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Vuosaari",
    "address": "Vuosaarentie 5, 00980 Helsinki",
    "district": "Vuosaari",
    "weekday": "sunnuntai",
    "start_time": "08:00",
    "end_time": "08:30",
    "season": "syksy 2026",
    "start_date": "2026-10-25",
    "end_date": "2026-12-20",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100791",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0048",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-25",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-10-25",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100791",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_02.json",
      "staging_id": "batch_2026-09-21_02-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_02/uh_100791_e22e14b3abba.json",
      "capture_sha256": "e22e14b3abba79649a8b1f984c45b92b2df1d3608e82a472a269eaf2b09a9004",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T10:04:56+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 40.58,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.87 kuukaudelle (2026-10-25–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Vuosaari",
    "address": "Vuosaarentie 5, 00980 Helsinki",
    "district": "Vuosaari",
    "weekday": "sunnuntai",
    "start_time": "08:30",
    "end_time": "09:00",
    "season": "syksy 2026",
    "start_date": "2026-10-25",
    "end_date": "2026-12-20",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100792",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0049",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-25",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-10-25",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100792",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_02.json",
      "staging_id": "batch_2026-09-21_02-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_02/uh_100792_a2d1deff9d6e.json",
      "capture_sha256": "a2d1deff9d6ef4db42d141b1807002d9c66e81717095bd48a20a3d1509e8d5d9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T10:04:56+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 40.58,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.87 kuukaudelle (2026-10-25–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten uintikerho",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Vuosaari",
    "address": "Vuosaarentie 5, 00980 Helsinki",
    "district": "Vuosaari",
    "weekday": "sunnuntai",
    "start_time": "09:00",
    "end_time": "09:30",
    "season": "syksy 2026",
    "start_date": "2026-10-25",
    "end_date": "2026-12-20",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100793",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0050",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-25",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-10-25",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100793",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_02.json",
      "staging_id": "batch_2026-09-21_02-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_02/uh_100793_ef13379ee9c0.json",
      "capture_sha256": "ef13379ee9c0f3eab7da2fc4d76bbaf9d90734e41ca106e7bc2b267152fe69e4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T10:04:56+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 40.58,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.87 kuukaudelle (2026-10-25–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tennis",
    "provider": "HVS-Tennis ry",
    "group_name": "U10 Tempon Taaperotennis – alkusyksy, lauantai",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022–2025 syntyneet",
    "parent_child": "yes",
    "venue_name": "Taivallahden Tenniskeskus",
    "address": "Hiekkarannantie 2, Helsinki",
    "district": "Töölö",
    "weekday": "lauantai",
    "start_time": "08:45",
    "end_time": "09:25",
    "season": "alkusyksy 2026",
    "start_date": "2026-08-22",
    "end_date": "2026-10-10",
    "sessions_count": 8,
    "price_eur": 125.0,
    "price_basis": "8 kerran kurssi",
    "membership_fee_eur": 0,
    "other_required_fees": null,
    "equipment_notes": "Omaa mailaa suositellaan.",
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://hvstennis.fi/tuote/taapero-syksy-2026/",
    "source_quote": "2022–2025 syntyneille lapsille ja läheiselle; 125 €/kurssi, jäsenyys sisältyy; la klo 8.45–9.25, 8 kertaa 22.8.–10.10.",
    "activity_id": "hel-2026-0051",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": 15.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-22",
    "price_period_end": "2026-10-10",
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-10-10",
    "birth_year_min": 2022,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://hvstennis.fi/tuote/taapero-syksy-2026/",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity_and_membership",
        "amount_eur": 125,
        "mandatory": true,
        "included": true,
        "recurrence": "course",
        "applies_if": null,
        "note": "Sisältää kurssin ja vuoden jäsenyyden."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kurssi on jo käynnissä (alkoi 22.8.2026); variaatio loppuunmyyty.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_02.json",
      "staging_id": "batch_2026-09-21_02-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_02/hvs_taapero_47af23103c35.html",
      "capture_sha256": "47af23103c35e5d2acd2a05730a7d7e441d5e97c4317d2eea9277c5c9db6fc45",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T10:04:56+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 76.09,
    "monthly_cost_basis": "125.0 € / course jaettuna 1.64 kuukaudelle (2026-08-22–2026-10-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Perhefutis Myllypuro syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024-2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "yes",
    "venue_name": "Myllypuron peruskoulu",
    "address": "Yläkivenrinne 4",
    "district": "Myllypuro",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-09-10",
    "end_date": "2026-11-26",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskausi, sis. ohjauksen 11 krt, lapselle vakuutuksen, palkinnon ja vuoden 10 € jäsenmaksun (vuoden ensimmäinen maksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntaleikki.fi/perhefutis/",
    "source_quote": "Perhefutis Myllypuro, 2024-2023-2022-syntyneet, klo 17:00-17:40; 11 harjoituspäivää 2026-09-10–2026-11-26. Perhefutis: kausi maksaa 105 euroa (sis. ohjauksen 11krt).",
    "activity_id": "hel-2026-0052",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": 9.55,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://liikuntaleikki.fi/info/",
    "billing_period": "term",
    "price_period_start": "2026-09-10",
    "price_period_end": "2026-11-26",
    "season_start_date": "2026-09-10",
    "season_end_date": "2026-11-26",
    "birth_year_min": 2022,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntaleikki.fi/info/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, lapsen vakuutuksen ja palkinnon; vuoden ensimmäiseen osallistumismaksuun sisältyy 10 € jäsenmaksu."
      }
    ],
    "price_options": [
      {
        "label": "Kaksi lasta samasta perheestä",
        "amount_eur": 175,
        "applies_if": "kaksi saman perheen lasta mukana",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautuminen Ilmarix-lomakkeella (www.ilmarix.fi), jossa sama hinta ja 11 krt. Järjestäjä Liikuntaleikki, osin yhteistyössä Puotinkylän Valtin kanssa. Ikä ilmaistu syntymävuosina (min_age/max_age null).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_03.json",
      "staging_id": "batch_2026-09-21_03-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_03/liikuntaleikki_perhefutis_335a788c2788.html",
      "capture_sha256": "335a788c27889c50a9afb6c05b54dbc8353d646e9332c6455b5a794ae4ae2286",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T10:04:56+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-10–2026-11-26, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Vapaa Tanssikoulu (Laajasalon opisto)",
    "group_name": "Lastentanssi 4–5 v. LT4524 (ke 16:45)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5 v.",
    "parent_child": "no",
    "venue_name": "Myllykylän kylätalo",
    "address": "Ryynimyllynkatu 1",
    "district": "Myllypuro",
    "weekday": "keskiviikko",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026 (lukuvuosi 2026–2027)",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 230.0,
    "price_basis": "Syyslukukauden oppilasmaksu, 45 min tunti 1 krt/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Uusille oppilaille ensimmäinen osallistumiskerta on ilmainen kokeilukerta.",
    "enrollment_status": "unknown",
    "source_url": "https://vapaatanssikoulu.fi/wp-content/uploads/2026/08/Vata_lukuja%CC%88rjestys-2026-2027.pdf",
    "source_quote": "Lastentanssi 4–5 v. 16.45–17.30 LT4524; lukukausimaksu 45 min 1 krt/vko 230 €; syyskaudella opetuskertoja on 16.",
    "activity_id": "hel-2026-0053",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 230.0,
    "price_per_session_eur": 14.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://vapaatanssikoulu.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vapaatanssikoulu.fi/tunneille-ilmoittautuminen/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 230,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Lukukausimaksu 45 min / 1 krt vko."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Tanssikoulu ei vakuuta oppilaita; oma tapaturmavakuutus suositeltu (ei pakollinen maksu).",
    "unverified_fields": [],
    "verification_notes": "Ilmoittaudutaan koko lukuvuodeksi, laskutus lukukausittain. Lukujärjestys 13.08.2026, 'Muutokset mahdollisia!'. Uusi ryhmä ('UUSI!'). Perhealennus 10 % muista perheenjäsenistä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_03.json",
      "staging_id": "batch_2026-09-21_03-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_03/vapaatanssikoulu_lukujarjestys_0547bc806c7d.pdf",
      "capture_sha256": "0547bc806c7d2780bc9f9b9173ab4d6c69485775a7cff0dbe85a79a0bbcd884b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T10:04:56+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "230.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Jätkäsaari voimistelukoulu 4-5 v",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5 v",
    "parent_child": "unknown",
    "venue_name": "Jätkäsaaren päiväkoti",
    "address": "Rionkatu 10, 00220 Helsinki",
    "district": "Jätkäsaari",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10733740",
    "source_quote": "Jätkäsaari voimistelukoulu 4-5 v | 31.8.2026 17:00 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0054",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10733740_f347faccf278.html",
      "capture_sha256": "f347faccf2786585e16a2d371e155cf260c790a2d47f0cba9fcfe83bdc5fac69",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.75,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.42 kuukaudelle (2026-08-31–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Jätkäsaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Jätkäsaari voimistelukoulu 3-4 v",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v",
    "parent_child": "unknown",
    "venue_name": "Jätkäsaaren päiväkoti",
    "address": "Rionkatu 10, 00220 Helsinki",
    "district": "Jätkäsaari",
    "weekday": "torstai",
    "start_time": "17:20",
    "end_time": "18:05",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10733598",
    "source_quote": "Jätkäsaari voimistelukoulu 3-4 v | 3.9.2026 17:20 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0055",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10733598_bb7c7bb84f42.html",
      "capture_sha256": "bb7c7bb84f42f8b92ad1e242027b13f1ee82152a9957c26d8b583eb3fe392fe1",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 51.23,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.32 kuukaudelle (2026-09-03–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Jätkäsaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Jätkäsaari voimistelukoulu 5-6 v",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6 v",
    "parent_child": "unknown",
    "venue_name": "Jätkäsaaren päiväkoti",
    "address": "Rionkatu 10, 00220 Helsinki",
    "district": "Jätkäsaari",
    "weekday": "torstai",
    "start_time": "18:10",
    "end_time": "19:05",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10733630",
    "source_quote": "Jätkäsaari voimistelukoulu 5-6 v | 3.9.2026 18:10 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0056",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10733630_79bef487d12c.html",
      "capture_sha256": "79bef487d12c65e3cbebc951891a47ad1f7d2e4a9c106bbc6440a87bab67d48c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 51.23,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.32 kuukaudelle (2026-09-03–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Jätkäsaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Munkkivuori voimistelukoulu 4-5 v",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5 v",
    "parent_child": "unknown",
    "venue_name": "Hoplaxskolan",
    "address": "Lokkalantie 9, 00330 Helsinki",
    "district": "Munkkivuori",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10750739",
    "source_quote": "Munkkivuori voimistelukoulu 4-5 v | 31.8.2026 17:00 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0057",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10750739_3f0a80349b17.html",
      "capture_sha256": "3f0a80349b17119ffd5d9f42d2dc53e557d395634d92198deb92986bc2c71a63",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.75,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.42 kuukaudelle (2026-08-31–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Munkkivuori",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Töölö voimistelukoulu 3-5 v",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v",
    "parent_child": "unknown",
    "venue_name": "Töölön kisahalli",
    "address": "Paavo Nurmen kuja 1 C, 00250 Helsinki, Suomi",
    "district": "Töölö",
    "weekday": "maanantai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://elise.myclub.fi/flow/courses/10751011",
    "source_quote": "Töölö voimistelukoulu 3-5 v | 31.8.2026 17:45 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0058",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10751011_33487b128ab4.html",
      "capture_sha256": "33487b128ab4ad8ba729852fd8cda1724a5e7a67da82e3922ed0b035932e1723",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.75,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.42 kuukaudelle (2026-08-31–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Lauttasaari voimistelukoulu 5-6v",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v",
    "parent_child": "unknown",
    "venue_name": "Lauttasaaren ala-asteen koulu",
    "address": "Myllykalliontie 3, 00200 Helsinki",
    "district": "Lauttasaari",
    "weekday": "tiistai",
    "start_time": "17:35",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10750668",
    "source_quote": "Lauttasaari voimistelukoulu 5-6v | 1.9.2026 17:35 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0059",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10750668_1738c432e806.html",
      "capture_sha256": "1738c432e806ba9cc9d04d794a63ebb72fe678cb67718879fc350d8c8cdcb477",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 50.24,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.38 kuukaudelle (2026-09-01–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Kamppi voimistelukoulu 3-5 v",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v",
    "parent_child": "unknown",
    "venue_name": "Ressun peruskoulu",
    "address": "Lapinlahdenkatu 10, 00180 Helsinki",
    "district": "Kamppi",
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10733928",
    "source_quote": "Kamppi voimistelukoulu 3-5 v | 2.9.2026 17:00 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0060",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10733928_d6c7e0d5afad.html",
      "capture_sha256": "d6c7e0d5afadacd06155864cb4411a3f8bdb68045563d1ad3994d9b636fc6354",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 50.73,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.35 kuukaudelle (2026-09-02–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kamppi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Arabia temppukoulu 5-7v",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7v",
    "parent_child": "unknown",
    "venue_name": "Arabian peruskoulu",
    "address": "Berliininkatu 4, 00560 Helsinki",
    "district": "Arabia",
    "weekday": "torstai",
    "start_time": "16:15",
    "end_time": "17:10",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10733463",
    "source_quote": "Arabia temppukoulu 5-7v | 3.9.2026 16:15 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0061",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10733463_f9ae59dda3a8.html",
      "capture_sha256": "f9ae59dda3a85009116a0d8d3a49b7aa72136ab20b6e7b6fb0d4ed3c74578d61",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 51.23,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.32 kuukaudelle (2026-09-03–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Arabia",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Arabia voimistelukoulu 3-5v",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5v",
    "parent_child": "unknown",
    "venue_name": "Arabian peruskoulu",
    "address": "Berliininkatu 4, 00560 Helsinki",
    "district": "Arabia",
    "weekday": "torstai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10733503",
    "source_quote": "Arabia voimistelukoulu 3-5v | 3.9.2026 17:15 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0062",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10733503_79088ef74be5.html",
      "capture_sha256": "79088ef74be584bcb69529e26086d68f47c2352746e4950016704fba21864475",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 51.23,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.32 kuukaudelle (2026-09-03–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Arabia",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Pirkkolan Esivalmennusryhmä 5-8 v (1x/vko MA)",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5-8 v",
    "parent_child": "unknown",
    "venue_name": "Elise Arena",
    "address": "Pirkkolan metsätie 8, 00630 Helsinki, Suomi",
    "district": "Pirkkola",
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "19:30",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 220.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10751301",
    "source_quote": "Pirkkolan Esivalmennusryhmä 5-8 v (1x/vko MA) | 31.8.2026 18:00 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 220,00 €",
    "activity_id": "hel-2026-0063",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 259.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 220,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-017",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10751301_9e34c47e13b6.html",
      "capture_sha256": "9e34c47e13b6c0f39f5cd2b2dd35769e9955a03478d1e8dd9bd25a6d8544fb0f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 64.39,
    "monthly_cost_basis": "220.0 € / term jaettuna 3.42 kuukaudelle (2026-08-31–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Pirkkolan Esivalmennusryhmä 5-8 v (1x/vko KE)",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5-8 v",
    "parent_child": "unknown",
    "venue_name": "Elise Arena",
    "address": "Pirkkolan metsätie 8, 00630 Helsinki, Suomi",
    "district": "Pirkkola",
    "weekday": "keskiviikko",
    "start_time": "16:30",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 220.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10751263",
    "source_quote": "Pirkkolan Esivalmennusryhmä 5-8 v (1x/vko KE) | 2.9.2026 16:30 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 220,00 €",
    "activity_id": "hel-2026-0064",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 259.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 220,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-018",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10751263_74bcdf274f73.html",
      "capture_sha256": "74bcdf274f736a4a65fb24146e24b1a7a43a1ad710d8c4a74f17ac02c5b609e4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 65.65,
    "monthly_cost_basis": "220.0 € / term jaettuna 3.35 kuukaudelle (2026-09-02–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Vesipeuhu, la klo 10.35-11.05",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": "Pohjois-Haaga",
    "weekday": "lauantai",
    "start_time": "10:35",
    "end_time": "11:05",
    "season": "syksy 2026",
    "start_date": "2026-08-29",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 224.0,
    "price_basis": "Vesipeuhu (myClub Hintatiedot 224,00 €); kuvaus: Uintikausi 29.8.-12.12.2026 (ei 17.10. & 31.10.) 14krt / Hinta 224€ + 35€ HUn jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785709?group_id=18259",
    "source_quote": "Vesipeuhu, la klo 10.35-11.05 | 29.8.2026 10:35 - 12.12.2026 | Vesipeuhu 224,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0065",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 259.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-29",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-29",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 224,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_03; manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10785709?group_id=18259; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-027",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10785709_67044c4d2305.html",
      "capture_sha256": "67044c4d2305ab6619c5cc6d52aa89da9eac27775c69ce7b1a726b164710fb18",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 67.24,
    "monthly_cost_basis": "224.0 € / term jaettuna 3.48 kuukaudelle (2026-08-29–2026-12-12, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Vesipeuhu, ti klo 17.00-17.30",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": "Pohjois-Haaga",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-15",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Vesipeuhu (myClub Hintatiedot 240,00 €); kuvaus: Uintikausi 1.9-15.12.2026 (ei 13.10.) 15krt / Hinta 240€ + 35€ HU:n jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10868019?group_id=18259",
    "source_quote": "Vesipeuhu, ti klo 17.00-17.30 | 1.9.2026 17:00 - 15.12.2026 | Vesipeuhu 240,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0066",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-15",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-15",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_03; manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10868019?group_id=18259; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, end_date, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start, address (täydennetty)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-028",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10868019_6f707b7e13c4.html",
      "capture_sha256": "6f707b7e13c4b097b8575657c0583ea620bb8eacf93a18105e02cc719d3881be",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 71.83,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.48 kuukaudelle (2026-09-01–2026-12-15, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Alkeisuimakoulu, la klo 11.35-12.05",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": "Pohjois-Haaga",
    "weekday": "lauantai",
    "start_time": "11:35",
    "end_time": "12:05",
    "season": "syksy 2026",
    "start_date": "2026-08-29",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 224.0,
    "price_basis": "Alkeisuimakoulu (myClub Hintatiedot 224,00 €); kuvaus: Uintikausi 29.8.-12.12.2026 (ei 17.10 & 31.10.) 14krt / Hinta 224€ + 35€ HU:n jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785437?group_id=18267",
    "source_quote": "Alkeisuimakoulu, la klo 11.35-12.05 | 29.8.2026 11:35 - 12.12.2026 | Alkeisuimakoulu 224,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0067",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 259.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-29",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-29",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 224,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10785437?group_id=18267; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-029",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10785437_0fd520150baa.html",
      "capture_sha256": "0fd520150baa8660d0955769ed093930f83415671372d0e2a0b8ca0914ded6ac",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 67.24,
    "monthly_cost_basis": "224.0 € / term jaettuna 3.48 kuukaudelle (2026-08-29–2026-12-12, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Alkeisuimakoulu, la klo 12.35-13.05",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": "Pohjois-Haaga",
    "weekday": "lauantai",
    "start_time": "12:35",
    "end_time": "13:05",
    "season": "syksy 2026",
    "start_date": "2026-08-29",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 224.0,
    "price_basis": "Alkeisuimakoulu (myClub Hintatiedot 224,00 €); kuvaus: Uintikausi 29.8.-12.12.2026 (ei 17.10. & 31.10.) 14krt / Hinta 224€ + 35€ HU:n jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10862442?group_id=18267",
    "source_quote": "Alkeisuimakoulu, la klo 12.35-13.05 | 29.8.2026 12:35 - 12.12.2026 | Alkeisuimakoulu 224,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0068",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 259.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-29",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-29",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 224,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10862442?group_id=18267; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-030",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10862442_d92023938628.html",
      "capture_sha256": "d92023938628bd7d1f91968871d7869a319dcecbedefa8ef6372927349a47bfc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 67.24,
    "monthly_cost_basis": "224.0 € / term jaettuna 3.48 kuukaudelle (2026-08-29–2026-12-12, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Alkeisuimakoulu, ti klo 17.30-18.00",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": "Pohjois-Haaga",
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-15",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Alkeisuimakoulu (myClub Hintatiedot 240,00 €); kuvaus: Uintikausi 1.9.-15.12.2026 (ei 13.10.) 15krt / Hinta 240€ + 35€ HU:n jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785493?group_id=18267",
    "source_quote": "Alkeisuimakoulu, ti klo 17.30-18.00 | 1.9.2026 17:30 - 15.12.2026 | Alkeisuimakoulu 240,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0069",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-15",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-15",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10785493?group_id=18267; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-031",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10785493_3e055b027cc3.html",
      "capture_sha256": "3e055b027cc36f48792ee79e31584e453183b9d25157b846f2c847fbdfabde43",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 71.83,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.48 kuukaudelle (2026-09-01–2026-12-15, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Alkeisuimakoulu, ti klo 18.30-19.00",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": "Pohjois-Haaga",
    "weekday": "tiistai",
    "start_time": "18:30",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-15",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Alkeisuimakoulu (myClub Hintatiedot 240,00 €); kuvaus: Uintikausi 1.9-15.12.2026 (ei 13.10.) 15krt / Hinta 240€ + 35€ HU:n jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785550?group_id=18267",
    "source_quote": "Alkeisuimakoulu, ti klo 18.30-19.00 | 1.9.2026 18:30 - 15.12.2026 | Alkeisuimakoulu 240,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0070",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-15",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-15",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10785550?group_id=18267; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-032",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10785550_6eeb897859d1.html",
      "capture_sha256": "6eeb897859d1bd7ab1a09e43f7889ac8cbfe624e52e6324bb1aef166a5763f89",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 71.83,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.48 kuukaudelle (2026-09-01–2026-12-15, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Alkeisuimakoulu, pe klo 18.35-19.05",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan Liikuntapuiston Uimahalli",
    "address": "Pirkkolan Metsätie 6, 00630 Helsinki, Suomi",
    "district": "Pirkkola",
    "weekday": "perjantai",
    "start_time": "18:35",
    "end_time": "19:05",
    "season": "syksy 2026",
    "start_date": "2026-09-04",
    "end_date": "2026-12-18",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Alkeisuimakoulu (myClub Hintatiedot 240,00 €); kuvaus: Uintikausi 4.9.-18.12.2026 (ei 16.10.) 15krt / Hinta 240€ + 35€ jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785636?group_id=18267",
    "source_quote": "Alkeisuimakoulu, pe klo 18.35-19.05 | 4.9.2026 18:35 - 18.12.2026 | Alkeisuimakoulu 240,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0071",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-04",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-09-04",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10785636?group_id=18267; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-033",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10785636_eb3d93e90dcf.html",
      "capture_sha256": "eb3d93e90dcf7b0ea692c3547f55674f4a45f44323e0fba3c58cd21d38fe4e83",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 71.83,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.48 kuukaudelle (2026-09-04–2026-12-18, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Alkeisuimakoulu, ma klo 17.30-18.00",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "unknown",
    "venue_name": "Suomalainen Yhteiskoulu SYK",
    "address": "Isonnevantie 8, 00320 Helsinki, Suomi",
    "district": "Etelä-Haaga",
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-07",
    "end_date": "2026-12-14",
    "sessions_count": null,
    "price_eur": 224.0,
    "price_basis": "Alkeisuimakoulu (myClub Hintatiedot 224,00 €); kuvaus: Uintikausi 7.9.-14.12.2026 (ei 12.10) 14krt / Hinta 224€ + 35€ HUn jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785673?group_id=18267",
    "source_quote": "Alkeisuimakoulu, ma klo 17.30-18.00 | 7.9.2026 17:30 - 14.12.2026 | Alkeisuimakoulu 224,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0072",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 259.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-07",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-09-07",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 224,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10785673?group_id=18267; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-034",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10785673_7dc382d9ca75.html",
      "capture_sha256": "7dc382d9ca7543ee308919e8dde537a09c9c4c0a60c481eef4c6f34d62302c51",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 71.79,
    "monthly_cost_basis": "224.0 € / term jaettuna 3.25 kuukaudelle (2026-09-07–2026-12-14, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Etelä-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Jatkouimakoulu, la klo 10.05-10.35",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": "Pohjois-Haaga",
    "weekday": "lauantai",
    "start_time": "10:05",
    "end_time": "10:35",
    "season": "syksy 2026",
    "start_date": "2026-08-29",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 224.0,
    "price_basis": "Jatkouimakoulu (myClub Hintatiedot 224,00 €); kuvaus: Uintikausi 29.8.-12.12.2026 (ei 17.10 & 31.10.) 14krt / Hinta 224€ + 35€ HU:n jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785413?group_id=18268",
    "source_quote": "Jatkouimakoulu, la klo 10.05-10.35 | 29.8.2026 10:05 - 12.12.2026 | Jatkouimakoulu 224,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0073",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 259.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-29",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-29",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 224,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10785413?group_id=18268; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-035",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10785413_a0deb266690d.html",
      "capture_sha256": "a0deb266690da34c83351fac75ec764ad83a6145285a78bbe469ba4069fedf56",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 67.24,
    "monthly_cost_basis": "224.0 € / term jaettuna 3.48 kuukaudelle (2026-08-29–2026-12-12, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Jatkouimakoulu, la klo 11.05-11.35",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": "Pohjois-Haaga",
    "weekday": "lauantai",
    "start_time": "11:05",
    "end_time": "11:35",
    "season": "syksy 2026",
    "start_date": "2026-08-29",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 224.0,
    "price_basis": "Jatkouimakoulu (myClub Hintatiedot 224,00 €); kuvaus: Uintikausi 29.8.-12.12.2026 (ei 17.10. & 31.10.) 14krt / Hinta 224€ + 35€ jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785165?group_id=18268",
    "source_quote": "Jatkouimakoulu, la klo 11.05-11.35 | 29.8.2026 11:05 - 12.12.2026 | Jatkouimakoulu 224,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0074",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 259.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-29",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-29",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 224,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10785165?group_id=18268; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-036",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10785165_349219150d2c.html",
      "capture_sha256": "349219150d2c81afb9e0e2161babb5a570ee33dc5833313f4ad7cc41d1450a2f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 67.24,
    "monthly_cost_basis": "224.0 € / term jaettuna 3.48 kuukaudelle (2026-08-29–2026-12-12, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Jatkouimakoulu, la klo 12.05-12.35",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": "Pohjois-Haaga",
    "weekday": "lauantai",
    "start_time": "12:05",
    "end_time": "12:35",
    "season": "syksy 2026",
    "start_date": "2026-08-29",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 224.0,
    "price_basis": "Jatkouimakoulu (myClub Hintatiedot 224,00 €); kuvaus: Uintikausi 29.8.-12.12. (ei 17.10 & 31.10.) 14krt / Hinta 224€ + 35€ jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785239?group_id=18268",
    "source_quote": "Jatkouimakoulu, la klo 12.05-12.35 | 29.8.2026 12:05 - 12.12.2026 | Jatkouimakoulu 224,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0075",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 259.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-29",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-29",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 224,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10785239?group_id=18268; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-037",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10785239_f5f778ddfbd0.html",
      "capture_sha256": "f5f778ddfbd011f929e9a8a0a44ed49676e991f1a33f8a2a9d1a1e467fd06be8",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 67.24,
    "monthly_cost_basis": "224.0 € / term jaettuna 3.48 kuukaudelle (2026-08-29–2026-12-12, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Jatkouimakoulu, ti klo 18.00-18.30",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": "Pohjois-Haaga",
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-15",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Jatkouimakoulu (myClub Hintatiedot 240,00 €); kuvaus: Uintikausi 1.9.-15.12.2026 (ei 13.10.) 15krt / Hinta 240€ + 35€ HU:n jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785313?group_id=18268",
    "source_quote": "Jatkouimakoulu, ti klo 18.00-18.30 | 1.9.2026 18:00 - 15.12.2026 | Jatkouimakoulu 240,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0076",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-15",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-15",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10785313?group_id=18268; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-038",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10785313_8083ff2e0d72.html",
      "capture_sha256": "8083ff2e0d726d19f2f00877c407136df321bdbab0fc96ac2fa4166800b88b2b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 71.83,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.48 kuukaudelle (2026-09-01–2026-12-15, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Jatkouimakoulu, ti klo 19.00-19.30",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": "Pohjois-Haaga",
    "weekday": "tiistai",
    "start_time": "19:00",
    "end_time": "19:30",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-15",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Jatkouimakoulu (myClub Hintatiedot 240,00 €); kuvaus: Uintikausi 1.9.-15.12.2026 (ei 13.10.) 15krt / Hinta 240€ + 35€ HU:n jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785350?group_id=18268",
    "source_quote": "Jatkouimakoulu, ti klo 19.00-19.30 | 1.9.2026 19:00 - 15.12.2026 | Jatkouimakoulu 240,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0077",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-15",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-15",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10785350?group_id=18268; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-039",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10785350_219f571ad747.html",
      "capture_sha256": "219f571ad7476619bcbe3f2b911d12ebe69f995e632264efd1978115f3365169",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 71.83,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.48 kuukaudelle (2026-09-01–2026-12-15, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Jatkouimakoulu, pe klo 18.05-18.35",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7v.",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan Liikuntapuiston Uimahalli",
    "address": "Pirkkolan Metsätie 6, 00630 Helsinki, Suomi",
    "district": "Pirkkola",
    "weekday": "perjantai",
    "start_time": "18:05",
    "end_time": "18:35",
    "season": "syksy 2026",
    "start_date": "2026-09-04",
    "end_date": "2026-12-18",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Jatkouimakoulu (myClub Hintatiedot 240,00 €); kuvaus: Uintikausi 4.9.-18.12.2026 (ei 16.10.) 15krt / Hinta 240€ + 35€ jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785586?group_id=18268",
    "source_quote": "Jatkouimakoulu, pe klo 18.05-18.35 | 4.9.2026 18:05 - 18.12.2026 | Jatkouimakoulu 240,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0078",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-04",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-09-04",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10785586?group_id=18268; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-040",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10785586_147cac28651e.html",
      "capture_sha256": "147cac28651ea31bc956a3a5d0b9cbbcab1175960b3843755d5caf5e2415a118",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 71.83,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.48 kuukaudelle (2026-09-04–2026-12-18, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Jatkouimakoulu, pe klo 19.05-19.35",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7v.",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan Liikuntapuiston Uimahalli",
    "address": "Pirkkolan Metsätie 6, 00630 Helsinki, Suomi",
    "district": "Pirkkola",
    "weekday": "perjantai",
    "start_time": "19:05",
    "end_time": "19:35",
    "season": "syksy 2026",
    "start_date": "2026-09-04",
    "end_date": "2026-12-18",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Jatkouimakoulu (myClub Hintatiedot 240,00 €); kuvaus: Uintikausi 4.9.-18.12.2026 (ei 16.10.) 15krt / Hinta 240€ + 35€ jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785655?group_id=18268",
    "source_quote": "Jatkouimakoulu, pe klo 19.05-19.35 | 4.9.2026 19:05 - 18.12.2026 | Jatkouimakoulu 240,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0079",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-04",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-09-04",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10785655?group_id=18268; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-041",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10785655_a77beadcd765.html",
      "capture_sha256": "a77beadcd765bf2e857d02afa64ade13f09ad29ff3d1141745e4b5918860a063",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 71.83,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.48 kuukaudelle (2026-09-04–2026-12-18, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Jatkouimakoulu, ma klo 18.00-18.30",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7v.",
    "parent_child": "unknown",
    "venue_name": "Suomalainen Yhteiskoulu SYK",
    "address": "Isonnevantie 8, 00320 Helsinki, Suomi",
    "district": "Etelä-Haaga",
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-07",
    "end_date": "2026-12-14",
    "sessions_count": null,
    "price_eur": 224.0,
    "price_basis": "Jatkouimakoulu (myClub Hintatiedot 224,00 €); kuvaus: Uintikausi 7.9.-14.12.2026 (ei 12.10.) 14krt / Hinta 224€ + 35€ HU:n jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785691?group_id=18268",
    "source_quote": "Jatkouimakoulu, ma klo 18.00-18.30 | 7.9.2026 18:00 - 14.12.2026 | Jatkouimakoulu 224,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0080",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 259.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-07",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-09-07",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 224,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10785691?group_id=18268; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-042",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10785691_93b33276f2ff.html",
      "capture_sha256": "93b33276f2ff077973aaf0fecd05ad01b6ec4472d9df8ef532130a677a3acd7c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 71.79,
    "monthly_cost_basis": "224.0 € / term jaettuna 3.25 kuukaudelle (2026-09-07–2026-12-14, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Etelä-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Jatkouimakoulu, ma klo 18.30-19.00",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7v.",
    "parent_child": "unknown",
    "venue_name": "Suomalainen Yhteiskoulu SYK",
    "address": "Isonnevantie 8, 00320 Helsinki, Suomi",
    "district": "Etelä-Haaga",
    "weekday": "maanantai",
    "start_time": "18:30",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-09-07",
    "end_date": "2026-12-14",
    "sessions_count": null,
    "price_eur": 224.0,
    "price_basis": "Jatkouimakoulu (myClub Hintatiedot 224,00 €); kuvaus: Uintikausi 7.9.-14.12.2026 (ei 12.10.) 14krt / Hinta 224€ + 35€ HUn jäsenmaksu 2026",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785617?group_id=18268",
    "source_quote": "Jatkouimakoulu, ma klo 18.30-19.00 | 7.9.2026 18:30 - 14.12.2026 | Jatkouimakoulu 224,00 €; Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 €",
    "activity_id": "hel-2026-0081",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 259.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-07",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-09-07",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 224,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Helsingin Uimarit r.y. jäsenmaksu 2026 (myClub Hintatiedot + helsinginuimarit.fi/uimakoulut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_basis from https://helsinginuimarit.myclub.fi/flow/courses/10785617?group_id=18268; billing_period=term (Ilpon päätös 21.9.2026, kuvauksen 'Uintikausi … Nkrt'; ennen käsiarvo course); myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: comparison_eligible, has_unpriced_required_fee, known_min_total_eur, price_completeness, price_eur, price_per_session_eur, price_period_end, price_period_start",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-043",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_helsinginuimarit_10785617_298050f0fac7.html",
      "capture_sha256": "298050f0fac7e6b9ca5429fc5d770c3ca747658cbd5466b9825328877bdd089b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 71.79,
    "monthly_cost_basis": "224.0 € / term jaettuna 3.25 kuukaudelle (2026-09-07–2026-12-14, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Etelä-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Perheuimakoulu",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaille",
    "parent_child": "yes",
    "venue_name": "Mäkelänrinteen Uintikeskus",
    "address": "Mäkelänkatu 49, 00550 Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:25",
    "end_time": "16:55",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 93.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100537",
    "source_quote": "Perheuimakoulu on suunnattu 3–4-vuotiaille lapsille.",
    "activity_id": "hel-2026-0082",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 93.0,
    "price_per_session_eur": 11.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100537",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 93,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/makelanrinne/); API:n location='Mäkelänrinne'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100537_3a566f4a3d63.json",
      "capture_sha256": "3a566f4a3d63e63a1b33a063a3b6f95b9ca937e0bf773cd286297945fbfc2ceb",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 56.61,
    "monthly_cost_basis": "93.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "geokoodattu osoite -> sub_district 'Vallila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Perheuimakoulu",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaille",
    "parent_child": "yes",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "18:15",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 93.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100532",
    "source_quote": "Perheuimakoulu on suunnattu 3–4-vuotiaille lapsille.",
    "activity_id": "hel-2026-0083",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 93.0,
    "price_per_session_eur": 11.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100532",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 93,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/); API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100532_89266dd21ffe.json",
      "capture_sha256": "89266dd21ffe5cdb4b16a2b0d4f08eed78c983b1602c11ef2f1a23d84b9dd563",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 56.61,
    "monthly_cost_basis": "93.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Perheuimakoulu",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaille",
    "parent_child": "yes",
    "venue_name": "Töölön Urheilutalo",
    "address": "Topeliuksenkatu 41 a, 00250 Helsinki",
    "district": "Töölö",
    "weekday": "tiistai",
    "start_time": "16:20",
    "end_time": "16:50",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 93.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100565",
    "source_quote": "Perheuimakoulu on suunnattu 3–4-vuotiaille lapsille.",
    "activity_id": "hel-2026-0084",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 93.0,
    "price_per_session_eur": 11.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-20",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100565",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 93,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/toolo/); API:n location='Töölö'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100565_b0a0e1a2a93e.json",
      "capture_sha256": "b0a0e1a2a93e319761bd1be0edcfb60179e57f3d85f8f8a1038ecac2bf9d5675",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 56.61,
    "monthly_cost_basis": "93.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Perheuimakoulu",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaille",
    "parent_child": "yes",
    "venue_name": "Mäkelänrinteen Uintikeskus",
    "address": "Mäkelänkatu 49, 00550 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:10",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": 8,
    "price_eur": 93.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100601",
    "source_quote": "Perheuimakoulu on suunnattu 3–4-vuotiaille lapsille.",
    "activity_id": "hel-2026-0085",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 93.0,
    "price_per_session_eur": 11.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100601",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 93,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/makelanrinne/); API:n location='Mäkelänrinne'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100601_386151ed9d9c.json",
      "capture_sha256": "386151ed9d9c1db9d92e3a45e62e04f7e128dd0adbacfc926539635769e404cc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 56.61,
    "monthly_cost_basis": "93.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "geokoodattu osoite -> sub_district 'Vallila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Perheuimakoulu",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaille",
    "parent_child": "yes",
    "venue_name": "Malmin uimahalli",
    "address": "Pekanraitti 14, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "torstai",
    "start_time": "16:00",
    "end_time": "16:30",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-10",
    "sessions_count": 8,
    "price_eur": 93.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100654",
    "source_quote": "Perheuimakoulu on suunnattu 3–4-vuotiaille lapsille.",
    "activity_id": "hel-2026-0086",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 93.0,
    "price_per_session_eur": 11.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100654",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 93,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/malmi/); API:n location='Malmi'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100654_27544a642cfe.json",
      "capture_sha256": "27544a642cfed06e46fc5e0daeebc505aa71fba13a77f2143f10b997e43d6344",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 56.61,
    "monthly_cost_basis": "93.0 € / course jaettuna 1.64 kuukaudelle (2026-10-22–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Perheuimakoulu",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaille",
    "parent_child": "yes",
    "venue_name": "Malmin uimahalli",
    "address": "Pekanraitti 14, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "perjantai",
    "start_time": "16:40",
    "end_time": "17:10",
    "season": "syksy 2026",
    "start_date": "2026-10-23",
    "end_date": "2026-12-11",
    "sessions_count": 8,
    "price_eur": 93.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100674",
    "source_quote": "Perheuimakoulu on suunnattu 3–4-vuotiaille lapsille.",
    "activity_id": "hel-2026-0087",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 93.0,
    "price_per_session_eur": 11.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-23",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-10-23",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100674",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 93,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/malmi/); API:n location='Malmi'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100674_22cfe16f9db5.json",
      "capture_sha256": "22cfe16f9db53ce0fffed252d192bc650d03f20aba119a16b9a1596de69018bc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 56.61,
    "monthly_cost_basis": "93.0 € / course jaettuna 1.64 kuukaudelle (2026-10-23–2026-12-11, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Perheuimakoulu",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaille",
    "parent_child": "yes",
    "venue_name": "Mäkelänrinteen Uintikeskus",
    "address": "Mäkelänkatu 49, 00550 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:00",
    "end_time": "09:30",
    "season": "syksy 2026",
    "start_date": "2026-10-24",
    "end_date": "2026-12-19",
    "sessions_count": 8,
    "price_eur": 93.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100681",
    "source_quote": "Perheuimakoulu on suunnattu 3–4-vuotiaille lapsille.",
    "activity_id": "hel-2026-0088",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 93.0,
    "price_per_session_eur": 11.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-24",
    "price_period_end": "2026-12-19",
    "season_start_date": "2026-10-24",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100681",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 93,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/makelanrinne/); API:n location='Mäkelänrinne'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100681_bddaef68cd9a.json",
      "capture_sha256": "bddaef68cd9a4fc451e8e42581791933ca8d63ce89c170a7d2e2421ecda7a9d1",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 49.66,
    "monthly_cost_basis": "93.0 € / course jaettuna 1.87 kuukaudelle (2026-10-24–2026-12-19, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "geokoodattu osoite -> sub_district 'Vallila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Taaperouinti 1-3-vuotiaille",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "09:30",
    "end_time": "10:00",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-10-05",
    "sessions_count": 8,
    "price_eur": 112.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/92834",
    "source_quote": "Taaperouinti on perheen yhteinen, koulutetun ohjaajan valvoma leikkihetki puhtaassa ja lämmitetyssä vedessä.",
    "activity_id": "hel-2026-0089",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 112.0,
    "price_per_session_eur": 14.0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-10-05",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-10-05",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/92834",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kuvaus: 'Taaperouintiin voi lapsen lisäksi osallistua kaksi aikuista.' – aikuisen osallistumista ei sanota pakolliseksi, joten parent_child=unknown (Ilpo linjaa). kurssi alkanut 2026-08-17; saatavuus API:n eksplisiittisistä kentistä (varausikkuna auki 2026-10-05 00:00:00 asti). venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/); API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_92834_327f99cbc5c0.json",
      "capture_sha256": "327f99cbc5c044d8b696744d889e924bad20990b1281b644cb243e2d6e3b6ab4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 68.18,
    "monthly_cost_basis": "112.0 € / course jaettuna 1.64 kuukaudelle (2026-08-17–2026-10-05, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Taaperouinti 1-3-vuotiaille",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "10:00",
    "end_time": "10:30",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-10-05",
    "sessions_count": 8,
    "price_eur": 112.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/92835",
    "source_quote": "Taaperouinti on perheen yhteinen, koulutetun ohjaajan valvoma leikkihetki puhtaassa ja lämmitetyssä vedessä.",
    "activity_id": "hel-2026-0090",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 112.0,
    "price_per_session_eur": 14.0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-10-05",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-10-05",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/92835",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kuvaus: 'Taaperouintiin voi lapsen lisäksi osallistua kaksi aikuista.' – aikuisen osallistumista ei sanota pakolliseksi, joten parent_child=unknown (Ilpo linjaa). kurssi alkanut 2026-08-17; saatavuus API:n eksplisiittisistä kentistä (varausikkuna auki 2026-10-05 00:00:00 asti). venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/); API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_92835_7bad60c6c7d0.json",
      "capture_sha256": "7bad60c6c7d0552c4e92268316183d6895a122de8fe3f52c7b9b2cec5bc7b26c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 68.18,
    "monthly_cost_basis": "112.0 € / course jaettuna 1.64 kuukaudelle (2026-08-17–2026-10-05, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Taaperouinti 1-3-vuotiaille",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "09:30",
    "end_time": "10:00",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 112.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/97813",
    "source_quote": "Taaperouinti on perheen yhteinen, koulutetun ohjaajan valvoma leikkihetki puhtaassa ja lämmitetyssä vedessä.",
    "activity_id": "hel-2026-0091",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 112.0,
    "price_per_session_eur": 14.0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/97813",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kuvaus: 'Taaperouintiin voi lapsen lisäksi osallistua kaksi aikuista.' – aikuisen osallistumista ei sanota pakolliseksi, joten parent_child=unknown (Ilpo linjaa). venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/); API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_97813_451539c4a2ba.json",
      "capture_sha256": "451539c4a2ba560e59523da087e6c305718f5e5a2a1e28ac08585c893dd1411c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 68.18,
    "monthly_cost_basis": "112.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Taaperouinti 1-3-vuotiaille",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "10:00",
    "end_time": "10:30",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 112.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/97814",
    "source_quote": "Taaperouinti on perheen yhteinen, koulutetun ohjaajan valvoma leikkihetki puhtaassa ja lämmitetyssä vedessä.",
    "activity_id": "hel-2026-0092",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 112.0,
    "price_per_session_eur": 14.0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/97814",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kuvaus: 'Taaperouintiin voi lapsen lisäksi osallistua kaksi aikuista.' – aikuisen osallistumista ei sanota pakolliseksi, joten parent_child=unknown (Ilpo linjaa). venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/); API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_97814_af49dddbe682.json",
      "capture_sha256": "af49dddbe68288d0e4527e952cda1afafa98090cb7b9a5cee62e98b4974dd418",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 68.18,
    "monthly_cost_basis": "112.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Töölön Urheilutalo",
    "address": "Topeliuksenkatu 41 a, 00250 Helsinki",
    "district": "Töölö",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100566",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0093",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-20",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100566",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/toolo/); API:n location='Töölö'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100566_6cb51daf0d55.json",
      "capture_sha256": "6cb51daf0d557b59321a5bbbb3ed70c3cedbc608252c20fd2f48029613032c01",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Töölön Urheilutalo",
    "address": "Topeliuksenkatu 41 a, 00250 Helsinki",
    "district": "Töölö",
    "weekday": "keskiviikko",
    "start_time": "16:30",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100596",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0094",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100596",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/toolo/); API:n location='Töölö'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100596_d47b5377bdc3.json",
      "capture_sha256": "d47b5377bdc3f196526b9e8e255231084df38873aa6d1b32ab3e38d7bbd3225c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeistekniikka",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "16:50",
    "end_time": "17:20",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100800",
    "source_quote": "5–6-vuotiaille uintikerhon suorittaneille lapsille, joiden uimataito on vähintään 10 metriä sekä vatsallaan että selällään.",
    "activity_id": "hel-2026-0095",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100800",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/); API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100800_f378fae531f4.json",
      "capture_sha256": "f378fae531f4e5d1dfa982dbe59e685ddb92c71e03e7836c261170b340c43641",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "tiistai",
    "start_time": "18:15",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100811",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0096",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-20",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100811",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/); API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-015",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100811_71e30364f453.json",
      "capture_sha256": "71e30364f45355fa7f40c48443e2fb81124a12429253fadbbe0887fa1fbddeb9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100806",
    "source_quote": "5–6-vuotiaille lapsille, jotka osaavat sukeltaa, liukua ja kellua.",
    "activity_id": "hel-2026-0097",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100806",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/); API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-016",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100806_7192d7de3440.json",
      "capture_sha256": "7192d7de34405b7acb96657d836168acbe18a418187622fc76b21fef93e2cf37",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Malmin uimahalli",
    "address": "Pekanraitti 14, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "maanantai",
    "start_time": "17:20",
    "end_time": "17:50",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100536",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0098",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100536",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/malmi/); API:n location='Malmi'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-017",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100536_c29d866f2ab9.json",
      "capture_sha256": "c29d866f2ab9ab45819ea10c58e6a2040cd62fc5fc514d7826e870c7f47145c7",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeistekniikka",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Malmin uimahalli",
    "address": "Pekanraitti 14, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "tiistai",
    "start_time": "18:30",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100567",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0099",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-20",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100567",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/malmi/); API:n location='Malmi'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-018",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100567_8c5d99717921.json",
      "capture_sha256": "8c5d99717921acd3695b068844d878e286f433e07607779510540c44971569d8",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Malmin uimahalli",
    "address": "Pekanraitti 14, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "keskiviikko",
    "start_time": "17:40",
    "end_time": "18:10",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100598",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0100",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100598",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/malmi/); API:n location='Malmi'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-019",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100598_07255002c492.json",
      "capture_sha256": "07255002c4926baaae6802b12c7383e97961c00dbde0886181536531e54fc7ee",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Helsingin Urheilutalo",
    "address": "Helsinginkatu 25, 00510 Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:30",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100562",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0101",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-20",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100562",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/kallio/); API:n location='Kallio'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-020",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100562_859df759c06c.json",
      "capture_sha256": "859df759c06cd0b3887a7e4d81c56a7c4f8868fe122d7bfe8fc246aba0928157",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Alppiharju",
    "district_basis": "geokoodattu osoite -> neighborhood 'Alppiharju' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Helsingin Urheilutalo",
    "address": "Helsinginkatu 25, 00510 Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:10",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100563",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0102",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-20",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100563",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/kallio/); API:n location='Kallio'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-021",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100563_fa39d1dde751.json",
      "capture_sha256": "fa39d1dde7519790b57f6b444b329114c4d82c46fd8718f0c89b240638be0813",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Alppiharju",
    "district_basis": "geokoodattu osoite -> neighborhood 'Alppiharju' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten uintikerho",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Helsingin Urheilutalo",
    "address": "Helsinginkatu 25, 00510 Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:50",
    "end_time": "18:20",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100564",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0103",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-20",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100564",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/kallio/); API:n location='Kallio'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-022",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100564_3a2ed52d3158.json",
      "capture_sha256": "3a2ed52d315834cdf1eb2377be431625d71d2b5139c1a8e38a2e2f7b96dcef23",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Alppiharju",
    "district_basis": "geokoodattu osoite -> neighborhood 'Alppiharju' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Mäkelänrinteen Uintikeskus",
    "address": "Mäkelänkatu 49, 00550 Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:20",
    "end_time": "17:50",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100568",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0104",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-20",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100568",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/makelanrinne/); API:n location='Mäkelänrinne'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-023",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100568_8ad23eb705cf.json",
      "capture_sha256": "8ad23eb705cfda55069e7dafb7f98d10b42a8117923f04a25f3315c14d90b91f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "geokoodattu osoite -> sub_district 'Vallila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeistekniikka",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Mäkelänrinteen Uintikeskus",
    "address": "Mäkelänkatu 49, 00550 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "16:30",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100600",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0105",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100600",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/makelanrinne/); API:n location='Mäkelänrinne'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-024",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100600_bc9fe00d226b.json",
      "capture_sha256": "bc9fe00d226b7d6472d47a77a36b36c341f8a941ad9f1735ac37f7a39f237838",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "geokoodattu osoite -> sub_district 'Vallila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten uintikerho",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Mäkelänrinteen Uintikeskus",
    "address": "Mäkelänkatu 49, 00550 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:30",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100603",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0106",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100603",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/makelanrinne/); API:n location='Mäkelänrinne'. district=null (ei virallista kaupunginosatietoa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_05.json",
      "staging_id": "batch_2026-09-21_05-025",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_05/uh_100603_5475bacfe54a.json",
      "capture_sha256": "5475bacfe54a20d02a8cea1e450107aad566e34a8c65f098403dcba85ac880ba",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "geokoodattu osoite -> sub_district 'Vallila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Haagan perhefutis talvi 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "1–3-vuotiaat, jotka osaavat jo kävellä",
    "parent_child": "yes",
    "venue_name": "Haagan ylä-aste",
    "address": "Vanha Viertotie 23",
    "district": "Haaga",
    "weekday": "lauantai",
    "start_time": "09:00",
    "end_time": "09:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-17",
    "end_date": "2026-12-12",
    "sessions_count": 8,
    "price_eur": 79.0,
    "price_basis": "8 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet ja juomapullo; vakuutus ja HJK-tuote sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "source_quote": "Haagan perhefutis talvi 2026 - 17.10. - 12.12.2026; harjoituksia yhteensä 8; Haagan ylä-aste; kurssinhinta 79€; jäsenmaksu 30 €, mikäli ei vielä maksettu.",
    "activity_id": "hel-2026-0107",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 109.0,
    "price_per_session_eur": 13.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-17",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-10-17",
    "season_end_date": "2026-12-12",
    "birth_year_min": 2024,
    "birth_year_max": 2026,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 79,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_01 notes-kentän lykättyjen listalta (HJK perhefutis talvi 2026). Sivun ikäteksti viittaa vielä kauteen 2025–2026 ('2024–2025 syntyneet'); ikäraja 1–3 v otettu yleislauseesta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/hjk_perhefutis_444adf31a99d.html",
      "capture_sha256": "444adf31a99d8e39d400dc2b9f92405eced38033a1a3e0db28067175cb40dee2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 44.69,
    "monthly_cost_basis": "79.0 € / course jaettuna 1.87 kuukaudelle (2026-10-17–2026-12-12, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Jätkäsaaren perhefutis talvi 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat, jotka osaavat jo kävellä",
    "parent_child": "yes",
    "venue_name": "Jätkäsaaren liikuntahallissa",
    "address": "Hyväntoivonkatu",
    "district": "Jätkäsaari",
    "weekday": "lauantai",
    "start_time": "09:00",
    "end_time": "09:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-17",
    "end_date": "2026-12-12",
    "sessions_count": 8,
    "price_eur": 79.0,
    "price_basis": "8 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet ja juomapullo; vakuutus ja HJK-tuote sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "source_quote": "Jätkäsaaren perhefutis talvi 2026 - 17.10. - 12.12.2026; harjoituksia yhteensä 8; Jätkäsaaren liikuntahallissa; kurssinhinta 79€; jäsenmaksu 30 €, mikäli ei vielä maksettu.",
    "activity_id": "hel-2026-0108",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 109.0,
    "price_per_session_eur": 13.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-17",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-10-17",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 79,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_01 notes-kentän lykättyjen listalta (HJK perhefutis talvi 2026). Sivun ikäteksti viittaa vielä kauteen 2025–2026 ('2024–2025 syntyneet'); ikäraja 1–3 v otettu yleislauseesta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/hjk_perhefutis_444adf31a99d.html",
      "capture_sha256": "444adf31a99d8e39d400dc2b9f92405eced38033a1a3e0db28067175cb40dee2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 44.69,
    "monthly_cost_basis": "79.0 € / course jaettuna 1.87 kuukaudelle (2026-10-17–2026-12-12, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Jätkäsaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Lauttasaaren perhefutis talvi 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat, jotka osaavat jo kävellä",
    "parent_child": "yes",
    "venue_name": "Lauttasaaren ala-asteella",
    "address": "Myllykalliontie 3",
    "district": "Lauttasaari",
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-18",
    "end_date": "2026-12-13",
    "sessions_count": 8,
    "price_eur": 79.0,
    "price_basis": "8 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet ja juomapullo; vakuutus ja HJK-tuote sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "source_quote": "Lauttasaaren perhefutis talvi 2026 - 18.10. - 13.12.2026; harjoituksia yhteensä 8; Lauttasaaren ala-asteella; kurssinhinta 79€; jäsenmaksu 30 €, mikäli ei vielä maksettu.",
    "activity_id": "hel-2026-0109",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 109.0,
    "price_per_session_eur": 13.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-18",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-10-18",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 79,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_01 notes-kentän lykättyjen listalta (HJK perhefutis talvi 2026). Sivun ikäteksti viittaa vielä kauteen 2025–2026 ('2024–2025 syntyneet'); ikäraja 1–3 v otettu yleislauseesta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/hjk_perhefutis_444adf31a99d.html",
      "capture_sha256": "444adf31a99d8e39d400dc2b9f92405eced38033a1a3e0db28067175cb40dee2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 44.69,
    "monthly_cost_basis": "79.0 € / course jaettuna 1.87 kuukaudelle (2026-10-18–2026-12-13, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Malmin perhefutis talvi 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat, jotka osaavat jo kävellä",
    "parent_child": "yes",
    "venue_name": "Malmin peruskoulu",
    "address": "Talvelantie 1",
    "district": "Malmi",
    "weekday": "lauantai",
    "start_time": "09:00",
    "end_time": "09:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-10",
    "end_date": "2026-12-05",
    "sessions_count": 8,
    "price_eur": 79.0,
    "price_basis": "8 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet ja juomapullo; vakuutus ja HJK-tuote sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "source_quote": "Malmi perhefutis talvi 2026 - 10.10. - 5.12.2026; Harjoituksia yhteensä 8; Malmin peruskoulu; Kurssinhinta 79€; Lisäksi HJK ry:n jäsenmaksu vuodelle 2026 (30 euroa).",
    "activity_id": "hel-2026-0110",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 109.0,
    "price_per_session_eur": 13.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://hjk.myclub.fi/flow/courses/11476683",
    "billing_period": "course",
    "price_period_start": "2026-10-10",
    "price_period_end": "2026-12-05",
    "season_start_date": "2026-10-10",
    "season_end_date": "2026-12-05",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://hjk.myclub.fi/flow/courses/11476683",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 79,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_01 notes-kentän lykättyjen listalta (HJK perhefutis talvi 2026). Sivun ikäteksti viittaa vielä kauteen 2025–2026 ('2024–2025 syntyneet'); ikäraja 1–3 v otettu yleislauseesta. Hinta, kerrat ja alkupäivä myClub-ilmoittautumisesta (https://hjk.myclub.fi/flow/courses/11476683, 21.9.2026); HJK:n perhefutis-sivu ilmoittaa yhä 'Malmin perhefutis talvi 2026 - 17.10. - 5.12.2026', 'Harjoituksia yhteensä 7', 'Kurssinhinta 69€' (Ilpon sääntö 21.9.2026: virallisten lähteiden ristiriidassa ilmoittautumis-/maksusivu voittaa).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/hjk_perhefutis_444adf31a99d.html",
      "capture_sha256": "444adf31a99d8e39d400dc2b9f92405eced38033a1a3e0db28067175cb40dee2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 44.69,
    "monthly_cost_basis": "79.0 € / course jaettuna 1.87 kuukaudelle (2026-10-10–2026-12-05, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Malminkartanon perhefutis talvi 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat, jotka osaavat jo kävellä",
    "parent_child": "yes",
    "venue_name": "Malminkartanon ala-asteella",
    "address": "Puustellintie 6",
    "district": "Malminkartano",
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-17",
    "end_date": "2026-12-12",
    "sessions_count": 8,
    "price_eur": 79.0,
    "price_basis": "8 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet ja juomapullo; vakuutus ja HJK-tuote sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "source_quote": "Malminkartanon perhefutis talvi 2026 - 17.10. - 12.12.2026; harjoituksia yhteensä 8; Malminkartanon ala-asteella; kurssinhinta 79€; jäsenmaksu 30 €, mikäli ei vielä maksettu.",
    "activity_id": "hel-2026-0111",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 109.0,
    "price_per_session_eur": 13.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-17",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-10-17",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 79,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_01 notes-kentän lykättyjen listalta (HJK perhefutis talvi 2026). Sivun ikäteksti viittaa vielä kauteen 2025–2026 ('2024–2025 syntyneet'); ikäraja 1–3 v otettu yleislauseesta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/hjk_perhefutis_444adf31a99d.html",
      "capture_sha256": "444adf31a99d8e39d400dc2b9f92405eced38033a1a3e0db28067175cb40dee2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 44.69,
    "monthly_cost_basis": "79.0 € / course jaettuna 1.87 kuukaudelle (2026-10-17–2026-12-12, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Malminkartano",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Meilahden perhefutis talvi 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat, jotka osaavat jo kävellä",
    "parent_child": "yes",
    "venue_name": "Meilahden ylä-asteella",
    "address": "Kuusitie 12",
    "district": "Meilahti",
    "weekday": "lauantai",
    "start_time": "09:00",
    "end_time": "09:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-03",
    "end_date": "2026-12-12",
    "sessions_count": 10,
    "price_eur": 99.0,
    "price_basis": "10 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet ja juomapullo; vakuutus ja HJK-tuote sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "source_quote": "Meilahden perhefutis talvi 2026 - 3.10. - 12.12.2026; harjoituksia yhteensä 10; Meilahden ylä-asteella; kurssinhinta 99€; jäsenmaksu 30 €, mikäli ei vielä maksettu.",
    "activity_id": "hel-2026-0112",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 12.9,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-03",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-10-03",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_01 notes-kentän lykättyjen listalta (HJK perhefutis talvi 2026). Sivun ikäteksti viittaa vielä kauteen 2025–2026 ('2024–2025 syntyneet'); ikäraja 1–3 v otettu yleislauseesta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/hjk_perhefutis_444adf31a99d.html",
      "capture_sha256": "444adf31a99d8e39d400dc2b9f92405eced38033a1a3e0db28067175cb40dee2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 44.94,
    "monthly_cost_basis": "99.0 € / course jaettuna 2.33 kuukaudelle (2026-10-03–2026-12-12, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Meilahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Laajasalo perhefutis loppukesä 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat, jotka osaavat jo kävellä",
    "parent_child": "yes",
    "venue_name": "Laajasalon liikuntapuistossa",
    "address": "Sarvastonkaari 23, 00840 Helsinki",
    "district": "Laajasalo",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "loppukesä 2026",
    "start_date": "2026-08-03",
    "end_date": "2026-10-05",
    "sessions_count": 10,
    "price_eur": 99.0,
    "price_basis": "10 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet ja juomapullo; vakuutus ja HJK-tuote sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "source_quote": "Laajasalo perhefutis loppukesä 2026 - 3.8. - 5.10.2026; harjoituksia yhteensä 10; Laajasalon liikuntapuistossa; kurssinhinta 99€; jäsenmaksu 30 €, mikäli ei vielä maksettu.",
    "activity_id": "hel-2026-0113",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 12.9,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-03",
    "price_period_end": "2026-10-05",
    "season_start_date": "2026-08-03",
    "season_end_date": "2026-10-05",
    "birth_year_min": 2024,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "kurssi alkanut 3.8.2026; päättyy 5.10.2026 (lähde ei kerro ilmoittautumisen tilaa → availability unknown). Kerätty erän batch_2026-09-21_01 deferred-listalta. Sivun ikäteksti viittaa vielä kauteen 2025–2026 ('2024–2025 syntyneet'); ikäraja 1–3 v otettu yleislauseesta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/hjk_perhefutis_444adf31a99d.html",
      "capture_sha256": "444adf31a99d8e39d400dc2b9f92405eced38033a1a3e0db28067175cb40dee2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 49.58,
    "monthly_cost_basis": "99.0 € / course jaettuna 2.10 kuukaudelle (2026-08-03–2026-10-05, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Laajasalo",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Malmi perhefutis loppukesä 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat, jotka osaavat jo kävellä",
    "parent_child": "yes",
    "venue_name": "Ala-Malmin urheilupuisto",
    "address": "Lallintie 12, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "loppukesä 2026",
    "start_date": "2026-08-06",
    "end_date": "2026-10-08",
    "sessions_count": 10,
    "price_eur": 99.0,
    "price_basis": "10 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet ja juomapullo; vakuutus ja HJK-tuote sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "source_quote": "Malmi perhefutis loppukesä 2026 - 6.8. - 8.10.2026; harjoituksia yhteensä 10; Ala-Malmin urheilupuisto; kurssinhinta 99€; jäsenmaksu 30 €, mikäli ei vielä maksettu.",
    "activity_id": "hel-2026-0114",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 12.9,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-06",
    "price_period_end": "2026-10-08",
    "season_start_date": "2026-08-06",
    "season_end_date": "2026-10-08",
    "birth_year_min": 2024,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "kurssi alkanut 6.8.2026; päättyy 8.10.2026 (lähde ei kerro ilmoittautumisen tilaa → availability unknown). Kerätty erän batch_2026-09-21_01 deferred-listalta. Sivun ikäteksti viittaa vielä kauteen 2025–2026 ('2024–2025 syntyneet'); ikäraja 1–3 v otettu yleislauseesta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/hjk_perhefutis_444adf31a99d.html",
      "capture_sha256": "444adf31a99d8e39d400dc2b9f92405eced38033a1a3e0db28067175cb40dee2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 49.58,
    "monthly_cost_basis": "99.0 € / course jaettuna 2.10 kuukaudelle (2026-08-06–2026-10-08, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Malminkartano perhefutis loppukesä 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat, jotka osaavat jo kävellä",
    "parent_child": "yes",
    "venue_name": "Malminkartanon tekonurmella",
    "address": "Naapuripellontie 12, 00410 Helsinki",
    "district": "Malminkartano",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "loppukesä 2026",
    "start_date": "2026-08-03",
    "end_date": "2026-10-05",
    "sessions_count": 10,
    "price_eur": 99.0,
    "price_basis": "10 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet ja juomapullo; vakuutus ja HJK-tuote sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "source_quote": "Malminkartano perhefutis loppukesä 2026 - 3.8. - 5.10.2026; harjoituksia yhteensä 10; Malminkartanon tekonurmella; kurssinhinta 99€; jäsenmaksu 30 €, mikäli ei vielä maksettu.",
    "activity_id": "hel-2026-0115",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 12.9,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-03",
    "price_period_end": "2026-10-05",
    "season_start_date": "2026-08-03",
    "season_end_date": "2026-10-05",
    "birth_year_min": 2024,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "kurssi alkanut 3.8.2026; päättyy 5.10.2026 (lähde ei kerro ilmoittautumisen tilaa → availability unknown). Kerätty erän batch_2026-09-21_01 deferred-listalta. Sivun ikäteksti viittaa vielä kauteen 2025–2026 ('2024–2025 syntyneet'); ikäraja 1–3 v otettu yleislauseesta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/hjk_perhefutis_444adf31a99d.html",
      "capture_sha256": "444adf31a99d8e39d400dc2b9f92405eced38033a1a3e0db28067175cb40dee2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 49.58,
    "monthly_cost_basis": "99.0 € / course jaettuna 2.10 kuukaudelle (2026-08-03–2026-10-05, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Malminkartano",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Munkka perhefutis loppukesä 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat, jotka osaavat jo kävellä",
    "parent_child": "yes",
    "venue_name": "Kadetintienkenttä",
    "address": "Kadetintie 2, 00330 Helsinki",
    "district": "Munkkiniemi",
    "weekday": "sunnuntai",
    "start_time": "16:00",
    "end_time": "16:45",
    "season": "loppukesä 2026",
    "start_date": "2026-08-09",
    "end_date": "2026-10-18",
    "sessions_count": 10,
    "price_eur": 99.0,
    "price_basis": "10 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet ja juomapullo; vakuutus ja HJK-tuote sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "source_quote": "Munkka perhefutis loppukesä 2026 - 9.8. - 18.10.2026; harjoituksia yhteensä 10; Kadetintienkenttä; kurssinhinta 99€; jäsenmaksu 30 €, mikäli ei vielä maksettu.",
    "activity_id": "hel-2026-0116",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 12.9,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-09",
    "price_period_end": "2026-10-18",
    "season_start_date": "2026-08-09",
    "season_end_date": "2026-10-18",
    "birth_year_min": 2024,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "kurssi alkanut 9.8.2026; päättyy 18.10.2026 (lähde ei kerro ilmoittautumisen tilaa → availability unknown). Kerätty erän batch_2026-09-21_01 deferred-listalta. Sivun ikäteksti viittaa vielä kauteen 2025–2026 ('2024–2025 syntyneet'); ikäraja 1–3 v otettu yleislauseesta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/hjk_perhefutis_444adf31a99d.html",
      "capture_sha256": "444adf31a99d8e39d400dc2b9f92405eced38033a1a3e0db28067175cb40dee2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 44.94,
    "monthly_cost_basis": "99.0 € / course jaettuna 2.33 kuukaudelle (2026-08-09–2026-10-18, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Munkkiniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Pajamäki perhefutis loppukesä 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat, jotka osaavat jo kävellä",
    "parent_child": "yes",
    "venue_name": "Pajamäen kenttä 2",
    "address": "Takkatie 36, 00360 Helsinki",
    "district": "Pajamäki",
    "weekday": "sunnuntai",
    "start_time": "16:00",
    "end_time": "16:45",
    "season": "loppukesä 2026",
    "start_date": "2026-08-09",
    "end_date": "2026-10-11",
    "sessions_count": 10,
    "price_eur": 99.0,
    "price_basis": "10 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet ja juomapullo; vakuutus ja HJK-tuote sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "source_quote": "Pajamäki perhefutis loppukesä 2026 - 9.8. - 11.10.2026; harjoituksia yhteensä 10; Pajamäen kenttä 2; kurssinhinta 99€; jäsenmaksu 30 €, mikäli ei vielä maksettu.",
    "activity_id": "hel-2026-0117",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 12.9,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-09",
    "price_period_end": "2026-10-11",
    "season_start_date": "2026-08-09",
    "season_end_date": "2026-10-11",
    "birth_year_min": 2024,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "kurssi alkanut 9.8.2026; päättyy 11.10.2026 (lähde ei kerro ilmoittautumisen tilaa → availability unknown). Kerätty erän batch_2026-09-21_01 deferred-listalta. Sivun ikäteksti viittaa vielä kauteen 2025–2026 ('2024–2025 syntyneet'); ikäraja 1–3 v otettu yleislauseesta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/hjk_perhefutis_444adf31a99d.html",
      "capture_sha256": "444adf31a99d8e39d400dc2b9f92405eced38033a1a3e0db28067175cb40dee2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 49.58,
    "monthly_cost_basis": "99.0 € / course jaettuna 2.10 kuukaudelle (2026-08-09–2026-10-11, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pajamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Vapaa Tanssikoulu (Laajasalon opisto)",
    "group_name": "Lastentanssi 5–6 v. LT4505 (ma 17:30)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6 v.",
    "parent_child": "no",
    "venue_name": "Vapaa Tanssikoulu, Sali 2",
    "address": "Mekaanikonkatu 17",
    "district": "Herttoniemi",
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026 (lukuvuosi 2026–2027)",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 230.0,
    "price_basis": "Syyslukukauden oppilasmaksu, 45 min tunti 1 krt/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vapaatanssikoulu.fi/wp-content/uploads/2026/08/Vata_lukuja%CC%88rjestys-2026-2027.pdf",
    "source_quote": "Lastentanssi 5–6 v. 17.30–18.15 LT4505; lukukausimaksu 45 min 1 krt/vko 230 €; syyskaudella opetuskertoja on 16.",
    "activity_id": "hel-2026-0118",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 230.0,
    "price_per_session_eur": 14.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://vapaatanssikoulu.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vapaatanssikoulu.fi/tunneille-ilmoittautuminen/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 230,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Lukukausimaksu 45 min / 1 krt vko."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_03 deferred-listalta. Kurssi alkanut viikolla 34 (syyskausi alkoi 17.8.2026). Ilmoittaudutaan koko lukuvuodeksi, laskutus lukukausittain. Lukujärjestys 13.08.2026, 'Muutokset mahdollisia!'. Perhealennus 10 % muista perheenjäsenistä. PDF ei kerro ryhmäkohtaista saatavuutta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-022",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_06/vata_lukujarjestys_0547bc806c7d.pdf",
      "capture_sha256": "0547bc806c7d2780bc9f9b9173ab4d6c69485775a7cff0dbe85a79a0bbcd884b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "230.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Vapaa Tanssikoulu (Laajasalon opisto)",
    "group_name": "Lastentanssi 5–6 v. LT4516 (ke 16:45)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6 v.",
    "parent_child": "no",
    "venue_name": "Vapaa Tanssikoulu, Sali 1",
    "address": "Mekaanikonkatu 17",
    "district": "Herttoniemi",
    "weekday": "keskiviikko",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026 (lukuvuosi 2026–2027)",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 230.0,
    "price_basis": "Syyslukukauden oppilasmaksu, 45 min tunti 1 krt/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vapaatanssikoulu.fi/wp-content/uploads/2026/08/Vata_lukuja%CC%88rjestys-2026-2027.pdf",
    "source_quote": "Lastentanssi 5–6 v. 16.45–17.30 LT4516; lukukausimaksu 45 min 1 krt/vko 230 €; syyskaudella opetuskertoja on 16.",
    "activity_id": "hel-2026-0119",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 230.0,
    "price_per_session_eur": 14.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://vapaatanssikoulu.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vapaatanssikoulu.fi/tunneille-ilmoittautuminen/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 230,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Lukukausimaksu 45 min / 1 krt vko."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_03 deferred-listalta. Kurssi alkanut viikolla 34 (syyskausi alkoi 17.8.2026). Ilmoittaudutaan koko lukuvuodeksi, laskutus lukukausittain. Lukujärjestys 13.08.2026, 'Muutokset mahdollisia!'. Perhealennus 10 % muista perheenjäsenistä. PDF ei kerro ryhmäkohtaista saatavuutta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-023",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_06/vata_lukujarjestys_0547bc806c7d.pdf",
      "capture_sha256": "0547bc806c7d2780bc9f9b9173ab4d6c69485775a7cff0dbe85a79a0bbcd884b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "230.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Vapaa Tanssikoulu (Laajasalon opisto)",
    "group_name": "Lastentanssi 5–6 v. LT4525 (ke 17:30)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6 v.",
    "parent_child": "no",
    "venue_name": "Myllykylän kylätalo",
    "address": "Ryynimyllynkatu 1",
    "district": "Myllypuro",
    "weekday": "keskiviikko",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026 (lukuvuosi 2026–2027)",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 230.0,
    "price_basis": "Syyslukukauden oppilasmaksu, 45 min tunti 1 krt/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vapaatanssikoulu.fi/wp-content/uploads/2026/08/Vata_lukuja%CC%88rjestys-2026-2027.pdf",
    "source_quote": "Lastentanssi 5–6 v. 17.30–18.15 LT4525; lukukausimaksu 45 min 1 krt/vko 230 €; syyskaudella opetuskertoja on 16.",
    "activity_id": "hel-2026-0120",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 230.0,
    "price_per_session_eur": 14.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://vapaatanssikoulu.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vapaatanssikoulu.fi/tunneille-ilmoittautuminen/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 230,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Lukukausimaksu 45 min / 1 krt vko."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_03 deferred-listalta. Kurssi alkanut viikolla 34 (syyskausi alkoi 17.8.2026). Ilmoittaudutaan koko lukuvuodeksi, laskutus lukukausittain. Lukujärjestys 13.08.2026, 'Muutokset mahdollisia!'. Perhealennus 10 % muista perheenjäsenistä. PDF ei kerro ryhmäkohtaista saatavuutta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-024",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_06/vata_lukujarjestys_0547bc806c7d.pdf",
      "capture_sha256": "0547bc806c7d2780bc9f9b9173ab4d6c69485775a7cff0dbe85a79a0bbcd884b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "230.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Vapaa Tanssikoulu (Laajasalon opisto)",
    "group_name": "Lastentanssi 4–5 v. LT4521 (ke 17:15)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5 v.",
    "parent_child": "no",
    "venue_name": "Vapaa Tanssikoulu, Sali 2",
    "address": "Mekaanikonkatu 17",
    "district": "Herttoniemi",
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026 (lukuvuosi 2026–2027)",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 230.0,
    "price_basis": "Syyslukukauden oppilasmaksu, 45 min tunti 1 krt/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vapaatanssikoulu.fi/wp-content/uploads/2026/08/Vata_lukuja%CC%88rjestys-2026-2027.pdf",
    "source_quote": "Lastentanssi 4–5 v. 17.15–18.00 LT4521; lukukausimaksu 45 min 1 krt/vko 230 €; syyskaudella opetuskertoja on 16.",
    "activity_id": "hel-2026-0121",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 230.0,
    "price_per_session_eur": 14.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://vapaatanssikoulu.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vapaatanssikoulu.fi/tunneille-ilmoittautuminen/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 230,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Lukukausimaksu 45 min / 1 krt vko."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_03 deferred-listalta. Kurssi alkanut viikolla 34 (syyskausi alkoi 17.8.2026). Ilmoittaudutaan koko lukuvuodeksi, laskutus lukukausittain. Lukujärjestys 13.08.2026, 'Muutokset mahdollisia!'. Perhealennus 10 % muista perheenjäsenistä. PDF ei kerro ryhmäkohtaista saatavuutta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-025",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_06/vata_lukujarjestys_0547bc806c7d.pdf",
      "capture_sha256": "0547bc806c7d2780bc9f9b9173ab4d6c69485775a7cff0dbe85a79a0bbcd884b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "230.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Vapaa Tanssikoulu (Laajasalon opisto)",
    "group_name": "Tanssin perusteet 6–7 v. TA4517 (ke 17:30)",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6–7 v.",
    "parent_child": "no",
    "venue_name": "Vapaa Tanssikoulu, Sali 1",
    "address": "Mekaanikonkatu 17",
    "district": "Herttoniemi",
    "weekday": "keskiviikko",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026 (lukuvuosi 2026–2027)",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 230.0,
    "price_basis": "Syyslukukauden oppilasmaksu, 45 min tunti 1 krt/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vapaatanssikoulu.fi/wp-content/uploads/2026/08/Vata_lukuja%CC%88rjestys-2026-2027.pdf",
    "source_quote": "Tanssin perusteet 6–7 v. 17.30–18.15 TA4517; lukukausimaksu 45 min 1 krt/vko 230 €; syyskaudella opetuskertoja on 16.",
    "activity_id": "hel-2026-0122",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 230.0,
    "price_per_session_eur": 14.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://vapaatanssikoulu.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vapaatanssikoulu.fi/tunneille-ilmoittautuminen/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 230,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Lukukausimaksu 45 min / 1 krt vko."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_03 deferred-listalta. Kurssi alkanut viikolla 34 (syyskausi alkoi 17.8.2026). Ilmoittaudutaan koko lukuvuodeksi, laskutus lukukausittain. Lukujärjestys 13.08.2026, 'Muutokset mahdollisia!'. Perhealennus 10 % muista perheenjäsenistä. PDF ei kerro ryhmäkohtaista saatavuutta. Sopii vain 6-vuotiaille (ikäraja 6–7 v; rajaus alle kouluikäiset 0–6 v) – mukana Ilpon päätöksellä 21.9.2026.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-027",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_06/vata_lukujarjestys_0547bc806c7d.pdf",
      "capture_sha256": "0547bc806c7d2780bc9f9b9173ab4d6c69485775a7cff0dbe85a79a0bbcd884b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "230.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Vapaa Tanssikoulu (Laajasalon opisto)",
    "group_name": "Tanssin perusteet 6–7 v. TA6026 (ke 18:15)",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6–7 v.",
    "parent_child": "no",
    "venue_name": "Myllykylän kylätalo",
    "address": "Ryynimyllynkatu 1",
    "district": "Myllypuro",
    "weekday": "keskiviikko",
    "start_time": "18:15",
    "end_time": "19:15",
    "season": "syksy 2026 (lukuvuosi 2026–2027)",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 250.0,
    "price_basis": "Syyslukukauden oppilasmaksu, 60 min tunti 1 krt/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vapaatanssikoulu.fi/wp-content/uploads/2026/08/Vata_lukuja%CC%88rjestys-2026-2027.pdf",
    "source_quote": "Tanssin perusteet 6–7 v. 18.15–19.15 TA6026; lukukausimaksu 60 min 1 krt/vko 250 €; syyskaudella opetuskertoja on 16.",
    "activity_id": "hel-2026-0123",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 250.0,
    "price_per_session_eur": 15.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://vapaatanssikoulu.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vapaatanssikoulu.fi/tunneille-ilmoittautuminen/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 250,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Lukukausimaksu 60 min / 1 krt vko."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_03 deferred-listalta. Kurssi alkanut viikolla 34 (syyskausi alkoi 17.8.2026). Ilmoittaudutaan koko lukuvuodeksi, laskutus lukukausittain. Lukujärjestys 13.08.2026, 'Muutokset mahdollisia!'. Perhealennus 10 % muista perheenjäsenistä. PDF ei kerro ryhmäkohtaista saatavuutta. Sopii vain 6-vuotiaille (ikäraja 6–7 v; rajaus alle kouluikäiset 0–6 v) – mukana Ilpon päätöksellä 21.9.2026.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-028",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_06/vata_lukujarjestys_0547bc806c7d.pdf",
      "capture_sha256": "0547bc806c7d2780bc9f9b9173ab4d6c69485775a7cff0dbe85a79a0bbcd884b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T12:00:36+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 63.94,
    "monthly_cost_basis": "250.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapanilan Erä ry",
    "group_name": "Prinsessavoimistelu 3-4-vuotiaille KESKIVIIKKO",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Hiidenkiven koulu (Rönsyrölli)",
    "address": "Rajatie 7, 00730 Helsinki",
    "district": "Tapanila",
    "weekday": "keskiviikko",
    "start_time": "18:15",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 125.0,
    "price_basis": "Prinsessavoimistelu S2026",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10708718",
    "source_quote": "Prinsessavoimistelu 3-4-vuotiaille KESKIVIIKKO | 2.9.2026 18:15 - 9.12.2026 | Prinsessavoimistelu S2026 125,00 € *",
    "activity_id": "hel-2026-0124",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 139.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 125,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10708718 ('myClub kuvaus: 'Kausimaksun lisäksi maksettavaksi tulee Tapanila Erä ry:n vuoden 2026 jäsenmaksu'; hinta 'Prinsessavoimistelu S2026'; hinnasto https://www.tapanilaneravoimistelu.fi/harrastetoiminta/hinnat/: 'Hinnat syyskausi 2026 … Satuvoimistelu (prinsessa- ja perhevoimistelu) 125€'') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10708718 ('osoite 'Rajatie 7, 00730 Helsinki' (00730 = Tapanila, myclub.DISTRICT_POSTCODES)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10708718_cdf126893084.html",
      "capture_sha256": "cdf1268930843cc0ce5648916013a965bb6006e5740a4e9e0e1baadc3c078b7e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.43,
    "monthly_cost_basis": "125.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapanilan Erä ry",
    "group_name": "Prinsessavoimistelu 3-4-vuotiaille TIISTAI A",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Hiidenkiven koulu (Rönsyrölli)",
    "address": "Rajatie 7, 00730 Helsinki",
    "district": "Tapanila",
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 125.0,
    "price_basis": "Prinsessavoimistelu S2026",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10708722",
    "source_quote": "Prinsessavoimistelu 3-4-vuotiaille TIISTAI A | 1.9.2026 17:30 - 8.12.2026 | Prinsessavoimistelu S2026 125,00 € *",
    "activity_id": "hel-2026-0125",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 139.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 125,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10708722 ('myClub kuvaus: 'Kausimaksun lisäksi maksettavaksi tulee Tapanila Erä ry:n vuoden 2026 jäsenmaksu'; hinta 'Prinsessavoimistelu S2026'; hinnasto https://www.tapanilaneravoimistelu.fi/harrastetoiminta/hinnat/: 'Hinnat syyskausi 2026 … Satuvoimistelu (prinsessa- ja perhevoimistelu) 125€'') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10708722 ('osoite 'Rajatie 7, 00730 Helsinki' (00730 = Tapanila, myclub.DISTRICT_POSTCODES)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10708722_1d2dccba2bc8.html",
      "capture_sha256": "1d2dccba2bc812451a4956c66b38e7e3d12a56eaaf26013401ff0c9333623a6d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.43,
    "monthly_cost_basis": "125.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapanilan Erä ry",
    "group_name": "Prinsessavoimistelu 3-4-vuotiaille TIISTAI B",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Hiidenkiven koulu (Rönsyrölli)",
    "address": "Rajatie 7, 00730 Helsinki",
    "district": "Tapanila",
    "weekday": "tiistai",
    "start_time": "18:15",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 125.0,
    "price_basis": "Prinsessavoimistelu S2026",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10708721",
    "source_quote": "Prinsessavoimistelu 3-4-vuotiaille TIISTAI B | 1.9.2026 18:15 - 8.12.2026 | Prinsessavoimistelu S2026 125,00 € *",
    "activity_id": "hel-2026-0126",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 139.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 125,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10708721 ('myClub kuvaus: 'Kausimaksun lisäksi maksettavaksi tulee Tapanila Erä ry:n vuoden 2026 jäsenmaksu'; hinta 'Prinsessavoimistelu S2026'; hinnasto https://www.tapanilaneravoimistelu.fi/harrastetoiminta/hinnat/: 'Hinnat syyskausi 2026 … Satuvoimistelu (prinsessa- ja perhevoimistelu) 125€'') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10708721 ('osoite 'Rajatie 7, 00730 Helsinki' (00730 = Tapanila, myclub.DISTRICT_POSTCODES)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-015",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10708721_0199c2963ca5.html",
      "capture_sha256": "0199c2963ca575a3fa7df3886d1ce93175e59806091ce09782b9dd8275454091",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.43,
    "monthly_cost_basis": "125.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapanilan Erä ry",
    "group_name": "Prinsessavoimistelu 3-4-vuotiaille TORSTAI A",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Hiidenkiven koulu (Rönsyrölli)",
    "address": "Rajatie 7, 00730 Helsinki",
    "district": "Tapanila",
    "weekday": "torstai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 125.0,
    "price_basis": "Prinsessavoimistelu S2026",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10708720",
    "source_quote": "Prinsessavoimistelu 3-4-vuotiaille TORSTAI A | 3.9.2026 17:30 - 10.12.2026 | Prinsessavoimistelu S2026 125,00 € *",
    "activity_id": "hel-2026-0127",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 139.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 125,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10708720 ('myClub kuvaus: 'Kausimaksun lisäksi maksettavaksi tulee Tapanila Erä ry:n vuoden 2026 jäsenmaksu'; hinta 'Prinsessavoimistelu S2026'; hinnasto https://www.tapanilaneravoimistelu.fi/harrastetoiminta/hinnat/: 'Hinnat syyskausi 2026 … Satuvoimistelu (prinsessa- ja perhevoimistelu) 125€'') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10708720 ('osoite 'Rajatie 7, 00730 Helsinki' (00730 = Tapanila, myclub.DISTRICT_POSTCODES)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-016",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10708720_7e400cb9ed85.html",
      "capture_sha256": "7e400cb9ed85190925199879a88c9ba7e23a894409eebbf0b49ca21e62a94f2e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.43,
    "monthly_cost_basis": "125.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapanilan Erä ry",
    "group_name": "Voimistelukoulu Minit 5-6-vuotiaille MAANANTAI",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Hiidenkiven koulu (Rönsyrölli)",
    "address": "Rajatie 7, 00730 Helsinki",
    "district": "Tapanila",
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Voimistelukoulu Minit S2026",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10727798",
    "source_quote": "Voimistelukoulu Minit 5-6-vuotiaille MAANANTAI | 31.8.2026 18:00 - 7.12.2026 | Voimistelukoulu Minit S2026 135,00 € *",
    "activity_id": "hel-2026-0128",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 149.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10727798 ('myClub kuvaus: 'Kausimaksun lisäksi maksettavaksi tulee Tapanila Erä ry:n vuoden 2026 jäsenmaksu'; hinta 'Voimistelukoulu Minit S2026'; hinnasto https://www.tapanilaneravoimistelu.fi/harrastetoiminta/hinnat/: 'Hinnat syyskausi 2026 … Voimistelukoulut 135€'') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10727798 ('osoite 'Rajatie 7, 00730 Helsinki' (00730 = Tapanila, myclub.DISTRICT_POSTCODES)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-017",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10727798_5c5af2b62a2e.html",
      "capture_sha256": "5c5af2b62a2e441e37c8fcce7cf0f37c0bfc622e441c898fe7da49667621fb59",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 41.51,
    "monthly_cost_basis": "135.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapanilan Erä ry",
    "group_name": "Voimistelukoulu Minit 5-6-vuotiaille TIISTAI",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Säveltäjänpuiston liikuntasali",
    "address": "Erkki Melartin tie 2, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Voimistelukoulu Minit S2026",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10727799",
    "source_quote": "Voimistelukoulu Minit 5-6-vuotiaille TIISTAI | 1.9.2026 17:15 - 8.12.2026 | Voimistelukoulu Minit S2026 135,00 € *",
    "activity_id": "hel-2026-0129",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 149.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10727799 ('myClub kuvaus: 'Kausimaksun lisäksi maksettavaksi tulee Tapanila Erä ry:n vuoden 2026 jäsenmaksu'; hinta 'Voimistelukoulu Minit S2026'; hinnasto https://www.tapanilaneravoimistelu.fi/harrastetoiminta/hinnat/: 'Hinnat syyskausi 2026 … Voimistelukoulut 135€'')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-018",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10727799_79c3b9ba7f80.html",
      "capture_sha256": "79c3b9ba7f80fac2e315c4ad75604e3756058e41d862d8d0d076f806a6a31520",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 41.51,
    "monthly_cost_basis": "135.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pukinmäki",
    "district_basis": "geokoodattu osoite -> sub_district 'Pukinmäki' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapanilan Erä ry",
    "group_name": "Voimistelukoulu Minit 5-6-vuotiaille TORSTAI",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Tapanilan ala-aste",
    "address": "Veljestenpiha 2, 00730 Helsinki",
    "district": "Tapanila",
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Voimistelukoulu Minit S2026",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10727802",
    "source_quote": "Voimistelukoulu Minit 5-6-vuotiaille TORSTAI | 3.9.2026 18:00 - 10.12.2026 | Voimistelukoulu Minit S2026 135,00 € *",
    "activity_id": "hel-2026-0130",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 149.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10727802 ('myClub kuvaus: 'Kausimaksun lisäksi maksettavaksi tulee Tapanila Erä ry:n vuoden 2026 jäsenmaksu'; hinta 'Voimistelukoulu Minit S2026'; hinnasto https://www.tapanilaneravoimistelu.fi/harrastetoiminta/hinnat/: 'Hinnat syyskausi 2026 … Voimistelukoulut 135€'') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10727802 ('osoite 'Veljestenpiha 2, 00730 Helsinki' (00730 = Tapanila, myclub.DISTRICT_POSTCODES)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-019",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10727802_30605666c680.html",
      "capture_sha256": "30605666c680de6bf857823954c39fe693cd18599536975fb89d0686451e0ebb",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 41.51,
    "monthly_cost_basis": "135.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapanilan Erä ry",
    "group_name": "MiniNinjat 5-6-vuotiaille TIISTAI",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Säveltäjänpuiston liikuntasali",
    "address": "Erkki Melartin tie 2, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:15",
    "end_time": "19:15",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Minininjat S2026",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10727856",
    "source_quote": "MiniNinjat 5-6-vuotiaille TIISTAI | 1.9.2026 18:15 - 8.12.2026 | Minininjat S2026 135,00 € *",
    "activity_id": "hel-2026-0131",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 149.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10727856 ('myClub kuvaus: 'Kausimaksun lisäksi maksettavaksi tulee Tapanila Erä ry:n vuoden 2026 jäsenmaksu'; hinta 'Minininjat S2026'; hinnasto https://www.tapanilaneravoimistelu.fi/harrastetoiminta/hinnat/: 'Hinnat syyskausi 2026 … Vauhdikas voimistelu (Ninjagym, temppuvoimistelu) 135€'')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-020",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10727856_1120de6267ce.html",
      "capture_sha256": "1120de6267ce8e7f5042b07f7a5ee744f57b1cc5bdefedca0d6e6dc26d7a7568",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 41.51,
    "monthly_cost_basis": "135.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pukinmäki",
    "district_basis": "geokoodattu osoite -> sub_district 'Pukinmäki' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapanilan Erä ry",
    "group_name": "MiniNinjat 5-6-vuotiaille KESKIVIIKKO",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Tapanilan ala-aste",
    "address": "Veljestenpiha 2, 00730 Helsinki",
    "district": "Tapanila",
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Minininjat S2026",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10727857",
    "source_quote": "MiniNinjat 5-6-vuotiaille KESKIVIIKKO | 2.9.2026 18:00 - 9.12.2026 | Minininjat S2026 135,00 € *",
    "activity_id": "hel-2026-0132",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 149.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10727857 ('myClub kuvaus: 'Kausimaksun lisäksi maksettavaksi tulee Tapanila Erä ry:n vuoden 2026 jäsenmaksu'; hinta 'Minininjat S2026'; hinnasto https://www.tapanilaneravoimistelu.fi/harrastetoiminta/hinnat/: 'Hinnat syyskausi 2026 … Vauhdikas voimistelu (Ninjagym, temppuvoimistelu) 135€'') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10727857 ('osoite 'Veljestenpiha 2, 00730 Helsinki' (00730 = Tapanila, myclub.DISTRICT_POSTCODES)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-021",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10727857_c5110111cb2c.html",
      "capture_sha256": "c5110111cb2cf3d4359402f4c674563761b287a447b008ddd77f72c67ea3938f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 41.51,
    "monthly_cost_basis": "135.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapanilan Erä ry",
    "group_name": "Silmut, joukkuevoimistelu 5-7-vuotiaille TIISTAI",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Maatullin peruskoulu",
    "address": "Maatullinkuja 8, 00750 Helsinki",
    "district": "Tapulikaupunki",
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Silmut S2026",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10727875",
    "source_quote": "Silmut, joukkuevoimistelu 5-7-vuotiaille TIISTAI | 1.9.2026 18:00 - 8.12.2026 | Silmut S2026 150,00 € *",
    "activity_id": "hel-2026-0133",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 164.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10727875 ('myClub kuvaus: 'Kausimaksun lisäksi maksettavaksi tulee Tapanila Erä ry:n vuoden 2026 jäsenmaksu'; hinta 'Silmut S2026'; hinnasto https://www.tapanilaneravoimistelu.fi/harrastetoiminta/hinnat/: 'Hinnat syyskausi 2026 … Silmut, joukkuevoimistelun esivalmennus 1xvko 150€'') | district derived from postcode 00750 (postcode 00750 = Tilastokeskus Paavo postal area 'Tapulikaupunki')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-022",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10727875_b9f31660e61f.html",
      "capture_sha256": "b9f31660e61f47b8183252338b6bf48fd27a479b4cc78c6f22b916527b60b77e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 46.12,
    "monthly_cost_basis": "150.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapulikaupunki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapanilan Erä ry",
    "group_name": "Silmut, joukkuevoimistelu 5-7-vuotiaille KESKIVIIKKO",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Hiidenkiven koulu (Rönsyrölli)",
    "address": "Rajatie 7, 00730 Helsinki",
    "district": "Tapanila",
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Silmut S2026",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10831444",
    "source_quote": "Silmut, joukkuevoimistelu 5-7-vuotiaille KESKIVIIKKO | 2.9.2026 17:00 - 9.12.2026 | Silmut S2026 150,00 € *",
    "activity_id": "hel-2026-0134",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 164.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10831444 ('myClub kuvaus: 'Kausimaksun lisäksi maksettavaksi tulee Tapanila Erä ry:n vuoden 2026 jäsenmaksu'; hinta 'Silmut S2026'; hinnasto https://www.tapanilaneravoimistelu.fi/harrastetoiminta/hinnat/: 'Hinnat syyskausi 2026 … Silmut, joukkuevoimistelun esivalmennus 1xvko 150€'') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10831444 ('osoite 'Rajatie 7, 00730 Helsinki' (00730 = Tapanila, myclub.DISTRICT_POSTCODES)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-023",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10831444_2b46f6b2d585.html",
      "capture_sha256": "2b46f6b2d5851b522372c89622de4b3fcedb3034581deec843a903a5ac96e8de",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 46.12,
    "monthly_cost_basis": "150.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapanilan Erä ry",
    "group_name": "Silmut, joukkuevoimistelu 5-7-vuotiaille TORSTAI",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Staffansby lågstadieskola",
    "address": "Laulurastaantie 20, 00780 Helsinki",
    "district": "Tapaninvainio",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Silmut S2026",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10727876",
    "source_quote": "Silmut, joukkuevoimistelu 5-7-vuotiaille TORSTAI | 3.9.2026 17:00 - 10.12.2026 | Silmut S2026 150,00 € *",
    "activity_id": "hel-2026-0135",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 164.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10727876 ('myClub kuvaus: 'Kausimaksun lisäksi maksettavaksi tulee Tapanila Erä ry:n vuoden 2026 jäsenmaksu'; hinta 'Silmut S2026'; hinnasto https://www.tapanilaneravoimistelu.fi/harrastetoiminta/hinnat/: 'Hinnat syyskausi 2026 … Silmut, joukkuevoimistelun esivalmennus 1xvko 150€'') | district derived from postcode 00780 (postcode 00780 = Tilastokeskus Paavo postal area 'Tapaninvainio')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-024",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10727876_8cb21c33510a.html",
      "capture_sha256": "8cb21c33510a8ab4c87eff1820944ec8a9763d053399688ddd78b4c58f07ad75",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 46.12,
    "monthly_cost_basis": "150.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapaninvainio",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Herttoniemi voimistelukoulu 5-6 v",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6 v",
    "parent_child": "unknown",
    "venue_name": "Hertsikan ala-aste",
    "address": "Hillerikuja 4, 00800 Helsinki",
    "district": "Herttoniemi",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10733556",
    "source_quote": "Herttoniemi voimistelukoulu 5-6 v | 1.9.2026 17:00 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0136",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: district from https://elise.myclub.fi/flow/courses/10733556 ('ryhmän nimi 'Herttoniemi voimistelukoulu 5-6 v' + paikka 'Hertsikan ala-aste' = kanonisen rivin hel-2026-0007 paikka (district Herttoniemi)') | kerätty erän 01 hylkäyksestä / refresh_2026-09-21_m2-liidistä (Ilpon päätös 21.9.2026) | korvaa rivin hel-2026-0007 (Ilpon päätös 22.9.2026)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-031",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_elise_10733556_8a96f011f22e.html",
      "capture_sha256": "8a96f011f22ee7d75e2a70816125f2567b768f10019ed58c2b41821e9e8281bb",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 50.24,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.38 kuukaudelle (2026-09-01–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Aikuinen-vauvatanssi 1–10 kk (26779)",
    "min_age": 0,
    "max_age": 0,
    "eligibility_text": "1–10 kk",
    "parent_child": "yes",
    "venue_name": "Karjalatalo",
    "address": "Käpylänkuja 1, 00610 Helsinki",
    "district": "Käpylä",
    "weekday": "tiistai",
    "start_time": "10:20",
    "end_time": "11:35",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-25",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 330.75,
    "price_basis": "syyslukukausi (21 vk), 75 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 21 € (75 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Aikuinen-vauvatanssi 1–10 kk: 26779 Ti 10:20 KÄP 75 min; lukukausi 75 min 1 krt/vko 330,75 €.",
    "activity_id": "hel-2026-0137",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 330.75,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 330.75,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää); sama ryhmä myös erän batch_2026-09-21_02 deferred-listalla. Kurssi alkanut 25.8.2026. Kertamäärä 19 laskettu koodilla (tuntihaun alkupäivä 25.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 75 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk). Ryhmä alkaa 25.8.2026 (lukukausi alkoi 10.8.2026); hinnasto: \"Tunnit laskutetaan ilmoittautumisen alkamispäivästä alkaen\" – mahdollista osittaista laskua ei julkaistu, rivillä listahinta. Tuntihaussa sama ryhmä myös otsikolla \"Pehmeä nykytanssi vauvan kanssa\" (Perhetunnit/Aikuiset); PDF: \"Aikuinen-vauvatanssi 1-10 kk\", tunti \"suunnattu vanhemmille\". Ikä 1–10 kk → min_age/max_age 0. | Hinta: lapsi + aikuinen (Ilpon päätös 7, 22.9.2026: hinta näytetään lapsi + aikuinen -merkinnällä; erillistä aikuisen maksua ei oleteta, price_covers.verified=false).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 65.37,
    "monthly_cost_basis": "330.75 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Käpylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Aikuinen-vauvatanssi 1–10 kk (26780)",
    "min_age": 0,
    "max_age": 0,
    "eligibility_text": "1–10 kk",
    "parent_child": "yes",
    "venue_name": "Kampin studiot",
    "address": "Salomonkatu 17/ Fredrikinkatu 46 (Autotalo), 2. kerros, 00100 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "10:20",
    "end_time": "11:35",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-26",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 330.75,
    "price_basis": "syyslukukausi (21 vk), 75 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 21 € (75 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Aikuinen-vauvatanssi 1–10 kk: 26780 Ke 10:20 KAMP1 75 min; lukukausi 75 min 1 krt/vko 330,75 €.",
    "activity_id": "hel-2026-0138",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 330.75,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 330.75,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää); sama ryhmä myös erän batch_2026-09-21_02 deferred-listalla. Kurssi alkanut 26.8.2026. Kertamäärä 18 laskettu koodilla (tuntihaun alkupäivä 26.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 75 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk). Lomapäivä 2027-01-06 osuu ryhmän päivälle: PDF s. 4 \"Tunnit hyvitetään laskussa\" – todellinen lasku voi olla listahintaa pienempi (summaa ei julkaistu). Ryhmä alkaa 26.8.2026 (lukukausi alkoi 10.8.2026); hinnasto: \"Tunnit laskutetaan ilmoittautumisen alkamispäivästä alkaen\" – mahdollista osittaista laskua ei julkaistu, rivillä listahinta. Tuntihaussa sama ryhmä myös otsikolla \"Pehmeä nykytanssi vauvan kanssa\" (Perhetunnit/Aikuiset); PDF: \"Aikuinen-vauvatanssi 1-10 kk\", tunti \"suunnattu vanhemmille\". Ikä 1–10 kk → min_age/max_age 0. | Hinta: lapsi + aikuinen (Ilpon päätös 7, 22.9.2026: hinta näytetään lapsi + aikuinen -merkinnällä; erillistä aikuisen maksua ei oleteta, price_covers.verified=false).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 65.37,
    "monthly_cost_basis": "330.75 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kamppi",
    "district_basis": "geokoodattu osoite -> sub_district 'Kamppi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssi taaperon kanssa 1–3 v. (26561)",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Karjalatalo",
    "address": "Käpylänkuja 1, 00610 Helsinki",
    "district": "Käpylä",
    "weekday": "lauantai",
    "start_time": "09:30",
    "end_time": "10:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssi taaperon kanssa 1–3 v.: 26561 La 09:30 KÄP 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0139",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää). Kurssi alkanut 15.8.2026. Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 45 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk). | Hinta: lapsi + aikuinen (Ilpon päätös 7, 22.9.2026: hinta näytetään lapsi + aikuinen -merkinnällä; erillistä aikuisen maksua ei oleteta, price_covers.verified=false).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Käpylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssi taaperon kanssa 1–3 v. (26556)",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Kasarmitori",
    "address": "Kasarmikatu 19 (torin puoli), 00130 Helsinki",
    "district": "Kaartinkaupunki",
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssi taaperon kanssa 1–3 v.: 26556 La 10:00 KAS5 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0140",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää). Kurssi alkanut 15.8.2026. Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 45 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk). | Hinta: lapsi + aikuinen (Ilpon päätös 7, 22.9.2026: hinta näytetään lapsi + aikuinen -merkinnällä; erillistä aikuisen maksua ei oleteta, price_covers.verified=false).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kaartinkaupunki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssi taaperon kanssa 1–3 v. (26560)",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Kampin studiot",
    "address": "Salomonkatu 17/ Fredrikinkatu 46 (Autotalo), 2. kerros, 00100 Helsinki",
    "district": null,
    "weekday": "perjantai",
    "start_time": "10:15",
    "end_time": "11:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-14",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssi taaperon kanssa 1–3 v.: 26560 Pe 10:15 KAMP2 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0141",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää). Kurssi alkanut 14.8.2026. Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 14.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 45 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk). Lomapäivä 2027-01-01 osuu ryhmän päivälle: PDF s. 4 \"Tunnit hyvitetään laskussa\" – todellinen lasku voi olla listahintaa pienempi (summaa ei julkaistu). | Hinta: lapsi + aikuinen (Ilpon päätös 7, 22.9.2026: hinta näytetään lapsi + aikuinen -merkinnällä; erillistä aikuisen maksua ei oleteta, price_covers.verified=false).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kamppi",
    "district_basis": "geokoodattu osoite -> sub_district 'Kamppi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssi taaperon kanssa 1–3 v. (26554)",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Kampin studiot",
    "address": "Salomonkatu 17/ Fredrikinkatu 46 (Autotalo), 2. kerros, 00100 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssi taaperon kanssa 1–3 v.: 26554 Ke 17:15 KAMP2 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0142",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää). Kurssi alkanut 12.8.2026. Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 12.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 45 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk). Lomapäivä 2027-01-06 osuu ryhmän päivälle: PDF s. 4 \"Tunnit hyvitetään laskussa\" – todellinen lasku voi olla listahintaa pienempi (summaa ei julkaistu). | Hinta: lapsi + aikuinen (Ilpon päätös 7, 22.9.2026: hinta näytetään lapsi + aikuinen -merkinnällä; erillistä aikuisen maksua ei oleteta, price_covers.verified=false).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kamppi",
    "district_basis": "geokoodattu osoite -> sub_district 'Kamppi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssi taaperon kanssa 1–3 v. (26732)",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Kasarmitori",
    "address": "Kasarmikatu 19 (torin puoli), 00130 Helsinki",
    "district": "Kaartinkaupunki",
    "weekday": "maanantai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-10",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssi taaperon kanssa 1–3 v.: 26732 Ma 16:45 KAS5 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0143",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää). Kurssi alkanut 10.8.2026. Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 10.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 45 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk). | Hinta: lapsi + aikuinen (Ilpon päätös 7, 22.9.2026: hinta näytetään lapsi + aikuinen -merkinnällä; erillistä aikuisen maksua ei oleteta, price_covers.verified=false).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kaartinkaupunki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Perhetanssi 4–7 v. (26562)",
    "min_age": 4,
    "max_age": 7,
    "eligibility_text": "4–7-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Leipätehdas",
    "address": "Kaikukatu 4 A, piharakennus: 6. krs., 00530 Helsinki",
    "district": "Kallio",
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Perhetanssi 4–7 v.: 26562 Ke 18:00 LEI8 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0144",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää). Kurssi alkanut 12.8.2026. Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 12.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 60 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk). Lomapäivä 2027-01-06 osuu ryhmän päivälle: PDF s. 4 \"Tunnit hyvitetään laskussa\" – todellinen lasku voi olla listahintaa pienempi (summaa ei julkaistu). | Hinta: lapsi + aikuinen (Ilpon päätös 7, 22.9.2026: hinta näytetään lapsi + aikuinen -merkinnällä; erillistä aikuisen maksua ei oleteta, price_covers.verified=false).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kallio",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Perhetanssi alk. 4 v. (26563)",
    "min_age": 4,
    "max_age": null,
    "eligibility_text": "alk. 4 v.",
    "parent_child": "yes",
    "venue_name": "Annantalon Tanssiluokka",
    "address": "Annankatu 30, 00100 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-13",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Perhetanssi alk. 4 v.: 26563 To 17:30 ANNA 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0145",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää). Kurssi alkanut 13.8.2026. Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 13.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 60 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk). | Hinta: lapsi + aikuinen (Ilpon päätös 7, 22.9.2026: hinta näytetään lapsi + aikuinen -merkinnällä; erillistä aikuisen maksua ei oleteta, price_covers.verified=false).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kamppi",
    "district_basis": "geokoodattu osoite -> sub_district 'Kamppi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 3–4 v. (26760)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Karjalatalo",
    "address": "Käpylänkuja 1, 00610 Helsinki",
    "district": "Käpylä",
    "weekday": "lauantai",
    "start_time": "10:15",
    "end_time": "11:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "full",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssileikki 3–4 v.: 26760 La 10:15 KÄP 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0146",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää). Kurssi alkanut 15.8.2026. Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 45 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk). Tuntihaussa \"Täynnä\" 21.9.2026.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Käpylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 4–5 v. (26482)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Malmitalon tanssisali",
    "address": "Ala-Malmin tori 1, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "lauantai",
    "start_time": "10:15",
    "end_time": "11:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssileikki 4–5 v.: 26482 La 10:15 MAL 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0147",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää). Kurssi alkanut 15.8.2026. Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 45 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 4–5 v. (26469)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Karjalatalo",
    "address": "Käpylänkuja 1, 00610 Helsinki",
    "district": "Käpylä",
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-11",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssileikki 4–5 v.: 26469 Ti 17:15 KÄP 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0148",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää). Kurssi alkanut 11.8.2026. Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 11.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 45 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Käpylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 4–5 v. (26475)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Malmitalon tanssisali",
    "address": "Ala-Malmin tori 1, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "perjantai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-14",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 4–5 v.: 26475 Pe 17:15 MAL 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0149",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää). Kurssi alkanut 14.8.2026. Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 14.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 45 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk). Lomapäivä 2027-01-01 osuu ryhmän päivälle: PDF s. 4 \"Tunnit hyvitetään laskussa\" – todellinen lasku voi olla listahintaa pienempi (summaa ei julkaistu).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 4–5 v. (26896)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Karjalatalo",
    "address": "Käpylänkuja 1, 00610 Helsinki",
    "district": "Käpylä",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-13",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 4–5 v.: 26896 To 17:00 KÄP 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0150",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää). Kurssi alkanut 13.8.2026. Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 13.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 45 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Käpylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Nykytanssi Alkeet 1 6–8 v. (26517)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Nordsjö lågstadieskola (Rastis)",
    "address": "Ulapparaitti 6, 00980 Helsinki",
    "district": "Vuosaari",
    "weekday": "maanantai",
    "start_time": "17:45",
    "end_time": "18:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-10",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Nykytanssi Alkeet 1 6–8 v.: 26517 Ma 17:45 VUO 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0151",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää); sama ryhmä myös erän batch_2026-09-21_02 deferred-listalla. Kurssi alkanut 10.8.2026. Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 10.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 60 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk). Sopii vain 6-vuotiaille (ikäraja 6–8 v; rajaus alle kouluikäiset 0–6 v) – mukana Ilpon päätöksellä 21.9.2026. PDF: \"Kouluikäisistä alkaen ikäryhmät ovat viitteellisiä.\" | district derived from venue 'Nordsjö lågstadieskola (Rastis)' (venue 'Nordsjö lågstadieskola (Rastis)' = canonical hel-2026-0011 district Vuosaari)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-015",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Nykytanssi Alkeet 1 6–8 v. (26520)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Päiväkoti/sivukoulu Kanava",
    "address": "Aurinkotuulenkatu 11, 00990 Helsinki",
    "district": "Aurinkolahti",
    "weekday": "perjantai",
    "start_time": "17:45",
    "end_time": "18:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-14",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Nykytanssi Alkeet 1 6–8 v.: 26520 Pe 17:45 AUR1 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0152",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää); sama ryhmä myös erän batch_2026-09-21_02 deferred-listalla. Kurssi alkanut 14.8.2026. Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 14.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 60 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk). Lomapäivä 2027-01-01 osuu ryhmän päivälle: PDF s. 4 \"Tunnit hyvitetään laskussa\" – todellinen lasku voi olla listahintaa pienempi (summaa ei julkaistu). Sopii vain 6-vuotiaille (ikäraja 6–8 v; rajaus alle kouluikäiset 0–6 v) – mukana Ilpon päätöksellä 21.9.2026. PDF: \"Kouluikäisistä alkaen ikäryhmät ovat viitteellisiä.\" | district derived from venue 'Päiväkoti/sivukoulu Kanava' (venue 'Päiväkoti/sivukoulu Kanava' = canonical hel-2026-0014 district Aurinkolahti)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-016",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Aurinkolahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Nykytanssi Alkeet 1 6–8 v. (26519)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Päiväkoti Korento",
    "address": "Suursuonlaita 6, 00630 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Nykytanssi Alkeet 1 6–8 v.: 26519 Ke 18:00 MAU 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0153",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää); sama ryhmä myös erän batch_2026-09-21_02 deferred-listalla. Kurssi alkanut 12.8.2026. Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 12.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 60 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk). Lomapäivä 2027-01-06 osuu ryhmän päivälle: PDF s. 4 \"Tunnit hyvitetään laskussa\" – todellinen lasku voi olla listahintaa pienempi (summaa ei julkaistu). Sopii vain 6-vuotiaille (ikäraja 6–8 v; rajaus alle kouluikäiset 0–6 v) – mukana Ilpon päätöksellä 21.9.2026. PDF: \"Kouluikäisistä alkaen ikäryhmät ovat viitteellisiä.\"",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-017",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Oulunkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Oulunkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Klassinen baletti Alkeet 1 6–8 v. (26588)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Porolahden peruskoulu",
    "address": "Roihuvuorentie 2, 00820 Helsinki",
    "district": "Roihuvuori",
    "weekday": "tiistai",
    "start_time": "18:15",
    "end_time": "19:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Klassinen baletti Alkeet 1 6–8 v.: 26588 Ti 18:15 ROI 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0154",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (HTO: 61 muuta ryhmää); sama ryhmä myös erän batch_2026-09-21_02 deferred-listalla. Kurssi alkanut 1.9.2026. Kertamäärä 18 laskettu koodilla (tuntihaun alkupäivä 1.9.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 60 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; sama verkkohinnastossa. Vaihtoehtona jaksomaksu (4 vk). Ryhmä alkaa 1.9.2026 (lukukausi alkoi 10.8.2026); hinnasto: \"Tunnit laskutetaan ilmoittautumisen alkamispäivästä alkaen\" – mahdollista osittaista laskua ei julkaistu, rivillä listahinta. Sopii vain 6-vuotiaille (ikäraja 6–8 v; rajaus alle kouluikäiset 0–6 v) – mukana Ilpon päätöksellä 21.9.2026. PDF: \"Kouluikäisistä alkaen ikäryhmät ovat viitteellisiä.\" | district derived from venue 'Porolahden peruskoulu' (venue 'Porolahden peruskoulu' = canonical hel-2026-0003,hel-2026-0015,hel-2026-0032,hel-2026-0034 district Roihuvuori)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-018",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Roihuvuori",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Perhefutis Paloheinä syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024-2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "yes",
    "venue_name": "Paloheinän ala-asteen liikuntasali",
    "address": "Ylipalontie 1",
    "district": "Paloheinä",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-09-10",
    "end_date": "2026-11-26",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskausi, sis. ohjauksen 11 krt, lapselle vakuutuksen, palkinnon ja vuoden 10 € jäsenmaksun (vuoden ensimmäinen maksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntaleikki.fi/perhefutis/",
    "source_quote": "Perhefutis Paloheinä, 2024-2023-2022-syntyneet; torstai; 11 harjoituspäivää 2026-09-10–2026-11-26. Perhefutis: kausi maksaa 105 euroa (sis. ohjauksen 11krt).",
    "activity_id": "hel-2026-0155",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": 9.55,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://liikuntaleikki.fi/info/",
    "billing_period": "term",
    "price_period_start": "2026-09-10",
    "price_period_end": "2026-11-26",
    "season_start_date": "2026-09-10",
    "season_end_date": "2026-11-26",
    "birth_year_min": 2022,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntaleikki.fi/info/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, lapsen vakuutuksen ja palkinnon; vuoden ensimmäiseen osallistumismaksuun sisältyy 10 € jäsenmaksu."
      }
    ],
    "price_options": [
      {
        "label": "Kaksi lasta samasta perheestä",
        "amount_eur": 175,
        "applies_if": "kaksi saman perheen lasta mukana",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (Liikuntaleikki Perhefutis syksy 2026, pohjois-helsinki). Kurssi alkanut 10.9.2026. Ilmoittautuminen Ilmarix-lomakkeella 'Perhefutis Syksy 2026 Pohjoinen - läntinen' (valinta 'Paloheinä'; sama 105 €, 11 krt); lomakkeella ei ryhmäkohtaista täynnä-merkintää → availability unknown. Ikä syntymävuosina. Ulkokausi ja sali samassa koulussa (Paloheinän ala-aste, Ylipalontie 1).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-023",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/liikuntaleikki_perhefutis_8fe511cd3451.html",
      "capture_sha256": "8fe511cd3451ac3b37d54bef7c9a51c6ecd2c9cb3fb15af8a9f0bd364a92f64b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-10–2026-11-26, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Paloheinä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jääkiekko",
    "provider": "HIFK Ishockey r.f.",
    "group_name": "Calle Branderin kiekkokoulu, 2020 syntyneet (su 09:00–10:00), syyskausi 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Kiekkokoulu on tarkoitettu 4 - 6 -vuotiaille lapsille. Koulu on tarkoitettu vuosina 2020-2022 syntyneille. klo 09:00-10:00 // 2020 syntyneet",
    "parent_child": "unknown",
    "venue_name": "Helsingin jäähalli, Elisa Areena -harjoitushalli",
    "address": "Nordenskiöldinkatu 11-13, 00250 Helsinki",
    "district": "Töölö",
    "weekday": "sunnuntai",
    "start_time": "09:00",
    "end_time": "10:00",
    "season": "syksy 2026",
    "start_date": "2026-09-13",
    "end_date": "2026-12-20",
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Syyskauden hinta 150 € (50 € starttimaksu + 100 € loppumaksu); + kiekkokoulurekisteröinti 2 € + 1,75 € palvelumaksu",
    "membership_fee_eur": null,
    "other_required_fees": "Kiekkokoulurekisteröinti 2 €/hlö + 1,75 € palvelumaksu (Suomisport).",
    "equipment_notes": "Pakolliset varusteet: luistimet, maila, kypärä kasvosuojuksella ja kaulasuoja.",
    "trial_info": "Toimintaan pääsee tutustumaan kerran maksutta.",
    "enrollment_status": "unknown",
    "source_url": "https://hifkjrs.myclub.fi/flow/courses/10832616",
    "source_quote": "Calle Branderin kiekkokoulu 4–6 v; klo 09:00-10:00 // 2020 syntyneet; Syyskauden hinta 150 € (50 € starttimaksu + 100 € loppumaksu); Kiekkokoulurekisteröinti 2 €/hlö + 1,75 €.",
    "activity_id": "hel-2026-0156",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 153.75,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-13",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-09-13",
    "season_end_date": "2026-12-20",
    "birth_year_min": 2020,
    "birth_year_max": 2020,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Syyskauden hinta 150 € = 50 € starttimaksu ilmoittautuessa (ei palauteta) + 100 € loppumaksu joulukuussa."
      },
      {
        "type": "license",
        "amount_eur": 2,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Kiekkokoulurekisteröinti (Jääkiekkoliitto/Suomisport) 2 €/hlö; pakollinen kaikille kiekkokoululaisille."
      },
      {
        "type": "service_fee",
        "amount_eur": 1.75,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Suomisportin ja maksunvälittäjien palvelumaksu kiekkokoulurekisteröinnin ostossa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Sisaralennus -15 € (kevätkauden tekstissä). Sporttiturvavakuutus vapaaehtoinen.",
    "unverified_fields": [],
    "verification_notes": "Yksi myClub-ilmoittautuminen kattaa kaksi vuoroa; rivi = syntymävuosiryhmän oma vuoro (aikataulun rivit 'Calle Branderin kiekkokoulu - 2020 syntyneet'). Kertamäärä laskettu koodilla aikataulun saman ryhmän riveistä (ei 6.12.). hifk.fi-uutissivu (19.5.2025) on edellisen kauden tieto; myClub-ilmoittautumissivu voittaa. myClub 'Hintatiedot' näyttää vain 50 € (CBK 26-27 = starttimaksu); kokonaishinta 150 € samalta sivulta. Syntymävuodet 2020: syyskaudella 2026 5–6-vuotiaita (ei 'sopii vain 6-vuotiaille'; korjattu 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/hifk_cbk_myclub_60c422c4fae0.html",
      "capture_sha256": "60c422c4fae066aa8f6bbe0e5c84bcd0ba4ed16c88bf90bc76786a7d1c5d5ae3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 46.43,
    "monthly_cost_basis": "150.0 € / term jaettuna 3.25 kuukaudelle (2026-09-13–2026-12-20, price_period_start) + license 2 €/v ÷ 12 + service_fee 1.75 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jääkiekko",
    "provider": "HIFK Ishockey r.f.",
    "group_name": "Calle Branderin kiekkokoulu, 2021–2022 syntyneet (su 10:00–11:00), syyskausi 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Kiekkokoulu on tarkoitettu 4 - 6 -vuotiaille lapsille. Koulu on tarkoitettu vuosina 2020-2022 syntyneille. klo 10:00-11:00 // 2021-2022 syntyneet",
    "parent_child": "unknown",
    "venue_name": "Helsingin jäähalli, Elisa Areena -harjoitushalli",
    "address": "Nordenskiöldinkatu 11-13, 00250 Helsinki",
    "district": "Töölö",
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": "2026-09-13",
    "end_date": "2026-12-20",
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Syyskauden hinta 150 € (50 € starttimaksu + 100 € loppumaksu); + kiekkokoulurekisteröinti 2 € + 1,75 € palvelumaksu",
    "membership_fee_eur": null,
    "other_required_fees": "Kiekkokoulurekisteröinti 2 €/hlö + 1,75 € palvelumaksu (Suomisport).",
    "equipment_notes": "Pakolliset varusteet: luistimet, maila, kypärä kasvosuojuksella ja kaulasuoja.",
    "trial_info": "Toimintaan pääsee tutustumaan kerran maksutta.",
    "enrollment_status": "unknown",
    "source_url": "https://hifkjrs.myclub.fi/flow/courses/10832616",
    "source_quote": "Calle Branderin kiekkokoulu 4–6 v; klo 10:00-11:00 // 2021–2022 syntyneet; Syyskauden hinta 150 € (50 € starttimaksu + 100 € loppumaksu); Kiekkokoulurekisteröinti 2 €/hlö + 1,75 €.",
    "activity_id": "hel-2026-0157",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 153.75,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-13",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-09-13",
    "season_end_date": "2026-12-20",
    "birth_year_min": 2021,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Syyskauden hinta 150 € = 50 € starttimaksu ilmoittautuessa (ei palauteta) + 100 € loppumaksu joulukuussa."
      },
      {
        "type": "license",
        "amount_eur": 2,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Kiekkokoulurekisteröinti (Jääkiekkoliitto/Suomisport) 2 €/hlö; pakollinen kaikille kiekkokoululaisille."
      },
      {
        "type": "service_fee",
        "amount_eur": 1.75,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Suomisportin ja maksunvälittäjien palvelumaksu kiekkokoulurekisteröinnin ostossa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Sisaralennus -15 € (kevätkauden tekstissä). Sporttiturvavakuutus vapaaehtoinen.",
    "unverified_fields": [],
    "verification_notes": "Yksi myClub-ilmoittautuminen kattaa kaksi vuoroa; rivi = syntymävuosiryhmän oma vuoro (aikataulun rivit 'Calle Branderin kiekkokoulu - 2021-2022 syntyneet'). Kertamäärä laskettu koodilla aikataulun saman ryhmän riveistä (ei 6.12.). hifk.fi-uutissivu (19.5.2025) on edellisen kauden tieto; myClub-ilmoittautumissivu voittaa. myClub 'Hintatiedot' näyttää vain 50 € (CBK 26-27 = starttimaksu); kokonaishinta 150 € samalta sivulta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/hifk_cbk_myclub_60c422c4fae0.html",
      "capture_sha256": "60c422c4fae066aa8f6bbe0e5c84bcd0ba4ed16c88bf90bc76786a7d1c5d5ae3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 46.43,
    "monthly_cost_basis": "150.0 € / term jaettuna 3.25 kuukaudelle (2026-09-13–2026-12-20, price_period_start) + license 2 €/v ÷ 12 + service_fee 1.75 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Voimisteluseura Fliku ry",
    "group_name": "TEMPPU 1 3-5v (Maanantai), Syksy 2026",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5v",
    "parent_child": "unknown",
    "venue_name": "Liikuntakeskus PURO",
    "address": "Ratasmyllynkuja 1, 00920 Helsinki",
    "district": "Myllypuro",
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-24",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 € + Jäsenmaksu 2026 30,00 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Jäsenmaksu 2026 30 € (myClub-hintatiedoissa).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://fliku.myclub.fi/flow/courses/10653360",
    "source_quote": "TEMPPU 1 3-5v (Maanantai), Syksy 2026; Liikuntakeskus PURO; Harjoitukset 1*45min/viikko, Syksy 2026 160,00 €; Jäsenmaksu 2026 30,00 €.",
    "activity_id": "hel-2026-0158",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 190.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-24",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-24",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 2026 30,00 € – myClubissa otsikon 'Valinnaiset maksut' alla – pakollinen (Ilpon päätös 2, 22.9.2026: seuran oma hinnasto voittaa maksusivun 'Valinnaiset maksut' -merkinnän)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perutusta kurssipaikasta veloitetaan 50 € varausmaksu (peruutus mahdollinen ensimmäisen kokeilukerran jälkeen).",
    "unverified_fields": [],
    "verification_notes": "Kertamäärä laskettu koodilla aikataulusta: 15 harjoitusriviä; pois 'EI HARJOITUKSIA' -rivit: 2026-10-12 SYYSLOMA, EI HARJOITUKSIA. Kurssi alkanut 2026-08-24. | billing_period=term hinnan nimen kausisanasta 'Syksy 2026' (myclub.py v4 -sääntö, sama kuin käsiarvo; 22.9.2026). | Jäsenmaksu pakollinen (Ilpon päätös 2, 22.9.2026): maksusivulla 'Valinnaiset maksut', seuran oma hinnasto/laskutusteksti pakollinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/fliku_t1_53b9ac2d2685.html",
      "capture_sha256": "53b9ac2d2685cc74be53984a82eb28faacf101306f6a8fb577c1e89819f91964",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.44,
    "monthly_cost_basis": "160.0 € / term jaettuna 3.48 kuukaudelle (2026-08-24–2026-12-07, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Voimisteluseura Fliku ry",
    "group_name": "TEMPPU2, 3-5v, (Tiistai), Syksy 2026",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5v",
    "parent_child": "unknown",
    "venue_name": "Liikuntakeskus PURO",
    "address": "Ratasmyllynkuja 1, 00920 Helsinki",
    "district": "Myllypuro",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 € + Jäsenmaksu 2026 30,00 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Jäsenmaksu 2026 30 € (myClub-hintatiedoissa).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://fliku.myclub.fi/flow/courses/10653377",
    "source_quote": "TEMPPU2, 3-5v, (Tiistai), Syksy 2026; Liikuntakeskus PURO; Harjoitukset 1*45min/viikko, Syksy 2026 160,00 €; Jäsenmaksu 2026 30,00 €.",
    "activity_id": "hel-2026-0159",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 190.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-25",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-08-25",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 2026 30,00 € – myClubissa otsikon 'Valinnaiset maksut' alla – pakollinen (Ilpon päätös 2, 22.9.2026: seuran oma hinnasto voittaa maksusivun 'Valinnaiset maksut' -merkinnän)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perutusta kurssipaikasta veloitetaan 50 € varausmaksu (peruutus mahdollinen ensimmäisen kokeilukerran jälkeen).",
    "unverified_fields": [],
    "verification_notes": "Kertamäärä laskettu koodilla aikataulusta: 15 harjoitusriviä; pois 'EI HARJOITUKSIA' -rivit: 2026-10-13 SYYSLOMA, EI HARJOITUKSIA. Kurssi alkanut 2026-08-25. Vakiovuoro 17:00–17:45 (14/15 kertaa); poikkeava aika: 2026-08-25 17:30–18:15. | billing_period=term hinnan nimen kausisanasta 'Syksy 2026' (myclub.py v4 -sääntö, sama kuin käsiarvo; 22.9.2026). | Jäsenmaksu pakollinen (Ilpon päätös 2, 22.9.2026): maksusivulla 'Valinnaiset maksut', seuran oma hinnasto/laskutusteksti pakollinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-015",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/fliku_t2_c7e0b60f398e.html",
      "capture_sha256": "c7e0b60f398ef0d9786754f47d3c3592433dd23ed1842a843ca054b98e40978d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.44,
    "monthly_cost_basis": "160.0 € / term jaettuna 3.48 kuukaudelle (2026-08-25–2026-12-08, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Voimisteluseura Fliku ry",
    "group_name": "TEMPPU 3, 3-5v, (Keskiviikko), Syksy 2026",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5v",
    "parent_child": "unknown",
    "venue_name": "Liikuntakeskus PURO",
    "address": "Ratasmyllynkuja 1, 00920 Helsinki",
    "district": "Myllypuro",
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 € + Jäsenmaksu 2026 30,00 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Jäsenmaksu 2026 30 € (myClub-hintatiedoissa).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://fliku.myclub.fi/flow/courses/10653394",
    "source_quote": "TEMPPU 3, 3-5v, (Keskiviikko), Syksy 2026; Liikuntakeskus PURO; Harjoitukset 1*45min/viikko, Syksy 2026 160,00 €; Jäsenmaksu 2026 30,00 €.",
    "activity_id": "hel-2026-0160",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 190.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-26",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-26",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 2026 30,00 € – myClubissa otsikon 'Valinnaiset maksut' alla – pakollinen (Ilpon päätös 2, 22.9.2026: seuran oma hinnasto voittaa maksusivun 'Valinnaiset maksut' -merkinnän)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perutusta kurssipaikasta veloitetaan 50 € varausmaksu (peruutus mahdollinen ensimmäisen kokeilukerran jälkeen).",
    "unverified_fields": [],
    "verification_notes": "Kertamäärä laskettu koodilla aikataulusta: 15 harjoitusriviä; pois 'EI HARJOITUKSIA' -rivit: 2026-10-14 SYYSLOMA, EI HARJOITUKSIA. Kurssi alkanut 2026-08-26. | billing_period=term hinnan nimen kausisanasta 'Syksy 2026' (myclub.py v4 -sääntö, sama kuin käsiarvo; 22.9.2026). | Jäsenmaksu pakollinen (Ilpon päätös 2, 22.9.2026): maksusivulla 'Valinnaiset maksut', seuran oma hinnasto/laskutusteksti pakollinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-016",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/fliku_t3_9a0b6cfbdd0e.html",
      "capture_sha256": "9a0b6cfbdd0e74655dafa6c2d465fbad2ea9832e73e7d4a7b358a93c63ec14ae",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.44,
    "monthly_cost_basis": "160.0 € / term jaettuna 3.48 kuukaudelle (2026-08-26–2026-12-09, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Voimisteluseura Fliku ry",
    "group_name": "TEMPPU 4, 3-5v, (Torstai), Syksy 2026",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5v",
    "parent_child": "unknown",
    "venue_name": "Vuosaaren Urheilutalo",
    "address": "Vuosaarentie 5, 00980 Helsinki",
    "district": "Vuosaari",
    "weekday": "torstai",
    "start_time": "17:10",
    "end_time": "17:50",
    "season": "syksy 2026",
    "start_date": "2026-08-27",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 € + Jäsenmaksu 2026 30,00 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Jäsenmaksu 2026 30 € (myClub-hintatiedoissa).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://fliku.myclub.fi/flow/courses/10653411",
    "source_quote": "TEMPPU 4, 3-5v, (Torstai), Syksy 2026; Vuosaaren Urheilutalo; Harjoitukset 1*45min/viikko, Syksy 2026 160,00 €; Jäsenmaksu 2026 30,00 €.",
    "activity_id": "hel-2026-0161",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 190.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-27",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-27",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 2026 30,00 € – myClubissa otsikon 'Valinnaiset maksut' alla – pakollinen (Ilpon päätös 2, 22.9.2026: seuran oma hinnasto voittaa maksusivun 'Valinnaiset maksut' -merkinnän)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perutusta kurssipaikasta veloitetaan 50 € varausmaksu (peruutus mahdollinen ensimmäisen kokeilukerran jälkeen).",
    "unverified_fields": [],
    "verification_notes": "Kertamäärä laskettu koodilla aikataulusta: 15 harjoitusriviä; pois 'EI HARJOITUKSIA' -rivit: 2026-10-15 SYYSLOMA, EI HARJOITUKSIA. Kurssi alkanut 2026-08-27. | billing_period=term hinnan nimen kausisanasta 'Syksy 2026' (myclub.py v4 -sääntö, sama kuin käsiarvo; 22.9.2026). | Jäsenmaksu pakollinen (Ilpon päätös 2, 22.9.2026): maksusivulla 'Valinnaiset maksut', seuran oma hinnasto/laskutusteksti pakollinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-017",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/fliku_t4_ae119d9fe470.html",
      "capture_sha256": "ae119d9fe47018326b482d80af3c470444ca060ec1e6e30320f7e6af08a4c80c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.44,
    "monthly_cost_basis": "160.0 € / term jaettuna 3.48 kuukaudelle (2026-08-27–2026-12-10, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Voimisteluseura Fliku ry",
    "group_name": "TEMPPU 5, 3-5v, (Lauantai), Syksy 2026",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5v",
    "parent_child": "unknown",
    "venue_name": "Liikuntakeskus PURO",
    "address": "Ratasmyllynkuja 1, 00920 Helsinki",
    "district": "Myllypuro",
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": "2026-08-29",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 € + Jäsenmaksu 2026 30,00 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Jäsenmaksu 2026 30 € (myClub-hintatiedoissa).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://fliku.myclub.fi/flow/courses/10653428",
    "source_quote": "TEMPPU 5, 3-5v, (Lauantai), Syksy 2026; Liikuntakeskus PURO; Harjoitukset 1*45min/viikko, Syksy 2026 160,00 €; Jäsenmaksu 2026 30,00 €.",
    "activity_id": "hel-2026-0162",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 190.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-29",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-29",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 2026 30,00 € – myClubissa otsikon 'Valinnaiset maksut' alla – pakollinen (Ilpon päätös 2, 22.9.2026: seuran oma hinnasto voittaa maksusivun 'Valinnaiset maksut' -merkinnän)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perutusta kurssipaikasta veloitetaan 50 € varausmaksu (peruutus mahdollinen ensimmäisen kokeilukerran jälkeen).",
    "unverified_fields": [],
    "verification_notes": "Kertamäärä laskettu koodilla aikataulusta: 14 harjoitusriviä; pois 'EI HARJOITUKSIA' -rivit: 2026-10-17 SYYSLOMA, EI HARJOITUKSIA; 2026-10-31 PYHÄPÄIVÄ, EI HARJOITUKSIA. Kurssi alkanut 2026-08-29. | billing_period=term hinnan nimen kausisanasta 'Syksy 2026' (myclub.py v4 -sääntö, sama kuin käsiarvo; 22.9.2026). | Jäsenmaksu pakollinen (Ilpon päätös 2, 22.9.2026): maksusivulla 'Valinnaiset maksut', seuran oma hinnasto/laskutusteksti pakollinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-018",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/fliku_t5_8a7de5a01090.html",
      "capture_sha256": "8a7de5a0109005c1de7b3daec7a58a4a228f7e37e51c8c8148f1218fb2529598",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.44,
    "monthly_cost_basis": "160.0 € / term jaettuna 3.48 kuukaudelle (2026-08-29–2026-12-12, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Voimisteluseura Fliku ry",
    "group_name": "TEMPPU 6, 3-5v, (Sunnuntai), Syksy 2026",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5v",
    "parent_child": "unknown",
    "venue_name": "Liikuntamylly",
    "address": "Jauhokuja 3, 00920 Helsinki",
    "district": "Myllypuro",
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": "2026-08-30",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 € + Jäsenmaksu 2026 30,00 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Jäsenmaksu 2026 30 € (myClub-hintatiedoissa).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://fliku.myclub.fi/flow/courses/10653445",
    "source_quote": "TEMPPU 6, 3-5v, (Sunnuntai), Syksy 2026; Liikuntamylly; Harjoitukset 1*45min/viikko, Syksy 2026 160,00 €; Jäsenmaksu 2026 30,00 €.",
    "activity_id": "hel-2026-0163",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 190.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-30",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-30",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 2026 30,00 € – myClubissa otsikon 'Valinnaiset maksut' alla – pakollinen (Ilpon päätös 2, 22.9.2026: seuran oma hinnasto voittaa maksusivun 'Valinnaiset maksut' -merkinnän)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perutusta kurssipaikasta veloitetaan 50 € varausmaksu (peruutus mahdollinen ensimmäisen kokeilukerran jälkeen).",
    "unverified_fields": [],
    "verification_notes": "Kertamäärä laskettu koodilla aikataulusta: 14 harjoitusriviä; pois 'EI HARJOITUKSIA' -rivit: 2026-10-18 SYYSLOMA, EI HARJOITUKSIA; 2026-12-06 PYHÄPÄIVÄ, Ei harjoituksia. Kurssi alkanut 2026-08-30. | billing_period=term hinnan nimen kausisanasta 'Syksy 2026' (myclub.py v4 -sääntö, sama kuin käsiarvo; 22.9.2026). | Jäsenmaksu pakollinen (Ilpon päätös 2, 22.9.2026): maksusivulla 'Valinnaiset maksut', seuran oma hinnasto/laskutusteksti pakollinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-019",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/fliku_t6_3ff65c9dde83.html",
      "capture_sha256": "3ff65c9dde83b31ded9a4b8d897b093c810e7c915d31f1b3603d27a2d1b3e6ad",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.44,
    "monthly_cost_basis": "160.0 € / term jaettuna 3.48 kuukaudelle (2026-08-30–2026-12-13, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Voimisteluseura Fliku ry",
    "group_name": "TEMPPU 7, 3-5v, (Sunnuntai), Syksy 2026",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5v",
    "parent_child": "unknown",
    "venue_name": "Liikuntamylly",
    "address": "Jauhokuja 3, 00920 Helsinki",
    "district": "Myllypuro",
    "weekday": "sunnuntai",
    "start_time": "10:45",
    "end_time": "11:30",
    "season": "syksy 2026",
    "start_date": "2026-08-30",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 € + Jäsenmaksu 2026 30,00 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Jäsenmaksu 2026 30 € (myClub-hintatiedoissa).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://fliku.myclub.fi/flow/courses/10653462",
    "source_quote": "TEMPPU 7, 3-5v, (Sunnuntai), Syksy 2026; Liikuntamylly; Harjoitukset 1*45min/viikko, Syksy 2026 160,00 €; Jäsenmaksu 2026 30,00 €.",
    "activity_id": "hel-2026-0164",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 190.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-30",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-30",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 2026 30,00 € – myClubissa otsikon 'Valinnaiset maksut' alla – pakollinen (Ilpon päätös 2, 22.9.2026: seuran oma hinnasto voittaa maksusivun 'Valinnaiset maksut' -merkinnän)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perutusta kurssipaikasta veloitetaan 50 € varausmaksu (peruutus mahdollinen ensimmäisen kokeilukerran jälkeen).",
    "unverified_fields": [],
    "verification_notes": "Kertamäärä laskettu koodilla aikataulusta: 14 harjoitusriviä; pois 'EI HARJOITUKSIA' -rivit: 2026-10-18 SYYSLOMA, EI HARJOITUKSIA; 2026-12-06 PYHÄPÄIVÄ, Ei harjoituksia. Kurssi alkanut 2026-08-30. | billing_period=term hinnan nimen kausisanasta 'Syksy 2026' (myclub.py v4 -sääntö, sama kuin käsiarvo; 22.9.2026). | Jäsenmaksu pakollinen (Ilpon päätös 2, 22.9.2026): maksusivulla 'Valinnaiset maksut', seuran oma hinnasto/laskutusteksti pakollinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-020",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/fliku_t7_f836f14de53a.html",
      "capture_sha256": "f836f14de53af8af7cb3df465aa70e7d3e3eecf0b518b482b453d3b18b12de92",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.44,
    "monthly_cost_basis": "160.0 € / term jaettuna 3.48 kuukaudelle (2026-08-30–2026-12-13, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Vauvauinti",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "alkaen 3 kk",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "08:30",
    "end_time": "09:00",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-10-05",
    "sessions_count": 8,
    "price_eur": 112.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/92828",
    "source_quote": "Vauvauinti on perheen yhteinen, koulutetun ohjaajan valvoma leikkihetki puhtaassa ja lämmitetyssä vedessä.",
    "activity_id": "hel-2026-0165",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 112.0,
    "price_per_session_eur": 14.0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-10-05",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-10-05",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/92828",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/, tallenne data/staging/evidence_local/batch_2026-09-22_10/hall_siltamaki_22cc7a80144b.html sha256 22cc7a80144b); otsikko+yhteystiedot tagit poistettuna: 'Siltamäen uimahalli Jousimiehentie 3, 00740 Helsinki'. API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa). Ikä: kuvaus 'Vauvauinnin voi aloittaa aikaisintaan 3 kuukauden iässä ja lapsen tulee painaa vähintään 5 kg.' – vain alaikäraja tiedossa, min_age=0, yläikärajaa ei kerrota lähteessä (max_age=null, ei arvattu). Kuvaus: 'Vauvauintiin voi vauvan lisäksi osallistua kaksi aikuista.' – aikuisen osallistumista ei sanota pakolliseksi/varmaksi, joten parent_child=unknown (sama linjaus kuin Taaperouinnin identtiselle ilmaisulle batch_2026-09-21_05:ssä). | district derived from postcode 00740 (postcode 00740 = Tilastokeskus Paavo postal area 'Siltamäki') | Ikä: alkaen 3 kk (lähde: 'aikaisintaan 3 kuukauden iässä'), yläikärajaa ei kerrota → max_age=null = avoin yläraja (Ilpon päätös 8, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_10.json",
      "staging_id": "batch_2026-09-22_10-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_10/uh_92828_5b5057e0f428.json",
      "capture_sha256": "5b5057e0f4287067b38e323572425e73969bc9062ab403a2ccbf009c252b9f05",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 68.18,
    "monthly_cost_basis": "112.0 € / course jaettuna 1.64 kuukaudelle (2026-08-17–2026-10-05, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Vauvauinti",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "alkaen 3 kk",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "09:00",
    "end_time": "09:30",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-10-05",
    "sessions_count": 8,
    "price_eur": 112.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/92833",
    "source_quote": "Vauvauinti on perheen yhteinen, koulutetun ohjaajan valvoma leikkihetki puhtaassa ja lämmitetyssä vedessä.",
    "activity_id": "hel-2026-0166",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 112.0,
    "price_per_session_eur": 14.0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-10-05",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-10-05",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/92833",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/, tallenne data/staging/evidence_local/batch_2026-09-22_10/hall_siltamaki_22cc7a80144b.html sha256 22cc7a80144b); otsikko+yhteystiedot tagit poistettuna: 'Siltamäen uimahalli Jousimiehentie 3, 00740 Helsinki'. API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa). Ikä: kuvaus 'Vauvauinnin voi aloittaa aikaisintaan 3 kuukauden iässä ja lapsen tulee painaa vähintään 5 kg.' – vain alaikäraja tiedossa, min_age=0, yläikärajaa ei kerrota lähteessä (max_age=null, ei arvattu). Kuvaus: 'Vauvauintiin voi vauvan lisäksi osallistua kaksi aikuista.' – aikuisen osallistumista ei sanota pakolliseksi/varmaksi, joten parent_child=unknown (sama linjaus kuin Taaperouinnin identtiselle ilmaisulle batch_2026-09-21_05:ssä). | district derived from postcode 00740 (postcode 00740 = Tilastokeskus Paavo postal area 'Siltamäki') | Ikä: alkaen 3 kk (lähde: 'aikaisintaan 3 kuukauden iässä'), yläikärajaa ei kerrota → max_age=null = avoin yläraja (Ilpon päätös 8, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_10.json",
      "staging_id": "batch_2026-09-22_10-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_10/uh_92833_05203cd95a01.json",
      "capture_sha256": "05203cd95a012a279e96ba974795931f4a28da8ca094e9c2029155bb17692323",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 68.18,
    "monthly_cost_basis": "112.0 € / course jaettuna 1.64 kuukaudelle (2026-08-17–2026-10-05, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Vauvauinti",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "alkaen 3 kk",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "10:30",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-10-05",
    "sessions_count": 8,
    "price_eur": 112.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/92836",
    "source_quote": "Vauvauinti on perheen yhteinen, koulutetun ohjaajan valvoma leikkihetki puhtaassa ja lämmitetyssä vedessä.",
    "activity_id": "hel-2026-0167",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 112.0,
    "price_per_session_eur": 14.0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-10-05",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-10-05",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/92836",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/, tallenne data/staging/evidence_local/batch_2026-09-22_10/hall_siltamaki_22cc7a80144b.html sha256 22cc7a80144b); otsikko+yhteystiedot tagit poistettuna: 'Siltamäen uimahalli Jousimiehentie 3, 00740 Helsinki'. API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa). Ikä: kuvaus 'Vauvauinnin voi aloittaa aikaisintaan 3 kuukauden iässä ja lapsen tulee painaa vähintään 5 kg.' – vain alaikäraja tiedossa, min_age=0, yläikärajaa ei kerrota lähteessä (max_age=null, ei arvattu). Kuvaus: 'Vauvauintiin voi vauvan lisäksi osallistua kaksi aikuista.' – aikuisen osallistumista ei sanota pakolliseksi/varmaksi, joten parent_child=unknown (sama linjaus kuin Taaperouinnin identtiselle ilmaisulle batch_2026-09-21_05:ssä). | district derived from postcode 00740 (postcode 00740 = Tilastokeskus Paavo postal area 'Siltamäki') | Ikä: alkaen 3 kk (lähde: 'aikaisintaan 3 kuukauden iässä'), yläikärajaa ei kerrota → max_age=null = avoin yläraja (Ilpon päätös 8, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_10.json",
      "staging_id": "batch_2026-09-22_10-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_10/uh_92836_75aafeeab48d.json",
      "capture_sha256": "75aafeeab48d6d8b615550d658f1588196b7b0f5c3bc93bcd1c4a76578a50d9c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 68.18,
    "monthly_cost_basis": "112.0 € / course jaettuna 1.64 kuukaudelle (2026-08-17–2026-10-05, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Vauvauinti",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "alkaen 3 kk",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "11:00",
    "end_time": "11:30",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-10-05",
    "sessions_count": 8,
    "price_eur": 112.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/92837",
    "source_quote": "Vauvauinti on perheen yhteinen, koulutetun ohjaajan valvoma leikkihetki puhtaassa ja lämmitetyssä vedessä.",
    "activity_id": "hel-2026-0168",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 112.0,
    "price_per_session_eur": 14.0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-10-05",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-10-05",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/92837",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/, tallenne data/staging/evidence_local/batch_2026-09-22_10/hall_siltamaki_22cc7a80144b.html sha256 22cc7a80144b); otsikko+yhteystiedot tagit poistettuna: 'Siltamäen uimahalli Jousimiehentie 3, 00740 Helsinki'. API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa). Ikä: kuvaus 'Vauvauinnin voi aloittaa aikaisintaan 3 kuukauden iässä ja lapsen tulee painaa vähintään 5 kg.' – vain alaikäraja tiedossa, min_age=0, yläikärajaa ei kerrota lähteessä (max_age=null, ei arvattu). Kuvaus: 'Vauvauintiin voi vauvan lisäksi osallistua kaksi aikuista.' – aikuisen osallistumista ei sanota pakolliseksi/varmaksi, joten parent_child=unknown (sama linjaus kuin Taaperouinnin identtiselle ilmaisulle batch_2026-09-21_05:ssä). | district derived from postcode 00740 (postcode 00740 = Tilastokeskus Paavo postal area 'Siltamäki') | Ikä: alkaen 3 kk (lähde: 'aikaisintaan 3 kuukauden iässä'), yläikärajaa ei kerrota → max_age=null = avoin yläraja (Ilpon päätös 8, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_10.json",
      "staging_id": "batch_2026-09-22_10-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_10/uh_92837_141f31417de5.json",
      "capture_sha256": "141f31417de59b9a3921b3ed2f942bd41efb20abf35b6948a24612fa08132eca",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 68.18,
    "monthly_cost_basis": "112.0 € / course jaettuna 1.64 kuukaudelle (2026-08-17–2026-10-05, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Vauvauinti",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "alkaen 3 kk",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "11:30",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-10-05",
    "sessions_count": 8,
    "price_eur": 112.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/92839",
    "source_quote": "Vauvauinti on perheen yhteinen, koulutetun ohjaajan valvoma leikkihetki puhtaassa ja lämmitetyssä vedessä.",
    "activity_id": "hel-2026-0169",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 112.0,
    "price_per_session_eur": 14.0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-10-05",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-10-05",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/92839",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/, tallenne data/staging/evidence_local/batch_2026-09-22_10/hall_siltamaki_22cc7a80144b.html sha256 22cc7a80144b); otsikko+yhteystiedot tagit poistettuna: 'Siltamäen uimahalli Jousimiehentie 3, 00740 Helsinki'. API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa). Ikä: kuvaus 'Vauvauinnin voi aloittaa aikaisintaan 3 kuukauden iässä ja lapsen tulee painaa vähintään 5 kg.' – vain alaikäraja tiedossa, min_age=0, yläikärajaa ei kerrota lähteessä (max_age=null, ei arvattu). Kuvaus: 'Vauvauintiin voi vauvan lisäksi osallistua kaksi aikuista.' – aikuisen osallistumista ei sanota pakolliseksi/varmaksi, joten parent_child=unknown (sama linjaus kuin Taaperouinnin identtiselle ilmaisulle batch_2026-09-21_05:ssä). | district derived from postcode 00740 (postcode 00740 = Tilastokeskus Paavo postal area 'Siltamäki') | Ikä: alkaen 3 kk (lähde: 'aikaisintaan 3 kuukauden iässä'), yläikärajaa ei kerrota → max_age=null = avoin yläraja (Ilpon päätös 8, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_10.json",
      "staging_id": "batch_2026-09-22_10-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_10/uh_92839_b078a0fc7a8b.json",
      "capture_sha256": "b078a0fc7a8b4a7aa28f70836f555d0586e90173f7212ce8851064a1decea33d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 68.18,
    "monthly_cost_basis": "112.0 € / course jaettuna 1.64 kuukaudelle (2026-08-17–2026-10-05, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Vauvauinti",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "alkaen 3 kk",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "08:30",
    "end_time": "09:00",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 112.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/97810",
    "source_quote": "Vauvauinti on perheen yhteinen, koulutetun ohjaajan valvoma leikkihetki puhtaassa ja lämmitetyssä vedessä.",
    "activity_id": "hel-2026-0170",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 112.0,
    "price_per_session_eur": 14.0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/97810",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/, tallenne data/staging/evidence_local/batch_2026-09-22_10/hall_siltamaki_22cc7a80144b.html sha256 22cc7a80144b); otsikko+yhteystiedot tagit poistettuna: 'Siltamäen uimahalli Jousimiehentie 3, 00740 Helsinki'. API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa). Ikä: kuvaus 'Vauvauinnin voi aloittaa aikaisintaan 3 kuukauden iässä ja lapsen tulee painaa vähintään 5 kg.' – vain alaikäraja tiedossa, min_age=0, yläikärajaa ei kerrota lähteessä (max_age=null, ei arvattu). Kuvaus: 'Vauvauintiin voi vauvan lisäksi osallistua kaksi aikuista.' – aikuisen osallistumista ei sanota pakolliseksi/varmaksi, joten parent_child=unknown (sama linjaus kuin Taaperouinnin identtiselle ilmaisulle batch_2026-09-21_05:ssä). | district derived from postcode 00740 (postcode 00740 = Tilastokeskus Paavo postal area 'Siltamäki') | Ikä: alkaen 3 kk (lähde: 'aikaisintaan 3 kuukauden iässä'), yläikärajaa ei kerrota → max_age=null = avoin yläraja (Ilpon päätös 8, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_10.json",
      "staging_id": "batch_2026-09-22_10-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_10/uh_97810_6151b0bdc5aa.json",
      "capture_sha256": "6151b0bdc5aa1a9d11e39f46692f2656a3b5cf3d1d5c0b83af20e69c00fbe202",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 68.18,
    "monthly_cost_basis": "112.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Vauvauinti",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "alkaen 3 kk",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "09:00",
    "end_time": "09:30",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 112.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/97811",
    "source_quote": "Vauvauinti on perheen yhteinen, koulutetun ohjaajan valvoma leikkihetki puhtaassa ja lämmitetyssä vedessä.",
    "activity_id": "hel-2026-0171",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 112.0,
    "price_per_session_eur": 14.0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/97811",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/, tallenne data/staging/evidence_local/batch_2026-09-22_10/hall_siltamaki_22cc7a80144b.html sha256 22cc7a80144b); otsikko+yhteystiedot tagit poistettuna: 'Siltamäen uimahalli Jousimiehentie 3, 00740 Helsinki'. API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa). Ikä: kuvaus 'Vauvauinnin voi aloittaa aikaisintaan 3 kuukauden iässä ja lapsen tulee painaa vähintään 5 kg.' – vain alaikäraja tiedossa, min_age=0, yläikärajaa ei kerrota lähteessä (max_age=null, ei arvattu). Kuvaus: 'Vauvauintiin voi vauvan lisäksi osallistua kaksi aikuista.' – aikuisen osallistumista ei sanota pakolliseksi/varmaksi, joten parent_child=unknown (sama linjaus kuin Taaperouinnin identtiselle ilmaisulle batch_2026-09-21_05:ssä). | district derived from postcode 00740 (postcode 00740 = Tilastokeskus Paavo postal area 'Siltamäki') | Ikä: alkaen 3 kk (lähde: 'aikaisintaan 3 kuukauden iässä'), yläikärajaa ei kerrota → max_age=null = avoin yläraja (Ilpon päätös 8, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_10.json",
      "staging_id": "batch_2026-09-22_10-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_10/uh_97811_f26ae5cd93fe.json",
      "capture_sha256": "f26ae5cd93feb66b4be0a0934cc7cb408ea4ad1ea75ef94d5083ee92853c51fd",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 68.18,
    "monthly_cost_basis": "112.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Vauvauinti",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "alkaen 3 kk",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "10:30",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 112.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/97815",
    "source_quote": "Vauvauinti on perheen yhteinen, koulutetun ohjaajan valvoma leikkihetki puhtaassa ja lämmitetyssä vedessä.",
    "activity_id": "hel-2026-0172",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 112.0,
    "price_per_session_eur": 14.0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/97815",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/, tallenne data/staging/evidence_local/batch_2026-09-22_10/hall_siltamaki_22cc7a80144b.html sha256 22cc7a80144b); otsikko+yhteystiedot tagit poistettuna: 'Siltamäen uimahalli Jousimiehentie 3, 00740 Helsinki'. API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa). Ikä: kuvaus 'Vauvauinnin voi aloittaa aikaisintaan 3 kuukauden iässä ja lapsen tulee painaa vähintään 5 kg.' – vain alaikäraja tiedossa, min_age=0, yläikärajaa ei kerrota lähteessä (max_age=null, ei arvattu). Kuvaus: 'Vauvauintiin voi vauvan lisäksi osallistua kaksi aikuista.' – aikuisen osallistumista ei sanota pakolliseksi/varmaksi, joten parent_child=unknown (sama linjaus kuin Taaperouinnin identtiselle ilmaisulle batch_2026-09-21_05:ssä). | district derived from postcode 00740 (postcode 00740 = Tilastokeskus Paavo postal area 'Siltamäki') | Ikä: alkaen 3 kk (lähde: 'aikaisintaan 3 kuukauden iässä'), yläikärajaa ei kerrota → max_age=null = avoin yläraja (Ilpon päätös 8, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_10.json",
      "staging_id": "batch_2026-09-22_10-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_10/uh_97815_8aff7ca8a825.json",
      "capture_sha256": "8aff7ca8a825debabbe16e16998a387afe21dd4afb6fc58c695537f54f544693",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 68.18,
    "monthly_cost_basis": "112.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Vauvauinti",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "alkaen 3 kk",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "11:00",
    "end_time": "11:30",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 112.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/97816",
    "source_quote": "Vauvauinti on perheen yhteinen, koulutetun ohjaajan valvoma leikkihetki puhtaassa ja lämmitetyssä vedessä.",
    "activity_id": "hel-2026-0173",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 112.0,
    "price_per_session_eur": 14.0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/97816",
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/, tallenne data/staging/evidence_local/batch_2026-09-22_10/hall_siltamaki_22cc7a80144b.html sha256 22cc7a80144b); otsikko+yhteystiedot tagit poistettuna: 'Siltamäen uimahalli Jousimiehentie 3, 00740 Helsinki'. API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa). Ikä: kuvaus 'Vauvauinnin voi aloittaa aikaisintaan 3 kuukauden iässä ja lapsen tulee painaa vähintään 5 kg.' – vain alaikäraja tiedossa, min_age=0, yläikärajaa ei kerrota lähteessä (max_age=null, ei arvattu). Kuvaus: 'Vauvauintiin voi vauvan lisäksi osallistua kaksi aikuista.' – aikuisen osallistumista ei sanota pakolliseksi/varmaksi, joten parent_child=unknown (sama linjaus kuin Taaperouinnin identtiselle ilmaisulle batch_2026-09-21_05:ssä). | district derived from postcode 00740 (postcode 00740 = Tilastokeskus Paavo postal area 'Siltamäki') | Ikä: alkaen 3 kk (lähde: 'aikaisintaan 3 kuukauden iässä'), yläikärajaa ei kerrota → max_age=null = avoin yläraja (Ilpon päätös 8, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_10.json",
      "staging_id": "batch_2026-09-22_10-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_10/uh_97816_71001f571ae6.json",
      "capture_sha256": "71001f571ae6ef93aadd7ed6e54549c782f61da2ef98d1b602cde63943753bd8",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 68.18,
    "monthly_cost_basis": "112.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Vauvauinti",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "alkaen 3 kk",
    "parent_child": "unknown",
    "venue_name": "Siltamäen uimahalli",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "11:30",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 112.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/97817",
    "source_quote": "Vauvauinti on perheen yhteinen, koulutetun ohjaajan valvoma leikkihetki puhtaassa ja lämmitetyssä vedessä.",
    "activity_id": "hel-2026-0174",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 112.0,
    "price_per_session_eur": 14.0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/97817",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "venue_name käsin Urheiluhallien hallisivulta (https://www.urheiluhallit.fi/hallit/siltamaki/, tallenne data/staging/evidence_local/batch_2026-09-22_10/hall_siltamaki_22cc7a80144b.html sha256 22cc7a80144b); otsikko+yhteystiedot tagit poistettuna: 'Siltamäen uimahalli Jousimiehentie 3, 00740 Helsinki'. API:n location='Siltamäki'. district=null (ei virallista kaupunginosatietoa). Ikä: kuvaus 'Vauvauinnin voi aloittaa aikaisintaan 3 kuukauden iässä ja lapsen tulee painaa vähintään 5 kg.' – vain alaikäraja tiedossa, min_age=0, yläikärajaa ei kerrota lähteessä (max_age=null, ei arvattu). Kuvaus: 'Vauvauintiin voi vauvan lisäksi osallistua kaksi aikuista.' – aikuisen osallistumista ei sanota pakolliseksi/varmaksi, joten parent_child=unknown (sama linjaus kuin Taaperouinnin identtiselle ilmaisulle batch_2026-09-21_05:ssä). | district derived from postcode 00740 (postcode 00740 = Tilastokeskus Paavo postal area 'Siltamäki') | Ikä: alkaen 3 kk (lähde: 'aikaisintaan 3 kuukauden iässä'), yläikärajaa ei kerrota → max_age=null = avoin yläraja (Ilpon päätös 8, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_10.json",
      "staging_id": "batch_2026-09-22_10-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_10/uh_97817_98cfb99549c2.json",
      "capture_sha256": "98cfb99549c26614f075580d02cf8eb599c3ea5d93cfbf70637351deb6c9f37f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 68.18,
    "monthly_cost_basis": "112.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Helsinki - VSH ry",
    "group_name": "2020-2021 Jekkukoulu pojat ja tytöt KISAHALLI MA klo 16:00-17:00",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021 Jekkukoulu pojat ja tytöt KISAHALLI MA klo 16:00-17:00 — Alle kouluikäisten Jekkukoulu on vauhdikas voimistelutunti.",
    "parent_child": "unknown",
    "venue_name": "Töölön Kisahalli",
    "address": "Paavo Nurmenkuja 1C, 00250 helsinki, Suomi",
    "district": "Töölö",
    "weekday": "maanantai",
    "start_time": "16:00",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Harjoitusmaksu SYKSY 2026 240,00 € (myClub Hintatiedot)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilu vain uusille jäsenille: kaksi ensimmäistä harjoituskertaa, kokeilumaksu 32 €.",
    "enrollment_status": "open",
    "source_url": "https://voimisteluseurahelsinki.myclub.fi/flow/courses/10741288",
    "source_quote": "2020-2021 Jekkukoulu pojat ja tytöt KISAHALLI MA klo 16:00-17:00; Harjoitusmaksu SYKSY 2026 240,00 €; Jäsenmaksu 2026 30,00 €",
    "activity_id": "hel-2026-0175",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 270.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Harjoitusmaksu SYKSY 2026 240,00 € (myClub Hintatiedot)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "jos jäsenmaksua 2026 ei ole maksettu kevätkaudella",
        "note": "Jäsenmaksu 2026 30,00 € (myClub); 'Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta.' – pakollinen (Ilpon päätös 2, 22.9.2026: seuran oma hinnasto voittaa maksusivun 'Valinnaiset maksut' -merkinnän)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': 'Harjoitusmaksun SYKSY 2026 hyvitys -80,00 €' (ehtoja ei kerrota sivulla). Jumppaturva-vakuutus ei sisälly eikä ole vielä ostettavissa seuran kautta.",
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 16 laskettu koodilla myClub-aikataulun saman nimisistä riveistä; aikataulussa 1 'PERUTTU'-merkittyä kertaa (syysloma/itsenäisyyspäivä) jätetty pois. Jäsenmaksu 30 € on myClubissa otsikon 'Valinnaiset maksut' alla, mutta sivun teksti: hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta; jäsenmaksu valittava, ellei maksettu kevätkaudella → pakollinen (applies_if). Kausi alkoi 2026-08-17. | Jäsenmaksu pakollinen (Ilpon päätös 2, 22.9.2026): maksusivulla 'Valinnaiset maksut', seuran oma hinnasto/laskutusteksti pakollinen. | 'Harjoitusmaksun SYKSY 2026 hyvitys -80,00 €' on valinnainen hyvitys, jonka ehtoja ei kerrota: ei vähennetty perushinnasta (Ilpon päätös 4: alennus/hyvitys on ehto, ei perushinta); ks. optional_cost_notes.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_11.json",
      "staging_id": "batch_2026-09-22_11-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_11/voimisteluseurahelsinki_myclub_fi_flow_courses_10741288_4b3795bc06b8.html",
      "capture_sha256": "4b3795bc06b82b147595fa878744d6169a9b927a3de8355687279dd494fe4c69",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 67.15,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Helsinki - VSH ry",
    "group_name": "2022-2023 Jekkukoulu pojat ja tytöt KISAHALLI SU klo 14:30-15:30",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-2023 Jekkukoulu pojat ja tytöt KISAHALLI SU klo 14:30-15:30 — Alle kouluikäisten Jekkukoulu on vauhdikas voimistelutunti.",
    "parent_child": "unknown",
    "venue_name": "Töölön Kisahalli",
    "address": "Paavo Nurmenkuja 1C, 00250 helsinki, Suomi",
    "district": "Töölö",
    "weekday": "sunnuntai",
    "start_time": "14:30",
    "end_time": "15:30",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Harjoitusmaksu SYKSY 2026 240,00 € (myClub Hintatiedot)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilu vain uusille jäsenille: kaksi ensimmäistä harjoituskertaa, kokeilumaksu 32 €.",
    "enrollment_status": "open",
    "source_url": "https://voimisteluseurahelsinki.myclub.fi/flow/courses/10741277",
    "source_quote": "2022-2023 Jekkukoulu pojat ja tytöt KISAHALLI SU klo 14:30-15:30; Harjoitusmaksu SYKSY 2026 240,00 €; Jäsenmaksu 2026 30,00 €",
    "activity_id": "hel-2026-0176",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 270.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-23",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Harjoitusmaksu SYKSY 2026 240,00 € (myClub Hintatiedot)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "jos jäsenmaksua 2026 ei ole maksettu kevätkaudella",
        "note": "Jäsenmaksu 2026 30,00 € (myClub); 'Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta.' – pakollinen (Ilpon päätös 2, 22.9.2026: seuran oma hinnasto voittaa maksusivun 'Valinnaiset maksut' -merkinnän)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': 'Harjoitusmaksun SYKSY 2026 hyvitys -80,00 €' (ehtoja ei kerrota sivulla). Jumppaturva-vakuutus ei sisälly eikä ole vielä ostettavissa seuran kautta.",
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 16 laskettu koodilla myClub-aikataulun saman nimisistä riveistä; aikataulussa 1 'PERUTTU'-merkittyä kertaa (syysloma/itsenäisyyspäivä) jätetty pois. Jäsenmaksu 30 € on myClubissa otsikon 'Valinnaiset maksut' alla, mutta sivun teksti: hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta; jäsenmaksu valittava, ellei maksettu kevätkaudella → pakollinen (applies_if). Kausi alkoi 2026-08-23. | Jäsenmaksu pakollinen (Ilpon päätös 2, 22.9.2026): maksusivulla 'Valinnaiset maksut', seuran oma hinnasto/laskutusteksti pakollinen. | 'Harjoitusmaksun SYKSY 2026 hyvitys -80,00 €' on valinnainen hyvitys, jonka ehtoja ei kerrota: ei vähennetty perushinnasta (Ilpon päätös 4: alennus/hyvitys on ehto, ei perushinta); ks. optional_cost_notes.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_11.json",
      "staging_id": "batch_2026-09-22_11-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_11/voimisteluseurahelsinki_myclub_fi_flow_courses_10741277_b32e1a4f7706.html",
      "capture_sha256": "b32e1a4f7706ae8334e7490e1e15f17274b5117b23ed50ab1e6e7a105c9aa57a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 67.15,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.71 kuukaudelle (2026-08-23–2026-12-13, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Satutanssi 3-4v. Maanantai 18-19 (syksy 2026)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "Satutanssi 3-4v. Maanantai 18-19 (syksy 2026)",
    "parent_child": "unknown",
    "venue_name": "Pukinmäenkaaren peruskoulu",
    "address": "Kenttäkuja 12, 00720 Helsinki",
    "district": "Pukinmäki",
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (myClub-kuvaus): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €' (alennettu)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Tuntiin voi tutustua laskun eräpäivän puitteissa veloituksetta.",
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942575",
    "source_quote": "Satutanssi 3-4v. Maanantai 18-19 (syksy 2026); Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €; Jäsenmaksu 2026-2027 30,00 €; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0177",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Seuran hinnat (myClub-kuvaus): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €' (alennettu)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027 30,00 € (kerran toimintavuodessa 1.6.–31.5.)"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivu 21.9.2026: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € 114,00 €'; kuvaus: 'Loppukauden –50% alennus alkaa vk 43'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Maksut eivät sisällä vakuutusta. Lisätunnista -20 %; loppukauden -50 % alennus alkaa vk 43.",
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €'. Ilmoittautumissivu näyttää alennetun hinnan 114 € (-25 %); price_eur = normaalihinta 151 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä. Alennettu hinta voi muuttua (loppukauden -50 % vk 43 alkaen). Kertamäärä 16 laskettu koodilla myClub-aikataulusta. Kausi alkoi 2026-08-17.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_11.json",
      "staging_id": "batch_2026-09-22_11-015",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_11/pnv_myclub_fi_flow_courses_10942575_a3b3072e207d.html",
      "capture_sha256": "a3b3072e207d57ea89b13b97cac59de480f5a0765d184accd254cc0625558731",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 43.17,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pukinmäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Satutanssi 5-6v. Keskiviikko 17-18 (syksy 2026)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "Satutanssi 5-6v. Keskiviikko 17-18 (syksy 2026)",
    "parent_child": "unknown",
    "venue_name": "Pakilan ala-aste, Eloisa",
    "address": "Elontie 35, 00660 Helsinki",
    "district": "Pakila",
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (myClub-kuvaus): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €' (alennettu)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Tuntiin voi tutustua laskun eräpäivän puitteissa veloituksetta.",
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942590",
    "source_quote": "Satutanssi 5-6v. Keskiviikko 17-18 (syksy 2026); Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €; Jäsenmaksu 2026-2027 30,00 €; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0178",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Seuran hinnat (myClub-kuvaus): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €' (alennettu)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027 30,00 € (kerran toimintavuodessa 1.6.–31.5.)"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivu 21.9.2026: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € 114,00 €'; kuvaus: 'Loppukauden –50% alennus alkaa vk 43'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Maksut eivät sisällä vakuutusta. Lisätunnista -20 %; loppukauden -50 % alennus alkaa vk 43.",
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €'. Ilmoittautumissivu näyttää alennetun hinnan 114 € (-25 %); price_eur = normaalihinta 151 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä. Alennettu hinta voi muuttua (loppukauden -50 % vk 43 alkaen). Kertamäärä 16 laskettu koodilla myClub-aikataulusta. Kausi alkoi 2026-08-19.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_11.json",
      "staging_id": "batch_2026-09-22_11-016",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_11/pnv_myclub_fi_flow_courses_10942590_733d2c34494b.html",
      "capture_sha256": "733d2c34494b6965be0a286d41b041a5844eab74465ecfb0a8b191f58d119abf",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 43.17,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-19–2026-12-09, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pakila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Voimistelukoulu 3-4v. Keskiviikko 17-18 (syksy 2026)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "Voimistelukoulu 3-4v. Keskiviikko 17-18 (syksy 2026)",
    "parent_child": "unknown",
    "venue_name": "Pakilanpuiston koulu",
    "address": "Halkosuontie 88, 00660 Helsinki, Suomi",
    "district": "Pakila",
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (myClub-kuvaus): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €' (alennettu)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Tuntiin voi tutustua laskun eräpäivän puitteissa veloituksetta.",
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10946882",
    "source_quote": "Voimistelukoulu 3-4v. Keskiviikko 17-18 (syksy 2026); Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €; Jäsenmaksu 2026-2027 30,00 €; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0179",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Seuran hinnat (myClub-kuvaus): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €' (alennettu)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027 30,00 € (kerran toimintavuodessa 1.6.–31.5.)"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivu 21.9.2026: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € 114,00 €'; kuvaus: 'Loppukauden –50% alennus alkaa vk 43'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Maksut eivät sisällä vakuutusta. Lisätunnista -20 %; loppukauden -50 % alennus alkaa vk 43.",
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €'. Ilmoittautumissivu näyttää alennetun hinnan 114 € (-25 %); price_eur = normaalihinta 151 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä. Alennettu hinta voi muuttua (loppukauden -50 % vk 43 alkaen). Kertamäärä 16 laskettu koodilla myClub-aikataulusta. Kausi alkoi 2026-08-19.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_11.json",
      "staging_id": "batch_2026-09-22_11-017",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_11/pnv_myclub_fi_flow_courses_10946882_eb7371b0ee7c.html",
      "capture_sha256": "eb7371b0ee7cbd0eae99bc629709dd94cdc0c0d0d53d6ddacd77b4b2b1379388",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 43.17,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-19–2026-12-09, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pakila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Voimistelukoulu 5-6v. Maanantai 17.45-18.45 (syksy 2026)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "Voimistelukoulu 5-6v. Maanantai 17.45-18.45 (syksy 2026)",
    "parent_child": "unknown",
    "venue_name": "PNV Liikuntakeskus / Barre",
    "address": "Ohrahuhdantie 4, 00680 Helsinki, Suomi",
    "district": "Itä-Pakila",
    "weekday": "maanantai",
    "start_time": "17:45",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (myClub-kuvaus): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €' (alennettu)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Tuntiin voi tutustua laskun eräpäivän puitteissa veloituksetta.",
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942580",
    "source_quote": "Voimistelukoulu 5-6v. Maanantai 17.45-18.45 (syksy 2026); Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €; Jäsenmaksu 2026-2027 30,00 €; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0180",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Seuran hinnat (myClub-kuvaus): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €' (alennettu)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027 30,00 € (kerran toimintavuodessa 1.6.–31.5.)"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivu 21.9.2026: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € 114,00 €'; kuvaus: 'Loppukauden –50% alennus alkaa vk 43'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Maksut eivät sisällä vakuutusta. Lisätunnista -20 %; loppukauden -50 % alennus alkaa vk 43.",
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 €'. Ilmoittautumissivu näyttää alennetun hinnan 114 € (-25 %); price_eur = normaalihinta 151 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä. Alennettu hinta voi muuttua (loppukauden -50 % vk 43 alkaen). Kertamäärä 16 laskettu koodilla myClub-aikataulusta. Kausi alkoi 2026-08-17. | district derived from postcode 00680 (postcode 00680 = Tilastokeskus Paavo postal area 'Itä-Pakila')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_11.json",
      "staging_id": "batch_2026-09-22_11-018",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_11/pnv_myclub_fi_flow_courses_10942580_ba7703278c70.html",
      "capture_sha256": "ba7703278c7090b58ff8105d8ea26b5f43c3bdbd2643e90a2ee04669f76e5d4d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 43.17,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Itä-Pakila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Perhetanssi 1-6v. Keskiviikko 16.45-17.30 (syksy 2026)",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "Perhetanssi 1-6v. Keskiviikko 16.45-17.30 (syksy 2026)",
    "parent_child": "unknown",
    "venue_name": "PNV Liikuntakeskus / Barre",
    "address": "Ohrahuhdantie 4, 00680 Helsinki, Suomi",
    "district": "Itä-Pakila",
    "weekday": "keskiviikko",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (myClub-kuvaus): 'Perheliikunta: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114,00 €' (alennettu)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Tuntiin voi tutustua laskun eräpäivän puitteissa veloituksetta.",
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942523",
    "source_quote": "Perhetanssi 1-6v. Keskiviikko 16.45-17.30 (syksy 2026); Perheliikunta syksy 2026 -25% 114,00 €; Jäsenmaksu 2026-2027 30,00 €; Perheliikunta: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0181",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Seuran hinnat (myClub-kuvaus): 'Perheliikunta: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114,00 €' (alennettu)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027 30,00 € (kerran toimintavuodessa 1.6.–31.5.)"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivu 21.9.2026: 'Perheliikunta syksy 2026 -25% 114,00 € 114,00 €'; kuvaus: 'Loppukauden –50% alennus alkaa vk 43'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Maksut eivät sisällä vakuutusta. Lisätunnista -20 %; loppukauden -50 % alennus alkaa vk 43.",
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus 'Perheliikunta: syyskausi 2026: 151 €', myClub Hintatiedot 'Perheliikunta syksy 2026 -25% 114,00 €'. Ilmoittautumissivu näyttää alennetun hinnan 114 € (-25 %); price_eur = normaalihinta 151 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä. Alennettu hinta voi muuttua (loppukauden -50 % vk 43 alkaen). Kertamäärä 16 laskettu koodilla myClub-aikataulusta. Kausi alkoi 2026-08-19. Perhetanssi: huoltajan osallistumista ei sanota sivulla eksplisiittisesti (liite 'vanhempien info') → parent_child unknown. | district derived from postcode 00680 (postcode 00680 = Tilastokeskus Paavo postal area 'Itä-Pakila')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_11.json",
      "staging_id": "batch_2026-09-22_11-019",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_11/pnv_myclub_fi_flow_courses_10942523_a8e4bba0ee31.html",
      "capture_sha256": "a8e4bba0ee31879a10960878d65a9421d0729b3683d94a28859afe572b19576a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 43.17,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-19–2026-12-09, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Itä-Pakila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Kannelmäen Voimistelijat ry",
    "group_name": "Voimistelukoulu 4–6 v MA 17:15-18:00 | Gymnastics 4-6 years Mon 17:15-18:00",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "Voimistelukoulu 4–6 v MA 17:15-18:00 | Gymnastics 4-6 years Mon 17:15-18:00",
    "parent_child": "unknown",
    "venue_name": "Malminkartanon ala-aste (Puustellintie 6)",
    "address": "Puustellintie 6, 00410 Helsinki, Suomi",
    "district": "Malminkartano",
    "weekday": "maanantai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-11-30",
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Hinnasto syksy 2026: Lasten tunnit arkisin (1 krt/vk) 130 € (syyskausi 31.8.–13.12.2026)",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://kannelmaenvoimistelijat.myclub.fi/flow/courses/10940628",
    "source_quote": "Voimistelukoulu 4–6 v MA 17:15-18:00 | Gymnastics 4-6 years Mon 17:15-18:00; hinnasto syksy 2026: Lasten tunnit arkisin (1 krt/vk) 130 €; jäsenmaksu lapsi 15 €",
    "activity_id": "hel-2026-0182",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 145.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.kannelmaenvoimistelijat.fi/ilmoittautuminen-ja-hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-11-30",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-11-30",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Hinnasto syksy 2026: Lasten tunnit arkisin (1 krt/vk) 130 € (syyskausi 31.8.–13.12.2026)"
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "kerran kalenterivuodessa (ei, jos jo maksettu 2026)",
        "note": "Jäsenmaksu lapsi 2026 15 € / kalenterivuosi (hinnasto; myClub 'Vaadittavat tuotteet' alk. 15,00 €)"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -10 %",
        "amount_eur": 117.0,
        "applies_if": "ilmoittautumissivu (myClub 'Vaadittavat tuotteet') 21.9.2026: 'Kausimaksu lasten tunnit arkisin S2026 (1 krt/vk), Saman lapsen toinen perushintainen lasten tunti -10 % S2026, tai Sisarusalennus -10 % S2026 alk. 117,00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Sisarusalennus / toinen tunti -10 %. Seura ei ole vakuuttanut osallistujia.",
    "unverified_fields": [],
    "verification_notes": "myClub 'Vaadittavat tuotteet' näyttää vain 'alk.'-hinnat (kausimaksu arkisin alk. 117,00 € = 130 € − 10 % alennusvaihtoehto; jäsenmaksu lapsi alk. 15,00 €), joten perushinta luettu seuran hinnastosivulta (Hinnasto syksy 2026, syyskausi 31.8.–13.12.2026). Kertamäärä 13 laskettu koodilla myClub-aikataulusta. Kausi alkoi 2026-08-31. | Ilmoittautumissivu näyttää vain alennetun 'alk. 117,00 €'; price_eur = normaalihinta 130 € seuran hinnastosta (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_11.json",
      "staging_id": "batch_2026-09-22_11-020",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_11/kannelmaenvoimistelijat_myclub_fi_flow_courses_10940628_5eb4b8690d28.html",
      "capture_sha256": "5eb4b8690d28fba1e53a5b3b660968816e64a52680de077027d5b3c4fb505b2b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 44.26,
    "monthly_cost_basis": "130.0 € / term jaettuna 3.02 kuukaudelle (2026-08-31–2026-11-30, price_period_start) + membership 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Malminkartano",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Kannelmäen Voimistelijat ry",
    "group_name": "Dance kids 4-6 v MA 17:15-18:00 | Dance kids 4-6 years MA 17:15-18:00",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "Dance kids 4-6 v MA 17:15-18:00 | Dance kids 4-6 years MA 17:15-18:00",
    "parent_child": "unknown",
    "venue_name": "Hoplaxskolan, Kårböle (Sorolantie 2)",
    "address": "Sorolantie 2, 00420 Helsinki, Suomi",
    "district": "Kannelmäki",
    "weekday": "maanantai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Hinnasto syksy 2026: Lasten tunnit arkisin (1 krt/vk) 130 € (syyskausi 31.8.–13.12.2026)",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://kannelmaenvoimistelijat.myclub.fi/flow/courses/10940393",
    "source_quote": "Dance kids 4-6 v MA 17:15-18:00 | Dance kids 4-6 years MA 17:15-18:00; hinnasto syksy 2026: Lasten tunnit arkisin (1 krt/vk) 130 €; jäsenmaksu lapsi 15 €",
    "activity_id": "hel-2026-0183",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 145.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.kannelmaenvoimistelijat.fi/ilmoittautuminen-ja-hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Hinnasto syksy 2026: Lasten tunnit arkisin (1 krt/vk) 130 € (syyskausi 31.8.–13.12.2026)"
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "kerran kalenterivuodessa (ei, jos jo maksettu 2026)",
        "note": "Jäsenmaksu lapsi 2026 15 € / kalenterivuosi (hinnasto; myClub 'Vaadittavat tuotteet' alk. 15,00 €)"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -10 %",
        "amount_eur": 117.0,
        "applies_if": "ilmoittautumissivu (myClub 'Vaadittavat tuotteet') 21.9.2026: 'Kausimaksu lasten tunnit arkisin S2026 (1 krt/vk), Saman lapsen toinen perushintainen lasten tunti -10 % S2026, tai Sisarusalennus -10 % S2026 alk. 117,00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Sisarusalennus / toinen tunti -10 %. Seura ei ole vakuuttanut osallistujia.",
    "unverified_fields": [],
    "verification_notes": "myClub 'Vaadittavat tuotteet' näyttää vain 'alk.'-hinnat (kausimaksu arkisin alk. 117,00 € = 130 € − 10 % alennusvaihtoehto; jäsenmaksu lapsi alk. 15,00 €), joten perushinta luettu seuran hinnastosivulta (Hinnasto syksy 2026, syyskausi 31.8.–13.12.2026). Kertamäärä 14 laskettu koodilla myClub-aikataulusta. Kausi alkoi 2026-08-31. | Ilmoittautumissivu näyttää vain alennetun 'alk. 117,00 €'; price_eur = normaalihinta 130 € seuran hinnastosta (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_11.json",
      "staging_id": "batch_2026-09-22_11-021",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_11/kannelmaenvoimistelijat_myclub_fi_flow_courses_10940393_2780c5268c0e.html",
      "capture_sha256": "2780c5268c0ef90635cd689d4f88558fa80c053054ba0c4c055f4cc52f6b2b8b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 41.22,
    "monthly_cost_basis": "130.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start) + membership 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Kannelmäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Kannelmäen Voimistelijat ry",
    "group_name": "Telinejumppa 4-6 v KE 17:15-18:00 | Artistic gymnastics 4-6 years Wed 17:15-18:00",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "Telinejumppa 4-6 v KE 17:15-18:00 | Artistic gymnastics 4-6 years Wed 17:15-18:00",
    "parent_child": "unknown",
    "venue_name": "Kannelmäen peruskoulu, Raitti (Kaarelan Raitti 1 B)",
    "address": "Kaarelan Raitti 1 B, 00430 Helsinki, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Hinnasto syksy 2026: Lasten tunnit arkisin (1 krt/vk) 130 € (syyskausi 31.8.–13.12.2026)",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://kannelmaenvoimistelijat.myclub.fi/flow/courses/10941338",
    "source_quote": "Telinejumppa 4-6 v KE 17:15-18:00 | Artistic gymnastics 4-6 years Wed 17:15-18:00; hinnasto syksy 2026: Lasten tunnit arkisin (1 krt/vk) 130 €; jäsenmaksu lapsi 15 €",
    "activity_id": "hel-2026-0184",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 145.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.kannelmaenvoimistelijat.fi/ilmoittautuminen-ja-hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Hinnasto syksy 2026: Lasten tunnit arkisin (1 krt/vk) 130 € (syyskausi 31.8.–13.12.2026)"
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "kerran kalenterivuodessa (ei, jos jo maksettu 2026)",
        "note": "Jäsenmaksu lapsi 2026 15 € / kalenterivuosi (hinnasto; myClub 'Vaadittavat tuotteet' alk. 15,00 €)"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -10 %",
        "amount_eur": 117.0,
        "applies_if": "ilmoittautumissivu (myClub 'Vaadittavat tuotteet') 21.9.2026: 'Kausimaksu lasten tunnit arkisin S2026 (1 krt/vk), Saman lapsen toinen perushintainen lasten tunti -10 % S2026, tai Sisarusalennus -10 % S2026 alk. 117,00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Sisarusalennus / toinen tunti -10 %. Seura ei ole vakuuttanut osallistujia.",
    "unverified_fields": [],
    "verification_notes": "myClub 'Vaadittavat tuotteet' näyttää vain 'alk.'-hinnat (kausimaksu arkisin alk. 117,00 € = 130 € − 10 % alennusvaihtoehto; jäsenmaksu lapsi alk. 15,00 €), joten perushinta luettu seuran hinnastosivulta (Hinnasto syksy 2026, syyskausi 31.8.–13.12.2026). Kertamäärä 14 laskettu koodilla myClub-aikataulusta. Kausi alkoi 2026-09-02. | Ilmoittautumissivu näyttää vain alennetun 'alk. 117,00 €'; price_eur = normaalihinta 130 € seuran hinnastosta (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_11.json",
      "staging_id": "batch_2026-09-22_11-022",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_11/kannelmaenvoimistelijat_myclub_fi_flow_courses_10941338_6687e0a45c6f.html",
      "capture_sha256": "6687e0a45c6f0086d047abe5a68728155a96d2645c16c17977ae6df439cb7160",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 41.22,
    "monthly_cost_basis": "130.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start) + membership 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Kaarela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaarela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Kirppanat",
    "group_name": "Taaperotanssi ~1-2 v. (Kallio, su 10:00–10:40, A-jakso 13.9.–4.10.2026)",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "Taaperotanssi ~1-2 v. Taaperotanssi on Helsingissä järjestettävä tanssi- ja liikuntatunti 1–2-vuotiaille lapsille yhdessä vanhemman tai muun tutun aikuisen kanssa.",
    "parent_child": "yes",
    "venue_name": "Kallio, ala-aste",
    "address": null,
    "district": "Kallio",
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "10:40",
    "season": "syksy 2026",
    "start_date": "2026-09-13",
    "end_date": "2026-10-04",
    "sessions_count": 4,
    "price_eur": 57.0,
    "price_basis": "57 € / 1 lapsi, A-jakso 4 x",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://kirppanat.fi/aikataulut/viikkotunnit",
    "source_quote": "10.00 - 10.40 Kallio, ala-aste Taaperotanssi ~1-2 v. A-jakso: 13.9. - 4.10.2026 (4 x) 57 € / 1 lapsi, 85,50 € / 2 lasta",
    "activity_id": "hel-2026-0185",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 57.0,
    "price_per_session_eur": 14.25,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-13",
    "price_period_end": "2026-10-04",
    "season_start_date": "2026-09-13",
    "season_end_date": "2026-10-04",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kirppanat.fi/aikataulut/viikkotunnit",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 57,
        "mandatory": true,
        "included": true,
        "recurrence": "course",
        "applies_if": null,
        "note": "57 € / 1 lapsi, A-jakso 4 x"
      }
    ],
    "price_options": [
      {
        "label": "2 lasta",
        "amount_eur": 85.5,
        "applies_if": "saman perheen 2 lasta",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": null,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Aikataulusivun ryhmälohko: 'A-jakso: 13.9. - 4.10.2026 (4 x)', '57 € / 1 lapsi, 85,50 € / 2 lasta'; hinnasto: 'Taapero- & Tenavatanssi … -kurssit 57 € / 4 krt' (täsmää). Ilmoittautuminen Hoika-palvelussa (ei tarkistettu, ryhmäkohtaista tilaa ei julkisella sivulla) → saatavuus unknown. Kurssi alkoi 13.9.2026. Paikan katuosoitetta ei kerrota.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_11.json",
      "staging_id": "batch_2026-09-22_11-024",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_11/kirppanat_fi_aikataulut_viikkotunnit_d83256f4657f.html",
      "capture_sha256": "d83256f4657f20116b4d7f37f908383244a3f44bc50f7492e8d12d7e708a4925",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 78.86,
    "monthly_cost_basis": "57.0 € / course jaettuna 0.72 kuukaudelle (2026-09-13–2026-10-04, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kallio",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Kirppanat",
    "group_name": "Tenavatanssi ~2-4 v. (Kallio, su 10:50–11:30, A-jakso 13.9.–4.10.2026)",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "Tenavatanssi ~2-4 v. Tanssileikkiin ja luovaan tanssiin perustuva lapsen ja aikuisen yhteinen tanssituokio.",
    "parent_child": "yes",
    "venue_name": "Kallio, ala-aste",
    "address": null,
    "district": "Kallio",
    "weekday": "sunnuntai",
    "start_time": "10:50",
    "end_time": "11:30",
    "season": "syksy 2026",
    "start_date": "2026-09-13",
    "end_date": "2026-10-04",
    "sessions_count": 4,
    "price_eur": 57.0,
    "price_basis": "57 € / 1 lapsi, A-jakso 4 x",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://kirppanat.fi/aikataulut/viikkotunnit",
    "source_quote": "10.50 - 11.30 Kallio, ala-aste Tenavatanssi ~2-4 v. A-jakso: 13.9. - 4.10.2026 (4 x) 57 € / 1 lapsi, 85,50 € / 2 lasta",
    "activity_id": "hel-2026-0186",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 57.0,
    "price_per_session_eur": 14.25,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-13",
    "price_period_end": "2026-10-04",
    "season_start_date": "2026-09-13",
    "season_end_date": "2026-10-04",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kirppanat.fi/aikataulut/viikkotunnit",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 57,
        "mandatory": true,
        "included": true,
        "recurrence": "course",
        "applies_if": null,
        "note": "57 € / 1 lapsi, A-jakso 4 x"
      }
    ],
    "price_options": [
      {
        "label": "2 lasta",
        "amount_eur": 85.5,
        "applies_if": "saman perheen 2 lasta",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": null,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Aikataulusivun ryhmälohko: 'A-jakso: 13.9. - 4.10.2026 (4 x)', '57 € / 1 lapsi, 85,50 € / 2 lasta'; hinnasto: 'Taapero- & Tenavatanssi … -kurssit 57 € / 4 krt' (täsmää). Ilmoittautuminen Hoika-palvelussa (ei tarkistettu, ryhmäkohtaista tilaa ei julkisella sivulla) → saatavuus unknown. Kurssi alkoi 13.9.2026. Paikan katuosoitetta ei kerrota.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_11.json",
      "staging_id": "batch_2026-09-22_11-025",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_11/kirppanat_fi_aikataulut_viikkotunnit_d83256f4657f.html",
      "capture_sha256": "d83256f4657f20116b4d7f37f908383244a3f44bc50f7492e8d12d7e708a4925",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 78.86,
    "monthly_cost_basis": "57.0 € / course jaettuna 0.72 kuukaudelle (2026-09-13–2026-10-04, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kallio",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Voimisteluseura Fliku ry",
    "group_name": "PERHEJUMPPA 1-3v Sunnuntai, Syksy 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3v",
    "parent_child": "yes",
    "venue_name": "Liikuntamylly",
    "address": "Jauhokuja 3, 00920 Helsinki",
    "district": "Myllypuro",
    "weekday": "sunnuntai",
    "start_time": "10:15",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": "2026-08-30",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 € + Jäsenmaksu 2026 30,00 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Jäsenmaksu 2026 30 € (myClubissa valinnaisena, seuran hinnastossa pakollisena).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://fliku.myclub.fi/flow/courses/10653322",
    "source_quote": "PERHEJUMPPA 1-3v Sunnuntai, Syksy 2026; Liikuntamylly; Harjoitukset 1*45min/viikko, Syksy 2026 160,00 €; Jäsenmaksu 2026 30,00 €.",
    "activity_id": "hel-2026-0187",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 190.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://fliku.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-30",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-30",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Harjoitukset 1*45min/viikko, Syksy 2026 160,00 € (myClub Hintatiedot)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 2026 30,00 € – myClubissa otsikon 'Valinnaiset maksut' alla; seuran hinnasto: jokaisen jäsenen maksettava jäsenmaksu 30 € – pakollinen (Ilpon päätös 2, 22.9.2026: seuran oma hinnasto voittaa maksusivun 'Valinnaiset maksut' -merkinnän)"
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": "Perutusta kurssipaikasta veloitetaan 50 € varausmaksu (peruutus mahdollinen ensimmäisen kokeilukerran jälkeen).",
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_09 deferred-listalta (collected from deferred batch_2026-09-22_09). Aikataulurivien nimi 'PERHEJUMPPA 2 (Sunnuntai), Syksy 2026' poikkeaa kurssin nimestä 'PERHEJUMPPA 1-3v Sunnuntai, Syksy 2026'; kurssilla ei muita harjoitusrivejä, joten kaikki PERHEJUMPPA-rivit laskettu. Kertamäärä laskettu koodilla aikataulusta: 14 harjoitusriviä; pois 'EI HARJOITUKSIA' -rivit: 2026-10-18 SYYSLOMA, EI HARJOITUKSIA; 2026-12-06 PYHÄPÄIVÄ, Ei harjoituksia. Kurssi alkanut 2026-08-30. Laji: myClub-ryhmä 'Lapset 1-5v'; kurssi listattu fliku.fi:n upotuksessa 'ILMOITTAUTUMINEN 1-5v RYHMIIN:'. | billing_period=term hinnan nimen kausisanasta 'Syksy 2026' (myclub.py v4 -sääntö, sama kuin käsiarvo; 22.9.2026). | Jäsenmaksu pakollinen (Ilpon päätös 2, 22.9.2026): maksusivulla 'Valinnaiset maksut', seuran oma hinnasto/laskutusteksti pakollinen. | Hinta: lapsi + aikuinen (Ilpon päätös 7, 22.9.2026: hinta näytetään lapsi + aikuinen -merkinnällä; erillistä aikuisen maksua ei oleteta, price_covers.verified=false).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/fliku_perhe_d5f538057ec4.html",
      "capture_sha256": "d5f538057ec4163ce0a04e5ff04be412fee7cf20cf4898fcb608f974acdd8c5b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.44,
    "monthly_cost_basis": "160.0 € / term jaettuna 3.48 kuukaudelle (2026-08-30–2026-12-13, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingin Luistelijat ry",
    "group_name": "Kehitysryhmä Minitähdet maanantai Herttoniemi 2026-2027",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "n. 3-6 -vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Herttoniemen jäähalli 1",
    "address": "Abraham Wetterin tie 1, 00810 Helsinki",
    "district": "Herttoniemi",
    "weekday": "maanantai",
    "start_time": "17:15",
    "end_time": "18:45",
    "season": "kausi 2026–2027",
    "start_date": "2026-08-31",
    "end_date": "2027-04-26",
    "sessions_count": null,
    "price_eur": 69.0,
    "price_basis": "1 x viikossa 69 €/kk (+ jäsenmaksu 45 € ja luistelukoulupassi 15 € kerran kaudessa)",
    "membership_fee_eur": 45.0,
    "other_required_fees": "Seuran jäsenmaksu 45 € ja vakuutuksellinen luistelukoulupassi 15 € kerran kaudessa (1.5.–30.4.); lisäksi ilmoittautuminen Suomisportin 'HL Minitähdet 2026-2027' -tapahtumaan.",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://hl.myclub.fi/flow/courses/10903448",
    "source_quote": "Kehitysryhmä Minitähdet maanantai Herttoniemi 2026-2027; Minitähtien hinta 1 x viikossa on 69€ kuukaudessa; jäsenmaksu 45€ sekä luistelukoulupassi 15€.",
    "activity_id": "hel-2026-0188",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-31",
    "season_end_date": "2027-04-26",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 69,
        "mandatory": true,
        "included": true,
        "recurrence": "month",
        "applies_if": null,
        "note": "Minitähtien hinta 1 x viikossa on 69€ kuukaudessa."
      },
      {
        "type": "membership",
        "amount_eur": 45,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "seuran jäsenmaksu 45€, laskutetaan kerran kaudessa (1.5.-30.4.)"
      },
      {
        "type": "skating_school_pass",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "season",
        "applies_if": null,
        "note": "vakuutuksellinen luistelukoulupassi 15€, laskutetaan kerran kaudessa (1.5.-30.4.)"
      }
    ],
    "price_options": [
      {
        "label": "2 x viikossa",
        "amount_eur": 119.0,
        "applies_if": "kaksi kiinteää harjoituspäivää (erillinen ilmoittautuminen toiseen päivään)",
        "includes": "Minitähtien hinta 2 x viikossa on 119€ kuukaudessa."
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_09 deferred-listalta (collected from deferred batch_2026-09-22_09). Kehitysryhmä (seuran ensimmäinen), ei alkeiskurssi: 'lapsen tulee pysyä jäällä pystyssä sekä osata liikkua jäällä itsenäisesti'. Yksi ryhmä, neljä harjoituspäivää, joista valitaan 1–2 kiinteää; tämä rivi = maanantain harjoituspäivä (Herttoniemi), oma myClub-ilmoittautuminen. Harjoituskerta = jää- + oheisharjoitus (17.15-17.45 oheisharjoitus, 18.00-18.45 jääharjoitus). Kertamäärä jätetty tyhjäksi: myClub-aikataulu näyttää vain 16 harjoituspäivää 2026-08-31–2026-12-14 (rivejä {'Minitähdet oheiset': 16, 'Minitähdet jää': 16}), mutta kurssijakso on 2026-08-31–2027-04-26. Hinta kuukausihinta; kauden kuukausimäärää ei julkaistu ('syyskuu - huhtikuu'), joten kausisummaa ei laskettu. Kurssi alkanut 2026-08-31. Ikä 'n. 3-6' on likimääräinen. | Kehitysryhmä, vaatii luistelutaidon. Kuukausihinta 69 €/kk (2 x viikossa 119 €/kk price_options-kentässä), ei muunneta kausisummaksi, ei hintavertailuun (Ilpon päätös 5, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/hl_mini_ma_2907defc19b6.html",
      "capture_sha256": "2907defc19b62253ad1c049d07d92a74c095f1ccc0b04e4a36991ce91c59f49f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 74.0,
    "monthly_cost_basis": "69.0 €/kk + membership 45 €/v ÷ 12 + skating_school_pass 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingin Luistelijat ry",
    "group_name": "Kehitysryhmä Minitähdet tiistai Pirkkola 2026-2027",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "n. 3-6 -vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan jäähalli 1",
    "address": "Plotinrinne 8, 00630 Helsinki",
    "district": "Pirkkola",
    "weekday": "tiistai",
    "start_time": "17:45",
    "end_time": "19:15",
    "season": "kausi 2026–2027",
    "start_date": "2026-09-01",
    "end_date": "2027-04-27",
    "sessions_count": null,
    "price_eur": 69.0,
    "price_basis": "1 x viikossa 69 €/kk (+ jäsenmaksu 45 € ja luistelukoulupassi 15 € kerran kaudessa)",
    "membership_fee_eur": 45.0,
    "other_required_fees": "Seuran jäsenmaksu 45 € ja vakuutuksellinen luistelukoulupassi 15 € kerran kaudessa (1.5.–30.4.); lisäksi ilmoittautuminen Suomisportin 'HL Minitähdet 2026-2027' -tapahtumaan.",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://hl.myclub.fi/flow/courses/10903666",
    "source_quote": "Kehitysryhmä Minitähdet tiistai Pirkkola 2026-2027; Minitähtien hinta 1 x viikossa on 69€ kuukaudessa; jäsenmaksu 45€ sekä luistelukoulupassi 15€.",
    "activity_id": "hel-2026-0189",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-01",
    "season_end_date": "2027-04-27",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 69,
        "mandatory": true,
        "included": true,
        "recurrence": "month",
        "applies_if": null,
        "note": "Minitähtien hinta 1 x viikossa on 69€ kuukaudessa."
      },
      {
        "type": "membership",
        "amount_eur": 45,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "seuran jäsenmaksu 45€, laskutetaan kerran kaudessa (1.5.-30.4.)"
      },
      {
        "type": "skating_school_pass",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "season",
        "applies_if": null,
        "note": "vakuutuksellinen luistelukoulupassi 15€, laskutetaan kerran kaudessa (1.5.-30.4.)"
      }
    ],
    "price_options": [
      {
        "label": "2 x viikossa",
        "amount_eur": 119.0,
        "applies_if": "kaksi kiinteää harjoituspäivää (erillinen ilmoittautuminen toiseen päivään)",
        "includes": "Minitähtien hinta 2 x viikossa on 119€ kuukaudessa."
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_09 deferred-listalta (collected from deferred batch_2026-09-22_09). Kehitysryhmä (seuran ensimmäinen), ei alkeiskurssi: 'lapsen tulee pysyä jäällä pystyssä sekä osata liikkua jäällä itsenäisesti'. Yksi ryhmä, neljä harjoituspäivää, joista valitaan 1–2 kiinteää; tämä rivi = tiistain harjoituspäivä (Pirkkola), oma myClub-ilmoittautuminen. Harjoituskerta = jää- + oheisharjoitus (17.45-18.30 jääharjoitus, 18.45-19.15 oheisharjoitus). Kertamäärä jätetty tyhjäksi: myClub-aikataulu näyttää vain 16 harjoituspäivää 2026-09-01–2026-12-15 (rivejä {'Minitähdet jää': 16, 'Minitähdet oheiset': 16}), mutta kurssijakso on 2026-09-01–2027-04-27. Hinta kuukausihinta; kauden kuukausimäärää ei julkaistu ('syyskuu - huhtikuu'), joten kausisummaa ei laskettu. Kurssi alkanut 2026-09-01. Ikä 'n. 3-6' on likimääräinen. | Kehitysryhmä, vaatii luistelutaidon. Kuukausihinta 69 €/kk (2 x viikossa 119 €/kk price_options-kentässä), ei muunneta kausisummaksi, ei hintavertailuun (Ilpon päätös 5, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/hl_mini_ti_ba6f1bcd5ac5.html",
      "capture_sha256": "ba6f1bcd5ac5d6a9d51f8ad55c429b6087d5fb11749c07e0ccd02994246df7a2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 74.0,
    "monthly_cost_basis": "69.0 €/kk + membership 45 €/v ÷ 12 + skating_school_pass 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingin Luistelijat ry",
    "group_name": "Kehitysryhmä Minitähdet perjantai Kivikko 2026-2027",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "n. 3-6 -vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Kivikon jäähalli 3",
    "address": "Savikiekontie 4, 00940 Helsinki",
    "district": "Kivikko",
    "weekday": "perjantai",
    "start_time": "17:45",
    "end_time": "19:15",
    "season": "kausi 2026–2027",
    "start_date": "2026-09-04",
    "end_date": "2027-04-23",
    "sessions_count": null,
    "price_eur": 69.0,
    "price_basis": "1 x viikossa 69 €/kk (+ jäsenmaksu 45 € ja luistelukoulupassi 15 € kerran kaudessa)",
    "membership_fee_eur": 45.0,
    "other_required_fees": "Seuran jäsenmaksu 45 € ja vakuutuksellinen luistelukoulupassi 15 € kerran kaudessa (1.5.–30.4.); lisäksi ilmoittautuminen Suomisportin 'HL Minitähdet 2026-2027' -tapahtumaan.",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://hl.myclub.fi/flow/courses/10903675",
    "source_quote": "Kehitysryhmä Minitähdet perjantai Kivikko 2026-2027; Minitähtien hinta 1 x viikossa on 69€ kuukaudessa; jäsenmaksu 45€ sekä luistelukoulupassi 15€.",
    "activity_id": "hel-2026-0190",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-04",
    "season_end_date": "2027-04-23",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 69,
        "mandatory": true,
        "included": true,
        "recurrence": "month",
        "applies_if": null,
        "note": "Minitähtien hinta 1 x viikossa on 69€ kuukaudessa."
      },
      {
        "type": "membership",
        "amount_eur": 45,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "seuran jäsenmaksu 45€, laskutetaan kerran kaudessa (1.5.-30.4.)"
      },
      {
        "type": "skating_school_pass",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "season",
        "applies_if": null,
        "note": "vakuutuksellinen luistelukoulupassi 15€, laskutetaan kerran kaudessa (1.5.-30.4.)"
      }
    ],
    "price_options": [
      {
        "label": "2 x viikossa",
        "amount_eur": 119.0,
        "applies_if": "kaksi kiinteää harjoituspäivää (erillinen ilmoittautuminen toiseen päivään)",
        "includes": "Minitähtien hinta 2 x viikossa on 119€ kuukaudessa."
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_09 deferred-listalta (collected from deferred batch_2026-09-22_09). Kehitysryhmä (seuran ensimmäinen), ei alkeiskurssi: 'lapsen tulee pysyä jäällä pystyssä sekä osata liikkua jäällä itsenäisesti'. Yksi ryhmä, neljä harjoituspäivää, joista valitaan 1–2 kiinteää; tämä rivi = perjantain harjoituspäivä (Kivikko), oma myClub-ilmoittautuminen. Harjoituskerta = jää- + oheisharjoitus (17.45-18.30 jääharjoitus, 18.45-19.15 oheisharjoitus). Kertamäärä jätetty tyhjäksi: myClub-aikataulu näyttää vain 16 harjoituspäivää 2026-09-04–2026-12-18 (rivejä {'Minitähdet jää': 16, 'Minitähdet oheiset': 16}), mutta kurssijakso on 2026-09-04–2027-04-23. Hinta kuukausihinta; kauden kuukausimäärää ei julkaistu ('syyskuu - huhtikuu'), joten kausisummaa ei laskettu. Kurssi alkanut 2026-09-04. Ikä 'n. 3-6' on likimääräinen. | Kehitysryhmä, vaatii luistelutaidon. Kuukausihinta 69 €/kk (2 x viikossa 119 €/kk price_options-kentässä), ei muunneta kausisummaksi, ei hintavertailuun (Ilpon päätös 5, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/hl_mini_pe_cf3c2b3960c0.html",
      "capture_sha256": "cf3c2b3960c0db4240b2f78b60ed56894ddef18fc039711b7f3c51c4439f50ca",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 74.0,
    "monthly_cost_basis": "69.0 €/kk + membership 45 €/v ÷ 12 + skating_school_pass 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Kivikko",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingin Luistelijat ry",
    "group_name": "Kehitysryhmä Minitähdet lauantai Kaarela 2026-2027",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "n. 3-6 -vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Kaarelan jäähalli 2",
    "address": "Kaarelan raitti 2, 00430 Helsinki",
    "district": "Kaarela",
    "weekday": "lauantai",
    "start_time": "15:30",
    "end_time": "17:00",
    "season": "kausi 2026–2027",
    "start_date": "2026-09-05",
    "end_date": "2027-04-24",
    "sessions_count": null,
    "price_eur": 69.0,
    "price_basis": "1 x viikossa 69 €/kk (+ jäsenmaksu 45 € ja luistelukoulupassi 15 € kerran kaudessa)",
    "membership_fee_eur": 45.0,
    "other_required_fees": "Seuran jäsenmaksu 45 € ja vakuutuksellinen luistelukoulupassi 15 € kerran kaudessa (1.5.–30.4.); lisäksi ilmoittautuminen Suomisportin 'HL Minitähdet 2026-2027' -tapahtumaan.",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://hl.myclub.fi/flow/courses/10903677",
    "source_quote": "Kehitysryhmä Minitähdet lauantai Kaarela 2026-2027; Minitähtien hinta 1 x viikossa on 69€ kuukaudessa; jäsenmaksu 45€ sekä luistelukoulupassi 15€.",
    "activity_id": "hel-2026-0191",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-05",
    "season_end_date": "2027-04-24",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 69,
        "mandatory": true,
        "included": true,
        "recurrence": "month",
        "applies_if": null,
        "note": "Minitähtien hinta 1 x viikossa on 69€ kuukaudessa."
      },
      {
        "type": "membership",
        "amount_eur": 45,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "seuran jäsenmaksu 45€, laskutetaan kerran kaudessa (1.5.-30.4.)"
      },
      {
        "type": "skating_school_pass",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "season",
        "applies_if": null,
        "note": "vakuutuksellinen luistelukoulupassi 15€, laskutetaan kerran kaudessa (1.5.-30.4.)"
      }
    ],
    "price_options": [
      {
        "label": "2 x viikossa",
        "amount_eur": 119.0,
        "applies_if": "kaksi kiinteää harjoituspäivää (erillinen ilmoittautuminen toiseen päivään)",
        "includes": "Minitähtien hinta 2 x viikossa on 119€ kuukaudessa."
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_09 deferred-listalta (collected from deferred batch_2026-09-22_09). Kehitysryhmä (seuran ensimmäinen), ei alkeiskurssi: 'lapsen tulee pysyä jäällä pystyssä sekä osata liikkua jäällä itsenäisesti'. Yksi ryhmä, neljä harjoituspäivää, joista valitaan 1–2 kiinteää; tämä rivi = lauantain harjoituspäivä (Kaarela), oma myClub-ilmoittautuminen. Harjoituskerta = jää- + oheisharjoitus (15.30-16.15 jääharjoitus, 16.30-17.00 oheisharjoitus). Kertamäärä jätetty tyhjäksi: myClub-aikataulu näyttää vain 16 harjoituspäivää 2026-09-05–2026-12-19 (rivejä {'Minitähdet jää': 16, 'Minitähdet oheiset': 16}), mutta kurssijakso on 2026-09-05–2027-04-24. Hinta kuukausihinta; kauden kuukausimäärää ei julkaistu ('syyskuu - huhtikuu'), joten kausisummaa ei laskettu. Kurssi alkanut 2026-09-05. Ikä 'n. 3-6' on likimääräinen. | Kehitysryhmä, vaatii luistelutaidon. Kuukausihinta 69 €/kk (2 x viikossa 119 €/kk price_options-kentässä), ei muunneta kausisummaksi, ei hintavertailuun (Ilpon päätös 5, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/hl_mini_la_9260a9a55756.html",
      "capture_sha256": "9260a9a5575670497b717c5a18b7743c2bf74c7eb094b525c58320716baa50e9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 74.0,
    "monthly_cost_basis": "69.0 €/kk + membership 45 €/v ÷ 12 + skating_school_pass 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Kaarela",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisuimakoulu 5–6-vuotiaat, Itäkeskuksen uimahalli (31.8.–19.10.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Puotinharju",
    "weekday": "maanantai",
    "start_time": "17:20",
    "end_time": "17:50",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-10-19",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84429",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0192",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-10-19",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-10-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84429",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-08-31, 2026-09-07, 2026-09-14, 2026-09-21, 2026-09-28, 2026-10-05, 2026-10-19); ei harjoitusta 2026-10-12. Kurssi alkanut 2026-08-31. Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Itäkeskuksen 31.8.–19.10. (ei 12.10.): 'ma 17.20–17.50 alkeet 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00900 (postcode 00900 = Tilastokeskus Paavo postal area 'Puotinharju')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84429_d31d9c7dedbd.json",
      "capture_sha256": "d31d9c7dedbd521dc15719c29d999676d86b18f9bb6160ab9b6b31b94c142b4f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 28.0,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.64 kuukaudelle (2026-08-31–2026-10-19, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Puotinharju",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisjatkouimakoulu 5–6-vuotiaat, Itäkeskuksen uimahalli (31.8.–19.10.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Puotinharju",
    "weekday": "maanantai",
    "start_time": "17:55",
    "end_time": "18:25",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-10-19",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84430",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0193",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-10-19",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-10-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84430",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-08-31, 2026-09-07, 2026-09-14, 2026-09-21, 2026-09-28, 2026-10-05, 2026-10-19); ei harjoitusta 2026-10-12. Kurssi alkanut 2026-08-31. Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Itäkeskuksen 31.8.–19.10. (ei 12.10.): 'ma 17.55–18.25 alkeisjatko 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00900 (postcode 00900 = Tilastokeskus Paavo postal area 'Puotinharju')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84430_c8612c15d64c.json",
      "capture_sha256": "c8612c15d64c6bdd54b20caba35653b68adfec4321173a4dce60a85712ac482b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 28.0,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.64 kuukaudelle (2026-08-31–2026-10-19, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Puotinharju",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisuimakoulu 5–6-vuotiaat, Itäkeskuksen uimahalli (1.9.–20.10.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Puotinharju",
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-10-20",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84455",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0194",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-10-20",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-10-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84455",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-09-01, 2026-09-08, 2026-09-15, 2026-09-22, 2026-09-29, 2026-10-06, 2026-10-20); ei harjoitusta 2026-10-13. Kurssi alkanut 2026-09-01. Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Itäkeskuksen 1.9.–20.10.(ei 13.10.): 'ti 17.15–17.45 alkeet 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00900 (postcode 00900 = Tilastokeskus Paavo postal area 'Puotinharju')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84455_2b2463f2caca.json",
      "capture_sha256": "2b2463f2caca2ceef681d55583a7fa4edaeec52059e7f64ae58b26e4813bb709",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 28.0,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.64 kuukaudelle (2026-09-01–2026-10-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Puotinharju",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisjatkouimakoulu 5–6-vuotiaat, Itäkeskuksen uimahalli (1.9.–20.10.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Puotinharju",
    "weekday": "tiistai",
    "start_time": "18:25",
    "end_time": "18:55",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-10-20",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84458",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0195",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-10-20",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-10-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84458",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-09-01, 2026-09-08, 2026-09-15, 2026-09-22, 2026-09-29, 2026-10-06, 2026-10-20); ei harjoitusta 2026-10-13. Kurssi alkanut 2026-09-01. Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Itäkeskuksen 1.9.–20.10.(ei 13.10.): 'ti 18.25–18.55 alkeisjatko 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00900 (postcode 00900 = Tilastokeskus Paavo postal area 'Puotinharju')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-015",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84458_b69084804986.json",
      "capture_sha256": "b690848049861e0648d05a823ea7ed614ff5c7375ff74a25f0688559e40fa111",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 28.0,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.64 kuukaudelle (2026-09-01–2026-10-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Puotinharju",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisuimakoulu 5–6-vuotiaat, Itäkeskuksen uimahalli (26.10.–7.12.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Puotinharju",
    "weekday": "maanantai",
    "start_time": "17:20",
    "end_time": "17:50",
    "season": "syksy 2026",
    "start_date": "2026-10-26",
    "end_date": "2026-12-07",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84433",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0196",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-26",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-26",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84433",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-10-26, 2026-11-02, 2026-11-09, 2026-11-16, 2026-11-23, 2026-11-30, 2026-12-07). Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Itäkeskuksen 26.10.–7.12.: 'ma 17.20–17.50 alkeet 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00900 (postcode 00900 = Tilastokeskus Paavo postal area 'Puotinharju')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-016",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84433_e3095aed1ead.json",
      "capture_sha256": "e3095aed1eade767c471af054d2e9f0faecb857192a8942f4ea53ded817b4208",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 32.56,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.41 kuukaudelle (2026-10-26–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Puotinharju",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisjatkouimakoulu 5–6-vuotiaat, Itäkeskuksen uimahalli (26.10.–7.12.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Puotinharju",
    "weekday": "maanantai",
    "start_time": "17:55",
    "end_time": "18:25",
    "season": "syksy 2026",
    "start_date": "2026-10-26",
    "end_date": "2026-12-07",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84440",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0197",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-26",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-26",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84440",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-10-26, 2026-11-02, 2026-11-09, 2026-11-16, 2026-11-23, 2026-11-30, 2026-12-07). Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Itäkeskuksen 26.10.–7.12.: 'ma 17.55–18.25 alkeisjatko 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00900 (postcode 00900 = Tilastokeskus Paavo postal area 'Puotinharju')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-017",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84440_88d0466a8e37.json",
      "capture_sha256": "88d0466a8e373d298ee4e5fd337795f60dce5c5ecb940b4ef2cccbbc38e19e5b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 32.56,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.41 kuukaudelle (2026-10-26–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Puotinharju",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisjatkouimakoulu 5–6-vuotiaat, Itäkeskuksen uimahalli (27.10.–8.12.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Puotinharju",
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-10-27",
    "end_date": "2026-12-08",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84460",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0198",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-27",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-10-27",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84460",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-10-27, 2026-11-03, 2026-11-10, 2026-11-17, 2026-11-24, 2026-12-01, 2026-12-08). Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Itäkeskuksen 27.10.–8.12.: 'ti 17.15–17.45 alkeisjatko 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00900 (postcode 00900 = Tilastokeskus Paavo postal area 'Puotinharju')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-018",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84460_72645f7a28e6.json",
      "capture_sha256": "72645f7a28e6e8d2671dec44068fc928bf7bede3a85608a175c8e556c0733292",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 32.56,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.41 kuukaudelle (2026-10-27–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Puotinharju",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisuimakoulu 5–6-vuotiaat, Itäkeskuksen uimahalli (27.10.–8.12.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Puotinharju",
    "weekday": "tiistai",
    "start_time": "18:25",
    "end_time": "18:55",
    "season": "syksy 2026",
    "start_date": "2026-10-27",
    "end_date": "2026-12-08",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84459",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0199",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-27",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-10-27",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84459",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-10-27, 2026-11-03, 2026-11-10, 2026-11-17, 2026-11-24, 2026-12-01, 2026-12-08). Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Itäkeskuksen 27.10.–8.12.: 'ti 18.25–18.55 alkeet 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00900 (postcode 00900 = Tilastokeskus Paavo postal area 'Puotinharju')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-019",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84459_4c4b15978f91.json",
      "capture_sha256": "4c4b15978f91c5c2468fb2b84b3004e7437da6454a182ed93605157ffbaf90d7",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 32.56,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.41 kuukaudelle (2026-10-27–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Puotinharju",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisuimakoulu 5–6-vuotiaat, Jakomäen uimahalli (2.9.–21.10.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Jakomäen uimahalli",
    "address": "Somerikkopolku 6, 00770 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-10-21",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84471",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0200",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-10-21",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-10-21",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84471",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-09-02, 2026-09-09, 2026-09-16, 2026-09-23, 2026-09-30, 2026-10-07, 2026-10-21); ei harjoitusta 2026-10-14. Kurssi alkanut 2026-09-02. Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Jakomäen 2.9–21.10. (ei 14.10): 'ke 18.00–18.30 alkeet 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-020",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84471_167fa6c9ddd8.json",
      "capture_sha256": "167fa6c9ddd82ef8f555c76421818e595fe245cc801d89c38c74857506362d59",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 28.0,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.64 kuukaudelle (2026-09-02–2026-10-21, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisjatkouimakoulu 5–6-vuotiaat, Jakomäen uimahalli (2.9.–21.10.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Jakomäen uimahalli",
    "address": "Somerikkopolku 6, 00770 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:35",
    "end_time": "19:05",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-10-21",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84472",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0201",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-10-21",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-10-21",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84472",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-09-02, 2026-09-09, 2026-09-16, 2026-09-23, 2026-09-30, 2026-10-07, 2026-10-21); ei harjoitusta 2026-10-14. Kurssi alkanut 2026-09-02. Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Jakomäen 2.9–21.10. (ei 14.10): 'ke 18.35–19.05 alkeisjatko 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-021",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84472_271aff4479a7.json",
      "capture_sha256": "271aff4479a78e41d391576dc3dd2b1a12b035caf45c61b34146630ab51f3728",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 28.0,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.64 kuukaudelle (2026-09-02–2026-10-21, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Lapsi–vanhempi-uimakoulu, Jakomäen uimahalli (3.9.–22.10.)",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaille",
    "parent_child": "yes",
    "venue_name": "Jakomäen uimahalli",
    "address": "Somerikkopolku 6, 00770 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-10-22",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 3-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84489",
    "source_quote": "Uimakoulu on tarkoitettu 3–6-vuotiaille lapsille, joilla ei ole aiempaa uimakoulukokemusta tai jotka ovat vielä arkoja toimimaan ryhmässä tai allasympäristössä.",
    "activity_id": "hel-2026-0202",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-10-22",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-10-22",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84489",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-09-03, 2026-09-10, 2026-09-17, 2026-09-24, 2026-10-01, 2026-10-08, 2026-10-22); ei harjoitusta 2026-10-15. Kurssi alkanut 2026-09-03. Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Jakomäen 3.9.–22.10. (ei 15.10): 'to 17.00–17.30 lapsi + vanhempi 3-6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | Hinta: lapsi + aikuinen (Ilpon päätös 7, 22.9.2026: hinta näytetään lapsi + aikuinen -merkinnällä; erillistä aikuisen maksua ei oleteta, price_covers.verified=false).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-022",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84489_b2ece1348c4f.json",
      "capture_sha256": "b2ece1348c4f6e39ee934b93a61d5479c10373ba48fc93493c9837849c20fbd4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 28.0,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.64 kuukaudelle (2026-09-03–2026-10-22, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisuimakoulu 5–6-vuotiaat, Jakomäen uimahalli (3.9.–22.10.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Jakomäen uimahalli",
    "address": "Somerikkopolku 6, 00770 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:35",
    "end_time": "18:05",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-10-22",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84490",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0203",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-10-22",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-10-22",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84490",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-09-03, 2026-09-10, 2026-09-17, 2026-09-24, 2026-10-01, 2026-10-08, 2026-10-22); ei harjoitusta 2026-10-15. Kurssi alkanut 2026-09-03. Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Jakomäen 3.9.–22.10. (ei 15.10): 'to 17.35–18.05 alkeet 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-023",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84490_9260b28f3814.json",
      "capture_sha256": "9260b28f3814141be8fa2d46e243bea5b216d95cab5e226931ce4d2d6608330c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 28.0,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.64 kuukaudelle (2026-09-03–2026-10-22, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisjatkouimakoulu 5–6-vuotiaat, Jakomäen uimahalli (3.9.–22.10.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Jakomäen uimahalli",
    "address": "Somerikkopolku 6, 00770 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:10",
    "end_time": "18:40",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-10-22",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84491",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0204",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-10-22",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-10-22",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84491",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-09-03, 2026-09-10, 2026-09-17, 2026-09-24, 2026-10-01, 2026-10-08, 2026-10-22); ei harjoitusta 2026-10-15. Kurssi alkanut 2026-09-03. Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Jakomäen 3.9.–22.10. (ei 15.10): 'to 18.10-18.40 alkeisjatko 5-6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-024",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84491_dcc89b552916.json",
      "capture_sha256": "dcc89b552916efa8a5ceccca28fa3b3cd0cc24509332cd75f01cbbcba0751425",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 28.0,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.64 kuukaudelle (2026-09-03–2026-10-22, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisuimakoulu 5–6-vuotiaat, Jakomäen uimahalli (28.10.–9.12.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Jakomäen uimahalli",
    "address": "Somerikkopolku 6, 00770 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-10-28",
    "end_date": "2026-12-09",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84476",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0205",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-28",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-28",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84476",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-10-28, 2026-11-04, 2026-11-11, 2026-11-18, 2026-11-25, 2026-12-02, 2026-12-09). Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Jakomäen 28.10.–9.12.: 'ke 18.00–18.30 alkeet 5-6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-025",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84476_73a4d395ea07.json",
      "capture_sha256": "73a4d395ea072949894910542f683e56363bc891355cdde5f2ebfb925b5c7e4d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 32.56,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.41 kuukaudelle (2026-10-28–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisjatkouimakoulu 5–6-vuotiaat, Jakomäen uimahalli (28.10.–9.12.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Jakomäen uimahalli",
    "address": "Somerikkopolku 6, 00770 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:35",
    "end_time": "19:05",
    "season": "syksy 2026",
    "start_date": "2026-10-28",
    "end_date": "2026-12-09",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84478",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0206",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-28",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-28",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84478",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-10-28, 2026-11-04, 2026-11-11, 2026-11-18, 2026-11-25, 2026-12-02, 2026-12-09). Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Jakomäen 28.10.–9.12.: 'ke 18.35–19.05 alkeisjatko 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-026",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84478_537d2427b81f.json",
      "capture_sha256": "537d2427b81f91da343db5972ea3f1193c81f34eb7dbe5b0f00ebdacca2d363e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 32.56,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.41 kuukaudelle (2026-10-28–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Lapsi–vanhempi-uimakoulu, Jakomäen uimahalli (29.10.–10.12.)",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaille",
    "parent_child": "yes",
    "venue_name": "Jakomäen uimahalli",
    "address": "Somerikkopolku 6, 00770 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-10-29",
    "end_date": "2026-12-10",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 3-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84575",
    "source_quote": "Uimakoulu on tarkoitettu 3–6-vuotiaille lapsille, joilla ei ole aiempaa uimakoulukokemusta tai jotka ovat vielä arkoja toimimaan ryhmässä tai allasympäristössä.",
    "activity_id": "hel-2026-0207",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-29",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-10-29",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84575",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-10-29, 2026-11-05, 2026-11-12, 2026-11-19, 2026-11-26, 2026-12-03, 2026-12-10). Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Jakomäen 29.10.–10.12.: 'to 17.00–17.30 lapsi + vanhempi 3-6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | Hinta: lapsi + aikuinen (Ilpon päätös 7, 22.9.2026: hinta näytetään lapsi + aikuinen -merkinnällä; erillistä aikuisen maksua ei oleteta, price_covers.verified=false).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-027",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84575_85f85699e8d7.json",
      "capture_sha256": "85f85699e8d77e046ac20e583ca3a83240f732c8ddc3dbcb9e096092f83f2160",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 32.56,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.41 kuukaudelle (2026-10-29–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisuimakoulu 5–6-vuotiaat, Jakomäen uimahalli (29.10.–10.12.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Jakomäen uimahalli",
    "address": "Somerikkopolku 6, 00770 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:35",
    "end_time": "18:05",
    "season": "syksy 2026",
    "start_date": "2026-10-29",
    "end_date": "2026-12-10",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84581",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0208",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-29",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-10-29",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84581",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-10-29, 2026-11-05, 2026-11-12, 2026-11-19, 2026-11-26, 2026-12-03, 2026-12-10). Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Jakomäen 29.10.–10.12.: 'to 17.35–18.05 alkeet 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-028",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84581_2a2150605eb5.json",
      "capture_sha256": "2a2150605eb517f11804b618f9a2ac4f020c56c824da18626c4eab9142f27f83",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 32.56,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.41 kuukaudelle (2026-10-29–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisjatkouimakoulu 5–6-vuotiaat, Jakomäen uimahalli (29.10.–10.12.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Jakomäen uimahalli",
    "address": "Somerikkopolku 6, 00770 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:10",
    "end_time": "18:40",
    "season": "syksy 2026",
    "start_date": "2026-10-29",
    "end_date": "2026-12-10",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Itäinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84576",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0209",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-29",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-10-29",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84576",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-10-29, 2026-11-05, 2026-11-12, 2026-11-19, 2026-11-26, 2026-12-03, 2026-12-10). Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Jakomäen 29.10.–10.12.: 'to 18.10-18.40 alkeisjatko 5-6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-029",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84576_20a400668ec3.json",
      "capture_sha256": "20a400668ec3f19915546411332fac7cdc4ef413e865aee10185b99088e9d9c1",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 32.56,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.41 kuukaudelle (2026-10-29–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisuimakoulu 5–6-vuotiaat, Pirkkolan uimahalli (31.8.–19.10.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan uimahalli",
    "address": "Pirkkolan metsätie 6, 00630 Helsinki",
    "district": "Pirkkola",
    "weekday": "maanantai",
    "start_time": "16:50",
    "end_time": "17:20",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-10-19",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Pohjoinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84224",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0210",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-10-19",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-10-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84224",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-08-31, 2026-09-07, 2026-09-14, 2026-09-21, 2026-09-28, 2026-10-05, 2026-10-19); ei harjoitusta 2026-10-12. Kurssi alkanut 2026-08-31. Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Pirkkolan 31.8.–19.10. (ei 12.10.): 'ma klo 16.50–17.20 alkeet 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00630 (postcode 00630 = canonical rows hel-2026-0063,hel-2026-0064 district Pirkkola)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-030",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84224_88310881f605.json",
      "capture_sha256": "88310881f60553f4698b9d5c336d4990f7b988df488e26e680537a33a7b3b75e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 28.0,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.64 kuukaudelle (2026-08-31–2026-10-19, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Soveltava alkeisuimakoulu, 6–12-vuotiaat, Pirkkolan uimahalli (31.8.–19.10.)",
    "min_age": 6,
    "max_age": 12,
    "eligibility_text": "6–12-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan uimahalli",
    "address": "Pirkkolan metsätie 6, 00630 Helsinki",
    "district": "Pirkkola",
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-10-19",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Pohjoinen Uimakoulu Lapsi 6-12 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84243",
    "source_quote": "Lapsille, joilla ei ole edellytyksiä osallistua lasten yleisiin uimakouluihin kuten esim.",
    "activity_id": "hel-2026-0211",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-10-19",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-10-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84243",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Soveltava uimakoulu erityistä tukea tarvitseville (Ilpon päätös 6, 22.9.2026: mukana merkinnällä, ei hintavertailuun). | Sopii vain 6-vuotiaille (ikäraja 6–12 v; rajaus alle kouluikäiset 0–6 v). Kertamäärä 7 = reservation_events-lista (2026-08-31, 2026-09-07, 2026-09-14, 2026-09-21, 2026-09-28, 2026-10-05, 2026-10-19); ei harjoitusta 2026-10-12. Kurssi alkanut 2026-08-31. Ryhmää ei listata hel.fi:n Lasten uimakoulut -sivulla; lähde ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi). | district derived from postcode 00630 (postcode 00630 = canonical rows hel-2026-0063,hel-2026-0064 district Pirkkola)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-031",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84243_53ec293fc701.json",
      "capture_sha256": "53ec293fc7012b458e1a99833b395fafc4c833322d9287b652bca6b283c6c34e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 28.0,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.64 kuukaudelle (2026-08-31–2026-10-19, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisuimakoulu 5–6-vuotiaat, Pirkkolan uimahalli (2.9.–21.10.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan uimahalli",
    "address": "Pirkkolan metsätie 6, 00630 Helsinki",
    "district": "Pirkkola",
    "weekday": "keskiviikko",
    "start_time": "16:50",
    "end_time": "17:20",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-10-21",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Pohjoinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84212",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0212",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-10-21",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-10-21",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84212",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-09-02, 2026-09-09, 2026-09-16, 2026-09-23, 2026-09-30, 2026-10-07, 2026-10-21); ei harjoitusta 2026-10-14. Kurssi alkanut 2026-09-02. Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Pirkkolan 2.9.–21.10. (ei 14.10.): 'ke klo 16.50–17.20 alkeet 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00630 (postcode 00630 = canonical rows hel-2026-0063,hel-2026-0064 district Pirkkola)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-032",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84212_95c6b2d6cb58.json",
      "capture_sha256": "95c6b2d6cb58723896f79ce5d548a18589920cc96af8ba722c1ca3768569ab98",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 28.0,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.64 kuukaudelle (2026-09-02–2026-10-21, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisuimakoulu 5–6-vuotiaat, Pirkkolan uimahalli (2.9.–21.10.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan uimahalli",
    "address": "Pirkkolan metsätie 6, 00630 Helsinki",
    "district": "Pirkkola",
    "weekday": "keskiviikko",
    "start_time": "17:30",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-10-21",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Pohjoinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84213",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0213",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-10-21",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-10-21",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84213",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-09-02, 2026-09-09, 2026-09-16, 2026-09-23, 2026-09-30, 2026-10-07, 2026-10-21); ei harjoitusta 2026-10-14. Kurssi alkanut 2026-09-02. Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Pirkkolan 2.9.–21.10. (ei 14.10.): 'ke klo 17.30–18.00 alkeet 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00630 (postcode 00630 = canonical rows hel-2026-0063,hel-2026-0064 district Pirkkola)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-033",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84213_ade3c1d1928b.json",
      "capture_sha256": "ade3c1d1928be6f8c0e1cd33bc774f0f2d44425fb2744d0715120544a5ef665d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 28.0,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.64 kuukaudelle (2026-09-02–2026-10-21, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisjatkouimakoulu 5–6-vuotiaat, Pirkkolan uimahalli (2.9.–21.10.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan uimahalli",
    "address": "Pirkkolan metsätie 6, 00630 Helsinki",
    "district": "Pirkkola",
    "weekday": "keskiviikko",
    "start_time": "18:10",
    "end_time": "18:40",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-10-21",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Pohjoinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84217",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0214",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-10-21",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-10-21",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84217",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-09-02, 2026-09-09, 2026-09-16, 2026-09-23, 2026-09-30, 2026-10-07, 2026-10-21); ei harjoitusta 2026-10-14. Kurssi alkanut 2026-09-02. Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Pirkkolan 2.9.–21.10. (ei 14.10.): 'ke klo 18.10–18.40 alkeisjatko 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00630 (postcode 00630 = canonical rows hel-2026-0063,hel-2026-0064 district Pirkkola)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-034",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84217_1cc9148f6f37.json",
      "capture_sha256": "1cc9148f6f37f55bc21d2c6f653bb62d0b3fd1b28f8adf1b840eb305917c01ad",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 28.0,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.64 kuukaudelle (2026-09-02–2026-10-21, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisuimakoulu 5–6-vuotiaat, Pirkkolan uimahalli (26.10.–7.12.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan uimahalli",
    "address": "Pirkkolan metsätie 6, 00630 Helsinki",
    "district": "Pirkkola",
    "weekday": "maanantai",
    "start_time": "16:50",
    "end_time": "17:20",
    "season": "syksy 2026",
    "start_date": "2026-10-26",
    "end_date": "2026-12-07",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Pohjoinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84239",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0215",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-26",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-26",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84239",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-10-26, 2026-11-02, 2026-11-09, 2026-11-16, 2026-11-23, 2026-11-30, 2026-12-07). Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Pirkkolan 26.10.–7.12.: 'ma klo 16.50–17.20 alkeet 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00630 (postcode 00630 = canonical rows hel-2026-0063,hel-2026-0064 district Pirkkola)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-035",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84239_6760c4dfe8d1.json",
      "capture_sha256": "6760c4dfe8d14e12088079fe1b3de337e5dadb5aaaf4038620b8a182f4ad75fa",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 32.56,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.41 kuukaudelle (2026-10-26–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisjatkouimakoulu 5–6-vuotiaat, Pirkkolan uimahalli (26.10.–7.12.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan uimahalli",
    "address": "Pirkkolan metsätie 6, 00630 Helsinki",
    "district": "Pirkkola",
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-10-26",
    "end_date": "2026-12-07",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Pohjoinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84240",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0216",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-26",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-26",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84240",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-10-26, 2026-11-02, 2026-11-09, 2026-11-16, 2026-11-23, 2026-11-30, 2026-12-07). Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Pirkkolan 26.10.–7.12.: 'ma klo 17.30–18.00 alkeisjatko 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00630 (postcode 00630 = canonical rows hel-2026-0063,hel-2026-0064 district Pirkkola)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-036",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84240_fb595895ac13.json",
      "capture_sha256": "fb595895ac1383ae88f19e9efb58e6ccf3ca48518e941d84917ea1d7cb64e300",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 32.56,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.41 kuukaudelle (2026-10-26–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Soveltava alkeisuimakoulu, 6–12-vuotiaat, Pirkkolan uimahalli (26.10.–7.12.)",
    "min_age": 6,
    "max_age": 12,
    "eligibility_text": "6–12-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan uimahalli",
    "address": "Pirkkolan metsätie 6, 00630 Helsinki",
    "district": "Pirkkola",
    "weekday": "maanantai",
    "start_time": "18:10",
    "end_time": "18:40",
    "season": "syksy 2026",
    "start_date": "2026-10-26",
    "end_date": "2026-12-07",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Pohjoinen Uimakoulu Lapsi 6-12 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84244",
    "source_quote": "Lapsille, joilla ei ole edellytyksiä osallistua lasten yleisiin uimakouluihin kuten esim.",
    "activity_id": "hel-2026-0217",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-26",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-26",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84244",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Soveltava uimakoulu erityistä tukea tarvitseville (Ilpon päätös 6, 22.9.2026: mukana merkinnällä, ei hintavertailuun). | Sopii vain 6-vuotiaille (ikäraja 6–12 v; rajaus alle kouluikäiset 0–6 v). Kertamäärä 7 = reservation_events-lista (2026-10-26, 2026-11-02, 2026-11-09, 2026-11-16, 2026-11-23, 2026-11-30, 2026-12-07). Ryhmää ei listata hel.fi:n Lasten uimakoulut -sivulla; lähde ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi). | district derived from postcode 00630 (postcode 00630 = canonical rows hel-2026-0063,hel-2026-0064 district Pirkkola)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-037",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84244_23ff9be7d3c7.json",
      "capture_sha256": "23ff9be7d3c7d2675146dec1b7aeb7ce86cfc382e1fa91bdb2744be051b5ca7c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 32.56,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.41 kuukaudelle (2026-10-26–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisuimakoulu 5–6-vuotiaat, Pirkkolan uimahalli (28.10.–9.12.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan uimahalli",
    "address": "Pirkkolan metsätie 6, 00630 Helsinki",
    "district": "Pirkkola",
    "weekday": "keskiviikko",
    "start_time": "16:50",
    "end_time": "17:20",
    "season": "syksy 2026",
    "start_date": "2026-10-28",
    "end_date": "2026-12-09",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Pohjoinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84218",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0218",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-28",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-28",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84218",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-10-28, 2026-11-04, 2026-11-11, 2026-11-18, 2026-11-25, 2026-12-02, 2026-12-09). Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Pirkkolan 28.10.–9.12.: 'ke klo 16.50–17.20 alkeet 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00630 (postcode 00630 = canonical rows hel-2026-0063,hel-2026-0064 district Pirkkola)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-038",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84218_45749f027566.json",
      "capture_sha256": "45749f027566d640ac3866c4317afa304797bd467299a745e0ed244f657a58e9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 32.56,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.41 kuukaudelle (2026-10-28–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisjatkouimakoulu 5–6-vuotiaat, Pirkkolan uimahalli (28.10.–9.12.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan uimahalli",
    "address": "Pirkkolan metsätie 6, 00630 Helsinki",
    "district": "Pirkkola",
    "weekday": "keskiviikko",
    "start_time": "17:30",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-10-28",
    "end_date": "2026-12-09",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Pohjoinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84219",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0219",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-28",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-28",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84219",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-10-28, 2026-11-04, 2026-11-11, 2026-11-18, 2026-11-25, 2026-12-02, 2026-12-09). Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Pirkkolan 28.10.–9.12.: 'ke klo 17.30–18.00 alkeisjatko 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00630 (postcode 00630 = canonical rows hel-2026-0063,hel-2026-0064 district Pirkkola)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-039",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84219_1cff4696e1ed.json",
      "capture_sha256": "1cff4696e1ed0db888d8adbfd1ca22b01fab81303d44e62ce1b91808bce671e6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 32.56,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.41 kuukaudelle (2026-10-28–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Alkeisjatkouimakoulu 5–6-vuotiaat, Pirkkolan uimahalli (28.10.–9.12.)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan uimahalli",
    "address": "Pirkkolan metsätie 6, 00630 Helsinki",
    "district": "Pirkkola",
    "weekday": "keskiviikko",
    "start_time": "18:10",
    "end_time": "18:40",
    "season": "syksy 2026",
    "start_date": "2026-10-28",
    "end_date": "2026-12-09",
    "sessions_count": 7,
    "price_eur": 46.0,
    "price_basis": "7 kertaa (Pohjoinen Uimakoulu Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84223",
    "source_quote": "Uimakoulu on tarkoitettu 5–6-vuotiaille uimataidottomille lapsille.",
    "activity_id": "hel-2026-0220",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 46.0,
    "price_per_session_eur": 6.57,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-28",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-28",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84223",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 46,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 7 = reservation_events-lista (2026-10-28, 2026-11-04, 2026-11-11, 2026-11-18, 2026-11-25, 2026-12-02, 2026-12-09). Sama vuoro myös hel.fi:n Lasten uimakoulut -sivulla (Pirkkolan 28.10.–9.12.: 'ke klo 18.10–18.40 alkeisjatko 5–6-vuotiaat'; 'Hinta 46 €'); ilmoittautumisjärjestelmä (liikuntakauppa.hel.fi) on lähde. | district derived from postcode 00630 (postcode 00630 = canonical rows hel-2026-0063,hel-2026-0064 district Pirkkola)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-040",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/city_84223_a2b83cbe0ea6.json",
      "capture_sha256": "a2b83cbe0ea6ff53e46ec31f4225799f466cd66acd2b607ace7a715307d0bd09",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "monthly_cost_eur": 32.56,
    "monthly_cost_basis": "46.0 € / course jaettuna 1.41 kuukaudelle (2026-10-28–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 3–4 v. (26537)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Pikku-Huopalahden kerhohuoneisto",
    "address": "Hilda Flodinin kuja 2 A, 00300 Helsinki",
    "district": "Pikku Huopalahti",
    "weekday": "keskiviikko",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssileikki 3–4 v.: 26537 Ke 16:45 HUO2 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0221",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_08 deferred-listalta (collected from deferred batch_2026-09-22_08). Kurssi alkanut 12.8.2026. Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 12.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 45 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; §6 245,70 € = syyslukukausi. Vaihtoehtona jaksomaksu (4 vk). Lomapäivä 2027-01-06 osuu ryhmän päivälle: PDF s. 4 \"Tunnit hyvitetään laskussa\" – todellinen lasku voi olla listahintaa pienempi (summaa ei julkaistu).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-041",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pikku Huopalahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 3–4 v. (26553)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Leipätehdas",
    "address": "Kaikukatu 4 A, piharakennus: 6. krs., 00530 Helsinki",
    "district": "Kallio",
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "full",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssileikki 3–4 v.: 26553 Ke 17:15 LEI8 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0222",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_08 deferred-listalta (collected from deferred batch_2026-09-22_08). Kurssi alkanut 12.8.2026. Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 12.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 45 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; §6 245,70 € = syyslukukausi. Vaihtoehtona jaksomaksu (4 vk). Lomapäivä 2027-01-06 osuu ryhmän päivälle: PDF s. 4 \"Tunnit hyvitetään laskussa\" – todellinen lasku voi olla listahintaa pienempi (summaa ei julkaistu). Tuntihaussa \"Täynnä\" 21.9.2026.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-042",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kallio",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 3–4 v. (26558)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Annantalon Tanssiluokka",
    "address": "Annankatu 30, 00100 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-13",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssileikki 3–4 v.: 26558 To 16:45 ANNA 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0223",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_08 deferred-listalta (collected from deferred batch_2026-09-22_08). Kurssi alkanut 13.8.2026. Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 13.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 45 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; §6 245,70 € = syyslukukausi. Vaihtoehtona jaksomaksu (4 vk).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-043",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kamppi",
    "district_basis": "geokoodattu osoite -> sub_district 'Kamppi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 3–4 v. (26525)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Leipätehdas",
    "address": "Kaikukatu 4 A, piharakennus: 6. krs., 00530 Helsinki",
    "district": "Kallio",
    "weekday": "lauantai",
    "start_time": "11:15",
    "end_time": "12:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-09-05",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssileikki 3–4 v.: 26525 La 11:15 LEI8 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0224",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_08 deferred-listalta (collected from deferred batch_2026-09-22_08). Kurssi alkanut 5.9.2026. Kertamäärä 17 laskettu koodilla (tuntihaun alkupäivä 5.9.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 45 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; §6 245,70 € = syyslukukausi. Vaihtoehtona jaksomaksu (4 vk). Ryhmä alkaa 5.9.2026 (lukukausi alkoi 10.8.2026); hinnasto: \"Tunnit laskutetaan ilmoittautumisen alkamispäivästä alkaen\" – mahdollista osittaista laskua ei julkaistu, rivillä listahinta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-044",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kallio",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 3–4 v. (26897)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kasarmitori",
    "address": "Kasarmikatu 19 (torin puoli), 00130 Helsinki",
    "district": "Kaartinkaupunki",
    "weekday": "lauantai",
    "start_time": "10:45",
    "end_time": "11:30",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssileikki 3–4 v.: 26897 La 10:45 KAS5 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0225",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_08 deferred-listalta (collected from deferred batch_2026-09-22_08). Kurssi alkanut 15.8.2026. Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, lomaviikko ja PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. Hinta = PDF s. 3 lukukausitaulukon 45 min -sarake (sarakepaikka tarkistettu koodilla), 1 kerta/vko; §6 245,70 € = syyslukukausi. Vaihtoehtona jaksomaksu (4 vk).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-045",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-21T17:43:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kaartinkaupunki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 4–5 v. (26471)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Pikku-Huopalahden kerhohuoneisto",
    "address": "Hilda Flodinin kuja 2 A, 00300 Helsinki",
    "district": "Pikku Huopalahti",
    "weekday": "keskiviikko",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "full",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssileikki 4–5 v. (26471): 26471 Ke 17:30 HUO2 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0226",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 12.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 12.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00300 via data/venues_hto.json (postcode 00300 = Tilastokeskus Paavo postal area 'Pikku Huopalahti')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pikku Huopalahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 4–5 v. (26350)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Päiväkoti Borgströminmäki",
    "address": "Föglönkuja 1, 00590 Helsinki",
    "district": "Kruunuvuorenranta",
    "weekday": "torstai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-13",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssileikki 4–5 v. (26350): 26350 To 16:45 KRUU 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0227",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 13.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 13.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00590 via data/venues_hto.json (postcode 00590 = Tilastokeskus Paavo postal area 'Kruunuvuorenranta')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kruunuvuorenranta",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 4–5 v. (26569)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kasarmitori",
    "address": "Kasarmikatu 19 (torin puoli), 00130 Helsinki",
    "district": "Kaartinkaupunki",
    "weekday": "perjantai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-09-04",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssileikki 4–5 v. (26569): 26569 Pe 16:30 KAS5 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0228",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 17 laskettu koodilla (tuntihaun alkupäivä 4.9.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 4.9.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00130 via data/venues_hto.json (postcode 00130 = Tilastokeskus Paavo postal area 'Kaartinkaupunki')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kaartinkaupunki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Luova tanssi 5–6 v. (26488)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kasarmitori",
    "address": "Kasarmikatu 19 (torin puoli), 00130 Helsinki",
    "district": "Kaartinkaupunki",
    "weekday": "maanantai",
    "start_time": "18:15",
    "end_time": "19:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-10",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Luova tanssi 5–6 v. (26488): 26488 Ma 18:15 KAS5 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0229",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 10.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | district derived from postcode 00130 via data/venues_hto.json (postcode 00130 = Tilastokeskus Paavo postal area 'Kaartinkaupunki')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kaartinkaupunki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Luova tanssi 5–6 v. (26494)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Karjalatalo",
    "address": "Käpylänkuja 1, 00610 Helsinki",
    "district": "Käpylä",
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "11:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "full",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Luova tanssi 5–6 v. (26494): 26494 La 11:00 KÄP 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0230",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 15.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00610 via data/venues_hto.json (postcode 00610 = Tilastokeskus Paavo postal area 'Käpylä')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Käpylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Luova tanssi 5–6 v. (26492)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kampin studiot",
    "address": "Salomonkatu 17/ Fredrikinkatu 46 (Autotalo), 2. kerros, 00100 Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "11:00",
    "end_time": "11:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-16",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Luova tanssi 5–6 v. (26492): 26492 Su 11:00 KAMP3 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0231",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 16.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 16.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | postcode 00100 via data/venues_hto.json; district null (postal area 'Helsinki keskusta - Etu-Töölö' is not a single district)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kamppi",
    "district_basis": "geokoodattu osoite -> sub_district 'Kamppi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Poikien tempputanssi 4–6 v. (26397)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kampin studiot",
    "address": "Salomonkatu 17/ Fredrikinkatu 46 (Autotalo), 2. kerros, 00100 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-13",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Poikien tempputanssi 4–6 v. (26397): 26397 To 16:45 KAMP4 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0232",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 13.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 13.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | postcode 00100 via data/venues_hto.json; district null (postal area 'Helsinki keskusta - Etu-Töölö' is not a single district)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kamppi",
    "district_basis": "geokoodattu osoite -> sub_district 'Kamppi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 4–5 v. (26195)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Aleksanterin teatteri, Laulusali",
    "address": "Bulevardi 27, 00180 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 4–5 v. (26195): 26195 Ke 16:30 LAU 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0233",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 12.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 12.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | postcode 00180 via data/venues_hto.json; district null (postal area 'Kamppi - Ruoholahti' is not a single district)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 4–5 v. (26888)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Malmitalon tanssisali",
    "address": "Ala-Malmin tori 1, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 4–5 v. (26888): 26888 Ke 17:00 MAL 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0234",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 12.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 12.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00700 via data/venues_hto.json (postcode 00700 = canonical rows hel-2026-0086,hel-2026-0087,hel-2026-0098,hel-2026-0099,hel-2026-0100,hel-2026-0114 district Malmi)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 4–5 v. (26212)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kampin studiot",
    "address": "Salomonkatu 17/ Fredrikinkatu 46 (Autotalo), 2. kerros, 00100 Helsinki",
    "district": null,
    "weekday": "perjantai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-14",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 4–5 v. (26212): 26212 Pe 17:15 KAMP4 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0235",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 14.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 14.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | postcode 00100 via data/venues_hto.json; district null (postal area 'Helsinki keskusta - Etu-Töölö' is not a single district)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kamppi",
    "district_basis": "geokoodattu osoite -> sub_district 'Kamppi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 4–5 v. (26452)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Leipätehdas",
    "address": "Kaikukatu 4 A, piharakennus: 5. krs., 00530 Helsinki",
    "district": "Kallio",
    "weekday": "perjantai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-14",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 4–5 v. (26452): 26452 Pe 17:30 LEI4 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0236",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 14.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 14.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00530 via data/venues_hto.json (postcode 00530 = Tilastokeskus Paavo postal area 'Kallio')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kallio",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 4–5 v. (26486)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Leipätehdas",
    "address": "Kaikukatu 4 A, piharakennus: 5. krs., 00530 Helsinki",
    "district": "Kallio",
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 4–5 v. (26486): 26486 La 10:00 LEI4 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0237",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 15.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00530 via data/venues_hto.json (postcode 00530 = Tilastokeskus Paavo postal area 'Kallio')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kallio",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 4–5 v. (26481)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kampin studiot",
    "address": "Salomonkatu 17/ Fredrikinkatu 46 (Autotalo), 2. kerros, 00100 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:15",
    "end_time": "11:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 4–5 v. (26481): 26481 La 10:15 KAMP3 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0238",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 15.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | postcode 00100 via data/venues_hto.json; district null (postal area 'Helsinki keskusta - Etu-Töölö' is not a single district)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kamppi",
    "district_basis": "geokoodattu osoite -> sub_district 'Kamppi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 4–5 v. (26478)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kasarmitori",
    "address": "Kasarmikatu 19 (torin puoli), 00130 Helsinki",
    "district": "Kaartinkaupunki",
    "weekday": "lauantai",
    "start_time": "11:30",
    "end_time": "12:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 4–5 v. (26478): 26478 La 11:30 KAS5 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0239",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 15.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00130 via data/venues_hto.json (postcode 00130 = Tilastokeskus Paavo postal area 'Kaartinkaupunki')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-015",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kaartinkaupunki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 5–6 v. (26567)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Karjalatalo",
    "address": "Käpylänkuja 1, 00610 Helsinki",
    "district": "Käpylä",
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-10",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "full",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 5–6 v. (26567): 26567 Ma 17:30 KÄP 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0240",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 10.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | district derived from postcode 00610 via data/venues_hto.json (postcode 00610 = Tilastokeskus Paavo postal area 'Käpylä')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-017",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Käpylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 5–6 v. (26474)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Päiväkoti Borgströminmäki",
    "address": "Föglönkuja 1, 00590 Helsinki",
    "district": "Kruunuvuorenranta",
    "weekday": "torstai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-09-03",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 5–6 v. (26474): 26474 To 17:30 KRUU 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0241",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 18 laskettu koodilla (tuntihaun alkupäivä 3.9.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 3.9.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00590 via data/venues_hto.json (postcode 00590 = Tilastokeskus Paavo postal area 'Kruunuvuorenranta')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-019",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kruunuvuorenranta",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 5–6 v. (26591)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kasarmitori",
    "address": "Kasarmikatu 19 (torin puoli), 00130 Helsinki",
    "district": "Kaartinkaupunki",
    "weekday": "perjantai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-14",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 5–6 v. (26591): 26591 Pe 17:15 KAS5 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0242",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 14.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 14.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00130 via data/venues_hto.json (postcode 00130 = Tilastokeskus Paavo postal area 'Kaartinkaupunki')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-020",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kaartinkaupunki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 5–6 v. (26576)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kampin studiot",
    "address": "Salomonkatu 17/ Fredrikinkatu 46 (Autotalo), 2. kerros, 00100 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "11:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "full",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 5–6 v. (26576): 26576 La 11:00 KAMP3 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0243",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 15.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | postcode 00100 via data/venues_hto.json; district null (postal area 'Helsinki keskusta - Etu-Töölö' is not a single district)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-021",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kamppi",
    "district_basis": "geokoodattu osoite -> sub_district 'Kamppi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 5–6 v. (26571)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kasarmitori",
    "address": "Kasarmikatu 19 (torin puoli), 00130 Helsinki",
    "district": "Kaartinkaupunki",
    "weekday": "lauantai",
    "start_time": "12:15",
    "end_time": "13:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "full",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 5–6 v. (26571): 26571 La 12:15 KAS5 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0244",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 15.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00130 via data/venues_hto.json (postcode 00130 = Tilastokeskus Paavo postal area 'Kaartinkaupunki')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-022",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kaartinkaupunki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 5–6 v. (26572)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kampin studiot",
    "address": "Salomonkatu 17/ Fredrikinkatu 46 (Autotalo), 2. kerros, 00100 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "13:00",
    "end_time": "13:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 5–6 v. (26572): 26572 La 13:00 KAMP3 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0245",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 15.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | postcode 00100 via data/venues_hto.json; district null (postal area 'Helsinki keskusta - Etu-Töölö' is not a single district)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-023",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kamppi",
    "district_basis": "geokoodattu osoite -> sub_district 'Kamppi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 5–6 v. (26570)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Malmitalon tanssisali",
    "address": "Ala-Malmin tori 1, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "lauantai",
    "start_time": "13:45",
    "end_time": "14:30",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 5–6 v. (26570): 26570 La 13:45 MAL 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0246",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 15.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00700 via data/venues_hto.json (postcode 00700 = canonical rows hel-2026-0086,hel-2026-0087,hel-2026-0098,hel-2026-0099,hel-2026-0100,hel-2026-0114 district Malmi)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-024",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Klassinen baletti Alkeet 1 6–8 v. (26586)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Malmitalon tanssisali",
    "address": "Ala-Malmin tori 1, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-10",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Klassinen baletti Alkeet 1 6–8 v. (26586): 26586 Ma 17:30 MAL 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0247",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 10.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | district derived from postcode 00700 via data/venues_hto.json (postcode 00700 = canonical rows hel-2026-0086,hel-2026-0087,hel-2026-0098,hel-2026-0099,hel-2026-0100,hel-2026-0114 district Malmi)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-025",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Klassinen baletti Alkeet 1 6–8 v. (26587)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Karjalatalo",
    "address": "Käpylänkuja 1, 00610 Helsinki",
    "district": "Käpylä",
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-11",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Klassinen baletti Alkeet 1 6–8 v. (26587): 26587 Ti 18:00 KÄP 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0248",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 11.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 11.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00610 via data/venues_hto.json (postcode 00610 = Tilastokeskus Paavo postal area 'Käpylä')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-026",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Käpylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Klassinen baletti Alkeet 1 6–8 v. (26580)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Leipätehdas",
    "address": "Kaikukatu 4 A, piharakennus: 5. krs., 00530 Helsinki",
    "district": "Kallio",
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Klassinen baletti Alkeet 1 6–8 v. (26580): 26580 Ke 17:00 LEI4 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0249",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 12.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 12.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00530 via data/venues_hto.json (postcode 00530 = Tilastokeskus Paavo postal area 'Kallio')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-027",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kallio",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Klassinen baletti Alkeet 1 6–7 v. (26581)",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6–7-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Aleksanterin teatteri, Laulusali",
    "address": "Bulevardi 27, 00180 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Klassinen baletti Alkeet 1 6–7 v. (26581): 26581 Ke 17:15 LAU 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0250",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 12.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 12.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | postcode 00180 via data/venues_hto.json; district null (postal area 'Kamppi - Ruoholahti' is not a single district)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-028",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Klassinen baletti Alkeet 1 6–8 v. (26579)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Tanssibuumi",
    "address": "Arinatie 4D, 2.krs, 00370 Helsinki",
    "district": "Reimarla",
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Klassinen baletti Alkeet 1 6–8 v. (26579): 26579 Ke 17:15 PIT 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0251",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 12.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 12.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00370 via data/venues_hto.json (postcode 00370 = Tilastokeskus Paavo postal area 'Reimarla')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-029",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Reimarla",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Klassinen baletti Alkeet 1 6–8 v. (26578)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Pikku-Huopalahden kerhohuoneisto",
    "address": "Hilda Flodinin kuja 2 A, 00300 Helsinki",
    "district": "Pikku Huopalahti",
    "weekday": "keskiviikko",
    "start_time": "18:15",
    "end_time": "19:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Klassinen baletti Alkeet 1 6–8 v. (26578): 26578 Ke 18:15 HUO2 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0252",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 12.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 12.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00300 via data/venues_hto.json (postcode 00300 = Tilastokeskus Paavo postal area 'Pikku Huopalahti')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-030",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pikku Huopalahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Klassinen baletti Alkeet 1 6–8 v. (26582)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Päiväkoti Borgströminmäki",
    "address": "Föglönkuja 1, 00590 Helsinki",
    "district": "Kruunuvuorenranta",
    "weekday": "torstai",
    "start_time": "18:15",
    "end_time": "19:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-13",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Klassinen baletti Alkeet 1 6–8 v. (26582): 26582 To 18:15 KRUU 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0253",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 13.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 13.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00590 via data/venues_hto.json (postcode 00590 = Tilastokeskus Paavo postal area 'Kruunuvuorenranta')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-031",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kruunuvuorenranta",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Klassinen baletti Alkeet 1 6–8 v. (26585)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Kasarmitori",
    "address": "Kasarmikatu 19 (torin puoli), 00130 Helsinki",
    "district": "Kaartinkaupunki",
    "weekday": "lauantai",
    "start_time": "11:15",
    "end_time": "12:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Klassinen baletti Alkeet 1 6–8 v. (26585): 26585 La 11:15 KAS2 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0254",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 15.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00130 via data/venues_hto.json (postcode 00130 = Tilastokeskus Paavo postal area 'Kaartinkaupunki')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-033",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kaartinkaupunki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Klassinen baletti Alkeet 1 6–8 v. (26590)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Kampin studiot",
    "address": "Salomonkatu 17/ Fredrikinkatu 46 (Autotalo), 2. kerros, 00100 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:45",
    "end_time": "12:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "full",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Klassinen baletti Alkeet 1 6–8 v. (26590): 26590 La 11:45 KAMP3 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0255",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 15.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | postcode 00100 via data/venues_hto.json; district null (postal area 'Helsinki keskusta - Etu-Töölö' is not a single district)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-034",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kamppi",
    "district_basis": "geokoodattu osoite -> sub_district 'Kamppi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Klassinen baletti Alkeet 1 6–7 v. (26584)",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6–7-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Leipätehdas",
    "address": "Kaikukatu 4 A, piharakennus: 5. krs., 00530 Helsinki",
    "district": "Kallio",
    "weekday": "lauantai",
    "start_time": "13:30",
    "end_time": "14:30",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Klassinen baletti Alkeet 1 6–7 v. (26584): 26584 La 13:30 LEI4 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0256",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 15.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00530 via data/venues_hto.json (postcode 00530 = Tilastokeskus Paavo postal area 'Kallio')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-035",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kallio",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Klassinen baletti Alkeet 1 6–8 v. (26583)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Malmitalon tanssisali",
    "address": "Ala-Malmin tori 1, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "lauantai",
    "start_time": "14:30",
    "end_time": "15:30",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Klassinen baletti Alkeet 1 6–8 v. (26583): 26583 La 14:30 MAL 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0257",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 15.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00700 via data/venues_hto.json (postcode 00700 = canonical rows hel-2026-0086,hel-2026-0087,hel-2026-0098,hel-2026-0099,hel-2026-0100,hel-2026-0114 district Malmi)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-036",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Nykytanssi Alkeet 1 6–8 v. (26524)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Terassitalon kerhohuoneisto",
    "address": "Punamäenpolku 1, 00300 Helsinki",
    "district": "Pikku Huopalahti",
    "weekday": "tiistai",
    "start_time": "17:45",
    "end_time": "18:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-11",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Nykytanssi Alkeet 1 6–8 v. (26524): 26524 Ti 17:45 HUO1 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0258",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 11.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 11.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00300 via data/venues_hto.json (postcode 00300 = Tilastokeskus Paavo postal area 'Pikku Huopalahti')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-037",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pikku Huopalahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Nykytanssi Alkeet 1 6–8 v. (26521)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Kannelmäen nuorisotalo, Kanneltalo",
    "address": "Klaneettitie 5, 00420 Helsinki",
    "district": "Kannelmäki",
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "12:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Nykytanssi Alkeet 1 6–8 v. (26521): 26521 La 11:00 KAN 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0259",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 15.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00420 via data/venues_hto.json (postcode 00420 = Tilastokeskus Paavo postal area 'Kannelmäki')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-038",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kannelmäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Luova tanssi Jatko 1 6–8 v. (26522)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Leipätehdas",
    "address": "Kaikukatu 4 A, piharakennus: 6. krs., 00530 Helsinki",
    "district": "Kallio",
    "weekday": "lauantai",
    "start_time": "12:00",
    "end_time": "13:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Luova tanssi Jatko 1 6–8 v. (26522): 26522 La 12:00 LEI8 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0260",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 15.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 15.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00530 via data/venues_hto.json (postcode 00530 = Tilastokeskus Paavo postal area 'Kallio')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-039",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kallio",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Poikien tempputanssi Jatko 1 6–7 v. (26398)",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6–7-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Leipätehdas",
    "address": "Kaikukatu 4 A, piharakennus: 6. krs., 00530 Helsinki",
    "district": "Kallio",
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-11",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Poikien tempputanssi Jatko 1 6–7 v. (26398): 26398 Ti 17:15 LEI8 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0261",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 11.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 11.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00530 via data/venues_hto.json (postcode 00530 = Tilastokeskus Paavo postal area 'Kallio')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-040",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T04:10:26+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kallio",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Kallio",
    "address": "Helsinginkatu 25, 00510 Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:10",
    "end_time": "18:40",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100533",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0262",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100533",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100533_8c731d00ec23.json",
      "capture_sha256": "8c731d00ec238cfc125b8bb858129421e38d8498c874f17981ce4c400858f79c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Alppiharju",
    "district_basis": "geokoodattu osoite -> neighborhood 'Alppiharju' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Kallio",
    "address": "Helsinginkatu 25, 00510 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:30",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100591",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0263",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100591",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100591_804e7a38889b.json",
      "capture_sha256": "804e7a38889bd711d70456eb8208ea2d56d4ace05431d6a7afdcfefda166ed3d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Alppiharju",
    "district_basis": "geokoodattu osoite -> neighborhood 'Alppiharju' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Kallio",
    "address": "Helsinginkatu 25, 00510 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:10",
    "end_time": "18:40",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100592",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0264",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100592",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100592_84ca9e59b130.json",
      "capture_sha256": "84ca9e59b130f63656fc2333b399efb1fdde2147dd52fef88c0153ec0b357879",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Alppiharju",
    "district_basis": "geokoodattu osoite -> neighborhood 'Alppiharju' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Kallio",
    "address": "Helsinginkatu 25, 00510 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:45",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-10",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100651",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0265",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100651",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100651_c63370eff91f.json",
      "capture_sha256": "c63370eff91fca6f37f698a0b1bf4f01f215502f035eb1d94e1afa028b0d5d48",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-22–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Alppiharju",
    "district_basis": "geokoodattu osoite -> neighborhood 'Alppiharju' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Kallio",
    "address": "Helsinginkatu 25, 00510 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:30",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-10",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100652",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0266",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100652",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100652_da3a1a692a4b.json",
      "capture_sha256": "da3a1a692a4bd9fda2d73e732c893a6272bf8a1500388792dda518b0101c10e9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-22–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Alppiharju",
    "district_basis": "geokoodattu osoite -> neighborhood 'Alppiharju' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Malmi",
    "address": "Pekanraitti 14, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "tiistai",
    "start_time": "16:35",
    "end_time": "17:05",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100570",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0267",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-20",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100570",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "district derived from postcode 00700 (postcode 00700 = canonical rows hel-2026-0086,hel-2026-0087,hel-2026-0098,hel-2026-0099,hel-2026-0100,hel-2026-0114,hel-2026-0147,hel-2026-0149,hel-2026-0234,hel-2026-0246,hel-2026-0247,hel-2026-0257 district Malmi)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100570_5a1edf2cf574.json",
      "capture_sha256": "5a1edf2cf574f98e70f5d1702b7e5c0cea753ead7612c9f15f820af9be8973cd",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Malmi",
    "address": "Pekanraitti 14, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100597",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0268",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100597",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "district derived from postcode 00700 (postcode 00700 = canonical rows hel-2026-0086,hel-2026-0087,hel-2026-0098,hel-2026-0099,hel-2026-0100,hel-2026-0114,hel-2026-0147,hel-2026-0149,hel-2026-0234,hel-2026-0246,hel-2026-0247,hel-2026-0257 district Malmi)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100597_73f3d77db99c.json",
      "capture_sha256": "73f3d77db99c67dd47ad3be09789d30024cef629a8cd4743252ac2142d133a4d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten uintikerho",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Malmi",
    "address": "Pekanraitti 14, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "keskiviikko",
    "start_time": "18:20",
    "end_time": "18:50",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100599",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0269",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100599",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "district derived from postcode 00700 (postcode 00700 = canonical rows hel-2026-0086,hel-2026-0087,hel-2026-0098,hel-2026-0099,hel-2026-0100,hel-2026-0114,hel-2026-0147,hel-2026-0149,hel-2026-0234,hel-2026-0246,hel-2026-0247,hel-2026-0257 district Malmi)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100599_3ab0d3527d28.json",
      "capture_sha256": "3ab0d3527d285259af98d2999d1a567274e5df8496a0c9f4d187ea8e485820cb",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten uintikerho",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Malmi",
    "address": "Pekanraitti 14, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "torstai",
    "start_time": "17:30",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-10",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100653",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0270",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100653",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "district derived from postcode 00700 (postcode 00700 = canonical rows hel-2026-0086,hel-2026-0087,hel-2026-0098,hel-2026-0099,hel-2026-0100,hel-2026-0114,hel-2026-0147,hel-2026-0149,hel-2026-0234,hel-2026-0246,hel-2026-0247,hel-2026-0257 district Malmi)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100653_fd4418f93a88.json",
      "capture_sha256": "fd4418f93a881ca425ce6fe69e8cbd0394120b024bc2232c68ec488c40edec90",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-22–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Malmi",
    "address": "Pekanraitti 14, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "perjantai",
    "start_time": "16:00",
    "end_time": "16:30",
    "season": "syksy 2026",
    "start_date": "2026-10-23",
    "end_date": "2026-12-11",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100673",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0271",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-23",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-10-23",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100673",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "district derived from postcode 00700 (postcode 00700 = canonical rows hel-2026-0086,hel-2026-0087,hel-2026-0098,hel-2026-0099,hel-2026-0100,hel-2026-0114,hel-2026-0147,hel-2026-0149,hel-2026-0234,hel-2026-0246,hel-2026-0247,hel-2026-0257 district Malmi)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100673_bc0915a98b03.json",
      "capture_sha256": "bc0915a98b0302265c38d5502014f040170038f79e09c29fc01a68c3e9e255a8",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-23–2026-12-11, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten uintikerho",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Mäkelänrinne",
    "address": "Mäkelänkatu 49, 00550 Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100569",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0272",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-20",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100569",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100569_3781bff7ef10.json",
      "capture_sha256": "3781bff7ef10702b06ce9e6b55c66b548ad61f73a0821a06e3d4ce13fbdd96ee",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "geokoodattu osoite -> sub_district 'Vallila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Mäkelänrinne",
    "address": "Mäkelänkatu 49, 00550 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:50",
    "end_time": "18:20",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100602",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0273",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100602",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100602_3a4417317e33.json",
      "capture_sha256": "3a4417317e333699465348c99e04bccf40570d15a98d0f5df1b8f916a6b05aac",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "geokoodattu osoite -> sub_district 'Vallila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Mäkelänrinne",
    "address": "Mäkelänkatu 49, 00550 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:10",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-10",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100655",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0274",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100655",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100655_ad51122d197b.json",
      "capture_sha256": "ad51122d197b659ad7836046d8b704ce73311de1437216849cc84b06f2e124aa",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-22–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "geokoodattu osoite -> sub_district 'Vallila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Mäkelänrinne",
    "address": "Mäkelänkatu 49, 00550 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:50",
    "end_time": "18:20",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-10",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100656",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0275",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100656",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100656_1b884a54bfc1.json",
      "capture_sha256": "1b884a54bfc1dceecec54557c903cdbdef22c6aa19d5b1e122845b86c80b60fe",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-22–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "geokoodattu osoite -> sub_district 'Vallila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten uintikerho",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Mäkelänrinne",
    "address": "Mäkelänkatu 49, 00550 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:30",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-10",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100657",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0276",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100657",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-015",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100657_51e80e87116c.json",
      "capture_sha256": "51e80e87116c58cb20916b79d08f3e832a0608f1b07b5889159f5e2395596fff",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-22–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "geokoodattu osoite -> sub_district 'Vallila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Mäkelänrinne",
    "address": "Mäkelänkatu 49, 00550 Helsinki",
    "district": null,
    "weekday": "perjantai",
    "start_time": "17:20",
    "end_time": "17:50",
    "season": "syksy 2026",
    "start_date": "2026-10-23",
    "end_date": "2026-12-11",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100675",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0277",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-23",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-10-23",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100675",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-016",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100675_c5650d9b7fb1.json",
      "capture_sha256": "c5650d9b7fb128c30bc2f9f4cdc2e980582d990d06ff1f6b77616b6c60ea269a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-23–2026-12-11, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "geokoodattu osoite -> sub_district 'Vallila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Mäkelänrinne",
    "address": "Mäkelänkatu 49, 00550 Helsinki",
    "district": null,
    "weekday": "perjantai",
    "start_time": "18:00",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-10-23",
    "end_date": "2026-12-11",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100676",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0278",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-23",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-10-23",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100676",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-017",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100676_6e5b5234703d.json",
      "capture_sha256": "6e5b5234703db9d857b43a0217ad3a718cdbbd77fc354d6c4d5f7c984266ac92",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-23–2026-12-11, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "geokoodattu osoite -> sub_district 'Vallila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Mäkelänrinne",
    "address": "Mäkelänkatu 49, 00550 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:40",
    "end_time": "10:10",
    "season": "syksy 2026",
    "start_date": "2026-10-24",
    "end_date": "2026-12-19",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100682",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0279",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-24",
    "price_period_end": "2026-12-19",
    "season_start_date": "2026-10-24",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100682",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-018",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100682_ec3a0eeb9599.json",
      "capture_sha256": "ec3a0eeb959974f41483b6e192c24b10edc6bf317df3e17b61f834ec909bd23d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 40.58,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.87 kuukaudelle (2026-10-24–2026-12-19, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "geokoodattu osoite -> sub_district 'Vallila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Mäkelänrinne",
    "address": "Mäkelänkatu 49, 00550 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:20",
    "end_time": "10:50",
    "season": "syksy 2026",
    "start_date": "2026-10-24",
    "end_date": "2026-12-19",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100683",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0280",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-24",
    "price_period_end": "2026-12-19",
    "season_start_date": "2026-10-24",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100683",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-019",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100683_1b7f855040f3.json",
      "capture_sha256": "1b7f855040f31f007d13a98dfe95d10b6f2bfaa256104cba3e25dec27ae3a023",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 40.58,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.87 kuukaudelle (2026-10-24–2026-12-19, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "geokoodattu osoite -> sub_district 'Vallila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Siltamäki",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100531",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0281",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100531",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "district derived from postcode 00740 (postcode 00740 = canonical rows hel-2026-0083,hel-2026-0089,hel-2026-0090,hel-2026-0091,hel-2026-0092,hel-2026-0095,hel-2026-0096,hel-2026-0097,hel-2026-0165,hel-2026-0166,hel-2026-0167,hel-2026-0168,hel-2026-0169,hel-2026-0170,hel-2026-0171,hel-2026-0172,hel-2026-0173,hel-2026-0174 district Siltamäki)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-020",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100531_fc605e32e68a.json",
      "capture_sha256": "fc605e32e68a29f27a45a69f727286b99fbc8d794ce4377f1974a94eaf306348",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Siltamäki",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "keskiviikko",
    "start_time": "18:30",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100590",
    "source_quote": "5–6-vuotiaille lapsille.",
    "activity_id": "hel-2026-0282",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100590",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "district derived from postcode 00740 (postcode 00740 = canonical rows hel-2026-0083,hel-2026-0089,hel-2026-0090,hel-2026-0091,hel-2026-0092,hel-2026-0095,hel-2026-0096,hel-2026-0097,hel-2026-0165,hel-2026-0166,hel-2026-0167,hel-2026-0168,hel-2026-0169,hel-2026-0170,hel-2026-0171,hel-2026-0172,hel-2026-0173,hel-2026-0174 district Siltamäki)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-021",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100590_7f3945856268.json",
      "capture_sha256": "7f3945856268ffe9b5dda8fee264ee422de12a0b02aaeec1b92252d5c96b5660",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Siltamäki",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-10",
    "sessions_count": 8,
    "price_eur": 76.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100650",
    "source_quote": "5–6-vuotiaille lapsille, joilla ei ole aiempaa uimakoulukokemusta tai jotka eivät hallitse vielä sukeltamista, liukumista ja kellumista.",
    "activity_id": "hel-2026-0283",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 76.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100650",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 76,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "district derived from postcode 00740 (postcode 00740 = canonical rows hel-2026-0083,hel-2026-0089,hel-2026-0090,hel-2026-0091,hel-2026-0092,hel-2026-0095,hel-2026-0096,hel-2026-0097,hel-2026-0165,hel-2026-0166,hel-2026-0167,hel-2026-0168,hel-2026-0169,hel-2026-0170,hel-2026-0171,hel-2026-0172,hel-2026-0173,hel-2026-0174 district Siltamäki)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-022",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100650_a7e6507fbf60.json",
      "capture_sha256": "a7e6507fbf60cfa506b5af88ab1c26c7205737715f4eef33786c5ab5b618d377",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 46.26,
    "monthly_cost_basis": "76.0 € / course jaettuna 1.64 kuukaudelle (2026-10-22–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten alkeisuimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Siltamäki",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "perjantai",
    "start_time": "08:20",
    "end_time": "08:50",
    "season": "syksy 2026",
    "start_date": "2026-10-23",
    "end_date": "2026-12-11",
    "sessions_count": 8,
    "price_eur": 57.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100672",
    "source_quote": "5–6-vuotiaille lapsille, joilla ei ole aiempaa uimakoulukokemusta tai jotka eivät hallitse vielä sukeltamista, liukumista ja kellumista.",
    "activity_id": "hel-2026-0284",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 57.0,
    "price_per_session_eur": 7.13,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-23",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-10-23",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100672",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 57,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "district derived from postcode 00740 (postcode 00740 = canonical rows hel-2026-0083,hel-2026-0089,hel-2026-0090,hel-2026-0091,hel-2026-0092,hel-2026-0095,hel-2026-0096,hel-2026-0097,hel-2026-0165,hel-2026-0166,hel-2026-0167,hel-2026-0168,hel-2026-0169,hel-2026-0170,hel-2026-0171,hel-2026-0172,hel-2026-0173,hel-2026-0174 district Siltamäki)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-023",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100672_ef5ce2c7f6d1.json",
      "capture_sha256": "ef5ce2c7f6d1746384af782d663910fc8bae53be9f812174fa8d2cc3a50ca66d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 34.7,
    "monthly_cost_basis": "57.0 € / course jaettuna 1.64 kuukaudelle (2026-10-23–2026-12-11, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Urheiluhallit Oy",
    "group_name": "Leikki-ikäisten jatkouimakoulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Siltamäki",
    "address": "Jousimiehentie 3, 00740 Helsinki",
    "district": "Siltamäki",
    "weekday": "perjantai",
    "start_time": "09:00",
    "end_time": "09:30",
    "season": "syksy 2026",
    "start_date": "2026-10-23",
    "end_date": "2026-12-11",
    "sessions_count": 8,
    "price_eur": 57.0,
    "price_basis": "8 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100818",
    "source_quote": "Leikki-ikäisten jatkouimakoulu on tarkoitettu 5–6-vuotiaille lapsille, jotka osaavat sukeltaa, liukua ja kellua.",
    "activity_id": "hel-2026-0285",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 57.0,
    "price_per_session_eur": 7.13,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-23",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-10-23",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://kauppa.urheiluhallit.fi/webshop/reservations2/apieventgroups/100818",
    "availability_status": "open",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 57,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "district derived from postcode 00740 (postcode 00740 = canonical rows hel-2026-0083,hel-2026-0089,hel-2026-0090,hel-2026-0091,hel-2026-0092,hel-2026-0095,hel-2026-0096,hel-2026-0097,hel-2026-0165,hel-2026-0166,hel-2026-0167,hel-2026-0168,hel-2026-0169,hel-2026-0170,hel-2026-0171,hel-2026-0172,hel-2026-0173,hel-2026-0174 district Siltamäki)",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-024",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/uh_100818_f2fa1dbb087f.json",
      "capture_sha256": "f2fa1dbb087f9614b97b2a9e9182052929db604e3290d047e7e8deb47c66a56e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 34.7,
    "monthly_cost_basis": "57.0 € / course jaettuna 1.64 kuukaudelle (2026-10-23–2026-12-11, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin kaupunki",
    "group_name": "Soveltava vesiliikunta 6-9 -vuotiaat, Kampin liikuntakeskus (12.9.–21.11.)",
    "min_age": 6,
    "max_age": 9,
    "eligibility_text": "6-9-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Kampin liikuntakeskus",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "12:00",
    "end_time": "12:45",
    "season": "syksy 2026",
    "start_date": "2026-09-12",
    "end_date": "2026-11-21",
    "sessions_count": 10,
    "price_eur": 47.0,
    "price_basis": "10 kertaa (Läntinen vesiliikunta sovellettu liikunta 6-9 vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Vaatii jokaiselle osallistujalle oman henkilokohtaisen avustajan, jonka huoltaja hankkii itse (ei sisally hintaan).",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84675",
    "source_quote": "Ryhmä on suunnattu 6-9-vuotiaille liikunta- ja tai kehitysvammaisille lapsille.",
    "activity_id": "hel-2026-0286",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 47.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-12",
    "price_period_end": "2026-11-21",
    "season_start_date": "2026-09-12",
    "season_end_date": "2026-11-21",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84675",
    "availability_status": "open",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 47,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Soveltava ryhma erityista tukea tarvitseville (Ilpon paatos 22.9.2026: mukana merkinnalla, ei hintavertailuun). | Sopii vain 6-vuotiaille (ikaraja 6-9 v; rajaus alle kouluikaiset 0-6 v). | collection_method=parser laajennetulla site-konfiguraatiolla (swim_service_ids + '102' lisatty kutsussa; scripts/collect/urheiluhallit.py-tiedostoa itseaan ei muutettu, koska tama laji ei ole yleinen kaupungin uimakouluryhma).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_14.json",
      "staging_id": "batch_2026-09-22_14-025",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_14/city_84675_077c40e414cc.json",
      "capture_sha256": "077c40e414cc1a892ed3d42cfcfe73fbb98feb3ce3e0f9a5f08fe4fe3c0e67e3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 20.15,
    "monthly_cost_basis": "47.0 € / course jaettuna 2.33 kuukaudelle (2026-09-12–2026-11-21, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Stara Voimistelukoulu 4-6v. Maanantai 16.45-18 (syksy 2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v.",
    "parent_child": "unknown",
    "venue_name": "Pakilan ala-aste, Eloisa",
    "address": "Elontie 35, 00660 Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:45",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942585",
    "source_quote": "Stara Voimistelukoulu 4-6v. Maanantai 16.45-18 (syksy 2026) | 17.8.2026 16:45 - 7.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0287",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942585_90f6d6ba8440.html",
      "capture_sha256": "90f6d6ba8440a7d3667df733bed2ef82f6fe9a0473ea0ebe250f05104fc78064",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pakila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Stara Voimistelukoulu 4-6v. Torstai 17-18.15 (syksy 2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v.",
    "parent_child": "unknown",
    "venue_name": "Kottby lågstadietskola",
    "address": "Pohjolankatu 45, 00600 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "20:45",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10946937",
    "source_quote": "Stara Voimistelukoulu 4-6v. Torstai 17-18.15 (syksy 2026) | 20.8.2026 17:00 - 10.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0288",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-20",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10946937_788dd487feb1.html",
      "capture_sha256": "788dd487feb1d9d2504057db642fb0392b10a7d2e9bee4be62b0c702b38bae0f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-20–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Käpylä",
    "district_basis": "geokoodattu osoite -> sub_district 'Käpylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Voimistelukoulu 5-6v. Keskiviikko 18-19 (syksy 2026)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "unknown",
    "venue_name": "Pakilanpuiston koulu",
    "address": "Halkosuontie 88, 00660 Helsinki, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10946880",
    "source_quote": "Voimistelukoulu 5-6v. Keskiviikko 18-19 (syksy 2026) | 19.8.2026 18:00 - 9.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0289",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10946880_e20338051255.html",
      "capture_sha256": "e2033805125579414e5d237438902250230f590ac5294562db83093d3693f714",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-19–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pakila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Voimistelukoulu 5-6v. Torstai 17-18 (syksy 2026)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "unknown",
    "venue_name": "Oulunkylän ala-aste Veräjälaakson toimipiste",
    "address": "Otto Brandtin tie 13, 00650 Helsinki, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10946987",
    "source_quote": "Voimistelukoulu 5-6v. Torstai 17-18 (syksy 2026) | 20.8.2026 17:00 - 10.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0290",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-20",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10946987_490bb1ae5b6a.html",
      "capture_sha256": "490bb1ae5b6ae6a04d7611484a899071ab027a3841113338685ab147de1f8550",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-20–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Oulunkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Oulunkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Voimistelukoulu 3-4v. Torstai 18-19 (syksy 2026)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4v.",
    "parent_child": "unknown",
    "venue_name": "Oulunkylän ala-aste Veräjälaakson toimipiste",
    "address": "Otto Brandtin tie 13, 00650 Helsinki, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10947049",
    "source_quote": "Voimistelukoulu 3-4v. Torstai 18-19 (syksy 2026) | 20.8.2026 18:00 - 10.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0291",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-20",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10947049_6588645d27be.html",
      "capture_sha256": "6588645d27bec6776339f1135d1340ebddf79647c3bc969062182ad69f497abb",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-20–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Oulunkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Oulunkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Voimistelukoulu 3-4v. Torstai 18-19 (syksy 2026)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4v.",
    "parent_child": "unknown",
    "venue_name": "Paloheinäntien väistökoulu",
    "address": "Paloheinäntie 40, 00670 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Lasten harrasteliikunta 60min syksy 2026",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10947050",
    "source_quote": "Voimistelukoulu 3-4v. Torstai 18-19 (syksy 2026) | 20.8.2026 18:00 - 10.12.2026 | Lasten harrasteliikunta 60min syksy 2026 151,00 € *",
    "activity_id": "hel-2026-0292",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-20",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10947050_4bd97ef29c5a.html",
      "capture_sha256": "4bd97ef29c5ae1e080e2442f9540901728f1ebeb6f59c52c1489d7a04eec3aad",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-20–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Paloheinä",
    "district_basis": "geokoodattu osoite -> sub_district 'Paloheinä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Ninjagym 4-6v. Keskiviikko 18-19 (syksy 2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v.",
    "parent_child": "unknown",
    "venue_name": "Paloheinän ala-aste",
    "address": "Ylipalontie 1, 00670 Helsinki, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10946884",
    "source_quote": "Ninjagym 4-6v. Keskiviikko 18-19 (syksy 2026) | 19.8.2026 18:00 - 9.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0293",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10946884_7456e1c8df3c.html",
      "capture_sha256": "7456e1c8df3caf6cc437e2a675b1082851ced42738c1e512e5c67ba8c272c938",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-19–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Paloheinä",
    "district_basis": "geokoodattu osoite -> sub_district 'Paloheinä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Ninjagym 4-6v. Keskiviikko 18-19 (syksy 2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v.",
    "parent_child": "unknown",
    "venue_name": "Postivarikko",
    "address": "Rullakkokatu 2, 00620 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10946886",
    "source_quote": "Ninjagym 4-6v. Keskiviikko 18-19 (syksy 2026) | 19.8.2026 18:00 - 9.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0294",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10946886_3d9f5b75fa58.html",
      "capture_sha256": "3d9f5b75fa58efc389c29f5c8a91a5f53ece022b68379c701ff66023562154e7",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-19–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pasila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pasila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Satutanssi 5-6v. Maanantai 17-18 (syksy 2026)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "unknown",
    "venue_name": "Pukinmäenkaaren peruskoulu",
    "address": "Kenttäkuja 12, 00720 Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942569",
    "source_quote": "Satutanssi 5-6v. Maanantai 17-18 (syksy 2026) | 17.8.2026 17:00 - 7.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0295",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942569_8e369f6c2e37.html",
      "capture_sha256": "8e369f6c2e37908bfc30a7bbcbb8c110a8604220f14be8b1df7f307c47410bfd",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pukinmäki",
    "district_basis": "geokoodattu osoite -> sub_district 'Pukinmäki' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Satutanssi 3-4v. Keskiviikko 17-18 (syksy 2026)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4v.",
    "parent_child": "unknown",
    "venue_name": "Oulunkylän ala-aste",
    "address": "Teinintie 12, 00640 helsinki, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942595",
    "source_quote": "Satutanssi 3-4v. Keskiviikko 17-18 (syksy 2026) | 19.8.2026 17:00 - 9.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0296",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942595_4fa9a040ba25.html",
      "capture_sha256": "4fa9a040ba257a7dfbbf32a4a229605dfcbb0b1c1722e5843da73bfbd31a10b9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-19–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Oulunkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Oulunkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Satutanssi 3-4v. Keskiviikko 17.30-18.30 (syksy 2026)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4v.",
    "parent_child": "unknown",
    "venue_name": "PNV Liikuntakeskus / Barre",
    "address": "Ohrahuhdantie 4, 00680 Helsinki, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942592",
    "source_quote": "Satutanssi 3-4v. Keskiviikko 17.30-18.30 (syksy 2026) | 19.8.2026 17:30 - 9.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0297",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942592_8d90e9d40897.html",
      "capture_sha256": "8d90e9d40897fe27337604b82c1b03d5da5b919425f5b36c544693c0d49cf961",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-19–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Itä-Pakila",
    "district_basis": "geokoodattu osoite -> sub_district 'Itä-Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Satutanssi 5-6v. Keskiviikko 18-19 (syksy 2026)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "unknown",
    "venue_name": "Oulunkylän ala-aste",
    "address": "Teinintie 12, 00640 helsinki, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942593",
    "source_quote": "Satutanssi 5-6v. Keskiviikko 18-19 (syksy 2026) | 19.8.2026 18:00 - 9.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0298",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942593_df67cd8d2b00.html",
      "capture_sha256": "df67cd8d2b00fc10ded3a846e93a4d39a9f82e7fb804d1f48702559474433d97",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-19–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Oulunkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Oulunkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Satutanssi 3-5v. Keskiviikko 18-19 (syksy 2026)",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5v.",
    "parent_child": "unknown",
    "venue_name": "Arabian peruskoulu",
    "address": "Berliininkatu 4, 00560 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10946643",
    "source_quote": "Satutanssi 3-5v. Keskiviikko 18-19 (syksy 2026) | 19.8.2026 18:00 - 9.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0299",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10946643_1fdb78151415.html",
      "capture_sha256": "1fdb78151415c363eb2c4af754fba5e9f13ebb9f195762127bbac9e8e42e0dcd",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-19–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Arabianranta",
    "district_basis": "geokoodattu osoite -> sub_district 'Arabianranta' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Temppuilu 3-4v. Maanantai 17-18 (syksy 2026)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4v.",
    "parent_child": "unknown",
    "venue_name": "Kuninkaantammen koulu",
    "address": "Kuninkaantammenkierto 22, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942577",
    "source_quote": "Temppuilu 3-4v. Maanantai 17-18 (syksy 2026) | 17.8.2026 17:00 - 7.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0300",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-015",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942577_0be586e10d80.html",
      "capture_sha256": "0be586e10d8016f15d36a062e79f480c7fe973db6f21a56324db59734391950c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaarela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaarela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Temppuilu 3-4v. Maanantai 17-18 (syksy 2026)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4v.",
    "parent_child": "unknown",
    "venue_name": "Torpparinmäen peruskoulu",
    "address": "Ylä-Fallintie 54, 00690 Helsinki, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942578",
    "source_quote": "Temppuilu 3-4v. Maanantai 17-18 (syksy 2026) | 17.8.2026 17:00 - 7.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0301",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-016",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942578_ab3370a34b28.html",
      "capture_sha256": "ab3370a34b28e73ef143dd27ddabde7e0ddbb968c56cd594cbef64c87cd45b69",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Temppuilu 5-6v. Maanantai 17.30-18.30 (syksy 2026)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "unknown",
    "venue_name": "PNV Liikuntakeskus / Move",
    "address": "Ohrahuhdantie 4, 00680 Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942570",
    "source_quote": "Temppuilu 5-6v. Maanantai 17.30-18.30 (syksy 2026) | 17.8.2026 17:30 - 7.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0302",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-017",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942570_6b2be3733f41.html",
      "capture_sha256": "6b2be3733f41947d993caa73cec6de6005b4292e86ebfde676c6961cb540ea85",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Itä-Pakila",
    "district_basis": "geokoodattu osoite -> sub_district 'Itä-Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Temppuilu 5-6v. Maanantai 18-19 (syksy 2026)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "unknown",
    "venue_name": "Kuninkaantammen koulu",
    "address": "Kuninkaantammenkierto 22, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942576",
    "source_quote": "Temppuilu 5-6v. Maanantai 18-19 (syksy 2026) | 17.8.2026 18:00 - 7.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0303",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-018",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942576_6437decc850e.html",
      "capture_sha256": "6437decc850e45aa74c0ecb79e4a8728899911a412bb6e86a3617c9ecbde3cae",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaarela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaarela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Temppuilu 3-4v. Torstai 17-18 (syksy 2026)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4v.",
    "parent_child": "unknown",
    "venue_name": "PNV Liikuntakeskus / Move",
    "address": "Ohrahuhdantie 4, 00680 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10947072",
    "source_quote": "Temppuilu 3-4v. Torstai 17-18 (syksy 2026) | 20.8.2026 17:00 - 10.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0304",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-20",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-019",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10947072_036a658e8a83.html",
      "capture_sha256": "036a658e8a83208dd5b74a7b8995bff7ea870d37ad6e5a7c18ab6d0131a4a8ad",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-20–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Itä-Pakila",
    "district_basis": "geokoodattu osoite -> sub_district 'Itä-Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Temppuilu 5-6v. Torstai 18-19 (syksy 2026)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "unknown",
    "venue_name": "PNV Liikuntakeskus / Move",
    "address": "Ohrahuhdantie 4, 00680 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10947051",
    "source_quote": "Temppuilu 5-6v. Torstai 18-19 (syksy 2026) | 20.8.2026 18:00 - 10.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0305",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-20",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-020",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10947051_c28aaf1160fa.html",
      "capture_sha256": "c28aaf1160fa3f5205e356bcfab68b18621fe8a41445b5172af2fff91eff4510",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-20–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Itä-Pakila",
    "district_basis": "geokoodattu osoite -> sub_district 'Itä-Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Perheliikkari 2-3v. Tiistai 17.15-18 (syksy 2026)",
    "min_age": 2,
    "max_age": 3,
    "eligibility_text": "2-3v.",
    "parent_child": "unknown",
    "venue_name": "PNV Liikuntakeskus / Move",
    "address": "Ohrahuhdantie 4, 00680 Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): 'Perheliikunta: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942509",
    "source_quote": "Perheliikkari 2-3v. Tiistai 17.15-18 (syksy 2026) | 18.8.2026 17:15 - 8.12.2026 | Perheliikunta syksy 2026 -25% 114,00 € *; Perheliikunta: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0306",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-18",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): 'Perheliikunta: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus 'Perheliikunta: syyskausi 2026: 151 €', myClub Hintatiedot 'Perheliikunta syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-021",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942509_c13ef395780d.html",
      "capture_sha256": "c13ef395780df158c2293f4b084ab993fefbddb1d0cf15d7a02e76a2bf362106",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-18–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Itä-Pakila",
    "district_basis": "geokoodattu osoite -> sub_district 'Itä-Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Perheliikkari 2-3v. Torstai 17.15-18 (syksy 2026)",
    "min_age": 2,
    "max_age": 3,
    "eligibility_text": "2-3v.",
    "parent_child": "unknown",
    "venue_name": "Pakilan ala-aste, Eloisa",
    "address": "Elontie 35, 00660 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): 'Perheliikunta: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942557",
    "source_quote": "Perheliikkari 2-3v. Torstai 17.15-18 (syksy 2026) | 20.8.2026 17:15 - 10.12.2026 | Perheliikunta syksy 2026 -25% 114,00 € *; Perheliikunta: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0307",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-20",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): 'Perheliikunta: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus 'Perheliikunta: syyskausi 2026: 151 €', myClub Hintatiedot 'Perheliikunta syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-022",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942557_9b5e169d66b8.html",
      "capture_sha256": "9b5e169d66b8c36ad53a3a938e6459646df6dda2cf09a93cff2cd94c8980336f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-20–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pakila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Liikuntaleikkikoulu 4-5v. Tiistai 18-19 (syksy 2026)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5v.",
    "parent_child": "unknown",
    "venue_name": "PNV Liikuntakeskus / Move",
    "address": "Ohrahuhdantie 4, 00680 Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10946890",
    "source_quote": "Liikuntaleikkikoulu 4-5v. Tiistai 18-19 (syksy 2026) | 18.8.2026 18:00 - 8.12.2026 | Lasten harrasteliikunta 60min syksy 2026 -25% 114,00 € *; 60 min tunti: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0308",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-18",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): '60 min tunti: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus '60 min tunti: syyskausi 2026: 151 €', myClub Hintatiedot 'Lasten harrasteliikunta 60min syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-024",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10946890_bc2d8d45c6a2.html",
      "capture_sha256": "bc2d8d45c6a2541497f7dfd6c79cdbea11744b72f2d624228968ad3ef6fbe718",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-18–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Itä-Pakila",
    "district_basis": "geokoodattu osoite -> sub_district 'Itä-Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Perhegym 1-3v. Maanantai 18-18.45 (syksy 2026)",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3v.",
    "parent_child": "unknown",
    "venue_name": "Torpparinmäen peruskoulu",
    "address": "Ylä-Fallintie 54, 00690 Helsinki, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): 'Perheliikunta: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942169",
    "source_quote": "Perhegym 1-3v. Maanantai 18-18.45 (syksy 2026) | 17.8.2026 18:00 - 7.12.2026 | Perheliikunta syksy 2026 -25% 114,00 € *; Perheliikunta: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0309",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): 'Perheliikunta: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus 'Perheliikunta: syyskausi 2026: 151 €', myClub Hintatiedot 'Perheliikunta syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-026",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942169_a0baaf53c6ee.html",
      "capture_sha256": "a0baaf53c6ee0bc10659c4fe4c5fc7713874763d72fbe25377885703a0e95914",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Perhegym 1-3v. Keskiviikko 17.15-18 (syksy 2026)",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3v.",
    "parent_child": "unknown",
    "venue_name": "Postivarikko",
    "address": "Rullakkokatu 2, 00620 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): 'Perheliikunta: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942548",
    "source_quote": "Perhegym 1-3v. Keskiviikko 17.15-18 (syksy 2026) | 19.8.2026 17:15 - 9.12.2026 | Perheliikunta syksy 2026 -25% 114,00 € *; Perheliikunta: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0310",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): 'Perheliikunta: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus 'Perheliikunta: syyskausi 2026: 151 €', myClub Hintatiedot 'Perheliikunta syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-027",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942548_cba3008aa20c.html",
      "capture_sha256": "cba3008aa20cb6e7877a1e84a401b90e74d75507b91a802c4c5720100ea6d064",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-19–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pasila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pasila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Perhegym 1-3v. Keskiviikko 18-18.45 (syksy 2026)",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3v.",
    "parent_child": "unknown",
    "venue_name": "Paloheinän ala-aste",
    "address": "Ylipalontie 1, 00670 Helsinki, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): 'Perheliikunta: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942550",
    "source_quote": "Perhegym 1-3v. Keskiviikko 18-18.45 (syksy 2026) | 19.8.2026 18:00 - 9.12.2026 | Perheliikunta syksy 2026 -25% 114,00 € *; Perheliikunta: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0311",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): 'Perheliikunta: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus 'Perheliikunta: syyskausi 2026: 151 €', myClub Hintatiedot 'Perheliikunta syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-028",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942550_689a203324b6.html",
      "capture_sha256": "689a203324b6abefea682eae795f2dcc15ccb27038955082e243d9a84327015a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-19–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Paloheinä",
    "district_basis": "geokoodattu osoite -> sub_district 'Paloheinä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Perhegym 1-3v. Torstai 18.15.19 (syksy 2026)",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3v.",
    "parent_child": "unknown",
    "venue_name": "Kottby lågstadietskola",
    "address": "Pohjolankatu 45, 00600 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:15",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Perheliikunta syksy 2026",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942559",
    "source_quote": "Perhegym 1-3v. Torstai 18.15.19 (syksy 2026) | 20.8.2026 18:15 - 10.12.2026 | Perheliikunta syksy 2026 151,00 € *",
    "activity_id": "hel-2026-0312",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-20",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-029",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942559_ac327b7162a3.html",
      "capture_sha256": "ac327b7162a3a69acd28ca33259c67043a7e38442b0c172d8aa9e8d6e4901bbc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-20–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Käpylä",
    "district_basis": "geokoodattu osoite -> sub_district 'Käpylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Perhegym 1-6v. Lauantai 11-11.45 (syksy 2026)",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6v.",
    "parent_child": "unknown",
    "venue_name": "PNV Liikuntakeskus / Move",
    "address": "Ohrahuhdantie 4, 00680 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "11:45",
    "season": "syksy 2026",
    "start_date": "2026-08-22",
    "end_date": "2026-12-05",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Perheliikunta syksy 2026",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942563",
    "source_quote": "Perhegym 1-6v. Lauantai 11-11.45 (syksy 2026) | 22.8.2026 11:00 - 5.12.2026 | Perheliikunta syksy 2026 151,00 € *",
    "activity_id": "hel-2026-0313",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-22",
    "price_period_end": "2026-12-05",
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-05",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-030",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942563_b05dafd3d32d.html",
      "capture_sha256": "b05dafd3d32dd898fe662f152db50ea202c59b630d5fcb40d12a49260311442a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 43.36,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.48 kuukaudelle (2026-08-22–2026-12-05, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Itä-Pakila",
    "district_basis": "geokoodattu osoite -> sub_district 'Itä-Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin NMKY ry",
    "group_name": "LAPSI-VANHEMPI -RYHMÄ / PAKILA / SYKSY KE 17:00-17:45",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2-4 vuotiaille",
    "parent_child": "yes",
    "venue_name": "Pakilan toimintakeskus",
    "address": "Palosuontie 4, Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 95.0,
    "price_basis": "myClub 'Vaadittavat tuotteet': Liikuntakerho kausimaksu 95,00 €",
    "membership_fee_eur": 25.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://hnmky.myclub.fi/flow/courses/10847038?group_id=99535",
    "source_quote": "LAPSI-VANHEMPI -RYHMÄ / PAKILA / SYKSY KE 17:00-17:45 | 2.9.2026 17:00 - 9.12.2026; Vaadittavat tuotteet: Liikuntakerho kausimaksu 95,00 €; Jäsenmaksu 1/2 25,00 €",
    "activity_id": "hel-2026-0314",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 120.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 95,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Liikuntakerho kausimaksu 95,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 25,
        "mandatory": true,
        "included": false,
        "recurrence": "term",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1/2 25,00 € (tämän kauden erä). hnmky.fi/kerhotoiminta/liikuntakerhot: 'Lisäksi HNMKY:n jäsenmaksu 50€ (2026) laskutetaan kahdessa osassa (syksy 25€, kevät 25€) kaikilta osallistujilta.' Vuosimaksu 50 €, tälle syyskaudelle laskutetaan puolet (25 €)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta ja jäsenmaksu myClubin 'Vaadittavat tuotteet' -kohdasta (ei erillistä Hintatiedot-listaa); hnmky.fi/kerhotoiminta/liikuntakerhot vahvistaa saman hinnan ja kertoo jäsenmaksun jakautuvan kahteen erään sekä sisältävän tapaturmavakuutuksen ('Kerhomaksuun sisältyy lapsen tapaturmavakuutus').",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-039",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_hnmky_10847038_c04251cbc8e5.html",
      "capture_sha256": "c04251cbc8e54ba4e64e8b821598e3d601043503362e465a7d48321eb72730d3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 36.89,
    "monthly_cost_basis": "120.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pakila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin NMKY ry",
    "group_name": "TAAPEROT / PAKILA / SYKSY KE 17:45-18:30",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Pakilan toimintakeskus",
    "address": "Palosuontie 4, Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 95.0,
    "price_basis": "myClub 'Vaadittavat tuotteet': Liikuntakerho kausimaksu 95,00 €",
    "membership_fee_eur": 25.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://hnmky.myclub.fi/flow/courses/10847126?group_id=99535",
    "source_quote": "TAAPEROT / PAKILA / SYKSY KE 17:45-18:30 | 2.9.2026 17:45 - 9.12.2026; Vaadittavat tuotteet: Liikuntakerho kausimaksu 95,00 €; Jäsenmaksu 1/2 25,00 €",
    "activity_id": "hel-2026-0315",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 120.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 95,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Liikuntakerho kausimaksu 95,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 25,
        "mandatory": true,
        "included": false,
        "recurrence": "term",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1/2 25,00 € (tämän kauden erä). hnmky.fi/kerhotoiminta/liikuntakerhot: 'Lisäksi HNMKY:n jäsenmaksu 50€ (2026) laskutetaan kahdessa osassa (syksy 25€, kevät 25€) kaikilta osallistujilta.' Vuosimaksu 50 €, tälle syyskaudelle laskutetaan puolet (25 €)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta ja jäsenmaksu myClubin 'Vaadittavat tuotteet' -kohdasta (ei erillistä Hintatiedot-listaa); hnmky.fi/kerhotoiminta/liikuntakerhot vahvistaa saman hinnan ja kertoo jäsenmaksun jakautuvan kahteen erään sekä sisältävän tapaturmavakuutuksen ('Kerhomaksuun sisältyy lapsen tapaturmavakuutus').",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-040",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_hnmky_10847126_9215cc120538.html",
      "capture_sha256": "9215cc120538a3c8c9c9ef6a26d7de6bf61dd57f36f0987ec46eb808777f0f97",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 36.89,
    "monthly_cost_basis": "120.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pakila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin NMKY ry",
    "group_name": "TAITURIT / PAKILA / SYKSY KE 18:30-19:15",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Pakilan toimintakeskus",
    "address": "Palosuontie 4, Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:30",
    "end_time": "19:15",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 95.0,
    "price_basis": "myClub 'Vaadittavat tuotteet': Liikuntakerho kausimaksu 95,00 €",
    "membership_fee_eur": 25.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://hnmky.myclub.fi/flow/courses/10847128?group_id=99535",
    "source_quote": "TAITURIT / PAKILA / SYKSY KE 18:30-19:15 | 2.9.2026 18:30 - 9.12.2026; Vaadittavat tuotteet: Liikuntakerho kausimaksu 95,00 €; Jäsenmaksu 1/2 25,00 €",
    "activity_id": "hel-2026-0316",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 120.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 95,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Liikuntakerho kausimaksu 95,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 25,
        "mandatory": true,
        "included": false,
        "recurrence": "term",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1/2 25,00 € (tämän kauden erä). hnmky.fi/kerhotoiminta/liikuntakerhot: 'Lisäksi HNMKY:n jäsenmaksu 50€ (2026) laskutetaan kahdessa osassa (syksy 25€, kevät 25€) kaikilta osallistujilta.' Vuosimaksu 50 €, tälle syyskaudelle laskutetaan puolet (25 €)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta ja jäsenmaksu myClubin 'Vaadittavat tuotteet' -kohdasta (ei erillistä Hintatiedot-listaa); hnmky.fi/kerhotoiminta/liikuntakerhot vahvistaa saman hinnan ja kertoo jäsenmaksun jakautuvan kahteen erään sekä sisältävän tapaturmavakuutuksen ('Kerhomaksuun sisältyy lapsen tapaturmavakuutus').",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-041",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_hnmky_10847128_47f0e2d67272.html",
      "capture_sha256": "47f0e2d6727245bf8badaa5d9d338fc5483cc5797db49a7e44417810fa4350ea",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 36.89,
    "monthly_cost_basis": "120.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pakila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin NMKY ry",
    "group_name": "LAPSI-VANHEMPI -RYHMÄ / PAKILA / SYKSY LA 9:30-10:15",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2-4 vuotiaille",
    "parent_child": "yes",
    "venue_name": "Pakilan toimintakeskus",
    "address": "Palosuontie 4, Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:30",
    "end_time": "10:15",
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 95.0,
    "price_basis": "myClub 'Vaadittavat tuotteet': Liikuntakerho kausimaksu 95,00 €",
    "membership_fee_eur": 25.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://hnmky.myclub.fi/flow/courses/10847063?group_id=99535",
    "source_quote": "LAPSI-VANHEMPI -RYHMÄ / PAKILA / SYKSY LA 9:30-10:15 | 5.9.2026 09:30 - 12.12.2026; Vaadittavat tuotteet: Liikuntakerho kausimaksu 95,00 €; Jäsenmaksu 1/2 25,00 €",
    "activity_id": "hel-2026-0317",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 120.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 95,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Liikuntakerho kausimaksu 95,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 25,
        "mandatory": true,
        "included": false,
        "recurrence": "term",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1/2 25,00 € (tämän kauden erä). hnmky.fi/kerhotoiminta/liikuntakerhot: 'Lisäksi HNMKY:n jäsenmaksu 50€ (2026) laskutetaan kahdessa osassa (syksy 25€, kevät 25€) kaikilta osallistujilta.' Vuosimaksu 50 €, tälle syyskaudelle laskutetaan puolet (25 €)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta ja jäsenmaksu myClubin 'Vaadittavat tuotteet' -kohdasta (ei erillistä Hintatiedot-listaa); hnmky.fi/kerhotoiminta/liikuntakerhot vahvistaa saman hinnan ja kertoo jäsenmaksun jakautuvan kahteen erään sekä sisältävän tapaturmavakuutuksen ('Kerhomaksuun sisältyy lapsen tapaturmavakuutus').",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-042",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_hnmky_10847063_ce5dc57d1d85.html",
      "capture_sha256": "ce5dc57d1d855cb54664f198d7e20eeab261d2a21df29241baea96bc20ecf396",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 36.89,
    "monthly_cost_basis": "120.0 € / term jaettuna 3.25 kuukaudelle (2026-09-05–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pakila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin NMKY ry",
    "group_name": "LAPSI-VANHEMPI -RYHMÄ / PAKILA / SYKSY LA 10:15-11:00",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2-4 vuotiaille",
    "parent_child": "yes",
    "venue_name": "Pakilan toimintakeskus",
    "address": "Palosuontie 4, Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:15",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 95.0,
    "price_basis": "myClub 'Vaadittavat tuotteet': Liikuntakerho kausimaksu 95,00 €",
    "membership_fee_eur": 25.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://hnmky.myclub.fi/flow/courses/10847043?group_id=99535",
    "source_quote": "LAPSI-VANHEMPI -RYHMÄ / PAKILA / SYKSY LA 10:15-11:00 | 5.9.2026 10:15 - 12.12.2026; Vaadittavat tuotteet: Liikuntakerho kausimaksu 95,00 €; Jäsenmaksu 1/2 25,00 €",
    "activity_id": "hel-2026-0318",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 120.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 95,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Liikuntakerho kausimaksu 95,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 25,
        "mandatory": true,
        "included": false,
        "recurrence": "term",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1/2 25,00 € (tämän kauden erä). hnmky.fi/kerhotoiminta/liikuntakerhot: 'Lisäksi HNMKY:n jäsenmaksu 50€ (2026) laskutetaan kahdessa osassa (syksy 25€, kevät 25€) kaikilta osallistujilta.' Vuosimaksu 50 €, tälle syyskaudelle laskutetaan puolet (25 €)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta ja jäsenmaksu myClubin 'Vaadittavat tuotteet' -kohdasta (ei erillistä Hintatiedot-listaa); hnmky.fi/kerhotoiminta/liikuntakerhot vahvistaa saman hinnan ja kertoo jäsenmaksun jakautuvan kahteen erään sekä sisältävän tapaturmavakuutuksen ('Kerhomaksuun sisältyy lapsen tapaturmavakuutus').",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-043",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_hnmky_10847043_5e519a83465c.html",
      "capture_sha256": "5e519a83465c5ee217d501bdd3ef5f817a1cd777cf80f4bab3d8fe0cc619fd1c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 36.89,
    "monthly_cost_basis": "120.0 € / term jaettuna 3.25 kuukaudelle (2026-09-05–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pakila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Lauttasaaren futiskoulu (RYHMÄ 1) talvi 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Futiskoulut kaudella 2025-2026 tarkoitettu vuosina 2021-2023 syntyneille (3-vuotiaista alkaen); alle 3-vuotiaat HJK:n perhefutikseen.",
    "parent_child": "no",
    "venue_name": "Lauttasaaren ala-aste",
    "address": "Myllykalliontie 3, Helsinki",
    "district": "Lauttasaari",
    "weekday": "sunnuntai",
    "start_time": "11:00",
    "end_time": "11:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-18",
    "end_date": "2026-12-13",
    "sessions_count": 8,
    "price_eur": 79.0,
    "price_basis": "8 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet; vakuutus ja HJK-tuote sisältyvät. Sisaralennus -10 %.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/lauttasaari/",
    "source_quote": "Lauttasaari futiskoulu (RYHMÄ 1) talvi 2026 - 18.10. - 13.12.2026; Harjoituksia yhteensä 8 - HUOM! ei harjoituksia 6.12.; Harjoitukset sunnuntaisin klo 11:00-11:45; Harjoitukset pidetään Lauttasaaren ala-asteella, Myllykalliontie 3; Hinta 79€.",
    "activity_id": "hel-2026-0319",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 109.0,
    "price_per_session_eur": 13.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-18",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-10-18",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2021,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/lauttasaari/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 79,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu vuodelle 2026; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Uusi kaupunginosa HJK:n futiskouluvalikoimassa (ei aiemmin kanonisessa eikä aiemmissa erissä). Ikä yleislauseesta futiskoulun etusivulta (ei ryhmäkohtainen), kuten kanonisilla HJK-perhefutis-riveillä (esim. hel-2026-0107). Saman vuoron RYHMÄ 2 (klo 12:00-12:45) on eri, ei-päällekkäinen vuoro -> ei duplikaatti.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_16.json",
      "staging_id": "batch_2026-09-22_16-001",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 44.69,
    "monthly_cost_basis": "79.0 € / course jaettuna 1.87 kuukaudelle (2026-10-18–2026-12-13, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Lauttasaaren futiskoulu (RYHMÄ 2) talvi 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Futiskoulut kaudella 2025-2026 tarkoitettu vuosina 2021-2023 syntyneille (3-vuotiaista alkaen); alle 3-vuotiaat HJK:n perhefutikseen.",
    "parent_child": "no",
    "venue_name": "Lauttasaaren ala-aste",
    "address": "Myllykalliontie 3, Helsinki",
    "district": "Lauttasaari",
    "weekday": "sunnuntai",
    "start_time": "12:00",
    "end_time": "12:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-18",
    "end_date": "2026-12-13",
    "sessions_count": 8,
    "price_eur": 79.0,
    "price_basis": "8 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet; vakuutus ja HJK-tuote sisältyvät. Sisaralennus -10 %.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/lauttasaari/",
    "source_quote": "Lauttasaari futiskoulu (RYHMÄ 2) talvi 2026 - 18.10. - 13.12.2026; Harjoituksia yhteensä 8 - HUOM! ei harjoituksia 6.12.; Harjoitukset sunnuntaisin klo 12:00-12:45; Harjoitukset pidetään Lauttasaaren ala-asteella, Myllykalliontie 3; Hinta 79€.",
    "activity_id": "hel-2026-0320",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 109.0,
    "price_per_session_eur": 13.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-18",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-10-18",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2021,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/lauttasaari/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 79,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu vuodelle 2026; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Rinnakkainen ryhmä samana päivänä eri kellonaikana kuin RYHMÄ 1 (11:00 vs 12:00) -> ei sama vuoro, ei duplikaattia. Ikä yleislauseesta, ks. RYHMÄ 1.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_16.json",
      "staging_id": "batch_2026-09-22_16-002",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 44.69,
    "monthly_cost_basis": "79.0 € / course jaettuna 1.87 kuukaudelle (2026-10-18–2026-12-13, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Kannelmäen futiskoulu loppukesä 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Alle 3-vuotiaat (2024-2025 syntyneet) ohjataan HJK:n perhefutikseen; tämä ryhmä 3-vuotiaista alkaen. Futiskoulut kaudella 2025-2026 tarkoitettu vuosina 2021-2023 syntyneille.",
    "parent_child": "no",
    "venue_name": "Kannelmäen tekonurmi",
    "address": "Soittajantie 9, 00420 Helsinki",
    "district": "Kannelmäki",
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "loppukesä 2026",
    "start_date": "2026-08-09",
    "end_date": "2026-10-11",
    "sessions_count": 10,
    "price_eur": 99.0,
    "price_basis": "10 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet; vakuutus ja HJK-tuote sisältyvät. Sisaralennus -10 %.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/kannelmaki/",
    "source_quote": "LOPPUKESÄ 2026 - 9.8.-11.10.2026; Harjoituksia yhteensä 10; Harjoitukset sunnuntaisin klo 10:00-10:45; Harjoitukset pidetään Kannelmäen tekonurmi, Soittajantie 9, 00420 Helsinki; Hinta 99€.",
    "activity_id": "hel-2026-0321",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 12.9,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-09",
    "price_period_end": "2026-10-11",
    "season_start_date": "2026-08-09",
    "season_end_date": "2026-10-11",
    "birth_year_min": 2021,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/kannelmaki/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu vuodelle 2026; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Uusi kaupunginosa HJK:n futiskouluvalikoimassa. Kurssi alkanut 9.8.2026, ei lähteestä eksplisiittistä saatavuustietoa (availability=unknown), ks. sääntö 7.5 - ei hylkäysperuste. Ikä yleislauseesta, ks. rivi 1. Minimimäärä 10 osallistujaa toiminnan järjestämiseksi (lähde).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_16.json",
      "staging_id": "batch_2026-09-22_16-003",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 49.58,
    "monthly_cost_basis": "99.0 € / course jaettuna 2.10 kuukaudelle (2026-08-09–2026-10-11, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Kannelmäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Perhefutis Haaga syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024-2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "yes",
    "venue_name": "Aino Acktén puiston viereinen kenttä",
    "address": "Aino Acktén tie 16, Helsinki",
    "district": "Haaga",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-09-08",
    "end_date": "2026-11-24",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskausi, sis. ohjauksen 11 krt, lapselle vakuutuksen, palkinnon ja vuoden 10 € jäsenmaksun (vuoden ensimmäinen maksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntaleikki.fi/perhefutis/",
    "source_quote": "Perhefutis Haaga, 2024-2023-2022-syntyneet; tiistai; harjoituspäivämäärät 8.9., 15.9., 22.9., 29.9., 6.10., (13.10. EI TUNTIA), 20.10., 27.10., 3.11., 10.11., 17.11., 24.11.. Hinnat SYKSY 2026 / Perhefutis: Kausi maksaa 105 euroa (sis. ohjauksen 11krt, lapselle vakuutuksen ja palkinnon).",
    "activity_id": "hel-2026-0322",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://liikuntaleikki.fi/info/",
    "billing_period": "term",
    "price_period_start": "2026-09-08",
    "price_period_end": "2026-11-24",
    "season_start_date": "2026-09-08",
    "season_end_date": "2026-11-24",
    "birth_year_min": 2022,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntaleikki.fi/perhefutis/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, lapsen vakuutuksen ja palkinnon; vuoden ensimmäiseen osallistumismaksuun sisältyy 10 € jäsenmaksu."
      }
    ],
    "price_options": [
      {
        "label": "Kaksi lasta samasta perheestä",
        "amount_eur": 175,
        "applies_if": "kaksi saman perheen lasta mukana",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Länsi-Helsinki-alue Liikuntaleikin omalla sivujaolla (Haaga/Kannelmäki); Oulunkylä Pohjois-Helsinki. Ikä ja hinta (105 €, 11 krt, 10 € jäsenmaksu ensimmäisessä maksussa) samat kaikilla Liikuntaleikin perhefutis-ryhmillä (yleishinnasto liikuntaleikki.fi/info/), kuten kanonisella rivillä hel-2026-0155 (Paloheinä).  Harjoituspaikka vaihtuu 29.9. alkaen: Haagan peruskoulun sali, Isonnevantie 16 (sama kellonaika 17:00-17:40).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_16.json",
      "staging_id": "batch_2026-09-22_16-004",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-08–2026-11-24, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Perhefutis Oulunkylä syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024-2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "yes",
    "venue_name": "päiväkoti Nestorin viereinen kenttä",
    "address": "Kylänvanhimmantie 1, Helsinki",
    "district": "Oulunkylä",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-09-08",
    "end_date": "2026-11-24",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskausi, sis. ohjauksen 11 krt, lapselle vakuutuksen, palkinnon ja vuoden 10 € jäsenmaksun (vuoden ensimmäinen maksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntaleikki.fi/perhefutis/",
    "source_quote": "Perhefutis Oulunkylä, 2024-2023-2022-syntyneet; tiistai; harjoituspäivämäärät 8.9., 15.9., 22.9., 29.9., (6.10. EI TUNTIA), 13.10., 20.10., 27.10., 3.11., 10.11., 17.11., 24.11.. Hinnat SYKSY 2026 / Perhefutis: Kausi maksaa 105 euroa (sis. ohjauksen 11krt, lapselle vakuutuksen ja palkinnon).",
    "activity_id": "hel-2026-0323",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://liikuntaleikki.fi/info/",
    "billing_period": "term",
    "price_period_start": "2026-09-08",
    "price_period_end": "2026-11-24",
    "season_start_date": "2026-09-08",
    "season_end_date": "2026-11-24",
    "birth_year_min": 2022,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntaleikki.fi/perhefutis/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, lapsen vakuutuksen ja palkinnon; vuoden ensimmäiseen osallistumismaksuun sisältyy 10 € jäsenmaksu."
      }
    ],
    "price_options": [
      {
        "label": "Kaksi lasta samasta perheestä",
        "amount_eur": 175,
        "applies_if": "kaksi saman perheen lasta mukana",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Länsi-Helsinki-alue Liikuntaleikin omalla sivujaolla (Haaga/Kannelmäki); Oulunkylä Pohjois-Helsinki. Ikä ja hinta (105 €, 11 krt, 10 € jäsenmaksu ensimmäisessä maksussa) samat kaikilla Liikuntaleikin perhefutis-ryhmillä (yleishinnasto liikuntaleikki.fi/info/), kuten kanonisella rivillä hel-2026-0155 (Paloheinä).  Harjoituspaikka vaihtuu 29.9. alkaen: Oulunkylän ala-asteen liikuntasali, Teinintie 12 (sama kellonaika 17:00-17:40).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_16.json",
      "staging_id": "batch_2026-09-22_16-006",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T07:21:44+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-08–2026-11-24, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Oulunkylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "taekwondo",
    "provider": "Wondo",
    "group_name": "Lasten taekwondo 4-6-vuotiaat, Lauttasaari, syksy 2026",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaiden harjoitusryhmä.",
    "parent_child": "unknown",
    "venue_name": "Lauttasaaren ala-aste",
    "address": null,
    "district": "Lauttasaari",
    "weekday": "perjantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-04",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Lasten peruskurssin hinta; sisältää kauden harjoitukset valitussa ryhmässä ja seuran jäsenmaksun vuodelle 2026",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Aluksi ei erityisvarusteita; vöykokeeseen liittyvät varusteet myöhemmin.",
    "trial_info": "Kaksi viikkoa maksutta ennen sitoutumista.",
    "enrollment_status": "unknown",
    "source_url": "https://www.wondo.fi/aloita-taekwondo/lasten-taekwondo/",
    "source_quote": "LAUTTASAARI (Lauttasaaren ala-aste) perjantaisin 17.00-17.45 [4-6-vuotiaiden harjoitusryhmät]. Lasten peruskurssin hinta on 150€. Hinta sisältää kauden harjoitukset valitussa harjoitusryhmässä ja seuran jäsenmaksun vuodelle 2026. Lisäksi kauden lopussa järjestetään vyökokeita, joihin osallistuminen maksaa 20€. Ennen sitoutumista voi käydä kaksi viikkoa ilmaiseksi kokeilemassa harjoituksia. Samassa taloudessa asuva toinen ja sitä seuraava perheenjäsen saa 20 % alennuksen harjoitusmaksuista.",
    "activity_id": "hel-2026-0324",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 150.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-04",
    "price_period_end": null,
    "season_start_date": "2026-09-04",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää kauden harjoitukset valitussa ryhmässä ja seuran jäsenmaksun vuodelle 2026."
      }
    ],
    "price_options": [
      {
        "label": "Toinen ja seuraava saman talouden perheenjäsen",
        "amount_eur": 120.0,
        "applies_if": "samassa taloudessa asuva toinen tai sitä seuraava perheenjäsen (20 % alennus harjoitusmaksusta)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Kauden lopussa vyökoe, osallistuminen 20€ (valinnainen).",
    "unverified_fields": [],
    "verification_notes": "Järjestäjä Wondo (wondo.fi) hyväksytty ja lisätty data/providers_extra.json:iin (Ilpon päätös 22.9.2026, kierros 4, kohta c). Länsi-Helsinki (Lauttasaari). Muut sivun ryhmät (esim. Leppävaara) on eksplisiittisesti merkitty 'TÄYNNÄ' - Lauttasaaren ryhmässä ei ole tätä merkintää, mutta koska sivu ei anna nimenomaista avoin/täynnä-tilaa Lauttasaaren ryhmälle, availability jätetty unknown (ei pääteltyä). Kausi alkaa 'syyskauden 2026 harjoittelu alkaa vko 34 (pl. ... Lauttasaari: vko 36)' -> viikko 36 2026 = 1.-6.9.2026, perjantai 4.9.2026 arvioitu alkupäiväksi (viikon ainoa perjantai).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_16.json",
      "staging_id": "batch_2026-09-22_16-012",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T08:01:15+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Kalasatama voimistelukoulu 6-7v",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6-7v",
    "parent_child": "unknown",
    "venue_name": "Kalasataman peruskoulu",
    "address": "Polariksen katu 1, 00540 Helsinki",
    "district": "Kalasatama",
    "weekday": "tiistai",
    "start_time": "17:05",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10750460",
    "source_quote": "Kalasatama voimistelukoulu 6-7v | 1.9.2026 17:05 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0325",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja alkaa 6 vuodesta - sopii vain 6-vuotiaille (Ilpon rajauspäätös 21.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_elise_10750460_b62aca97f0a3.html",
      "capture_sha256": "b62aca97f0a3fa72fe6ce3c54d9e438f81eadc78dd6977881066959b3c0e7a0c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 50.24,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.38 kuukaudelle (2026-09-01–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kalasatama",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Laajasalo voimistelukoulu 6-8 v",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8 v",
    "parent_child": "unknown",
    "venue_name": "Laajasalon palloiluhalli",
    "address": "Sarvastonkaari 23, 00840 Helsinki",
    "district": "Laajasalo",
    "weekday": "maanantai",
    "start_time": "16:00",
    "end_time": "16:55",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10750519",
    "source_quote": "Laajasalo voimistelukoulu 6-8 v | 31.8.2026 16:00 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0326",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja alkaa 6 vuodesta - sopii vain 6-vuotiaille (Ilpon rajauspäätös 21.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_elise_10750519_1bb5b6fbd7d6.html",
      "capture_sha256": "1bb5b6fbd7d65ba7d7f3010f5b50761f15cc4e3d2918ebe1e4bd37aeaf301e5c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.75,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.42 kuukaudelle (2026-08-31–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Laajasalo",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Töölö voimistelukoulu 6-8 v",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8 v",
    "parent_child": "unknown",
    "venue_name": "Töölön kisahalli",
    "address": "Paavo Nurmen kuja 1 C, 00250 Helsinki, Suomi",
    "district": "Töölö",
    "weekday": "maanantai",
    "start_time": "16:30",
    "end_time": "17:25",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10751081",
    "source_quote": "Töölö voimistelukoulu 6-8 v | 31.8.2026 16:30 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0327",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja alkaa 6 vuodesta - sopii vain 6-vuotiaille (Ilpon rajauspäätös 21.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_elise_10751081_640d37a1c239.html",
      "capture_sha256": "640d37a1c23945350721e33076b7b85cef6fe3cfa59c1b4e42a3002716ea511c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.75,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.42 kuukaudelle (2026-08-31–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Kamppi voimistelukoulu 6-8 v",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8 v",
    "parent_child": "unknown",
    "venue_name": "Ressun peruskoulu",
    "address": "Lapinlahdenkatu 10, 00180 Helsinki",
    "district": "Kamppi",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10733947",
    "source_quote": "Kamppi voimistelukoulu 6-8 v | 31.8.2026 17:00 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0328",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja alkaa 6 vuodesta - sopii vain 6-vuotiaille (Ilpon rajauspäätös 21.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_elise_10733947_fa8b129f01c9.html",
      "capture_sha256": "fa8b129f01c96e37e410c160adcbe72424b4a32e4f76f4d4158ca766a99d9537",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.75,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.42 kuukaudelle (2026-08-31–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kamppi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Munkkivuori voimistelukoulu 6-8 v",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8 v",
    "parent_child": "unknown",
    "venue_name": "Munkkivuoren ala-aste",
    "address": "Raumantie 2, 00350 Helsinki",
    "district": "Munkkivuori",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10750784",
    "source_quote": "Munkkivuori voimistelukoulu 6-8 v | 3.9.2026 17:00 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0329",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja alkaa 6 vuodesta - sopii vain 6-vuotiaille (Ilpon rajauspäätös 21.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_elise_10750784_44e58cf7f64f.html",
      "capture_sha256": "44e58cf7f64f58aadfd80d19bc57cea6a9cb0423c3e84c0f24bb83c582d0ed48",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 51.23,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.32 kuukaudelle (2026-09-03–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Munkkivuori",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Vuosaari voimistelukoulu 6-8 v",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8 v",
    "parent_child": "unknown",
    "venue_name": "Vuoniityn peruskoulu",
    "address": "Venemestarintie 14, 00099 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "18:55",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10750902",
    "source_quote": "Vuosaari voimistelukoulu 6-8 v | 3.9.2026 18:00 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0330",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja alkaa 6 vuodesta - sopii vain 6-vuotiaille (Ilpon rajauspäätös 21.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_elise_10750902_046528306ccd.html",
      "capture_sha256": "046528306ccd70c4b92d951f240b62b5357d4f46a0bdc2e70791cc1e752f6fa3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 51.23,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.32 kuukaudelle (2026-09-03–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Vuosaari",
    "district_basis": "geokoodattu osoite -> neighborhood 'Vuosaari' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Elise Gymnastics",
    "group_name": "Jätkäsaari temppukoulu 6-8v",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8v",
    "parent_child": "unknown",
    "venue_name": "Jätkäsaaren päiväkoti",
    "address": "Rionkatu 10, 00220 Helsinki",
    "district": "Jätkäsaari",
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:55",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10733775",
    "source_quote": "Jätkäsaari temppukoulu 6-8v | 31.8.2026 18:00 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0331",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja alkaa 6 vuodesta - sopii vain 6-vuotiaille (Ilpon rajauspäätös 21.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_elise_10733775_04683e422531.html",
      "capture_sha256": "04683e422531658b4ef15d71ddee427e4498322d9e026951ffa1dd5893929537",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.75,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.42 kuukaudelle (2026-08-31–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Jätkäsaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Arabianrannan futiskoulu talvi 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Lapset voivat tutustua jalkapalloon HJK:n futiskouluissa 3-vuotiaista alkaen. Kaudella 2025-2026 futiskoulut on tarkoitettu vuosina 2021-2023 syntyneille lapsille; alle 3-vuotiaat HJK:n perhefutikseen.",
    "parent_child": "no",
    "venue_name": "Arabian peruskoulu",
    "address": "Berliininkatu 4, Helsinki",
    "district": "Arabianranta",
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-17",
    "end_date": "2026-12-12",
    "sessions_count": 8,
    "price_eur": 79.0,
    "price_basis": "8 harjoituksen kurssi",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet; vakuutus ja HJK-tuote sisältyvät. Sisaralennus -10 %.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/arabianranta/",
    "source_quote": "FUTISKOULUJEN TALVIKAUSI 2026 - 17.10. - 12.12.2026 Arabianrannan futiskoulu talvi 2026 - 17.10. - 12.12.2026 Harjoituksia yhteensä 8 - HUOM! ei harjoituksia 31.10. Harjoitukset lauantaisin klo 10:00-10:45 Harjoitukset pidetään Arabian peruskoulu, Berliininkatu 4 Hinta 79€",
    "activity_id": "hel-2026-0332",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 109.0,
    "price_per_session_eur": 13.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-17",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-10-17",
    "season_end_date": "2026-12-12",
    "birth_year_min": 2021,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/arabianranta/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 79,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu vuodelle 2026; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Uusi kaupunginosa HJK:n futiskoulu-valikoimassa (deferred-listan kohta 'HJK Lasten futiskoulu talvi 2026', batch_2026-09-21_01). Ikä yleislauseesta futiskoulun etusivulta (ei ryhmäkohtainen), kuten kanonisilla HJK-futiskoulu-riveillä (esim. hel-2026-0319 Lauttasaari, Kannelmäen futiskoulu loppukesä 2026 batch_2026-09-22_16). Minimimäärä osallistujia vaaditaan toiminnan järjestämiseksi (lähde).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-017",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/hjk_arabianranta_2a3170879c7e.html",
      "capture_sha256": "2a3170879c7e41b67e2f3f93f4a4beed7d3a6c3d20e9b84cb03bf31c1d2e0e63",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "monthly_cost_eur": 44.69,
    "monthly_cost_basis": "79.0 € / course jaettuna 1.87 kuukaudelle (2026-10-17–2026-12-12, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Arabianranta",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Malmin futiskoulu talvi 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Lapset voivat tutustua jalkapalloon HJK:n futiskouluissa 3-vuotiaista alkaen. Kaudella 2025-2026 futiskoulut on tarkoitettu vuosina 2021-2023 syntyneille lapsille; alle 3-vuotiaat HJK:n perhefutikseen.",
    "parent_child": "no",
    "venue_name": "Malmin peruskoulu",
    "address": "Talvelantie 1, Helsinki",
    "district": "Malmi",
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-17",
    "end_date": "2026-12-05",
    "sessions_count": 8,
    "price_eur": 69.0,
    "price_basis": "8 harjoituksen kurssi",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet; vakuutus ja HJK-tuote sisältyvät. Sisaralennus -10 %.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/malmi/",
    "source_quote": "FUTISKOULUJEN TALVIKAUSI 2026 - 17.10. - 5.12.2026 Malmin futiskoulu talvi 2026 - 17.10. - 5.12.2026 Harjoituksia yhteensä 8 - HUOM! ei harjoituksia 31.10. Harjoitukset lauantaisin klo 10:00-10:45 Harjoitukset pidetään Malmin peruskoululla, Talvelantie 1 Hinta 69€",
    "activity_id": "hel-2026-0333",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 99.0,
    "price_per_session_eur": 12.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-17",
    "price_period_end": "2026-12-05",
    "season_start_date": "2026-10-17",
    "season_end_date": "2026-12-05",
    "birth_year_min": 2021,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/malmi/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 69,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu vuodelle 2026; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Uusi kaupunginosa HJK:n futiskoulu-valikoimassa (deferred-listan kohta 'HJK Lasten futiskoulu talvi 2026', batch_2026-09-21_01). Ikä yleislauseesta futiskoulun etusivulta (ei ryhmäkohtainen), kuten kanonisilla HJK-futiskoulu-riveillä (esim. hel-2026-0319 Lauttasaari, Kannelmäen futiskoulu loppukesä 2026 batch_2026-09-22_16). Minimimäärä osallistujia vaaditaan toiminnan järjestämiseksi (lähde).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-018",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/hjk_malmi_3cec351b49e9.html",
      "capture_sha256": "3cec351b49e9d5514bb057c69c52233740fe57a79476f8c6b96d9e81b0768689",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "monthly_cost_eur": 44.5,
    "monthly_cost_basis": "69.0 € / course jaettuna 1.64 kuukaudelle (2026-10-17–2026-12-05, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Malminkartanon futiskoulu talvi 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Lapset voivat tutustua jalkapalloon HJK:n futiskouluissa 3-vuotiaista alkaen. Kaudella 2025-2026 futiskoulut on tarkoitettu vuosina 2021-2023 syntyneille lapsille; alle 3-vuotiaat HJK:n perhefutikseen.",
    "parent_child": "no",
    "venue_name": "Malminkartanon ala-aste",
    "address": "Puustellintie 6, Helsinki",
    "district": "Malminkartano",
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "11:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-17",
    "end_date": "2026-12-12",
    "sessions_count": 8,
    "price_eur": 79.0,
    "price_basis": "8 harjoituksen kurssi",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet; vakuutus ja HJK-tuote sisältyvät. Sisaralennus -10 %.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/malminkartano/",
    "source_quote": "FUTISKOULUJEN TALVIKAUSI 2026 - 17.10. - 12.12.2026 Malminkartanon futiskoulu talvi 2026 - 17.10. - 12.12.2026 Harjoituksia yhteensä 8 - HUOM! ei harjoituksia 31.10. Harjoitukset lauantaisin klo 11:00-11:45 Harjoitukset pidetään Malminkartanon ala-aste, Puustellintie 6, Hinta 79€",
    "activity_id": "hel-2026-0334",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 109.0,
    "price_per_session_eur": 13.63,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-17",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-10-17",
    "season_end_date": "2026-12-12",
    "birth_year_min": 2021,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/malminkartano/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 79,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu vuodelle 2026; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Uusi kaupunginosa HJK:n futiskoulu-valikoimassa (deferred-listan kohta 'HJK Lasten futiskoulu talvi 2026', batch_2026-09-21_01). Ikä yleislauseesta futiskoulun etusivulta (ei ryhmäkohtainen), kuten kanonisilla HJK-futiskoulu-riveillä (esim. hel-2026-0319 Lauttasaari, Kannelmäen futiskoulu loppukesä 2026 batch_2026-09-22_16). Minimimäärä osallistujia vaaditaan toiminnan järjestämiseksi (lähde).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-019",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/hjk_malminkartano_cb22538211cf.html",
      "capture_sha256": "cb22538211cf48362f5ad8f60ed036370da8574a8e781a721279a0f3ed29d647",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "monthly_cost_eur": 44.69,
    "monthly_cost_basis": "79.0 € / course jaettuna 1.87 kuukaudelle (2026-10-17–2026-12-12, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Malminkartano",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Meilahden futiskoulu (RYHMÄ 1) talvi 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Lapset voivat tutustua jalkapalloon HJK:n futiskouluissa 3-vuotiaista alkaen. Kaudella 2025-2026 futiskoulut on tarkoitettu vuosina 2021-2023 syntyneille lapsille; alle 3-vuotiaat HJK:n perhefutikseen.",
    "parent_child": "no",
    "venue_name": "Meilahden ylä-aste",
    "address": "Kuusitie 12, Helsinki",
    "district": "Meilahti",
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-03",
    "end_date": "2026-12-12",
    "sessions_count": 10,
    "price_eur": 99.0,
    "price_basis": "10 harjoituksen kurssi",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet; vakuutus ja HJK-tuote sisältyvät. Sisaralennus -10 %.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/meilahti/",
    "source_quote": "Meilahden futiskoulu (RYHMÄ 1) talvi 2026 - 3.10. - 12.12.2026 Harjoituksia yhteensä 10 - HUOM! ei harjoituksia 31.10. Harjoitukset lauantaisin klo 10:00-10:45 Harjoitukset pidetään Meilahden ylä-aste, Kuusitie 12 Hinta 99€",
    "activity_id": "hel-2026-0335",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 12.9,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-03",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-10-03",
    "season_end_date": "2026-12-12",
    "birth_year_min": 2021,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/meilahti/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu vuodelle 2026; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Uusi kaupunginosa HJK:n futiskoulu-valikoimassa (deferred-listan kohta 'HJK Lasten futiskoulu talvi 2026', batch_2026-09-21_01). Ikä yleislauseesta futiskoulun etusivulta (ei ryhmäkohtainen), kuten kanonisilla HJK-futiskoulu-riveillä (esim. hel-2026-0319 Lauttasaari, Kannelmäen futiskoulu loppukesä 2026 batch_2026-09-22_16). Minimimäärä osallistujia vaaditaan toiminnan järjestämiseksi (lähde).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-020",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/hjk_meilahti_bbdc4eb015b0.html",
      "capture_sha256": "bbdc4eb015b0ddb43b2412548a13ed739792d11b73fe4ff4cc5be0c128051ac0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "monthly_cost_eur": 44.94,
    "monthly_cost_basis": "99.0 € / course jaettuna 2.33 kuukaudelle (2026-10-03–2026-12-12, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Meilahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Meilahti futiskoulu (RYHMÄ 2) talvi 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Lapset voivat tutustua jalkapalloon HJK:n futiskouluissa 3-vuotiaista alkaen. Kaudella 2025-2026 futiskoulut on tarkoitettu vuosina 2021-2023 syntyneille lapsille; alle 3-vuotiaat HJK:n perhefutikseen.",
    "parent_child": "no",
    "venue_name": "Meilahden ylä-aste",
    "address": "Kuusitie 12, Helsinki",
    "district": "Meilahti",
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "11:45",
    "season": "talvikausi 2026",
    "start_date": "2026-10-03",
    "end_date": "2026-12-12",
    "sessions_count": 10,
    "price_eur": 99.0,
    "price_basis": "10 harjoituksen kurssi",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet; vakuutus ja HJK-tuote sisältyvät. Sisaralennus -10 %.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/meilahti/",
    "source_quote": "Meilahti futiskoulu (RYHMÄ 2) talvi 2026 - 3.10. - 12.12.2026 Harjoituksia yhteensä 10 - HUOM! ei harjoituksia 31.10. Harjoitukset lauantaisin klo 11:00-11:45 Harjoitukset pidetään Meilahden ylä-aste, Kuusitie 12 Hinta 99€",
    "activity_id": "hel-2026-0336",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 12.9,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-03",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-10-03",
    "season_end_date": "2026-12-12",
    "birth_year_min": 2021,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/meilahti/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu vuodelle 2026; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Uusi kaupunginosa HJK:n futiskoulu-valikoimassa (deferred-listan kohta 'HJK Lasten futiskoulu talvi 2026', batch_2026-09-21_01). Ikä yleislauseesta futiskoulun etusivulta (ei ryhmäkohtainen), kuten kanonisilla HJK-futiskoulu-riveillä (esim. hel-2026-0319 Lauttasaari, Kannelmäen futiskoulu loppukesä 2026 batch_2026-09-22_16). Minimimäärä osallistujia vaaditaan toiminnan järjestämiseksi (lähde). Saman koulun kaksi rinnakkaista vuoroa (RYHMÄ 1 klo 10:00, RYHMÄ 2 klo 11:00) - eri kellonaika, ei duplikaatti.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-021",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/hjk_meilahti_bbdc4eb015b0.html",
      "capture_sha256": "bbdc4eb015b0ddb43b2412548a13ed739792d11b73fe4ff4cc5be0c128051ac0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "monthly_cost_eur": 44.94,
    "monthly_cost_basis": "99.0 € / course jaettuna 2.33 kuukaudelle (2026-10-03–2026-12-12, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Meilahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Laajasalon futiskoulu loppukesä 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Lapset voivat tutustua jalkapalloon HJK:n futiskouluissa 3-vuotiaista alkaen. Kaudella 2025-2026 futiskoulut on tarkoitettu vuosina 2021-2023 syntyneille lapsille; alle 3-vuotiaat HJK:n perhefutikseen.",
    "parent_child": "no",
    "venue_name": "Laajasalon nappulanurmi",
    "address": "Sarvastonkaari 23, 00840 Helsinki",
    "district": "Laajasalo",
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "loppukesä 2026",
    "start_date": "2026-08-03",
    "end_date": "2026-10-05",
    "sessions_count": 10,
    "price_eur": 99.0,
    "price_basis": "10 harjoituksen kurssi",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet; vakuutus ja HJK-tuote sisältyvät. Sisaralennus -10 %.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/east/",
    "source_quote": "Loppukesä 2026 - 3.8.-5.10.2026 Harjoituksia yhteensä 10 Harjoitukset maanantaisin klo 18:00-18:45 Harjoitukset pidetään Laajasalon nappulanurmi, Sarvastonkaari 23, 00840 Helsinki Hinta 99€",
    "activity_id": "hel-2026-0337",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 12.9,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-03",
    "price_period_end": "2026-10-05",
    "season_start_date": "2026-08-03",
    "season_end_date": "2026-10-05",
    "birth_year_min": 2021,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/east/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu vuodelle 2026; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Uusi kaupunginosa HJK:n futiskoulu-valikoimassa (deferred-listan kohta 'HJK Lasten futiskoulu talvi 2026', batch_2026-09-21_01). Ikä yleislauseesta futiskoulun etusivulta (ei ryhmäkohtainen), kuten kanonisilla HJK-futiskoulu-riveillä (esim. hel-2026-0319 Lauttasaari, Kannelmäen futiskoulu loppukesä 2026 batch_2026-09-22_16). Minimimäärä osallistujia vaaditaan toiminnan järjestämiseksi (lähde). Kurssi alkanut 03.08.2026, ei lähteestä eksplisiittistä saatavuustietoa (availability=unknown), ks. sääntö 7.5 - ei hylkäysperuste. HUOM: sivun oma ikälause poikkeaa etusivun yleislauseesta ('Alle 3-vuotiaat (2023-2025 syntyneet) voivat tutustua... perhefutiksessa' vs. etusivun '2024-2025'); todennäköinen kirjoitusvirhe sivulla, ei vaikuta rajaukseen (3-vuotiaista alkaen kummassakin) - tarkistettavissa, ei estä candidate_clear-päätöstä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-022",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/hjk_east_5bcd494b7fc5.html",
      "capture_sha256": "5bcd494b7fc54268dd93c5d00ac391761d9b80daae4c85193aa95f574593df78",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 49.58,
    "monthly_cost_basis": "99.0 € / course jaettuna 2.10 kuukaudelle (2026-08-03–2026-10-05, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Laajasalo",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Munkkiniemen futiskoulu (RYHMÄ 2) loppukesä 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Lapset voivat tutustua jalkapalloon HJK:n futiskouluissa 3-vuotiaista alkaen. Kaudella 2025-2026 futiskoulut on tarkoitettu vuosina 2021-2023 syntyneille lapsille; alle 3-vuotiaat HJK:n perhefutikseen.",
    "parent_child": "no",
    "venue_name": "Kadetintienkenttä",
    "address": "Kadetintie 2, 00330 Helsinki",
    "district": "Munkkiniemi",
    "weekday": "sunnuntai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "loppukesä 2026",
    "start_date": "2026-08-09",
    "end_date": "2026-10-18",
    "sessions_count": 10,
    "price_eur": 99.0,
    "price_basis": "10 harjoituksen kurssi",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet; vakuutus ja HJK-tuote sisältyvät. Sisaralennus -10 %.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/munkkiniemi/",
    "source_quote": "Loppukesä 2026 - 9.8.-18.10.2026 Harjoituksia yhteensä 10 - HUOM! ei harjoituksia 30.8. Ryhmä 1: Harjoitukset sunnuntaisin klo 16:00-16:45 Ryhmä 2: Harjoitukset sunnuntaisin klo 17:00-17:45 Harjoitukset pidetään Kadetintienkenttä, Kadetintie 2, 00330 Helsinki Hinta 99€",
    "activity_id": "hel-2026-0338",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 12.9,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-09",
    "price_period_end": "2026-10-18",
    "season_start_date": "2026-08-09",
    "season_end_date": "2026-10-18",
    "birth_year_min": 2021,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/munkkiniemi/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu vuodelle 2026; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Uusi kaupunginosa HJK:n futiskoulu-valikoimassa (deferred-listan kohta 'HJK Lasten futiskoulu talvi 2026', batch_2026-09-21_01). Ikä yleislauseesta futiskoulun etusivulta (ei ryhmäkohtainen), kuten kanonisilla HJK-futiskoulu-riveillä (esim. hel-2026-0319 Lauttasaari, Kannelmäen futiskoulu loppukesä 2026 batch_2026-09-22_16). Minimimäärä osallistujia vaaditaan toiminnan järjestämiseksi (lähde). Kurssi alkanut 09.08.2026, ei lähteestä eksplisiittistä saatavuustietoa (availability=unknown), ks. sääntö 7.5 - ei hylkäysperuste. Saman kentän kaksi rinnakkaista vuoroa (RYHMÄ 1 klo 16:00, RYHMÄ 2 klo 17:00) - eri kellonaika, ei duplikaatti.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-023",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/hjk_munkkiniemi_4300109530d5.html",
      "capture_sha256": "4300109530d5d52f6c40344c684ab78c480610fa77b960560f68a871ea4ca820",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "monthly_cost_eur": 44.94,
    "monthly_cost_basis": "99.0 € / course jaettuna 2.33 kuukaudelle (2026-08-09–2026-10-18, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Munkkiniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Pajamäen futiskoulu loppukesä 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Lapset voivat tutustua jalkapalloon HJK:n futiskouluissa 3-vuotiaista alkaen. Kaudella 2025-2026 futiskoulut on tarkoitettu vuosina 2021-2023 syntyneille lapsille; alle 3-vuotiaat HJK:n perhefutikseen.",
    "parent_child": "no",
    "venue_name": "Pajamäen kenttä 2",
    "address": "Takkatie 36, 00360 Helsinki",
    "district": "Pajamäki",
    "weekday": "sunnuntai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "loppukesä 2026",
    "start_date": "2026-08-09",
    "end_date": "2026-10-11",
    "sessions_count": 10,
    "price_eur": 99.0,
    "price_basis": "10 harjoituksen kurssi",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet; vakuutus ja HJK-tuote sisältyvät. Sisaralennus -10 %.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/pajamaki/",
    "source_quote": "Loppukesä 2026 - 9.8.-11.10.2026 Harjoituksia yhteensä 10 Harjoitukset sunnuntaisin klo 17:00-17:45 Harjoitukset pidetään Pajamäen kenttä 2, Takkatie 36, 00360 Helsinki Hinta 99€",
    "activity_id": "hel-2026-0339",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 12.9,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-09",
    "price_period_end": "2026-10-11",
    "season_start_date": "2026-08-09",
    "season_end_date": "2026-10-11",
    "birth_year_min": 2021,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/lasten-futiskoulu/pajamaki/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu vuodelle 2026; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Uusi kaupunginosa HJK:n futiskoulu-valikoimassa (deferred-listan kohta 'HJK Lasten futiskoulu talvi 2026', batch_2026-09-21_01). Ikä yleislauseesta futiskoulun etusivulta (ei ryhmäkohtainen), kuten kanonisilla HJK-futiskoulu-riveillä (esim. hel-2026-0319 Lauttasaari, Kannelmäen futiskoulu loppukesä 2026 batch_2026-09-22_16). Minimimäärä osallistujia vaaditaan toiminnan järjestämiseksi (lähde). Kurssi alkanut 09.08.2026, ei lähteestä eksplisiittistä saatavuustietoa (availability=unknown), ks. sääntö 7.5 - ei hylkäysperuste.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-024",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/hjk_pajamaki_289b5dee8fea.html",
      "capture_sha256": "289b5dee8feaa0211b3be59384e7fc48ca711c578a03d4adaa38f241891b7936",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 49.58,
    "monthly_cost_basis": "99.0 € / course jaettuna 2.10 kuukaudelle (2026-08-09–2026-10-11, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pajamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Helsingin Palloseura (HPS)",
    "group_name": "HPS Futiskerho/Perhefutis: kesäkausi 2026 LAUANTAI",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Kerhoon voivat osallistua vuosina 2022 syntyneet pojat ja tytot. Myos vuonna 2021 syntyneet lapset voi ilmoittaa mukaan, mikali lapsi ei viela ole valmis joukkuetoimintaan (T20-21, P20-21).",
    "parent_child": "no",
    "venue_name": "Briotech Arena / Nappulakenttä",
    "address": "Pakilantie 86a, 00670 Helsinki, Suomi",
    "district": "Paloheina",
    "weekday": "lauantai",
    "start_time": "10:15",
    "end_time": "11:00",
    "season": "kevät 2026",
    "start_date": "2026-05-09",
    "end_date": "2026-10-03",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Kuukausimaksu (min. sitoutuminen 3 kk), 1 kerta viikossa (kiintea paiva)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma pallo, juomapullo, ulkoliikuntavarusteet, tekonurmelle sopivat jalkineet (nappulakenka/lenkkari). Ensimmaiset 2 kertaa maksutta kokeiltavissa; jos jatkaa, rekisteroidaan Helsingin Palloseuraan.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://hps.myclub.fi/flow/courses/10918486",
    "source_quote": "HPS Futiskerho/Perhefutis: kesäkausi 2026 LAUANTAI | 9.5.2026 10:15 - 3.10.2026",
    "activity_id": "hel-2026-0340",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-05-09",
    "season_end_date": "2026-10-03",
    "birth_year_min": 2021,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": "1 kerta viikossa (kiintea paiva)",
        "note": "Min. sitoutuminen 3 kk. Heinakuussa ei laskuteta, loma-ajat/pyhapaivat huomioitu hinnassa."
      }
    ],
    "price_options": [
      {
        "label": "2 kertaa viikossa (kiinteat paivat, LA+MA)",
        "amount_eur": 60,
        "applies_if": "ilmoittautuu seka lauantain etta maanantain ryhmaan erikseen",
        "includes": "molemmat viikoittaiset kerrat"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Sisaralennus toiselle perheen lapselle 5 e/kk (mainittu ilmoittautumisen lisatiedoissa).",
    "unverified_fields": [],
    "verification_notes": "Kausi kaynnissa tarkistushetkella (9.5.-3.10.2026, tarkistettu 22.9.2026); ilmoittautuminen paattyy vasta 10.10.2026 09:00, sivulla aktiivinen 'Ilmoittaudu'-painike eika eksplisiittista 'taynna'/suljettu-mainintaa -> availability_status=unknown. Seuran julkinen kurssilistaus (hps.myclub.fi/flow/courses/public) nayttaa vakiotekstin 'Seuralla ei ole avoimia ilmoittautumisia', mutta sama teksti esiintyy myos muiden seurojen listauksilla joilla on todistetusti avoimia kursseja (esim. HIFK Ishockey) - tulkittu JS-listauksen yleiseksi oletustekstiksi, ei ryhmakohtaiseksi tilaksi, joten sita ei kaytetty availability-paatoksena. Syksylle 2026-2027 ei loytynyt uutta kautta hps.myclub.fi/flow/courses/public-listauksesta (22.9.2026 tarkistettu) - vain nama kesakauden 2026 kurssit (9.5.-3.10./5.10.2026) nakyvissa. Hinta (35/60 e/kk) ja ika (2022 synt. + 2021 synt. jos ei viela valmis joukkuetoimintaan) myClub-sivun kuvaustekstista (ei erillista Hintatiedot-listaa, ei 'Vaadittavat tuotteet' -kohtaa myoskaan).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-054",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_hps_10918486_97c17c5e1b91.html",
      "capture_sha256": "97c17c5e1b91317c7a4c1123d637b4355927b47d22706884cd8c8853d2c49007",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 35.0,
    "monthly_cost_basis": "35.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Paloheina",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Kirppanat",
    "group_name": "Perheliikkari ~2-3 v. (Töölö, Olympiastadion, ti 17.15–17.55)",
    "min_age": 2,
    "max_age": 3,
    "eligibility_text": "~2-3 v.",
    "parent_child": "yes",
    "venue_name": "Olympiastadion",
    "address": null,
    "district": "Töölö",
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-01",
    "sessions_count": 12,
    "price_eur": 170.0,
    "price_basis": "Kausimaksu 170€ (1 lapsi) / 255€ (2 lasta), Syyskausi 1.9.-1.12.2026 (12x, ei tuntia 29.9. ja 13.10.)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://kirppanat.fi/aikataulut/viikkotunnit",
    "source_quote": "17.15 - 17.55 Töölö, Olympiastadion Perheliikkari ~2-3 v. (12 krt) Satu-Maria 1.9.2026 - 1.12.2026 Syyskausi: 1.9. - 1.12.2026 (12 x) Ei tuntia 29.9. & 13.10. Kausimaksu: 170 € (1 lapsi) / 255 € (2 lasta)",
    "activity_id": "hel-2026-0341",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": 14.17,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://kirppanat.fi/aikataulut/viikkotunnit",
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-01",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-01",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Sivun oma teksti: \"Syyskausi: 1.9. - 1.12.2026 (12 x) Ei tuntia 29.9. & 13.10.\"",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Syyskauden 12 kertaa (1.9.-1.2.2026, ei tuntia 29.9. ja 13.10.)."
      }
    ],
    "price_options": [
      {
        "label": "2 lasta samasta perheestä",
        "amount_eur": 255,
        "applies_if": "kaksi lasta samasta perheestä osallistuu",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-061",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/kirppanat_viikkotunnit_627610a9530b.html",
      "capture_sha256": "627610a9530b128e2332ad474cf0505b483f2c6762162fe13817366985124ab1",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "monthly_cost_eur": 56.24,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.02 kuukaudelle (2026-09-01–2026-12-01, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Kirppanat",
    "group_name": "Perheliikkari ~3-5 v. (Töölö, Olympiastadion, ti 18.00–18.40)",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "~3-5 v.",
    "parent_child": "yes",
    "venue_name": "Olympiastadion",
    "address": null,
    "district": "Töölö",
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:40",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-01",
    "sessions_count": 12,
    "price_eur": 170.0,
    "price_basis": "Kausimaksu 170€ (1 lapsi) / 255€ (2 lasta), Syyskausi 1.9.-1.12.2026 (12x, ei tuntia 29.9. ja 13.10.)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://kirppanat.fi/aikataulut/viikkotunnit",
    "source_quote": "18.00 - 18.40 Töölö, Olympiastadion Perheliikkari ~3-5 v. (12 krt) Satu-Maria 1.9.2026 - 1.12.2026 Syyskausi: 1.9. - 1.12.2026 (12 x) Ei tuntia 29.9. & 13.10. Kausimaksu: 170 € (1 lapsi) / 255 € (2 lasta)",
    "activity_id": "hel-2026-0342",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": 14.17,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://kirppanat.fi/aikataulut/viikkotunnit",
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-01",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-01",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Sivun oma teksti: \"Syyskausi: 1.9. - 1.12.2026 (12 x) Ei tuntia 29.9. & 13.10.\"",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Syyskauden 12 kertaa (1.9.-1.2.2026, ei tuntia 29.9. ja 13.10.)."
      }
    ],
    "price_options": [
      {
        "label": "2 lasta samasta perheestä",
        "amount_eur": 255,
        "applies_if": "kaksi lasta samasta perheestä osallistuu",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-062",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/kirppanat_viikkotunnit_627610a9530b.html",
      "capture_sha256": "627610a9530b128e2332ad474cf0505b483f2c6762162fe13817366985124ab1",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "monthly_cost_eur": 56.24,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.02 kuukaudelle (2026-09-01–2026-12-01, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Kirppanat",
    "group_name": "Perhesirkus *VAAPERO + AIKUINEN (4 krt) (Pihlajamäki, ala-aste, ke 17.00–17.40)",
    "min_age": 0,
    "max_age": 2,
    "eligibility_text": "n. 8 kk - 1,5 v.",
    "parent_child": "yes",
    "venue_name": "Pihlajamäen ala-aste",
    "address": null,
    "district": "Pihlajamäki",
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-09-16",
    "end_date": "2026-10-07",
    "sessions_count": 4,
    "price_eur": 57.0,
    "price_basis": "A-jakso 16.9.-7.10.2026, 4 kertaa, 57€",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://kirppanat.fi/aikataulut/viikkotunnit",
    "source_quote": "17.00 - 17.40 Pihlajamäki, ala-aste Perhesirkus *VAAPERO + AIKUINEN (4 krt) Jonna 16.9.2026 - 7.10.2026 A-jakso: 16.9. - 7.102026 (4 x) 57 € Ryhmään voi osallistua 1 tai 2 aikuista. Ryhmän ikäsuositus on n. 8 kk - 1,5 v.",
    "activity_id": "hel-2026-0343",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 57.0,
    "price_per_session_eur": 14.25,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://kirppanat.fi/aikataulut/viikkotunnit",
    "billing_period": "course",
    "price_period_start": "2026-09-16",
    "price_period_end": "2026-10-07",
    "season_start_date": "2026-09-16",
    "season_end_date": "2026-10-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Sivun teksti: \"A-jakso: 16.9. - 7.10.2026 (4 x)\"",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 57,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "A-jakso, 4 kertaa."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 2,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sirkus (perhesirkus) -tuntimuoto; kanonisessa skeemassa ei erillistä \"sirkus\"-lajitunnistetta (sport-enum: jalkapallo/voimistelu/temppujumppa/tanssi/uinti/taekwondo/judo/karate/jääkiekko/luistelu/koripallo/tennis), joten luokiteltu temppujumppa-lajiksi samalla periaatteella kuin sivun \"Perheliikkari\"-ryhmät (vrt. Pakilan Voimistelijat PNV ry:n \"Perheliikkari\"-rivit kanonisessa aineistossa, sport=temppujumppa). Lähdeteksti: \"Ryhmään voi osallistua 1 tai 2 aikuista\" - price_covers.adults_count=2 kuvaa maksimin, hinta ei muutu aikuisten määrän mukaan.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-063",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/kirppanat_viikkotunnit_627610a9530b.html",
      "capture_sha256": "627610a9530b128e2332ad474cf0505b483f2c6762162fe13817366985124ab1",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "monthly_cost_eur": 78.86,
    "monthly_cost_basis": "57.0 € / course jaettuna 0.72 kuukaudelle (2026-09-16–2026-10-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pihlajamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Kirppanat",
    "group_name": "Perhesirkus *MUKSU + AIKUINEN (4 krt) (Pihlajamäki, ala-aste, ke 17.45–18.25)",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "n. 1,5 v - 3 v.",
    "parent_child": "yes",
    "venue_name": "Pihlajamäen ala-aste",
    "address": null,
    "district": "Pihlajamäki",
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:25",
    "season": "syksy 2026",
    "start_date": "2026-09-16",
    "end_date": "2026-10-07",
    "sessions_count": 4,
    "price_eur": 57.0,
    "price_basis": "A-jakso 16.9.-7.10.2026, 4 kertaa, 57€",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://kirppanat.fi/aikataulut/viikkotunnit",
    "source_quote": "17.45 - 18.25 Pihlajamäki, ala-aste Perhesirkus *MUKSU + AIKUINEN (4 krt) Jonna 16.9.2026 - 7.10.2026 A-jakso: 16.9. - 7.102026 (4 x) 57 € Ryhmään voi osallistua 1 tai 2 aikuista. Ryhmän ikäsuositus on n. 1,5 v - 3 v.",
    "activity_id": "hel-2026-0344",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 57.0,
    "price_per_session_eur": 14.25,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://kirppanat.fi/aikataulut/viikkotunnit",
    "billing_period": "course",
    "price_period_start": "2026-09-16",
    "price_period_end": "2026-10-07",
    "season_start_date": "2026-09-16",
    "season_end_date": "2026-10-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Sivun teksti: \"A-jakso: 16.9. - 7.10.2026 (4 x)\"",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 57,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "A-jakso, 4 kertaa."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 2,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sirkus (perhesirkus) -tuntimuoto; kanonisessa skeemassa ei erillistä \"sirkus\"-lajitunnistetta (sport-enum: jalkapallo/voimistelu/temppujumppa/tanssi/uinti/taekwondo/judo/karate/jääkiekko/luistelu/koripallo/tennis), joten luokiteltu temppujumppa-lajiksi samalla periaatteella kuin sivun \"Perheliikkari\"-ryhmät (vrt. Pakilan Voimistelijat PNV ry:n \"Perheliikkari\"-rivit kanonisessa aineistossa, sport=temppujumppa). Lähdeteksti: \"Ryhmään voi osallistua 1 tai 2 aikuista\" - price_covers.adults_count=2 kuvaa maksimin, hinta ei muutu aikuisten määrän mukaan.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-064",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/kirppanat_viikkotunnit_627610a9530b.html",
      "capture_sha256": "627610a9530b128e2332ad474cf0505b483f2c6762162fe13817366985124ab1",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "monthly_cost_eur": 78.86,
    "monthly_cost_basis": "57.0 € / course jaettuna 0.72 kuukaudelle (2026-09-16–2026-10-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pihlajamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "FC Kontu ry",
    "group_name": "Futiskoulu, syyskausi 2026",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5-vuotiaille tytöille ja pojille (2023, 2022 ja 2021 syntyneitä)",
    "parent_child": "no",
    "venue_name": "Kontulan tekonurmi (Kontulan liikuntapuisto)",
    "address": null,
    "district": "Kontula",
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syyskausi 2026",
    "start_date": "2026-08-01",
    "end_date": "2026-10-10",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Syyskauden futiskoulu, lauantaisin 1.8.-10.10.2026 (ei treenejä 12.9.)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopiva vaatetus ja kengät, juomapullo ja pallo (koko 3).",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.fckontu.fi/seura/3292/futiskoulu",
    "source_quote": "Syyskauden jakso alkaa la 1.8. Kontulan tekonurmella klo 10.-10.45 / Paikka: Kontulan tekonurmi (Kontulan liikuntapuisto) / Aika: lauantaisin klo 10.00-10.45 ajalla 1.8. - 10.10. (ei treenejä 12.9.) / Kenelle: 3-5 vuotiaille tytöille ja pojille (2023, 2022 ja 2021 syntyneitä) / Hinta: 50 € / VARUSTUS: Liikuntaan sopiva vaatetus ja kengät, juomapullo ja pallo (koko 3) / Huomioithan, että Futiskoulu tulee maksaa ilmoittautumisen yhteydessä tai muuten ilmoittautumista ei huomioida!",
    "activity_id": "hel-2026-0345",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-01",
    "price_period_end": "2026-10-10",
    "season_start_date": "2026-08-01",
    "season_end_date": "2026-10-10",
    "birth_year_min": 2021,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://www.fckontu.fi/seura/3292/futiskoulu",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Uusi järjestäjä (FC Kontu ry), ei aiemmin kanonisessa aineistossa eikä aiemmissa erissä. Itä-Helsinki (Kontula, Mellunkylä) - erän painotusalue. Kertamäärä (10) laskettu lauantaiden lukumäärästä välillä 1.8.-10.10.2026 miinus eksplisiittisesti poissuljettu 12.9. (sessions_count_status=inferred, ei price_per_session_eur:ia). Sivulla myös maksuton 'Koulu/Esikoulufutis' (1.-2.-luokkalaisille ja esikoululaisille) ilman aikataulutietoa - ks. deferred. Domain tarkistettu ja hyväksytty 22.9.2026 (koordinaattoritarkistus, Ilpon päätös).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_18.json",
      "staging_id": "batch_2026-09-22_18-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_18/fckontu_futiskoulu_0e2a0f5ef175.html",
      "capture_sha256": "0e2a0f5ef175fe8a60b46cef797623db8151b291093a55f402a118f0b166f712",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-22",
    "monthly_cost_eur": 21.43,
    "monthly_cost_basis": "50.0 € / course jaettuna 2.33 kuukaudelle (2026-08-01–2026-10-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kontula",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jääkiekko",
    "provider": "Helsingin Jääkiekkoklubi HJK",
    "group_name": "Paloheinän Kiekkokoulu, syyskausi 2026",
    "min_age": 4,
    "max_age": 9,
    "eligibility_text": "4-9 v tytöille ja pojille",
    "parent_child": "no",
    "venue_name": "Paloheinän jäähalli",
    "address": null,
    "district": "Paloheinä",
    "weekday": "sunnuntai",
    "start_time": "11:45",
    "end_time": "12:45",
    "season": "syyskausi 2026",
    "start_date": "2026-09-20",
    "end_date": "2026-12-13",
    "sessions_count": 12,
    "price_eur": 110.0,
    "price_basis": "Syyskausi, 12 ohjattua jääharjoitusta, sis. pelipaidan ja lisenssin",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Pakolliset varusteet: luistimet, maila, kasvosuojuksella varustettu kypärä sekä kaulasuoja (eivät sisälly hintaan).",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-hockey.fi/joukkue2706",
    "source_quote": "Kiekkokoulu on tarkoitettu 4-9 v tytöille ja pojille. Mukaan mahtuu milloin vain kauden aikana ottamaan ensimmäisiä askelia lajin pariin ja sitä kautta liittymään seuran omiin harjoitusryhmiin. / Kiekkokoulu on Paloheinän jäähallissa aina sunnuntaisin klo 11:45-12:45. / Syyskausi 20.9.-13.12.2026 / Syyskausi 110 € ja kevätkausi 110 €; molemmat kaudet yhteensä 200 € (sis. ohjatut jääharjoitukset 12krt syksyllä 13 krt keväällä, pelipaidan ja lisenssin). / Pakolliset varusteet ovat luistimet, maila, kasvosuojuksella varustettu kypärä sekä kaulasuoja.",
    "activity_id": "hel-2026-0346",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 110.0,
    "price_per_session_eur": 9.17,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-20",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-20",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-hockey.fi/joukkue2706",
    "availability_status": "open",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 110,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää 12 ohjattua jääharjoitusta, pelipaidan ja Jääkiekkoliiton lisenssin syyskaudelle 2026."
      }
    ],
    "price_options": [
      {
        "label": "Syys- ja kevätkausi yhdessä",
        "amount_eur": 200.0,
        "applies_if": "Jos ilmoittaudutaan sekä syys- (110€) että kevätkauteen (110€) yhdessä",
        "includes": "12 jääharjoitusta syksyllä ja 13 keväällä, pelipaita ja lisenssi molemmille kausille"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Uusi järjestäjä (Helsingin Jääkiekkoklubi HJK, jääkiekko) - ei sekoiteta HJK Juniorit -jalkapalloseuraan (eri organisaatio, sama lyhenne, jo katettu jalkapallossa). Ei aiemmin kanonisessa aineistossa eikä aiemmissa erissä. Kevätkauden (10.1.-4.4.2027) hinta ja ajat samat kuin syksyllä, ei erillistä riviä tälle kaudelle. Domain tarkistettu ja hyväksytty 22.9.2026 (koordinaattoritarkistus, Ilpon päätös).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_18.json",
      "staging_id": "batch_2026-09-22_18-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_18/hjkhockey_kiekkokoulu_3bb30402a229.html",
      "capture_sha256": "3bb30402a2292f2da656cfc351770d6c756774bdedbda30533411488ee275e5e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "monthly_cost_eur": 39.39,
    "monthly_cost_basis": "110.0 € / course jaettuna 2.79 kuukaudelle (2026-09-20–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Paloheinä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Team HSDS ry",
    "group_name": "Lasten tanssitunnit 2-6v, syyskausi 2026",
    "min_age": 2,
    "max_age": 6,
    "eligibility_text": "2-6v",
    "parent_child": "unknown",
    "venue_name": "Haapalainen SuutariJääskö Dance Studios (Kaapelitehdas)",
    "address": "Tallberginkatu 1 C, 00180 Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "12:00",
    "end_time": "12:40",
    "season": "Syyskausi 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": 15,
    "price_eur": 170.0,
    "price_basis": "Kauden hinta (15 kertaa)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Mukavat vaatteet ja iloinen mieli riittävät.",
    "trial_info": "16.8.2026 ilmainen kokeilukerta ennen kauden alkua.",
    "enrollment_status": "unknown",
    "source_url": "https://www.teamhsds.com/lasten-tanssitunnit-syksy-2026/",
    "source_quote": "Ryhmiä on kaksi, ja ne on tarkoitettu 2-6v ja 7-12v lapsille. ... Syyskausi 23.8.-13.12. yhteensä 15 kertaa ... 2-6v sunnuntaisin 12.00-12.40 (40min) Kauden hinta 170€ ... Seuran jäsenyys on vapaaehtoinen.",
    "activity_id": "hel-2026-0347",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": 11.33,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-23",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.teamhsds.com/lasten-tanssitunnit-syksy-2026/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": null,
        "mandatory": false,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Seuran jäsenyys on vapaaehtoinen"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Seuran jäsenyys vapaaehtoinen (hinnasto: teamhsds.com/jasenyyys-hinnasto).",
    "unverified_fields": [],
    "verification_notes": "Kurssi alkanut 23.8.2026; saatavuutta ei kerrottu eksplisiittisesti. Domain tarkistettu ja hyväksytty 22.9.2026 (koordinaattoritarkistus, Ilpon päätös).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-001",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "monthly_cost_eur": 45.79,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.71 kuukaudelle (2026-08-23–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Länsisatama",
    "district_basis": "geokoodattu osoite -> neighborhood 'Länsisatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Balettikoulu Anne Hirvonen",
    "group_name": "Esibaletti 5-6v., syyskausi 2026",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "Esibaletti / 5-6v.",
    "parent_child": "unknown",
    "venue_name": "Vuosaaren Urheilutalo",
    "address": "Vuosaarentie 5, Helsinki",
    "district": "Vuosaari",
    "weekday": "torstai",
    "start_time": "18:15",
    "end_time": "19:00",
    "season": "Syyskausi 2026",
    "start_date": "2026-08-20",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 200.0,
    "price_basis": "Lukukausimaksu, 1 x 45 min/vko (sis. 18 viikkoa)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.balettikouluannehirvonen.com/aikataulu-ja-hinnasto/",
    "source_quote": "TORSTAI (aloitus 20.8.) Vuosaaren Urheilutalo ... klo 18.15 – 19.00 Esibaletti / 5-6v. ... Syyskausi 2026 (sis. 18 viikkoa) Lasten ja nuorten tunnit 1 x 45 min. / vko 200 €",
    "activity_id": "hel-2026-0348",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.balettikouluannehirvonen.com/aikataulu-ja-hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-18",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 200,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Lukukausimaksu, sisältää 18 viikkoa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Sisaralennus 10 % (ei tarkkaa euromäärää lähteessä).",
    "unverified_fields": [],
    "verification_notes": "Kurssi alkanut 20.8.2026; saatavuutta ei kerrottu eksplisiittisesti. Ikä (5-6v.) vahvistettu sekä aikataulusivulta että lajiesittelystä. Domain tarkistettu ja hyväksytty 22.9.2026 (koordinaattoritarkistus, Ilpon päätös).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-002",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "monthly_cost_eur": 49.49,
    "monthly_cost_basis": "200.0 € / term jaettuna 4.04 kuukaudelle (2026-08-18–2026-12-18, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 3-4v. ANKKURI, syyskausi 2026",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "Lastentanssi 3-4v.",
    "parent_child": "no",
    "venue_name": "Asukastalo Ankkuri",
    "address": "Paasivaarankatu 6, 00810 Helsinki",
    "district": "Herttoniemi",
    "weekday": "tiistai",
    "start_time": "16:30",
    "end_time": "17:00",
    "season": "Syyskausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 184.0,
    "price_basis": "Kausimaksu, 1 x 30 min/vko (Herttoniemi/Tehtaankatu-hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10€ (vain avoimilla tunneilla, joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/opetusryhmat/lapset/",
    "source_quote": "Lastentanssi 3-4v. ANKKURI | Toimipiste | tiistai 16:30 | 30.00 min",
    "activity_id": "hel-2026-0349",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 184.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 184,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus 15 % ensimmäisestä kausihinnasta, kun perheestä tanssii useampi (ei tätä riviä koskeva automaattisesti).",
    "unverified_fields": [],
    "verification_notes": "Kurssi alkanut 17.8.2026 (syyskauden alku); saatavuutta ei kerrottu eksplisiittisesti (paitsi jos lukujärjestyksessä eksplisiittinen 'TÄYNNÄ'-merkintä, jota tällä rivillä ei ollut). Domain tarkistettu ja hyväksytty 22.9.2026 (koordinaattoritarkistus, Ilpon päätös).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-009",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-22",
    "monthly_cost_eur": 47.06,
    "monthly_cost_basis": "184.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 1,5-3v. + aikuinen ANKKURI, syyskausi 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "Lastentanssi 1,5-3v. + aikuinen",
    "parent_child": "yes",
    "venue_name": "Asukastalo Ankkuri",
    "address": "Paasivaarankatu 6, 00810 Helsinki",
    "district": "Herttoniemi",
    "weekday": "tiistai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "Syyskausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 249.0,
    "price_basis": "Kausimaksu, 1 x 45 min/vko (Herttoniemi/Tehtaankatu-hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10€ (vain avoimilla tunneilla, joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/opetusryhmat/lapset/",
    "source_quote": "Lastentanssi 1,5-3v. + aikuinen ANKKURI | Toimipiste | tiistai 17:45 | 45.00 min",
    "activity_id": "hel-2026-0350",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 249.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 249,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": "Perhealennus 15 % ensimmäisestä kausihinnasta, kun perheestä tanssii useampi (ei tätä riviä koskeva automaattisesti).",
    "unverified_fields": [],
    "verification_notes": "Kurssi alkanut 17.8.2026 (syyskauden alku); saatavuutta ei kerrottu eksplisiittisesti (paitsi jos lukujärjestyksessä eksplisiittinen 'TÄYNNÄ'-merkintä, jota tällä rivillä ei ollut). Domain tarkistettu ja hyväksytty 22.9.2026 (koordinaattoritarkistus, Ilpon päätös).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-010",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-22",
    "monthly_cost_eur": 63.69,
    "monthly_cost_basis": "249.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lasten break 4-5v. POROLAHTI, syyskausi 2026",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "Lasten break 4-5v.",
    "parent_child": "no",
    "venue_name": "Porolahden ala-asteen liikuntatilat",
    "address": "Roihuvuorentie 2, 00820 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "16:15",
    "end_time": "17:00",
    "season": "Syyskausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 249.0,
    "price_basis": "Kausimaksu, 1 x 45 min/vko (Herttoniemi/Tehtaankatu-hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10€ (vain avoimilla tunneilla, joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/opetusryhmat/lapset/",
    "source_quote": "Lasten break 4-5v. POROLAHTI | Toimipiste | torstai 16:15 | 45.00 min",
    "activity_id": "hel-2026-0351",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 249.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 249,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus 15 % ensimmäisestä kausihinnasta, kun perheestä tanssii useampi (ei tätä riviä koskeva automaattisesti).",
    "unverified_fields": [],
    "verification_notes": "Kurssi alkanut 17.8.2026 (syyskauden alku); saatavuutta ei kerrottu eksplisiittisesti (paitsi jos lukujärjestyksessä eksplisiittinen 'TÄYNNÄ'-merkintä, jota tällä rivillä ei ollut). Domain tarkistettu ja hyväksytty 22.9.2026 (koordinaattoritarkistus, Ilpon päätös).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-011",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-22",
    "monthly_cost_eur": 63.69,
    "monthly_cost_basis": "249.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Roihuvuori",
    "district_basis": "geokoodattu osoite -> sub_district 'Roihuvuori' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "HIFK Gymnastics",
    "group_name": "Pikkukarhut (sekaryhmät 1–3 v.), Liikuntamylly, syksy 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "Pikkukarhut on lapsen ja oman aikuisen yhteinen voimisteluryhmä! Pikkukarhut on 1–3-vuotiaiden lasten voimistelutunti, jossa harjoitellaan yhdessä aikuisen kanssa.",
    "parent_child": "yes",
    "venue_name": "Liikuntamylly",
    "address": "Jauhokuja 3, 00920 Helsinki",
    "district": "Myllypuro",
    "weekday": "maanantai",
    "start_time": "15:15",
    "end_time": "16:00",
    "season": "Syyskausi 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 205.0,
    "price_basis": "1 x 45 min / viikko (Pikkukarhut), kausimaksu syksy 2026",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://hifkgymnastics.myclub.fi/flow/courses/10738961",
    "source_quote": "Pikkukarhut on 1–3-vuotiaiden lasten voimistelutunti, jossa harjoitellaan yhdessä aikuisen kanssa. [...] 1 x 45 min / viikko (Pikkukarhut) 205,00 €",
    "activity_id": "hel-2026-0352",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 225.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2027-05-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 205,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "1 x 45 min / viikko (Pikkukarhut), syksy 2026. Kevään 2027 kausimaksu (jatkava ilmoittautuminen) laskutetaan erikseen joulukuussa 2026."
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "term",
        "applies_if": null,
        "note": "Jäsenmaksu, syksy 2026"
      },
      {
        "type": "membership_new_member_discount",
        "amount_eur": 15,
        "mandatory": false,
        "included": false,
        "recurrence": "term",
        "applies_if": "uusi jäsen (vaihtoehto 20 €:n jäsenmaksulle)",
        "note": "Jäsenmaksu uudet jäsenet, syksy 2026 (myClubin 'Valinnaiset maksut' -kohdassa)"
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": "Ilmoittautuminen kattaa automaattisesti myös kevätkauden 2027, jonka kausimaksu laskutetaan erikseen joulukuussa 2026 (hintaa ei tässä rivissä).",
    "unverified_fields": [],
    "verification_notes": "Lapsi osallistuu yhdessä oman aikuisen kanssa; hinnaston ei ole eksplisiittisesti vahvistettu kattavan erikseen aikuisen osallistumisen (price_covers.verified=false, Ilpon päätös 22.9.2026 -sääntö).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-012",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 69.18,
    "monthly_cost_basis": "225.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "HIFK Gymnastics",
    "group_name": "Pikku-Kameleontit (sekaryhmät 3–4 v.), Töölön Kisahalli, syksy 2026",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "Pikku-Kameleontit 3–4-vuotiaille. Kameleonteissa lapset pääsevät nauttimaan telinevoimistelusta turvallisesti omien taitojensa mukaan.",
    "parent_child": "no",
    "venue_name": "Töölön Kisahalli",
    "address": "Paavo Nurmen kuja 1, 00250 Helsinki",
    "district": "Töölö",
    "weekday": "lauantai",
    "start_time": "13:30",
    "end_time": "14:30",
    "season": "Syyskausi 2026",
    "start_date": "2026-09-05",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 239.0,
    "price_basis": "1 x 60 min/ viikko (Lasten & nuorten harrasteryhmät), kausimaksu syksy 2026",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://hifkgymnastics.myclub.fi/flow/courses/10736427",
    "source_quote": "PIKKU-KAMELEONTIT 3–4-VUOTIAILLE! [...] 1 x 60 min/ viikko (Lasten & nuorten harrasteryhmät) 239,00 €",
    "activity_id": "hel-2026-0353",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 259.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-05",
    "season_end_date": "2027-05-15",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 239,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "1 x 60 min/ viikko (Lasten & nuorten harrasteryhmät), syksy 2026"
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "term",
        "applies_if": null,
        "note": "Jäsenmaksu, syksy 2026"
      },
      {
        "type": "membership_new_member_discount",
        "amount_eur": 15,
        "mandatory": false,
        "included": false,
        "recurrence": "term",
        "applies_if": "uusi jäsen (vaihtoehto 20 €:n jäsenmaksulle)",
        "note": "Jäsenmaksu uudet jäsenet, syksy 2026 (myClubin 'Valinnaiset maksut' -kohdassa)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautuminen kattaa automaattisesti myös kevätkauden 2027, jonka kausimaksu laskutetaan erikseen joulukuussa 2026 (hintaa ei tässä rivissä).",
    "unverified_fields": [],
    "verification_notes": "Kameleontit-ryhmiin toivotaan osallistuttavan ilman huoltajan läsnäoloa salissa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-013",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 79.63,
    "monthly_cost_basis": "259.0 € / term jaettuna 3.25 kuukaudelle (2026-09-05–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "HIFK Gymnastics",
    "group_name": "Keski-Kameleontit (sekaryhmät 4–5 v.), Töölön Kisahalli, syksy 2026",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "Keski-Kameleontit 4–5-vuotiaille. Kameleonteissa lapset pääsevät nauttimaan telinevoimistelusta turvallisesti omien taitojensa mukaan.",
    "parent_child": "no",
    "venue_name": "Töölön Kisahalli",
    "address": "Paavo Nurmen kuja 1, 00250 Helsinki",
    "district": "Töölö",
    "weekday": "lauantai",
    "start_time": "14:30",
    "end_time": "15:30",
    "season": "Syyskausi 2026",
    "start_date": "2026-09-05",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 239.0,
    "price_basis": "1 x 60 min/ viikko (Lasten & nuorten harrasteryhmät), kausimaksu syksy 2026",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://hifkgymnastics.myclub.fi/flow/courses/10736429",
    "source_quote": "KESKI-KAMELEONTIT 4–5-VUOTIAILLE! [...] 1 x 60 min/ viikko (Lasten & nuorten harrasteryhmät) 239,00 €",
    "activity_id": "hel-2026-0354",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 259.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-05",
    "season_end_date": "2027-05-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 239,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "1 x 60 min/ viikko (Lasten & nuorten harrasteryhmät), syksy 2026"
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "term",
        "applies_if": null,
        "note": "Jäsenmaksu, syksy 2026"
      },
      {
        "type": "membership_new_member_discount",
        "amount_eur": 15,
        "mandatory": false,
        "included": false,
        "recurrence": "term",
        "applies_if": "uusi jäsen (vaihtoehto 20 €:n jäsenmaksulle)",
        "note": "Jäsenmaksu uudet jäsenet, syksy 2026 (myClubin 'Valinnaiset maksut' -kohdassa)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautuminen kattaa automaattisesti myös kevätkauden 2027, jonka kausimaksu laskutetaan erikseen joulukuussa 2026 (hintaa ei tässä rivissä).",
    "unverified_fields": [],
    "verification_notes": "Kameleontit-ryhmiin toivotaan osallistuttavan ilman huoltajan läsnäoloa salissa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-014",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 79.63,
    "monthly_cost_basis": "259.0 € / term jaettuna 3.25 kuukaudelle (2026-09-05–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "HIFK Gymnastics",
    "group_name": "Isot Kameleontit (sekaryhmät 5–6 v.), Töölön Kisahalli, syksy 2026",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "Isot Kameleontit 5–6-vuotiaille. Kameleonteissa lapset pääsevät nauttimaan telinevoimistelusta turvallisesti omien taitojensa mukaan.",
    "parent_child": "no",
    "venue_name": "Töölön Kisahalli",
    "address": "Paavo Nurmen kuja 1, 00250 Helsinki",
    "district": "Töölö",
    "weekday": "tiistai",
    "start_time": "16:00",
    "end_time": "17:00",
    "season": "Syyskausi 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 239.0,
    "price_basis": "1 x 60 min/ viikko (Lasten & nuorten harrasteryhmät), kausimaksu syksy 2026",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://hifkgymnastics.myclub.fi/flow/courses/10736425",
    "source_quote": "Isot Kameleontit (sekaryhmät 5–6 v.) [...] 1 x 60 min/ viikko (Lasten & nuorten harrasteryhmät) 239,00 €",
    "activity_id": "hel-2026-0355",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 259.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2027-05-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 239,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "1 x 60 min/ viikko (Lasten & nuorten harrasteryhmät), syksy 2026"
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "term",
        "applies_if": null,
        "note": "Jäsenmaksu, syksy 2026"
      },
      {
        "type": "membership_new_member_discount",
        "amount_eur": 15,
        "mandatory": false,
        "included": false,
        "recurrence": "term",
        "applies_if": "uusi jäsen (vaihtoehto 20 €:n jäsenmaksulle)",
        "note": "Jäsenmaksu uudet jäsenet, syksy 2026 (myClubin 'Valinnaiset maksut' -kohdassa)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautuminen kattaa automaattisesti myös kevätkauden 2027, jonka kausimaksu laskutetaan erikseen joulukuussa 2026 (hintaa ei tässä rivissä).",
    "unverified_fields": [],
    "verification_notes": "Kameleontit-ryhmiin toivotaan osallistuttavan ilman huoltajan läsnäoloa salissa; huoltajien toivotaan poistuvan salista harjoitusten ajaksi.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-015",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 79.63,
    "monthly_cost_basis": "259.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Käpylän Voimistelijat ry",
    "group_name": "Perheliikunta 2-4-vuotiaat, Käpylän peruskoulu, syksy 2026",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "Perheliikunta 2-4-vuotiaat. Kurssimaksuun kuuluu yksi aikuinen ja yksi lapsi.",
    "parent_child": "yes",
    "venue_name": "Käpylän peruskoulu, Untamontie",
    "address": "Untamontie 2, Helsinki",
    "district": "Käpylä",
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "Syyskausi 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 146.0,
    "price_basis": "Perheliikunta 1 lapsi + 1 aikuinen, kausimaksu syksy 2026",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://kapylanvoimistelijat.myclub.fi/flow/courses/11174055",
    "source_quote": "Kurssimaksuun kuuluu yksi aikuinen ja yksi lapsi [...] Perheliikunta 1 lapsi + 1 aikuinen 146,00 €",
    "activity_id": "hel-2026-0356",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 156.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 146,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Perheliikunta 1 lapsi + 1 aikuinen, syksy 2026"
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "term",
        "applies_if": null,
        "note": "Jäsenmaksu"
      }
    ],
    "price_options": [
      {
        "label": "Perheliikunta, toinen lapsi",
        "amount_eur": 85.0,
        "applies_if": "sisarus: toinen samasta perheestä osallistuva lapsi (sisarusalennus)",
        "includes": null
      },
      {
        "label": "Perheliikunta, kolmas lapsi",
        "amount_eur": 65.0,
        "applies_if": "sisarus: kolmas samasta perheestä osallistuva lapsi (sisarusalennus)",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": "Tuntia ei pidetä syyslomaviikolla (vko 42) 12.10. eikä 30.11.2026.",
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-018",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 47.96,
    "monthly_cost_basis": "156.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Käpylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Käpylän Voimistelijat ry",
    "group_name": "Voimistelu- ja tanssiseikkailu 4-5-vuotiaat, Kottby grundskola, syksy 2026",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "Voimistelu- ja tanssiseikkailu 4-5-vuotiaat.",
    "parent_child": "unknown",
    "venue_name": "Kottby grundskola",
    "address": "Pohjolankatu 45, Helsinki",
    "district": "Käpylä",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "Syyskausi 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-11-24",
    "sessions_count": null,
    "price_eur": 146.0,
    "price_basis": "Voimistelu- ja tanssiseikkailu, kausimaksu syksy 2026",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://kapylanvoimistelijat.myclub.fi/flow/courses/11174627",
    "source_quote": "Voimistelu- ja tanssiseikkailu 4-5-vuotiaat Syksy 2026 [...] Voimistelu- ja tanssiseikkailu 146,00 €",
    "activity_id": "hel-2026-0357",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 156.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-11-24",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-11-24",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 146,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Voimistelu- ja tanssiseikkailu, syksy 2026"
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "term",
        "applies_if": null,
        "note": "Jäsenmaksu"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Syyslomaviikolla (vko 42) 13.10. ei tuntia; viimeinen kerta 24.11.",
    "unverified_fields": [],
    "verification_notes": "Ryhmä on kirjattu järjestäjän sivustolla kategoriaan 'Lasten harrastevoimistelu'.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-019",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 55.86,
    "monthly_cost_basis": "156.0 € / term jaettuna 2.79 kuukaudelle (2026-09-01–2026-11-24, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Käpylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Käpylän Voimistelijat ry",
    "group_name": "Lasten voimistelu ja tanssi 2019–2020 syntyneet, Kottby grundskola, syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Lasten voimistelu ja tanssi 2019–2020 syntyneet.",
    "parent_child": "unknown",
    "venue_name": "Kottby grundskola",
    "address": "Pohjolankatu 45, Helsinki",
    "district": "Käpylä",
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "Syyskausi 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-11-24",
    "sessions_count": null,
    "price_eur": 146.0,
    "price_basis": "Lasten voimistelu ja tanssi, kausimaksu syksy 2026",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://kapylanvoimistelijat.myclub.fi/flow/courses/11174410",
    "source_quote": "Lasten voimistelu ja tanssi 2019-2020 syntyneet Syksy 2026 [...] Jonossa 0 [...] Lasten voimistelu ja tanssi 146,00 €",
    "activity_id": "hel-2026-0358",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 156.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-11-24",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-11-24",
    "birth_year_min": 2019,
    "birth_year_max": 2020,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 146,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Lasten voimistelu ja tanssi, syksy 2026"
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "term",
        "applies_if": null,
        "note": "Jäsenmaksu"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Syyslomaviikolla (vko 42) 13.10. ei tuntia; viimeinen kerta 24.11.",
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille: ryhmä sisältää vuonna 2019 syntyneet (7 v. syksyllä 2026, ei osu rajaukseen yksinään) ja vuonna 2020 syntyneet (6 v. syksyllä 2026, osuu rajaukseen); koko ryhmä sisällytetty, koska alaraja (2020-syntyneet, 6 v.) osuu 0–6-rajaukseen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-020",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 55.86,
    "monthly_cost_basis": "156.0 € / term jaettuna 2.79 kuukaudelle (2026-09-01–2026-11-24, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Käpylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingfors Simsällskap r.f.",
    "group_name": "Perheuimakoulu, syyskausi 2026",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "Uimataidottomat noin 3-5 vuotiaat lapset. Kurssille voi osallistua 1 lapsi + 1 aikuinen.",
    "parent_child": "yes",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki",
    "district": "Haaga",
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "10:30",
    "season": "Syyskausi 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": 17,
    "price_eur": 295.0,
    "price_basis": "Uimakoulu Valkea Talo, syksy 2026 (17 kurssikertaa, 30 min)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://simmis.myclub.fi/flow/courses/10780524",
    "source_quote": "30min x 17 kurssikertaa ... Uimakoulu Valkea Talo, syksy 2026 295,00 € ... Paikkoja jäljellä 5",
    "activity_id": "hel-2026-0359",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 295.0,
    "price_per_session_eur": 17.35,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-23",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://simmis.myclub.fi/flow/courses/10780524",
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 295,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 0,
        "mandatory": true,
        "included": true,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Vaadittava tuote 'Jäsen 2026-2027 (kurssit)'; seuran sivun mukaan uintikursseilla jäsenmaksu sisältyy kurssin hintaan."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-030",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 79.46,
    "monthly_cost_basis": "295.0 € / course jaettuna 3.71 kuukaudelle (2026-08-23–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingfors Simsällskap r.f.",
    "group_name": "Alkeisuimakoulu, syyskausi 2026",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "Uimataidottomat noin 4-6 vuotiaat lapset",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki",
    "district": "Haaga",
    "weekday": "sunnuntai",
    "start_time": "11:00",
    "end_time": "11:30",
    "season": "Syyskausi 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": 17,
    "price_eur": 295.0,
    "price_basis": "Uimakoulu Valkea Talo, syksy 2026 (17 kurssikertaa, 30 min)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://simmis.myclub.fi/flow/courses/10811697",
    "source_quote": "30min x 17 kurssikertaa ... Uimakoulu Valkea Talo, syksy 2026 295,00 € ... Paikkoja jäljellä 1",
    "activity_id": "hel-2026-0360",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 295.0,
    "price_per_session_eur": 17.35,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-23",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://simmis.myclub.fi/flow/courses/10811697",
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 295,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 0,
        "mandatory": true,
        "included": true,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Vaadittava tuote 'Jäsen 2026-2027 (kurssit)'; seuran sivun mukaan uintikursseilla jäsenmaksu sisältyy kurssin hintaan."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille yläikärajalla (ikäväli 4-6 v).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-031",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T11:57:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 79.46,
    "monthly_cost_basis": "295.0 € / course jaettuna 3.71 kuukaudelle (2026-08-23–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Elise Gymnastics",
    "group_name": "Perhejumppa 3–5 v. aikuisen kanssa, Laajasalo/Kruunuvuorenranta",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3–5-vuotiaat yhdessä huoltajan kanssa",
    "parent_child": "yes",
    "venue_name": "Tahvonlahden ala-aste",
    "address": "Gunillantie 12, 00870 Helsinki",
    "district": "Laajasalo",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 200.0,
    "price_basis": "syyskausi 2026",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10751103",
    "source_quote": "Laajasalo/Kruunuvuorenranta perhejumppa 3-5 v; Laajasalon / Kruunuvuorenrannan 3-5-vuotiaiden perhejumppa järjestetään tiistaisin klo 17:00-17:45 Tahvonlahden ala-asteella, osoitteessa gunillantie 12. Syyskauden 2026 harjoitusmaksu 200,00 € (elise.fi: 230 €) + Elisen jäsenmaksu 2026 39,00 €.",
    "activity_id": "hel-2026-0361",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 239.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://elise.myclub.fi/flow/courses/10751103",
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 200,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "myClub-ilmoittautumissivu (maksupaikka) 'Syyskauden 2026 harjoitusmaksu 200,00 €'; elise.fi 230 € (Ilpon sääntö 21.9.2026: virallisten lähteiden ristiriidassa ilmoittautumis-/maksusivu voittaa)."
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Elisen jäsenmaksu 2026 (myClubin 'Vaadittavat tuotteet'); peritään vuoden ensimmäisen harjoitusmaksun yhteydessä."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "myClubin aikataulussa 14 harjoitusta (2026-09-01–2026-12-08, ei viikolla 42); joulunäytös la 12.12.2026 erillinen tapahtuma, ei laskettu. Kertahinta sisältää vuoden 2026 jäsenmaksun. Hinta myClub-ilmoittautumissivulta (maksupaikka) 'Syyskauden 2026 harjoitusmaksu 200,00 €'; elise.fi harrasteryhmäsivu ilmoittaa 'Perheliikunta/Temppukoulut yhdessä vanhemman kanssa 230€' (21.9.2026) – Ilpon sääntö 21.9.2026: virallisten lähteiden ristiriidassa ilmoittautumis-/maksusivu voittaa. | Laji temppujumppa (Ilpon päätös 9, 22.9.2026: FreeGym/parkour/ninja/trampoliini → voimistelu, perhe-/tempputunnit → temppujumppa); ennen voimistelu. Perhetunti: hinta näytetään 'lapsi + aikuinen' -huomautuksella; hinnasto ei kerro kattaako se aikuisen (price_covers.verified=false). Erillistä aikuisen maksua ei oleteta (Ilpon päätös 22.9.2026). Hintaristiriita ratkaistu säännöllä 8 (maksusivu voittaa); ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_01.json",
      "staging_id": "batch_2026-09-21_01-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_01/emc_10751103_91b6bbed2ef1.html",
      "capture_sha256": "91b6bbed2ef1171ab1b1860d0a392fda4654133ee0d8270275a6197c848ea7d0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 62.35,
    "monthly_cost_basis": "200.0 € / term jaettuna 3.38 kuukaudelle (2026-09-01–2026-12-12, price_period_start) + membership 39 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Laajasalo",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 5–6 v. (26565)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kerhotalo Saseka",
    "address": "Kalkkihiekankuja 6, Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-10",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "full",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 5–6 v.: 26565 Ma 17:00 AUR2 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0362",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "inferred",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Syyslukukausi 21 vk; maanantaita 10.8.2026–10.1.2027 ilman lomaviikkoa 21.–27.12. = 21 (laskettu koodilla); ei maanantaipyhiä lomapäivälistassa. Kertamäärä 21 (inferred) ei ole järjestäjän virallisesti ilmoittama ryhmäkohtainen luku → ei julkaista (Ilpon jonolinjaus 1, 22.9.2026): sessions_count=null, ei kertahintaa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_02.json",
      "staging_id": "batch_2026-09-21_02-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_02/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vuosaari",
    "district_basis": "geokoodattu osoite -> neighborhood 'Vuosaari' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 5–6 v. (26573)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Viikin asukastalo Kunto",
    "address": "Leskirouva Freytagin kuja 10, Helsinki",
    "district": "Viikki",
    "weekday": "lauantai",
    "start_time": "10:45",
    "end_time": "11:30",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 5–6 v.: 26573 La 10:45 VIIK 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0363",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "inferred",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Lauantaita 15.8.2026–9.1.2027 ilman lomaviikkoa = 21; La 31.10. pyhäinpäivä: lastentanssitunteja ei korvata -> 20 toteutuvaa (laskettu koodilla). | district derived from venue 'Viikin asukastalo Kunto' (venue 'Viikin asukastalo Kunto' = canonical hel-2026-0013 district Viikki) Kertamäärä 20 (inferred) ei ole järjestäjän virallisesti ilmoittama ryhmäkohtainen luku → ei julkaista (Ilpon jonolinjaus 1, 22.9.2026): sessions_count=null, ei kertahintaa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_02.json",
      "staging_id": "batch_2026-09-21_02-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_02/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Viikki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssi taaperon kanssa 1–3 v. (26555)",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1–3-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Malmitalon tanssisali",
    "address": "Ala-Malmin tori 1, Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:25",
    "end_time": "10:10",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssi taaperon kanssa 1–3 v.: 26555 La 09:25 MAL 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0364",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "inferred",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Lauantaita 15.8.2026–9.1.2027 ilman lomaviikkoa = 21; La 31.10. pyhäinpäivä: lastentanssitunteja ei korvata -> 20 toteutuvaa (laskettu koodilla). Kertamäärä 20 (inferred) ei ole järjestäjän virallisesti ilmoittama ryhmäkohtainen luku → ei julkaista (Ilpon jonolinjaus 1, 22.9.2026): sessions_count=null, ei kertahintaa. Perhetunti: hinta näytetään 'lapsi + aikuinen' -huomautuksella; hinnasto ei kerro kattaako se aikuisen (price_covers.verified=false). Erillistä aikuisen maksua ei oleteta (Ilpon päätös 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_02.json",
      "staging_id": "batch_2026-09-21_02-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_02/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "geokoodattu osoite -> neighborhood 'Malmi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "koripallo",
    "provider": "WB-Pantterit",
    "group_name": "Skidikoris 3–5-vuotiaat – Kulosaari",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3–5-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Kulosaaren ala-aste",
    "address": "Kyösti Kallion tie 1, Helsinki",
    "district": "Kulosaari",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "2026–2027",
    "start_date": "2026-09-03",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 380.0,
    "price_basis": "Hinta: 380€ + jäsenmaksu 50€ (koko kausi, 1 × viikossa)",
    "membership_fee_eur": 50.0,
    "other_required_fees": "Kausimaksu ei sisällä henkilökohtaista lisenssimaksua; pakollisuus ja hinta kerhotoiminnalle eivät käy ilmi toimivasta lähteestä.",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://wb-pantterit.fi/kerhotoiminta/skidikoris-3-5v/",
    "source_quote": "Skidikoris 3–5-vuotiaat; Kulosaari torstai klo 17:00–18:00, Kulosaaren ala-aste; toimintakausi 1.9.–30.4. | myClub Skidikoris Kulosaari: Hinta: 380€ + jäsenmaksu 50€, mikäli pelaaja aloittaa kesken kauden niin tämä huomioidaan kausimaksussa, jäsenmaksun suuruus on aina 50€.",
    "activity_id": "hel-2026-0365",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 430.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": "https://wb-pantterit.myclub.fi/flow/courses/10968539",
    "billing_period": "full_season",
    "price_period_start": "2026-09-03",
    "price_period_end": "2027-04-29",
    "season_start_date": "2026-09-03",
    "season_end_date": "2027-04-29",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 380,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Koko kauden hinta (myClub-kuvaus 'Hinta: 380€ + jäsenmaksu 50€'); kesken kauden aloittavalla aloitusajankohta huomioidaan."
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "season",
        "applies_if": null,
        "note": "myClub 'Hintatiedot': Jäsenmaksu kausi 2026-2027 50,00 €"
      },
      {
        "type": "license",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "Henkilökohtainen lisenssi: kausimaksu ei sisällä sitä (seuran sivu); pakollisuus ja hinta kerhotoiminnalle eivät käy ilmi → hinnoittelematta."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta 380 € + jäsenmaksu 50 € seuran myClub-ilmoittautumissivulta (https://wb-pantterit.myclub.fi/flow/courses/10968539, haettu 21.9.2026, tallenne erän batch_2026-09-22_08 evidenssissä): 'Hinta: 380€ + jäsenmaksu 50€, mikäli pelaaja aloittaa kesken kauden niin tämä huomioidaan kausimaksussa, jäsenmaksun suuruus on aina 50€.' – ilmoittautumissivu voittaa (Ilpon sääntö 21.9.2026); seuran kausimaksut-sivu yhä rikki ('[table id=1 /]'). Kausi myClubissa 3.9.2026–29.4.2027; hävinnyt lähde https://wb-pantterit.fi/kerhotoiminta/skidikoris-3-5v/ (tarkistettu 21.9.2026): 'Kerhotoiminnan toimintakausi on 1.9-30.4.'. Lisenssimaksun pakollisuus/hinta ei tiedossa → hinta osittain tiedossa. Avattu 22.9.2026 (blocked → review). Pakollinen maksu hinnoittelematta → julkaistaan 'hinta osittain tiedossa' -merkinnällä (price_completeness=incomplete, Ilpon jonolinjaus 6, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_02.json",
      "staging_id": "batch_2026-09-21_02-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/wb_myclub_10968539_b3083dd723a7.html",
      "capture_sha256": "b3083dd723a70cd819587d3ae8764bae153561bc5542fe8872c2564b08bd0173",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 52.56,
    "monthly_cost_basis": "380.0 € / full_season jaettuna 7.85 kuukaudelle (2026-09-03–2027-04-29, price_period_start) + membership 50 €/v ÷ 12",
    "monthly_cost_complete": false,
    "district_derived": "Kulosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "koripallo",
    "provider": "WB-Pantterit",
    "group_name": "Pikkusuperit 5–6-vuotiaat – Kulosaari",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Kulosaaren ala-aste",
    "address": "Kyösti Kallion tie 1, Helsinki",
    "district": "Kulosaari",
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "2026–2027",
    "start_date": "2026-09-03",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 380.0,
    "price_basis": "Hinta: 380€ + jäsenmaksu 50€ (koko kausi, 1 × viikossa)",
    "membership_fee_eur": 50.0,
    "other_required_fees": "Kausimaksu ei sisällä henkilökohtaista lisenssimaksua; pakollisuus ja hinta kerhotoiminnalle eivät käy ilmi toimivasta lähteestä.",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://wb-pantterit.fi/kerhotoiminta/pienetsuperit-5-6v/",
    "source_quote": "Pikkusuperit 5–6-vuotiaat; Kulosaari torstai klo 18:00–19:00, Kulosaaren ala-aste; toimintakausi 1.9.–30.4. | myClub Pienet superit Kulosaari: Hinta: 380€ + jäsenmaksu 50€, mikäli pelaaja aloittaa kesken kauden niin tämä huomioidaan kausimaksussa.",
    "activity_id": "hel-2026-0366",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 430.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": "https://wb-pantterit.myclub.fi/flow/courses/10968705",
    "billing_period": "full_season",
    "price_period_start": "2026-09-03",
    "price_period_end": "2027-04-29",
    "season_start_date": "2026-09-03",
    "season_end_date": "2027-04-29",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 380,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Koko kauden hinta (myClub-kuvaus 'Hinta: 380€ + jäsenmaksu 50€'); kesken kauden aloittavalla aloitusajankohta huomioidaan."
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "season",
        "applies_if": null,
        "note": "myClub 'Hintatiedot': Jäsenmaksu kausi 2026-2027 50,00 €"
      },
      {
        "type": "license",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "Henkilökohtainen lisenssi: kausimaksu ei sisällä sitä (seuran sivu); pakollisuus ja hinta kerhotoiminnalle eivät käy ilmi → hinnoittelematta."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta 380 € + jäsenmaksu 50 € seuran myClub-ilmoittautumissivulta (https://wb-pantterit.myclub.fi/flow/courses/10968705, haettu 21.9.2026, tallenne erän batch_2026-09-22_08 evidenssissä): 'Hinta: 380€ + jäsenmaksu 50€, mikäli pelaaja aloittaa kesken kauden niin tämä huomioidaan kausimaksussa.' – ilmoittautumissivu voittaa (Ilpon sääntö 21.9.2026); seuran kausimaksut-sivu yhä rikki ('[table id=1 /]'). Kausi myClubissa 3.9.2026–29.4.2027; hävinnyt lähde https://wb-pantterit.fi/kerhotoiminta/pienetsuperit-5-6v/ (tarkistettu 21.9.2026): 'Kerhotoiminnan toimintakausi on 1.9-30.4.'. Lisenssimaksun pakollisuus/hinta ei tiedossa → hinta osittain tiedossa. Avattu 22.9.2026 (blocked → review). Pakollinen maksu hinnoittelematta → julkaistaan 'hinta osittain tiedossa' -merkinnällä (price_completeness=incomplete, Ilpon jonolinjaus 6, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_02.json",
      "staging_id": "batch_2026-09-21_02-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/wb_myclub_10968705_fec9d5861466.html",
      "capture_sha256": "fec9d5861466bb6b7f43fc3226603f7eb5453708bf80f8f5e4ecb2d0f0c04295",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 52.56,
    "monthly_cost_basis": "380.0 € / full_season jaettuna 7.85 kuukaudelle (2026-09-03–2027-04-29, price_period_start) + membership 50 €/v ÷ 12",
    "monthly_cost_complete": false,
    "district_derived": "Kulosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Vesikirput 3-5v. SU 10:30 (Uimakoulut Itäkeskus syksy 2026)",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5v",
    "parent_child": "no",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Itäkeskus",
    "weekday": "sunnuntai",
    "start_time": "10:30",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-20",
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "Uimakoulut 1 krt/vko, kausimaksu 17.8.–20.12.2026",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://orca.myclub.fi/flow/events/10730743?group_id=98239",
    "source_quote": "Vesikirput 3-5v. SU 10:30, Uimakoulut Itäkeskus syksy 2026, Itäkeskuksen uimahalli, 23.8.2026 10:30 - 20.12.2026; Jonossa 6, Ilmoittaudu jonoon. Kausimaksu uimakoulut 1 krt/vko 210 € + jäsenmaksu 35 €.",
    "activity_id": "hel-2026-0367",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Uimakoulut 1 krt/vko, syyskausi 17.8.–20.12.2026."
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Orcan jäsenmaksu kalenterivuodelta 2026."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Uimalasit/uimalakki omat; uimahallin sisäänpääsyä ei mainita lähteessä.",
    "unverified_fields": [],
    "verification_notes": "Ryhmän tiedot MyClub-tapahtumasivulta, hinta erilliseltä orca.fi/kausimaksut-sivulta (ryhmä kuuluu 'Uimakoulut Itäkeskus syksy 2026' -ryhmään → UIMAKOULUT-hinta). Tapahtumakuvauksessa vanhentuneita tekstejä ('KAUSIMAKSU KEVÄT 2024', 'Uimakoulu kestää koko kevätkauden'). Arka lapsi: vanhempi voi osallistua altaassa tukena. Päättymisaikaa ei lähteessä. Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_03.json",
      "staging_id": "batch_2026-09-21_03-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_03/orca_event_10730743_5b34b5191f2c.html",
      "capture_sha256": "5b34b5191f2cb7965feb06892023bfc5daa550c60cb77751e6a9dce3e4d73d95",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Itäkeskus",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Vesikirput 4-5v. LA 10:30 (Uimakoulut Itäkeskus syksy 2026)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5v",
    "parent_child": "no",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Itäkeskus",
    "weekday": "lauantai",
    "start_time": "10:30",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-22",
    "end_date": "2026-12-19",
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "Uimakoulut 1 krt/vko, kausimaksu 17.8.–20.12.2026",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://orca.myclub.fi/flow/events/10730746?group_id=98239",
    "source_quote": "Vesikirput 4-5v. LA 10:30, Uimakoulut Itäkeskus syksy 2026, Itäkeskuksen uimahalli, 22.8.2026 10:30 - 19.12.2026; Jonossa 6, Ilmoittaudu jonoon. Kausimaksu uimakoulut 1 krt/vko 210 € + jäsenmaksu 35 €.",
    "activity_id": "hel-2026-0368",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Uimakoulut 1 krt/vko, syyskausi 17.8.–20.12.2026."
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Orcan jäsenmaksu kalenterivuodelta 2026."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Uimalasit/uimalakki omat; uimahallin sisäänpääsyä ei mainita lähteessä.",
    "unverified_fields": [],
    "verification_notes": "Ryhmän tiedot MyClub-tapahtumasivulta, hinta erilliseltä orca.fi/kausimaksut-sivulta (ryhmä kuuluu 'Uimakoulut Itäkeskus syksy 2026' -ryhmään → UIMAKOULUT-hinta). Tapahtumakuvauksessa vanhentuneita tekstejä ('KAUSIMAKSU KEVÄT 2024', 'Uimakoulu kestää koko kevätkauden'). Arka lapsi: vanhempi voi osallistua altaassa tukena. Päättymisaikaa ei lähteessä. Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_03.json",
      "staging_id": "batch_2026-09-21_03-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_03/orca_event_10730746_6fa29d38586d.html",
      "capture_sha256": "6fa29d38586d50714d1f1ff6b74970b91daf3a8ac2ee1846531cc71a81263545",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Itäkeskus",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Vesikilpikonnat 4-6v LA 11:00 (Uimakoulut Itäkeskus syksy 2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v",
    "parent_child": "no",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Itäkeskus",
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-22",
    "end_date": "2026-12-19",
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "Uimakoulut 1 krt/vko, kausimaksu 17.8.–20.12.2026",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://orca.myclub.fi/flow/events/10730745?group_id=98239",
    "source_quote": "Vesikilpikonnat 4-6v LA 11:00, Uimakoulut Itäkeskus syksy 2026, Itäkeskuksen uimahalli, 22.8.2026 11:00 - 19.12.2026; Jonossa 5, Ilmoittaudu jonoon. Kausimaksu uimakoulut 1 krt/vko 210 € + jäsenmaksu 35 €.",
    "activity_id": "hel-2026-0369",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Uimakoulut 1 krt/vko, syyskausi 17.8.–20.12.2026."
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Orcan jäsenmaksu kalenterivuodelta 2026."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Uimalasit/uimalakki omat; uimahallin sisäänpääsyä ei mainita lähteessä.",
    "unverified_fields": [],
    "verification_notes": "Ryhmän tiedot MyClub-tapahtumasivulta, hinta erilliseltä orca.fi/kausimaksut-sivulta (ryhmä kuuluu 'Uimakoulut Itäkeskus syksy 2026' -ryhmään → UIMAKOULUT-hinta). Tapahtumakuvauksessa vanhentuneita tekstejä ('KAUSIMAKSU KEVÄT 2024', 'Uimakoulu kestää koko kevätkauden'). Arka lapsi: vanhempi voi osallistua altaassa tukena. Päättymisaikaa ei lähteessä. Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_03.json",
      "staging_id": "batch_2026-09-21_03-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_03/orca_event_10730745_53a8d9564739.html",
      "capture_sha256": "53a8d9564739617755ba517b2e79925a09bcd5c9c3224503f7d5050869aab547",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Itäkeskus",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Perhefutis Aurinkolahti syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024-2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "yes",
    "venue_name": "Kanavan koulun liikuntasali",
    "address": "Aurinkotuulenkatu 11",
    "district": "Aurinkolahti",
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-09-09",
    "end_date": "2026-11-25",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskausi, sis. ohjauksen 11 krt, lapselle vakuutuksen, palkinnon ja vuoden 10 € jäsenmaksun (vuoden ensimmäinen maksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntaleikki.fi/perhefutis/",
    "source_quote": "Perhefutis Aurinkolahti, 2024-2023-2022-syntyneet, klo 17:00-17:40; 11 harjoituspäivää 2026-09-09–2026-11-25. Perhefutis: kausi maksaa 105 euroa (sis. ohjauksen 11krt).",
    "activity_id": "hel-2026-0370",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": 9.55,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://liikuntaleikki.fi/info/",
    "billing_period": "term",
    "price_period_start": "2026-09-09",
    "price_period_end": "2026-11-25",
    "season_start_date": "2026-09-09",
    "season_end_date": "2026-11-25",
    "birth_year_min": 2022,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntaleikki.fi/info/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, lapsen vakuutuksen ja palkinnon; vuoden ensimmäiseen osallistumismaksuun sisältyy 10 € jäsenmaksu."
      }
    ],
    "price_options": [
      {
        "label": "Kaksi lasta samasta perheestä",
        "amount_eur": 175,
        "applies_if": "kaksi saman perheen lasta mukana",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Syyskuu ulkona: Kanavan koulun kenttä (syyskuu); lokakuusta sisällä: Kanavan koulun liikuntasali. Ilmoittautuminen Ilmarix-lomakkeella (www.ilmarix.fi), jossa sama hinta ja 11 krt. Järjestäjä Liikuntaleikki, osin yhteistyössä Puotinkylän Valtin kanssa. Ikä ilmaistu syntymävuosina (min_age/max_age null). Yhteisjärjestäjä: FC Viikinkien uutinen 25.8.2026 (https://fcviikingit.fi/uutiset/150797/ilmoittautuminen-syksyn-perhefutikseen-ja-futisleikkikseen-o): 'FC Viikingit ja Liikuntaleikki Helsinki ry järjestävät Futisleikkis- ja Perhefutis-toimintaa'; sama ryhmä, aika, paikka ja päivämäärät. Jäsenmaksu: liikuntaleikki.fi/info 'vuoden ensimmäiseen osallistumismaksuun sisältyy 10€ jäsenmaksu' (sisältyy 105 €:oon, ei lisäkulua); FCV:n uutinen ja Ilmarix-lomake eivät mainitse jäsenmaksua – ei ristiriitaa. Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_03.json",
      "staging_id": "batch_2026-09-21_03-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_03/liikuntaleikki_perhefutis_335a788c2788.html",
      "capture_sha256": "335a788c27889c50a9afb6c05b54dbc8353d646e9332c6455b5a794ae4ae2286",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-09–2026-11-25, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Aurinkolahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Perhefutis Herttoniemenranta syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024-2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "yes",
    "venue_name": "Roihuvuoren ala-asteen liikuntasali",
    "address": "Vuorenpeikontie 7",
    "district": "Herttoniemenranta",
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-09-09",
    "end_date": "2026-11-25",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskausi, sis. ohjauksen 11 krt, lapselle vakuutuksen, palkinnon ja vuoden 10 € jäsenmaksun (vuoden ensimmäinen maksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntaleikki.fi/perhefutis/",
    "source_quote": "Perhefutis Herttoniemenranta, 2024-2023-2022-syntyneet, klo 17:00-17:40; 11 harjoituspäivää 2026-09-09–2026-11-25. Perhefutis: kausi maksaa 105 euroa (sis. ohjauksen 11krt).",
    "activity_id": "hel-2026-0371",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": 9.55,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://liikuntaleikki.fi/info/",
    "billing_period": "term",
    "price_period_start": "2026-09-09",
    "price_period_end": "2026-11-25",
    "season_start_date": "2026-09-09",
    "season_end_date": "2026-11-25",
    "birth_year_min": 2022,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntaleikki.fi/info/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, lapsen vakuutuksen ja palkinnon; vuoden ensimmäiseen osallistumismaksuun sisältyy 10 € jäsenmaksu."
      }
    ],
    "price_options": [
      {
        "label": "Kaksi lasta samasta perheestä",
        "amount_eur": 175,
        "applies_if": "kaksi saman perheen lasta mukana",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Syyskuu ulkona: leikkipaikka Tuorinniemen kenttä, Neitojenpolku 8 (syyskuu); lokakuusta sisällä: Roihuvuoren ala-asteen liikuntasali. Ilmoittautuminen Ilmarix-lomakkeella (www.ilmarix.fi), jossa sama hinta ja 11 krt. Järjestäjä Liikuntaleikki, osin yhteistyössä Puotinkylän Valtin kanssa. Ikä ilmaistu syntymävuosina (min_age/max_age null). Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_03.json",
      "staging_id": "batch_2026-09-21_03-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_03/liikuntaleikki_perhefutis_335a788c2788.html",
      "capture_sha256": "335a788c27889c50a9afb6c05b54dbc8353d646e9332c6455b5a794ae4ae2286",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-09–2026-11-25, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemenranta",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Perhefutis Laajasalo syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024-2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "yes",
    "venue_name": "Laajasalon peruskoulun sali",
    "address": "Koulutanhua 1",
    "district": "Laajasalo",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-09-08",
    "end_date": "2026-11-24",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskausi, sis. ohjauksen 11 krt, lapselle vakuutuksen, palkinnon ja vuoden 10 € jäsenmaksun (vuoden ensimmäinen maksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntaleikki.fi/perhefutis/",
    "source_quote": "Perhefutis Laajasalo, 2024-2023-2022-syntyneet, klo 17:00-17:40; 11 harjoituspäivää 2026-09-08–2026-11-24. Perhefutis: kausi maksaa 105 euroa (sis. ohjauksen 11krt).",
    "activity_id": "hel-2026-0372",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": 9.55,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://liikuntaleikki.fi/info/",
    "billing_period": "term",
    "price_period_start": "2026-09-08",
    "price_period_end": "2026-11-24",
    "season_start_date": "2026-09-08",
    "season_end_date": "2026-11-24",
    "birth_year_min": 2022,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntaleikki.fi/info/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, lapsen vakuutuksen ja palkinnon; vuoden ensimmäiseen osallistumismaksuun sisältyy 10 € jäsenmaksu."
      }
    ],
    "price_options": [
      {
        "label": "Kaksi lasta samasta perheestä",
        "amount_eur": 175,
        "applies_if": "kaksi saman perheen lasta mukana",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Syyskuu ulkona: Kultapossupuiston nurmikenttä (syyskuu); lokakuusta sisällä: Laajasalon peruskoulun sali. Ilmoittautuminen Ilmarix-lomakkeella (www.ilmarix.fi), jossa sama hinta ja 11 krt. Järjestäjä Liikuntaleikki, osin yhteistyössä Puotinkylän Valtin kanssa. Ikä ilmaistu syntymävuosina (min_age/max_age null). Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_03.json",
      "staging_id": "batch_2026-09-21_03-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_03/liikuntaleikki_perhefutis_335a788c2788.html",
      "capture_sha256": "335a788c27889c50a9afb6c05b54dbc8353d646e9332c6455b5a794ae4ae2286",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-08–2026-11-24, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Laajasalo",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Perhefutis Vuosaari syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024-2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "yes",
    "venue_name": "Vuoniityn peruskoulun sali",
    "address": "Venemestarintie 14",
    "district": "Vuosaari",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-09-07",
    "end_date": "2026-11-23",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskausi, sis. ohjauksen 11 krt, lapselle vakuutuksen, palkinnon ja vuoden 10 € jäsenmaksun (vuoden ensimmäinen maksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntaleikki.fi/perhefutis/",
    "source_quote": "Perhefutis Vuosaari, 2024-2023-2022-syntyneet, klo 17:00-17:40; 11 harjoituspäivää 2026-09-07–2026-11-23. Perhefutis: kausi maksaa 105 euroa (sis. ohjauksen 11krt).",
    "activity_id": "hel-2026-0373",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": 9.55,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://liikuntaleikki.fi/info/",
    "billing_period": "term",
    "price_period_start": "2026-09-07",
    "price_period_end": "2026-11-23",
    "season_start_date": "2026-09-07",
    "season_end_date": "2026-11-23",
    "birth_year_min": 2022,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntaleikki.fi/info/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, lapsen vakuutuksen ja palkinnon; vuoden ensimmäiseen osallistumismaksuun sisältyy 10 € jäsenmaksu."
      }
    ],
    "price_options": [
      {
        "label": "Kaksi lasta samasta perheestä",
        "amount_eur": 175,
        "applies_if": "kaksi saman perheen lasta mukana",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Syyskuu ulkona: Puistopolun peruskoulun kenttä, Punakiventie 4 (syyskuu); lokakuusta sisällä: Vuoniityn peruskoulun sali. Ilmoittautuminen Ilmarix-lomakkeella (www.ilmarix.fi), jossa sama hinta ja 11 krt. Järjestäjä Liikuntaleikki, osin yhteistyössä Puotinkylän Valtin kanssa. Ikä ilmaistu syntymävuosina (min_age/max_age null). Yhteisjärjestäjä: FC Viikinkien uutinen 25.8.2026 (https://fcviikingit.fi/uutiset/150797/ilmoittautuminen-syksyn-perhefutikseen-ja-futisleikkikseen-o): 'FC Viikingit ja Liikuntaleikki Helsinki ry järjestävät Futisleikkis- ja Perhefutis-toimintaa'; sama ryhmä, aika, paikka ja päivämäärät. Jäsenmaksu: liikuntaleikki.fi/info 'vuoden ensimmäiseen osallistumismaksuun sisältyy 10€ jäsenmaksu' (sisältyy 105 €:oon, ei lisäkulua); FCV:n uutinen ja Ilmarix-lomake eivät mainitse jäsenmaksua – ei ristiriitaa. Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_03.json",
      "staging_id": "batch_2026-09-21_03-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_03/liikuntaleikki_perhefutis_335a788c2788.html",
      "capture_sha256": "335a788c27889c50a9afb6c05b54dbc8353d646e9332c6455b5a794ae4ae2286",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-07–2026-11-23, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Vapaa Tanssikoulu (Laajasalon opisto)",
    "group_name": "Lapsi & aikuinen -tanssi 2–4 v. LT4504 (ma 16:45)",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2–4 v. (lapsi & aikuinen)",
    "parent_child": "yes",
    "venue_name": "Vapaa Tanssikoulu, Sali 2",
    "address": "Mekaanikonkatu 17",
    "district": "Herttoniemi",
    "weekday": "maanantai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026 (lukuvuosi 2026–2027)",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 230.0,
    "price_basis": "Syyslukukauden oppilasmaksu, 45 min tunti 1 krt/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Uusille oppilaille ensimmäinen osallistumiskerta on ilmainen kokeilukerta.",
    "enrollment_status": "unknown",
    "source_url": "https://vapaatanssikoulu.fi/wp-content/uploads/2026/08/Vata_lukuja%CC%88rjestys-2026-2027.pdf",
    "source_quote": "Lapsi & aikuinen -tanssi 2–4 v. 16.45–17.30 LT4504; lukukausimaksu 45 min 1 krt/vko 230 €; syyskaudella opetuskertoja on 16.",
    "activity_id": "hel-2026-0374",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 230.0,
    "price_per_session_eur": 14.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://vapaatanssikoulu.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vapaatanssikoulu.fi/tunneille-ilmoittautuminen/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 230,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Lukukausimaksu 45 min / 1 krt vko."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": "Tanssikoulu ei vakuuta oppilaita; oma tapaturmavakuutus suositeltu (ei pakollinen maksu).",
    "unverified_fields": [],
    "verification_notes": "Ilmoittaudutaan koko lukuvuodeksi, laskutus lukukausittain. Lukujärjestys 13.08.2026, 'Muutokset mahdollisia!'. Uusi ryhmä ('UUSI!'). Perhealennus 10 % muista perheenjäsenistä. Perhetunti: hinta näytetään 'lapsi + aikuinen' -huomautuksella; hinnasto ei kerro kattaako se aikuisen (price_covers.verified=false). Erillistä aikuisen maksua ei oleteta (Ilpon päätös 22.9.2026). Hinta poimittu järjestäjän virallisesta hinnastosta tunnin keston perusteella (lukujärjestys-PDF + hinnastotaulukko).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_03.json",
      "staging_id": "batch_2026-09-21_03-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_03/vapaatanssikoulu_lukujarjestys_0547bc806c7d.pdf",
      "capture_sha256": "0547bc806c7d2780bc9f9b9173ab4d6c69485775a7cff0dbe85a79a0bbcd884b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "230.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Vapaa Tanssikoulu (Laajasalon opisto)",
    "group_name": "Lastentanssi 3–4 v. LT3039 (la 10:30)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4 v.",
    "parent_child": "no",
    "venue_name": "Vapaa Tanssikoulu, Sali 1",
    "address": "Mekaanikonkatu 17",
    "district": "Herttoniemi",
    "weekday": "lauantai",
    "start_time": "10:30",
    "end_time": "11:00",
    "season": "syksy 2026 (lukuvuosi 2026–2027)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 180.0,
    "price_basis": "Syyslukukauden oppilasmaksu, 30 min tunti 1 krt/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Uusille oppilaille ensimmäinen osallistumiskerta on ilmainen kokeilukerta.",
    "enrollment_status": "unknown",
    "source_url": "https://vapaatanssikoulu.fi/wp-content/uploads/2026/08/Vata_lukuja%CC%88rjestys-2026-2027.pdf",
    "source_quote": "Lastentanssi 3–4 v. 10.30–11.00 LT3039; lukukausimaksu 30 min 1 krt/vko 180 €; syyskaudella opetuskertoja on 16.",
    "activity_id": "hel-2026-0375",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 180.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://vapaatanssikoulu.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 180,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Lukukausimaksu 30 min / 1 krt vko."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Tanssikoulu ei vakuuta oppilaita; oma tapaturmavakuutus suositeltu (ei pakollinen maksu).",
    "unverified_fields": [],
    "verification_notes": "Ilmoittaudutaan koko lukuvuodeksi, laskutus lukukausittain. Lukujärjestys 13.08.2026, 'Muutokset mahdollisia!'. Uusi ryhmä ('UUSI!'). Perhealennus 10 % muista perheenjäsenistä. Hinta poimittu järjestäjän virallisesta hinnastosta tunnin keston perusteella (lukujärjestys-PDF + hinnastotaulukko).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_03.json",
      "staging_id": "batch_2026-09-21_03-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_03/vapaatanssikoulu_lukujarjestys_0547bc806c7d.pdf",
      "capture_sha256": "0547bc806c7d2780bc9f9b9173ab4d6c69485775a7cff0dbe85a79a0bbcd884b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 46.04,
    "monthly_cost_basis": "180.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Pirkkola voimistelukoulu 3-5 v",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v",
    "parent_child": "unknown",
    "venue_name": "Elise Arena",
    "address": "Pirkkolan metsätie 8, 00630 Helsinki, Suomi",
    "district": "Pirkkola",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://elise.myclub.fi/flow/courses/10750832",
    "source_quote": "Pirkkola voimistelukoulu 3-5 v | 31.8.2026 17:00 - 14.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0376",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district Aikataulun PERUTTU-/näytös-/korvaava tapahtuma ei ole harjoitus eikä kerroissa mukana (Ilpon päätös 21.9.2026); ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10750832_fdd404199ce9.html",
      "capture_sha256": "fdd404199ce96e0008895dcb7ab9972c7b159781f95d49d72cc6dfea692810b8",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.81,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.48 kuukaudelle (2026-08-31–2026-12-14, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Kalasatama voimistelukoulu 5-6v",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v",
    "parent_child": "unknown",
    "venue_name": "Kalasataman peruskoulu",
    "address": "Polariksen katu 1, 00540 Helsinki",
    "district": "Kalasatama",
    "weekday": "tiistai",
    "start_time": "16:15",
    "end_time": "17:10",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10750361",
    "source_quote": "Kalasatama voimistelukoulu 5-6v | 1.9.2026 16:15 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0377",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district Aikataulun PERUTTU-/näytös-/korvaava tapahtuma ei ole harjoitus eikä kerroissa mukana (Ilpon päätös 21.9.2026); ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10750361_f2ac61378198.html",
      "capture_sha256": "f2ac613781985e8ef0ebfc53e7d956a5e13c4cbcde182f1e7cedc8d5f31ab5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 50.24,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.38 kuukaudelle (2026-09-01–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kalasatama",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Latokartano Esivalmennusryhmä 5-8 v",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5-8 v",
    "parent_child": "unknown",
    "venue_name": "Latokartanon liikuntahalli",
    "address": "Agronominkatu 26, 00790 Helsinki",
    "district": "Latokartano",
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 340.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10751154",
    "source_quote": "Latokartano Esivalmennusryhmä 5-8 v | 31.8.2026 17:00 - 16.12.2026 | Syyskauden 2026 harjoitusmaksu 340,00 €",
    "activity_id": "hel-2026-0378",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 379.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 340,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district Ryhmällä on useita harjoituspäiviä/kellonaikoja/paikkoja: epäselvät kentät jätetty tyhjiksi ja koko aikataulu on lähteen otteessa (Ilpon jonolinjaus 3, 22.9.2026). Riviä ei pilkota. Aikataulun PERUTTU-/näytös-/korvaava tapahtuma ei ole harjoitus eikä kerroissa mukana (Ilpon päätös 21.9.2026); ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10751154_f7fefc4265d9.html",
      "capture_sha256": "f7fefc4265d94d8c6da4d4bc308ec0c4500a7126098e357de479ffbd1adad02e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 95.82,
    "monthly_cost_basis": "340.0 € / term jaettuna 3.55 kuukaudelle (2026-08-31–2026-12-16, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Latokartano",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Kamppi Esivalmennusryhmä 5-8 v",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5-8 v",
    "parent_child": "unknown",
    "venue_name": "Ressun peruskoulu",
    "address": "Lapinlahdenkatu 10, 00180 Helsinki",
    "district": "Kamppi",
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 340.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10751193",
    "source_quote": "Kamppi Esivalmennusryhmä 5-8 v | 31.8.2026 18:00 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 340,00 €",
    "activity_id": "hel-2026-0379",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 379.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 340,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district Ryhmällä on useita harjoituspäiviä/kellonaikoja/paikkoja: epäselvät kentät jätetty tyhjiksi ja koko aikataulu on lähteen otteessa (Ilpon jonolinjaus 3, 22.9.2026). Riviä ei pilkota.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-015",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10751193_f8e1377bd52c.html",
      "capture_sha256": "f8e1377bd52cdba5bd8bf891718aed9b2c82e3e025a6a4d3d294a866f7b5f299",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 99.51,
    "monthly_cost_basis": "340.0 € / term jaettuna 3.42 kuukaudelle (2026-08-31–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kamppi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Pirkkolan Esivalmennusryhmä 5-8 v (2x/vko MA & KE)",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5-8 v",
    "parent_child": "unknown",
    "venue_name": "Elise Arena",
    "address": null,
    "district": "Pirkkola",
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 340.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10751236",
    "source_quote": "Pirkkolan Esivalmennusryhmä 5-8 v (2x/vko MA & KE) | 31.8.2026 18:00 - 14.12.2026 | Syyskauden 2026 harjoitusmaksu 340,00 €",
    "activity_id": "hel-2026-0380",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 379.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 340,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; manual: district from group name 'Pirkkolan Esivalmennusryhmä 5-8 v (2x/vko MA & KE)' at https://elise.myclub.fi/flow/courses/10751236 Ryhmällä on useita harjoituspäiviä/kellonaikoja/paikkoja: epäselvät kentät jätetty tyhjiksi ja koko aikataulu on lähteen otteessa (Ilpon jonolinjaus 3, 22.9.2026). Riviä ei pilkota. Aikataulun PERUTTU-/näytös-/korvaava tapahtuma ei ole harjoitus eikä kerroissa mukana (Ilpon päätös 21.9.2026); ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-016",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10751236_fb93fd25424c.html",
      "capture_sha256": "fb93fd25424c8782ce40677744b4489f482c5fb53a934ebc33045d94b10686c4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 97.63,
    "monthly_cost_basis": "340.0 € / term jaettuna 3.48 kuukaudelle (2026-08-31–2026-12-14, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Vesikirput 4-6v. SU 11:00",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v.",
    "parent_child": "unknown",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Itäkeskus",
    "weekday": "sunnuntai",
    "start_time": "11:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "UIMAKOULUT (17.8.-20.12.2026) 1 krt / vko",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://orca.myclub.fi/flow/events/10730747",
    "source_quote": "Vesikirput 4-6v. SU 11:00 | 23.8.2026 11:00 - 20.12.2026",
    "activity_id": "hel-2026-0381",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Orcan jäsenmaksu kalenterivuodelta 2026 (orca.fi/kausimaksut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_03; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-019",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_orca_10730747_d39d75e7bfa6.html",
      "capture_sha256": "d39d75e7bfa6f54064ce2fa949e145952716de2be15276c9d5fd97d481c9bbfe",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Itäkeskus",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Vesikilpikonnat 5-6v. SU 10:00",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "unknown",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Itäkeskus",
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "UIMAKOULUT (17.8.-20.12.2026) 1 krt / vko",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://orca.myclub.fi/flow/events/10730749",
    "source_quote": "Vesikilpikonnat 5-6v. SU 10:00 | 23.8.2026 10:00 - 20.12.2026",
    "activity_id": "hel-2026-0382",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Orcan jäsenmaksu kalenterivuodelta 2026 (orca.fi/kausimaksut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_03; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-020",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_orca_10730749_0a5e74629b70.html",
      "capture_sha256": "0a5e74629b701cebc74075649aa70e416139fd3117079cbb7a36e43b6856f5f5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Itäkeskus",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Vesikilpikonnat 5-6v. SU 11:30",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "unknown",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Itäkeskus",
    "weekday": "sunnuntai",
    "start_time": "11:30",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "UIMAKOULUT (17.8.-20.12.2026) 1 krt / vko",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://orca.myclub.fi/flow/events/10730742",
    "source_quote": "Vesikilpikonnat 5-6v. SU 11:30 | 23.8.2026 11:30 - 20.12.2026",
    "activity_id": "hel-2026-0383",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Orcan jäsenmaksu kalenterivuodelta 2026 (orca.fi/kausimaksut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_03; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-021",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_orca_10730742_23d5be0ffaed.html",
      "capture_sha256": "23d5be0ffaed0f89d44facdee14e0162067bbd46178ee465a10c0fa915c82baf",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Itäkeskus",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Vesimyyrät 5-7v LA 11:30",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7v",
    "parent_child": "unknown",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Itäkeskus",
    "weekday": "lauantai",
    "start_time": "11:30",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-22",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "UIMAKOULUT (17.8.-20.12.2026) 1 krt / vko",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://orca.myclub.fi/flow/events/10730748",
    "source_quote": "Vesimyyrät 5-7v LA 11:30 | 22.8.2026 11:30 - 19.12.2026",
    "activity_id": "hel-2026-0384",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Orcan jäsenmaksu kalenterivuodelta 2026 (orca.fi/kausimaksut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_03; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-022",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_orca_10730748_5b1aadcde7e1.html",
      "capture_sha256": "5b1aadcde7e12def7abcd7f7a94266dbe1163b9bcc416b8640cb2d434300fd85",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Itäkeskus",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Vesikirppu 4-6v. (tiistaisin klo 16:20)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v.",
    "parent_child": "unknown",
    "venue_name": "SYKin uimahalli",
    "address": "Isonnevantie 8, 00320 Helsinki",
    "district": "Etelä-Haaga",
    "weekday": "tiistai",
    "start_time": "16:20",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "UIMAKOULUT (17.8.-20.12.2026) 1 krt / vko",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://orca.myclub.fi/flow/events/10760257",
    "source_quote": "Vesikirppu 4-6v. (tiistaisin klo 16:20) | 1.9.2026 16:20 - 15.12.2026",
    "activity_id": "hel-2026-0385",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-15",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Orcan jäsenmaksu kalenterivuodelta 2026 (orca.fi/kausimaksut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_03 | district derived from postcode 00320 (postcode 00320 = Tilastokeskus Paavo postal area 'Etelä-Haaga') Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-023",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_orca_10760257_875913f54d25.html",
      "capture_sha256": "875913f54d25dcdf14ed2c2d07a6528097405042ce3fc8e7c97d564fef68dc66",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Etelä-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Vesikilpikonna 5-7v. (tiistaisin klo 16:50)",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7v.",
    "parent_child": "unknown",
    "venue_name": "SYKin uimahalli",
    "address": "Isonnevantie 8, 00320 Helsinki",
    "district": "Etelä-Haaga",
    "weekday": "tiistai",
    "start_time": "16:50",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "UIMAKOULUT (17.8.-20.12.2026) 1 krt / vko",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://orca.myclub.fi/flow/events/10760256",
    "source_quote": "Vesikilpikonna 5-7v. (tiistaisin klo 16:50) | 1.9.2026 16:50 - 15.12.2026",
    "activity_id": "hel-2026-0386",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-15",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Orcan jäsenmaksu kalenterivuodelta 2026 (orca.fi/kausimaksut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_03 | district derived from postcode 00320 (postcode 00320 = Tilastokeskus Paavo postal area 'Etelä-Haaga') Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-024",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_orca_10760256_a8fe20363032.html",
      "capture_sha256": "a8fe203630322f57e2e9e04873ebf1c14ef1f2ea1484c5b2bee66ff2faca62ee",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Etelä-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Vesikirppu 3-5v. (SU klo 10:30)",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5v.",
    "parent_child": "unknown",
    "venue_name": "SYKin uimahalli",
    "address": "Isonnevantie 8, 00320 Helsinki",
    "district": "Etelä-Haaga",
    "weekday": "sunnuntai",
    "start_time": "10:30",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-09-06",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "UIMAKOULUT (17.8.-20.12.2026) 1 krt / vko",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://orca.myclub.fi/flow/events/10760254",
    "source_quote": "Vesikirppu 3-5v. (SU klo 10:30) | 6.9.2026 10:30 - 20.12.2026",
    "activity_id": "hel-2026-0387",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-09-06",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Orcan jäsenmaksu kalenterivuodelta 2026 (orca.fi/kausimaksut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_03 | district derived from postcode 00320 (postcode 00320 = Tilastokeskus Paavo postal area 'Etelä-Haaga') Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-025",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_orca_10760254_99a459091574.html",
      "capture_sha256": "99a4590915748280f775795f6a4a9ce7421cc75474aae306f183a8e7c997acb3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Etelä-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Vesikilpikonna 5-7v. (SU klo 10)",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7v.",
    "parent_child": "unknown",
    "venue_name": "SYKin uimahalli",
    "address": "Isonnevantie 8, 00320 Helsinki",
    "district": "Etelä-Haaga",
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-09-06",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "UIMAKOULUT (17.8.-20.12.2026) 1 krt / vko",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://orca.myclub.fi/flow/events/10760253",
    "source_quote": "Vesikilpikonna 5-7v. (SU klo 10) | 6.9.2026 10:00 - 20.12.2026",
    "activity_id": "hel-2026-0388",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-09-06",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Orcan jäsenmaksu kalenterivuodelta 2026 (orca.fi/kausimaksut)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_03 | district derived from postcode 00320 (postcode 00320 = Tilastokeskus Paavo postal area 'Etelä-Haaga') Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-026",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_orca_10760253_6a2407977d8d.html",
      "capture_sha256": "6a2407977d8dcac8c92199a6a09aa2aa05d422b076eb46453fae2eadc32544db",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Etelä-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingfors Skridskoklubb rf",
    "group_name": "Lasten luistelukoulu 3–7-vuotiaille, Töölö (ke 17:45)",
    "min_age": 3,
    "max_age": 7,
    "eligibility_text": "3–7-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Helsingin jäähalli, harjoitushalli",
    "address": "Nordenskiöldinkatu 11–13",
    "district": "Töölö",
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 14,
    "price_eur": 155.0,
    "price_basis": "syyskausi, yksi harjoitus viikossa (14 krt); normaalihinta 155 €, uusi alle 4-v 80 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Uudelta luistelijalta 30 € jäsenmaksu ja alle 15-vuotiaalta 15 € luistelukoulupassi.",
    "equipment_notes": null,
    "trial_info": "Ilmoittautumisen voi perua veloituksetta ensimmäisen kerran jälkeen.",
    "enrollment_status": "unknown",
    "source_url": "https://hsk.fi/luistelukoulut/lasten-ja-nuorten-luistelukoulut/",
    "source_quote": "Töölö: lasten luistelukoulu 3–7-vuotiaat, keskiviikko 17:45–18:30; syyskausi 155 €, 14 krt; uusi alle 4-v 80 €; uudelta luistelijalta jäsenmaksu 30 € + passi 15 €.",
    "activity_id": "hel-2026-0389",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-08",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-09-08",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://hsk.fi/luistelukoulut/lasten-ja-nuorten-luistelukoulut/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "conditional",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 155,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Uusi alle 4-vuotias (luistelukoulun alkaessa): 80 € / syyskausi, ks. price_options."
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "uusi luistelija kaudella 2026–2027",
        "note": "voimassa 1.4.–31.3."
      },
      {
        "type": "skating_school_pass",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "uusi alle 15-vuotias",
        "note": "sisältää Skating Finlandin luistelukoululaisen vakuutuksen; voimassa 1.5.–30.4."
      }
    ],
    "price_options": [
      {
        "label": "Uusi alle 4-vuotias",
        "amount_eur": 125.0,
        "applies_if": "80 € kausimaksu + 30 € jäsenmaksu + 15 € passi",
        "includes": null
      },
      {
        "label": "Muu uusi luistelija",
        "amount_eur": 200.0,
        "applies_if": "155 € kausimaksu + 30 € jäsenmaksu + 15 € passi",
        "includes": null
      },
      {
        "label": "Jatkava luistelija",
        "amount_eur": 155.0,
        "applies_if": "jos saman jäsen-/passikauden maksut ovat jo voimassa",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Sisarusalennus kausimaksusta -10 % saman perheen toiselle lapselle.",
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; manual: group_name from manual row; manual: venue_name from manual row; manual: address from manual row; manual: district from manual row; manual: eligibility_text from manual row; manual: min_age from manual row; manual: max_age from manual row; manual: weekday from manual row; manual: start_time from manual row; manual: end_time from manual row; manual: season_start_date from manual row; manual: season_end_date from manual row; manual: sessions_count from manual row; manual: price_eur from manual row; manual: price_basis from manual row; manual: billing_period from manual row; manual: price_period_start from manual row; manual: price_period_end from manual row; manual: membership_fee_eur from manual row; manual: known_min_total_eur from manual row; manual: fee_components from manual row Ehdollinen hinta (Ilpon jonolinjaus 4, 22.9.2026): price_eur on normaalihinta 155 €, ehdolliset hinnat price_options-alkioina; known_min_total_eur laskettu koodilla pakollisista maksuista. availability_status=unknown on sallittu tila, ei review-syy (Ilpon päätös 21.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-045",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/hsk_lasten_ja_nuorten_luistelukoulut_3033e605e81b.html",
      "capture_sha256": "3033e605e81bb6d6ac37e7c47a37461df29317f5e59ac799d5caea1964316c01",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 51.89,
    "monthly_cost_basis": "155.0 € / term jaettuna 3.22 kuukaudelle (2026-09-08–2026-12-14, price_period_start) + membership 30 €/v ÷ 12 + skating_school_pass 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingfors Skridskoklubb rf",
    "group_name": "Lasten luistelukoulu 3–7-vuotiaille, Salmisaari (la 10:45)",
    "min_age": 3,
    "max_age": 7,
    "eligibility_text": "3–7-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Salmisaaren jäähalli, kenttä 1",
    "address": "Energiakatu 5",
    "district": "Salmisaari",
    "weekday": "lauantai",
    "start_time": "10:45",
    "end_time": "11:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 14,
    "price_eur": 155.0,
    "price_basis": "syyskausi, yksi harjoitus viikossa (14 krt); normaalihinta 155 €, uusi alle 4-v 80 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Uudelta luistelijalta 30 € jäsenmaksu ja alle 15-vuotiaalta 15 € luistelukoulupassi.",
    "equipment_notes": null,
    "trial_info": "Ilmoittautumisen voi perua veloituksetta ensimmäisen kerran jälkeen.",
    "enrollment_status": "unknown",
    "source_url": "https://hsk.fi/luistelukoulut/lasten-ja-nuorten-luistelukoulut/",
    "source_quote": "Salmisaari: lasten luistelukoulu 3–7-vuotiaat, lauantai 10:45–11:30; syyskausi 155 €, 14 krt; uusi alle 4-v 80 €; uudelta luistelijalta jäsenmaksu 30 € + passi 15 €.",
    "activity_id": "hel-2026-0390",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-08",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-09-08",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://hsk.fi/luistelukoulut/lasten-ja-nuorten-luistelukoulut/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "conditional",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 155,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Uusi alle 4-vuotias (luistelukoulun alkaessa): 80 € / syyskausi, ks. price_options."
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "uusi luistelija kaudella 2026–2027",
        "note": "voimassa 1.4.–31.3."
      },
      {
        "type": "skating_school_pass",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "uusi alle 15-vuotias",
        "note": "sisältää Skating Finlandin luistelukoululaisen vakuutuksen; voimassa 1.5.–30.4."
      }
    ],
    "price_options": [
      {
        "label": "Uusi alle 4-vuotias",
        "amount_eur": 125.0,
        "applies_if": "80 € kausimaksu + 30 € jäsenmaksu + 15 € passi",
        "includes": null
      },
      {
        "label": "Muu uusi luistelija",
        "amount_eur": 200.0,
        "applies_if": "155 € kausimaksu + 30 € jäsenmaksu + 15 € passi",
        "includes": null
      },
      {
        "label": "Jatkava luistelija",
        "amount_eur": 155.0,
        "applies_if": "jos saman jäsen-/passikauden maksut ovat jo voimassa",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Sisarusalennus kausimaksusta -10 % saman perheen toiselle lapselle.",
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; manual: group_name from manual row; manual: venue_name from manual row; manual: address from manual row; manual: district from manual row; manual: eligibility_text from manual row; manual: min_age from manual row; manual: max_age from manual row; manual: weekday from manual row; manual: start_time from manual row; manual: end_time from manual row; manual: season_start_date from manual row; manual: season_end_date from manual row; manual: sessions_count from manual row; manual: price_eur from manual row; manual: price_basis from manual row; manual: billing_period from manual row; manual: price_period_start from manual row; manual: price_period_end from manual row; manual: membership_fee_eur from manual row; manual: known_min_total_eur from manual row; manual: fee_components from manual row Ehdollinen hinta (Ilpon jonolinjaus 4, 22.9.2026): price_eur on normaalihinta 155 €, ehdolliset hinnat price_options-alkioina; known_min_total_eur laskettu koodilla pakollisista maksuista. availability_status=unknown on sallittu tila, ei review-syy (Ilpon päätös 21.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-046",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/hsk_lasten_ja_nuorten_luistelukoulut_3033e605e81b.html",
      "capture_sha256": "3033e605e81bb6d6ac37e7c47a37461df29317f5e59ac799d5caea1964316c01",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 51.89,
    "monthly_cost_basis": "155.0 € / term jaettuna 3.22 kuukaudelle (2026-09-08–2026-12-14, price_period_start) + membership 30 €/v ÷ 12 + skating_school_pass 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Salmisaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingfors Skridskoklubb rf",
    "group_name": "Lasten luistelukoulu 3–7-vuotiaille, Töölö (su 11:15)",
    "min_age": 3,
    "max_age": 7,
    "eligibility_text": "3–7-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Helsingin jäähalli, harjoitushalli",
    "address": "Nordenskiöldinkatu 11–13",
    "district": "Töölö",
    "weekday": "sunnuntai",
    "start_time": "11:15",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 155.0,
    "price_basis": "syyskausi, yksi harjoitus viikossa (14 krt); normaalihinta 155 €, uusi alle 4-v 80 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Uudelta luistelijalta 30 € jäsenmaksu ja alle 15-vuotiaalta 15 € luistelukoulupassi.",
    "equipment_notes": null,
    "trial_info": "Ilmoittautumisen voi perua veloituksetta ensimmäisen kerran jälkeen.",
    "enrollment_status": "unknown",
    "source_url": "https://hsk.fi/luistelukoulut/lasten-ja-nuorten-luistelukoulut/",
    "source_quote": "Töölö: lasten luistelukoulu 3–7-vuotiaat, sunnuntai 11:15–12:00; syyskausi 155 €, 14 krt; uusi alle 4-v 80 €; uudelta luistelijalta jäsenmaksu 30 € + passi 15 €.",
    "activity_id": "hel-2026-0391",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-08",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-09-08",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "conditional",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 155,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Uusi alle 4-vuotias (luistelukoulun alkaessa): 80 € / syyskausi, ks. price_options."
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "uusi luistelija kaudella 2026–2027",
        "note": "voimassa 1.4.–31.3."
      },
      {
        "type": "skating_school_pass",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "uusi alle 15-vuotias",
        "note": "sisältää Skating Finlandin luistelukoululaisen vakuutuksen; voimassa 1.5.–30.4."
      }
    ],
    "price_options": [
      {
        "label": "Uusi alle 4-vuotias",
        "amount_eur": 125.0,
        "applies_if": "80 € kausimaksu + 30 € jäsenmaksu + 15 € passi",
        "includes": null
      },
      {
        "label": "Muu uusi luistelija",
        "amount_eur": 200.0,
        "applies_if": "155 € kausimaksu + 30 € jäsenmaksu + 15 € passi",
        "includes": null
      },
      {
        "label": "Jatkava luistelija",
        "amount_eur": 155.0,
        "applies_if": "jos saman jäsen-/passikauden maksut ovat jo voimassa",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Sisarusalennus kausimaksusta -10 % saman perheen toiselle lapselle.",
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; manual: group_name from manual row; manual: venue_name from manual row; manual: address from manual row; manual: district from manual row; manual: eligibility_text from manual row; manual: min_age from manual row; manual: max_age from manual row; manual: weekday from manual row; manual: start_time from manual row; manual: end_time from manual row; manual: season_start_date from manual row; manual: season_end_date from manual row; manual: price_eur from manual row; manual: price_basis from manual row; manual: billing_period from manual row; manual: price_period_start from manual row; manual: price_period_end from manual row; manual: membership_fee_eur from manual row; manual: known_min_total_eur from manual row; manual: fee_components from manual row Ehdollinen hinta (Ilpon jonolinjaus 4, 22.9.2026): price_eur on normaalihinta 155 €, ehdolliset hinnat price_options-alkioina; known_min_total_eur laskettu koodilla pakollisista maksuista. availability_status=unknown on sallittu tila, ei review-syy (Ilpon päätös 21.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-047",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/hsk_lasten_ja_nuorten_luistelukoulut_3033e605e81b.html",
      "capture_sha256": "3033e605e81bb6d6ac37e7c47a37461df29317f5e59ac799d5caea1964316c01",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 51.89,
    "monthly_cost_basis": "155.0 € / term jaettuna 3.22 kuukaudelle (2026-09-08–2026-12-14, price_period_start) + membership 30 €/v ÷ 12 + skating_school_pass 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HJK Juniorit",
    "group_name": "Meilahti perhefutis loppukesä 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "1–3-vuotiaat, jotka osaavat jo kävellä",
    "parent_child": "yes",
    "venue_name": "Lehtikuusentien kenttä",
    "address": "Lehtikuusentie 5, 00270 Helsinki",
    "district": "Meilahti",
    "weekday": "lauantai",
    "start_time": "09:00",
    "end_time": "09:45",
    "season": "loppukesä 2026",
    "start_date": "2026-08-08",
    "end_date": "2026-10-10",
    "sessions_count": 10,
    "price_eur": 99.0,
    "price_basis": "10 harjoituksen kurssi",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet ja juomapullo; vakuutus ja HJK-tuote sisältyvät.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "source_quote": "Meilahti perhefutis loppukesä 2026 - 8.8. - 10.10.2026; harjoituksia yhteensä 10; Lehtikuusentien kenttä; kurssinhinta 99€; jäsenmaksu 30 €, mikäli ei vielä maksettu.",
    "activity_id": "hel-2026-0392",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 12.9,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-08-08",
    "price_period_end": "2026-10-10",
    "season_start_date": "2026-08-08",
    "season_end_date": "2026-10-10",
    "birth_year_min": 2024,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.hjk-j.fi/palvelut/perhefutis/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "HJK ry:n jäsenmaksu; ei makseta, jos jo maksettu saman jäsenkauden aikana."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "kurssi alkanut 8.8.2026; päättyy 10.10.2026 (lähde ei kerro ilmoittautumisen tilaa → availability unknown). Kerätty erän batch_2026-09-21_01 deferred-listalta. Sivun ikäteksti viittaa vielä kauteen 2025–2026 ('2024–2025 syntyneet'); ikäraja 1–3 v otettu yleislauseesta. district palautettu ryhmän nimestä ('Meilahti perhefutis loppukesä 2026'); aiempi tyhjennys oli kiertotie vanhalle duplikaattisäännölle. Pian päättyvä/alkanut kurssi julkaistaan; käyttöliittymä merkitsee tilan end_date-kentästä (Ilpon jonolinjaus 7, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/hjk_perhefutis_444adf31a99d.html",
      "capture_sha256": "444adf31a99d8e39d400dc2b9f92405eced38033a1a3e0db28067175cb40dee2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 49.58,
    "monthly_cost_basis": "99.0 € / course jaettuna 2.10 kuukaudelle (2026-08-08–2026-10-10, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Meilahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Perhefutis Kannelmäki syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024-2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "yes",
    "venue_name": "Kannelmäen peruskoulun sali",
    "address": "Kanneltie 1",
    "district": "Kannelmäki",
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:40",
    "season": "syksy 2026",
    "start_date": "2026-09-08",
    "end_date": "2026-11-24",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskausi, sis. ohjauksen 11 krt, lapselle vakuutuksen, palkinnon ja vuoden 10 € jäsenmaksun (vuoden ensimmäinen maksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntaleikki.fi/perhefutis/",
    "source_quote": "Perhefutis Kannelmäki, 2024-2023-2022-syntyneet; tiistai; 11 harjoituspäivää 2026-09-08–2026-11-24. Perhefutis: kausi maksaa 105 euroa (sis. ohjauksen 11krt).",
    "activity_id": "hel-2026-0393",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": 9.55,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://liikuntaleikki.fi/info/",
    "billing_period": "term",
    "price_period_start": "2026-09-08",
    "price_period_end": "2026-11-24",
    "season_start_date": "2026-09-08",
    "season_end_date": "2026-11-24",
    "birth_year_min": 2022,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntaleikki.fi/info/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, lapsen vakuutuksen ja palkinnon; vuoden ensimmäiseen osallistumismaksuun sisältyy 10 € jäsenmaksu."
      }
    ],
    "price_options": [
      {
        "label": "Kaksi lasta samasta perheestä",
        "amount_eur": 175,
        "applies_if": "kaksi saman perheen lasta mukana",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_03 deferred-listalta. Kurssi alkanut 8.9.2026. Ilmoittautuminen Ilmarix-lomakkeella 'Perhefutis Syksy 2026 Pohjoinen - läntinen' (sama 105 €, 11 krt); lomakkeella ei ryhmäkohtaista täynnä-merkintää → availability unknown. Ikä syntymävuosina. Salikauden aika 29.9.2026 alkaen klo 18:00–18:40 (syyskuussa kentällä klo 17:00–17:40). Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-016",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/liikuntaleikki_perhefutis_9a022038f12f.html",
      "capture_sha256": "9a022038f12f1ad57f0fad5d54f9b79c6c52d609d1665c86ea4ae103deded4f1",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-08–2026-11-24, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kannelmäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Vapaa Tanssikoulu (Laajasalon opisto)",
    "group_name": "Lapsi & aikuinen -tanssi 2–4 v. LT4520 (ke 16:30)",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2–4 v. (lapsi & aikuinen)",
    "parent_child": "yes",
    "venue_name": "Vapaa Tanssikoulu, Sali 2",
    "address": "Mekaanikonkatu 17",
    "district": "Herttoniemi",
    "weekday": "keskiviikko",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026 (lukuvuosi 2026–2027)",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 230.0,
    "price_basis": "Syyslukukauden oppilasmaksu, 45 min tunti 1 krt/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vapaatanssikoulu.fi/wp-content/uploads/2026/08/Vata_lukuja%CC%88rjestys-2026-2027.pdf",
    "source_quote": "Lapsi & aikuinen -tanssi 2–4 v. 16.30–17.15 LT4520; lukukausimaksu 45 min 1 krt/vko 230 €; syyskaudella opetuskertoja on 16.",
    "activity_id": "hel-2026-0394",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 230.0,
    "price_per_session_eur": 14.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://vapaatanssikoulu.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vapaatanssikoulu.fi/tunneille-ilmoittautuminen/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 230,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Lukukausimaksu 45 min / 1 krt vko."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_03 deferred-listalta. Kurssi alkanut viikolla 34 (syyskausi alkoi 17.8.2026). Ilmoittaudutaan koko lukuvuodeksi, laskutus lukukausittain. Lukujärjestys 13.08.2026, 'Muutokset mahdollisia!'. Perhealennus 10 % muista perheenjäsenistä. PDF ei kerro ryhmäkohtaista saatavuutta. Perhetunti: hinta näytetään 'lapsi + aikuinen' -huomautuksella; hinnasto ei kerro kattaako se aikuisen (price_covers.verified=false). Erillistä aikuisen maksua ei oleteta (Ilpon päätös 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-026",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_06/vata_lukujarjestys_0547bc806c7d.pdf",
      "capture_sha256": "0547bc806c7d2780bc9f9b9173ab4d6c69485775a7cff0dbe85a79a0bbcd884b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "230.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Vapaa Tanssikoulu (Laajasalon opisto)",
    "group_name": "Perhetanssi 5–8 v. & aikuinen LT4540 (la 11:00)",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5–8 v. (lapsi & aikuinen)",
    "parent_child": "yes",
    "venue_name": "Vapaa Tanssikoulu, Sali 1",
    "address": "Mekaanikonkatu 17",
    "district": "Herttoniemi",
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "11:45",
    "season": "syksy 2026 (lukuvuosi 2026–2027)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 230.0,
    "price_basis": "Syyslukukauden oppilasmaksu, 45 min tunti 1 krt/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vapaatanssikoulu.fi/wp-content/uploads/2026/08/Vata_lukuja%CC%88rjestys-2026-2027.pdf",
    "source_quote": "Perhetanssi 5–8 v. & aikuinen 11.00–11.45 LT4540; lukukausimaksu 45 min 1 krt/vko 230 €; syyskaudella opetuskertoja on 16.",
    "activity_id": "hel-2026-0395",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 230.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://vapaatanssikoulu.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 230,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Lukukausimaksu 45 min / 1 krt vko."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_03 deferred-listalta. Kurssi alkanut viikolla 34 (syyskausi alkoi 17.8.2026). Ilmoittaudutaan koko lukuvuodeksi, laskutus lukukausittain. Lukujärjestys 13.08.2026, 'Muutokset mahdollisia!'. Perhealennus 10 % muista perheenjäsenistä. PDF ei kerro ryhmäkohtaista saatavuutta. Ikäraja 5–8 v osuu 2–6 v rajaukseen vain osittain (5–6 v). Perhetunti: hinta näytetään 'lapsi + aikuinen' -huomautuksella; hinnasto ei kerro kattaako se aikuisen (price_covers.verified=false). Erillistä aikuisen maksua ei oleteta (Ilpon päätös 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-029",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_06/vata_lukujarjestys_0547bc806c7d.pdf",
      "capture_sha256": "0547bc806c7d2780bc9f9b9173ab4d6c69485775a7cff0dbe85a79a0bbcd884b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "230.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tennis",
    "provider": "HVS-Tennis ry",
    "group_name": "U10 Tempon Team s. 2020 (kaksi kertaa viikossa), kausi 2026–2027",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "s. 2020",
    "parent_child": "unknown",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "kausi 2026–2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 57.0,
    "price_basis": "Hinta 57 €/vko (tuntihinta 19 €/h); 1 x 2h ti 17.00-19.00, Tali + 1 x 1h to 18.30-19.30, Taivallahti",
    "membership_fee_eur": 20,
    "other_required_fees": "Vuoden 2027 jäsenmaksu (summa vahvistamatta).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://hvstennis.fi/hinnasto/",
    "source_quote": "Tempon Team s. 2020: 1 x 2h ti 17.00-19.00, Tali; 1 x 1h to 18.30-19.30, Taivallahti; Hinta 57 €/vko (tuntihinta 19 €/h). Jäsenmaksu juniorit 20 € (2026), 2027 vahvistamatta.",
    "activity_id": "hel-2026-0396",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 77.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "week",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2020,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 57,
        "mandatory": true,
        "included": true,
        "recurrence": "week",
        "applies_if": null,
        "note": "Hinta 57 €/vko (tuntihinta 19 €/h) – alkuperäinen jakso viikko, ei muunnettu."
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "vuoden 2026 jäsenmaksu, jos ei jo maksettu",
        "note": "Juniorien jäsenmaksu 2026; laskutetaan vuoden ensimmäisen valmennuslaskun yhteydessä."
      },
      {
        "type": "membership",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "vuoden 2027 jäsenmaksu (kausi jatkuu 2027)",
        "note": "Vuoden 2027 jäsenmaksua ei ole vielä vahvistettu."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Tempon Teamiläiset saavat alennuksen kesän 2027 kesäleireistä.",
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_02 notes-kentän lykättyjen listalta. Juniorit-sivu: 'Tempon Teamissä (s.2020-2021) treenataan kaksi kertaa viikossa saman peliporukan kanssa'. known_min_total_eur = viikkohinta + 2026 jäsenmaksu (eri jaksot, ei vertailukelpoinen). Lapsi täyttää vuonna 2026 6 v. Ryhmällä on useita harjoituspäiviä/kellonaikoja/paikkoja: epäselvät kentät jätetty tyhjiksi ja koko aikataulu on lähteen otteessa (Ilpon jonolinjaus 3, 22.9.2026). Riviä ei pilkota. Pakollinen maksu hinnoittelematta → julkaistaan 'hinta osittain tiedossa' -merkinnällä (price_completeness=incomplete, Ilpon jonolinjaus 6, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-033",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/hvs_hinnasto_8f689bc3ae5b.html",
      "capture_sha256": "8f689bc3ae5b6f0c33ef147d5e520f7369c74273f125521fbefe9cab3699753b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa week ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tennis",
    "provider": "HVS-Tennis ry",
    "group_name": "U10 Tempon Team s. 2021 (kaksi kertaa viikossa), kausi 2026–2027",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "s. 2021",
    "parent_child": "unknown",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "kausi 2026–2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 47.5,
    "price_basis": "Hinta 47,5 €/vko (tuntihinta 19 €/h); 1 x 1h ma 17.30-18.30 Taivallahti + 1 x 1,5 ke 17.00-18.30, Tali",
    "membership_fee_eur": 20,
    "other_required_fees": "Vuoden 2027 jäsenmaksu (summa vahvistamatta).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://hvstennis.fi/hinnasto/",
    "source_quote": "Tempon Team s. 2021: 1 x 1h ma 17.30-18.30 Taivallahti; 1 x 1,5 ke 17.00-18.30, Tali; Hinta 47,5 €/vko (tuntihinta 19 €/h). Jäsenmaksu juniorit 20 € (2026), 2027 vahvistamatta.",
    "activity_id": "hel-2026-0397",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 67.5,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "week",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2021,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 47.5,
        "mandatory": true,
        "included": true,
        "recurrence": "week",
        "applies_if": null,
        "note": "Hinta 47,5 €/vko (tuntihinta 19 €/h) – alkuperäinen jakso viikko, ei muunnettu."
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "vuoden 2026 jäsenmaksu, jos ei jo maksettu",
        "note": "Juniorien jäsenmaksu 2026; laskutetaan vuoden ensimmäisen valmennuslaskun yhteydessä."
      },
      {
        "type": "membership",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "vuoden 2027 jäsenmaksu (kausi jatkuu 2027)",
        "note": "Vuoden 2027 jäsenmaksua ei ole vielä vahvistettu."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Tempon Teamiläiset saavat alennuksen kesän 2027 kesäleireistä.",
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_02 notes-kentän lykättyjen listalta. Juniorit-sivu: 'Tempon Teamissä (s.2020-2021) treenataan kaksi kertaa viikossa saman peliporukan kanssa'. known_min_total_eur = viikkohinta + 2026 jäsenmaksu (eri jaksot, ei vertailukelpoinen). Lapsi täyttää vuonna 2026 5 v. Ryhmällä on useita harjoituspäiviä/kellonaikoja/paikkoja: epäselvät kentät jätetty tyhjiksi ja koko aikataulu on lähteen otteessa (Ilpon jonolinjaus 3, 22.9.2026). Riviä ei pilkota. Pakollinen maksu hinnoittelematta → julkaistaan 'hinta osittain tiedossa' -merkinnällä (price_completeness=incomplete, Ilpon jonolinjaus 6, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-034",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/hvs_hinnasto_8f689bc3ae5b.html",
      "capture_sha256": "8f689bc3ae5b6f0c33ef147d5e520f7369c74273f125521fbefe9cab3699753b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa week ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 3–4 v. (26552)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kasarmitori",
    "address": "Kasarmikatu 19 (torin puoli), Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-10",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssileikki 3-4 v.: 26552 Ma 17:30 KAS5 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0398",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "inferred",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_02 notes-kentän lykättyjen listalta (HTO:n muut 2–6-v. ryhmät keskustassa/lännessä). Kurssi alkanut 10.8.2026. Vaihtoehtoinen maksutapa jaksoittain (4 vk jakso, 45 min 52 € / 60 min 63 €; jaksot 3 ja 6 +25 %) – rivillä lukukausihinta (sis. 10 % alennus). PDF: 'Näillä tunneilla lapsen tulee saavuttaa tunnin minimi-ikä sen lukukauden aikana, jolloin tunti alkaa. Lapset osallistuvat tunneille ilman huoltajaa.' | Jaksohinnat korjattu 22.9.2026: PDF s. 3 'Jaksoittain' 1 kerta/vko -rivin sarakepaikat (tarkistettu koodilla) 45 min = 52 €, 60 min = 63 € (30 min tyhjä); 52 € × 5,25 × 0,9 = 245,70 €. Kertamäärä 21 (inferred) ei ole järjestäjän virallisesti ilmoittama ryhmäkohtainen luku → ei julkaista (Ilpon jonolinjaus 1, 22.9.2026): sessions_count=null, ei kertahintaa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-035",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_06/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kaartinkaupunki",
    "district_basis": "geokoodattu osoite -> sub_district 'Kaartinkaupunki' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Tanssileikki 4–5 v. (26472)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kampin studiot",
    "address": "Salomonkatu 17/ Fredrikinkatu 46 (Autotalo), 2. kerros, Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-13",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Tanssileikki 4-5 v.: 26472 To 17:30 KAMP4 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0399",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "inferred",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_02 notes-kentän lykättyjen listalta (HTO:n muut 2–6-v. ryhmät keskustassa/lännessä). Kurssi alkanut 13.8.2026. Vaihtoehtoinen maksutapa jaksoittain (4 vk jakso, 45 min 52 € / 60 min 63 €; jaksot 3 ja 6 +25 %) – rivillä lukukausihinta (sis. 10 % alennus). PDF: 'Näillä tunneilla lapsen tulee saavuttaa tunnin minimi-ikä sen lukukauden aikana, jolloin tunti alkaa. Lapset osallistuvat tunneille ilman huoltajaa.' | Jaksohinnat korjattu 22.9.2026: PDF s. 3 'Jaksoittain' 1 kerta/vko -rivin sarakepaikat (tarkistettu koodilla) 45 min = 52 €, 60 min = 63 € (30 min tyhjä); 52 € × 5,25 × 0,9 = 245,70 €. Kertamäärä 21 (inferred) ei ole järjestäjän virallisesti ilmoittama ryhmäkohtainen luku → ei julkaista (Ilpon jonolinjaus 1, 22.9.2026): sessions_count=null, ei kertahintaa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-036",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_06/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kamppi",
    "district_basis": "geokoodattu osoite -> sub_district 'Kamppi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Luova tanssi 5–6 v. (26493)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Leipätehdas",
    "address": "Kaikukatu 4 A, piharakennus: 6. krs., Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-10",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "full",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Luova tanssi 5-6 v.: 26493 Ma 17:45 LEI7 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0400",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "inferred",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_02 notes-kentän lykättyjen listalta (HTO:n muut 2–6-v. ryhmät keskustassa/lännessä). Kurssi alkanut 10.8.2026. Vaihtoehtoinen maksutapa jaksoittain (4 vk jakso, 45 min 52 € / 60 min 63 €; jaksot 3 ja 6 +25 %) – rivillä lukukausihinta (sis. 10 % alennus). PDF: 'Näillä tunneilla lapsen tulee saavuttaa tunnin minimi-ikä sen lukukauden aikana, jolloin tunti alkaa. Lapset osallistuvat tunneille ilman huoltajaa.' | Jaksohinnat korjattu 22.9.2026: PDF s. 3 'Jaksoittain' 1 kerta/vko -rivin sarakepaikat (tarkistettu koodilla) 45 min = 52 €, 60 min = 63 € (30 min tyhjä); 52 € × 5,25 × 0,9 = 245,70 €. Kertamäärä 21 (inferred) ei ole järjestäjän virallisesti ilmoittama ryhmäkohtainen luku → ei julkaista (Ilpon jonolinjaus 1, 22.9.2026): sessions_count=null, ei kertahintaa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-037",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_06/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Sörnäinen",
    "district_basis": "geokoodattu osoite -> neighborhood 'Sörnäinen' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Nykytanssi Alkeet 1 6–8 v. (26518)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kampin studiot",
    "address": "Salomonkatu 17/ Fredrikinkatu 46 (Autotalo), 2. kerros, Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "18:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-11",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Nykytanssi 6-8 v.: 26518 Ti 17:15 KAMP2 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0401",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.helsingintanssiopisto.fi/hinnat/hinnat-2026-2027/",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "inferred",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_02 notes-kentän lykättyjen listalta (HTO:n muut 2–6-v. ryhmät keskustassa/lännessä). Kurssi alkanut 11.8.2026. Vaihtoehtoinen maksutapa jaksoittain (4 vk jakso, 45 min 52 € / 60 min 63 €; jaksot 3 ja 6 +25 %) – rivillä lukukausihinta (sis. 10 % alennus). PDF: 'Kouluikäisistä alkaen ikäryhmät ovat viitteellisiä.' Sopii vain 6-vuotiaille (ikäraja 6–8 v; rajaus alle kouluikäiset 0–6 v) – mukana Ilpon päätöksellä 21.9.2026. | Jaksohinnat korjattu 22.9.2026: PDF s. 3 'Jaksoittain' 1 kerta/vko -rivin sarakepaikat (tarkistettu koodilla) 45 min = 52 €, 60 min = 63 € (30 min tyhjä); 52 € × 5,25 × 0,9 = 245,70 €. Kertamäärä 21 (inferred) ei ole järjestäjän virallisesti ilmoittama ryhmäkohtainen luku → ei julkaista (Ilpon jonolinjaus 1, 22.9.2026): sessions_count=null, ei kertahintaa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-038",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_06/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kamppi",
    "district_basis": "geokoodattu osoite -> sub_district 'Kamppi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Tapanilan Erä ry",
    "group_name": "Perheliikunta 1-3 v. / Sanna Vainio",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3 v.",
    "parent_child": "yes",
    "venue_name": "Tapanilan Urheilukeskus / LS 4",
    "address": null,
    "district": "Tapanila",
    "weekday": "maanantai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 137.0,
    "price_basis": "Perheliikunta ma klo 16.45-17.30 / Syyskausi 31.8. – 7.12.2026 (ei tuntia 12.10.)",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10847173",
    "source_quote": "Perheliikunta 1-3 v. / Sanna Vainio | 31.8.2026 16:45 - 7.12.2026 | Perheliikunta ma klo 16.45-17.30 / Syyskausi 31.8. – 7.12.2026 (ei tuntia 12.10.) 137,00 €; Toinen lapsi 38,00 €",
    "activity_id": "hel-2026-0402",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 151.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 137,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [
      {
        "label": "Toinen lapsi 38,00 €",
        "amount_eur": 38.0,
        "applies_if": "toinen lapsi samasta perheestä samaan ryhmään",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_eur from https://tapanilanera.myclub.fi/flow/courses/10847173 ('Hintatiedot: 'Perheliikunta ma klo 16.45-17.30 / Syyskausi 31.8. – 7.12.2026 (ei tuntia 12.10.) 137,00 €'; kuvaus: 'Kausimaksu 137 € yksi lapsi / 175 €, jos on useampi lapsi (alle 1 v. ilmaiseksi)'') | manual: price_basis from https://tapanilanera.myclub.fi/flow/courses/10847173 ('Perheliikunta ma klo 16.45-17.30 / Syyskausi 31.8. – 7.12.2026 (ei tuntia 12.10.)') | manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10847173 ('hinnan nimi 'Perheliikunta ma klo 16.45-17.30 / Syyskausi 31.8. – 7.12.2026 (ei tuntia 12.10.)' (sana 'Syyskau'); kuvaus 'Kausimaksu'') | manual: price_options from https://tapanilanera.myclub.fi/flow/courses/10847173 ('Hintatiedot: 'Toinen lapsi 38,00 €'; kuvaus: 'Kausimaksu 137 € yksi lapsi / 175 €, jos on useampi lapsi (alle 1 v. ilmaiseksi)'') | manual: fee_components from https://tapanilanera.myclub.fi/flow/courses/10847173 ('Vaadittavat tuotteet: 'Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026 14,00 €'') | manual: parent_child from https://tapanilanera.myclub.fi/flow/courses/10847173 ('Tunti on tarkoitettu 1-3 -vuotiaille lapsille ja heidän vanhemmilleen.') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10847173 ('paikka 'Tapanilan Urheilukeskus / LS 4' = kanonisen rivin hel-2026-0023 paikka 'Tapanilan Urheilukeskus, monitoimihalli' (district Tapanila)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10847173_ec58e20334b8.html",
      "capture_sha256": "ec58e20334b85e4c42766ca61cfdced92b1ac5ad27f535fa2f266bc311a5d1c4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.12,
    "monthly_cost_basis": "137.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Tapanilan Erä ry",
    "group_name": "Perheliikunta 2-3 v. / Henna Ustinov",
    "min_age": 2,
    "max_age": 3,
    "eligibility_text": "2-3 v.",
    "parent_child": "yes",
    "venue_name": "Tapanilan Urheilukeskus / LS 4",
    "address": null,
    "district": "Tapanila",
    "weekday": "keskiviikko",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 137.0,
    "price_basis": "Perheliikunta ke klo 17.30-18.15 / Syyskausi 2.9. – 9.12.2026 (ei tuntia 14.10.)",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10874630",
    "source_quote": "Perheliikunta 2-3 v. / Henna Ustinov | 2.9.2026 17:30 - 9.12.2026 | Perheliikunta ke klo 17.30-18.15 / Syyskausi 2.9. – 9.12.2026 (ei tuntia 14.10.) 137,00 €; Toinen lapsi 38,00 €",
    "activity_id": "hel-2026-0403",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 151.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 137,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [
      {
        "label": "Toinen lapsi 38,00 €",
        "amount_eur": 38.0,
        "applies_if": "toinen lapsi samasta perheestä samaan ryhmään",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_eur from https://tapanilanera.myclub.fi/flow/courses/10874630 ('Hintatiedot: 'Perheliikunta ke klo 17.30-18.15 / Syyskausi 2.9. – 9.12.2026 (ei tuntia 14.10.) 137,00 €'; kuvaus: 'Kausimaksu 137 € yksi lapsi / 175 €, jos on useampi lapsi (alle 1 v. ilmaiseksi)'') | manual: price_basis from https://tapanilanera.myclub.fi/flow/courses/10874630 ('Perheliikunta ke klo 17.30-18.15 / Syyskausi 2.9. – 9.12.2026 (ei tuntia 14.10.)') | manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10874630 ('hinnan nimi 'Perheliikunta ke klo 17.30-18.15 / Syyskausi 2.9. – 9.12.2026 (ei tuntia 14.10.)' (sana 'Syyskau'); kuvaus 'Kausimaksu'') | manual: price_options from https://tapanilanera.myclub.fi/flow/courses/10874630 ('Hintatiedot: 'Toinen lapsi 38,00 €'; kuvaus: 'Kausimaksu 137 € yksi lapsi / 175 €, jos on useampi lapsi (alle 1 v. ilmaiseksi)'') | manual: fee_components from https://tapanilanera.myclub.fi/flow/courses/10874630 ('Vaadittavat tuotteet: 'Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026 14,00 €'') | manual: parent_child from https://tapanilanera.myclub.fi/flow/courses/10874630 ('Tunti on tarkoitettu 2-3 -vuotiaille lapsille ja heidän vanhemmilleen.') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10874630 ('paikka 'Tapanilan Urheilukeskus / LS 4' = kanonisen rivin hel-2026-0023 paikka 'Tapanilan Urheilukeskus, monitoimihalli' (district Tapanila)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10874630_b81efdefae66.html",
      "capture_sha256": "b81efdefae66cf44906427028fd9be77076ad4ab9c4c60bf2a44b71f23a353b4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.12,
    "monthly_cost_basis": "137.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Tapanilan Erä ry",
    "group_name": "Perheliikunta 2-4 v. / Laura Dansk",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2-4 v.",
    "parent_child": "yes",
    "venue_name": "Tapanilan Urheilukeskus / LS 4",
    "address": null,
    "district": "Tapanila",
    "weekday": "sunnuntai",
    "start_time": "10:15",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": "2026-09-06",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 137.0,
    "price_basis": "Perheliikunta su klo 10.15-11.00 / Syyskausi 6.9. – 13.12.2026 (ei tuntia 18.10.)",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10889163",
    "source_quote": "Perheliikunta 2-4 v. / Laura Dansk | 6.9.2026 10:15 - 13.12.2026 | Perheliikunta su klo 10.15-11.00 / Syyskausi 6.9. – 13.12.2026 (ei tuntia 18.10.) 137,00 €; Toinen lapsi 38,00 €",
    "activity_id": "hel-2026-0404",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 151.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-06",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-06",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 137,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [
      {
        "label": "Toinen lapsi 38,00 €",
        "amount_eur": 38.0,
        "applies_if": "toinen lapsi samasta perheestä samaan ryhmään",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_eur from https://tapanilanera.myclub.fi/flow/courses/10889163 ('Hintatiedot: 'Perheliikunta su klo 10.15-11.00 / Syyskausi 6.9. – 13.12.2026 (ei tuntia 18.10.) 137,00 €'; kuvaus: 'Kausimaksu 137 € yksi lapsi / 175 €, jos on useampi lapsi (alle 1 v. ilmaiseksi)'') | manual: price_basis from https://tapanilanera.myclub.fi/flow/courses/10889163 ('Perheliikunta su klo 10.15-11.00 / Syyskausi 6.9. – 13.12.2026 (ei tuntia 18.10.)') | manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10889163 ('hinnan nimi 'Perheliikunta su klo 10.15-11.00 / Syyskausi 6.9. – 13.12.2026 (ei tuntia 18.10.)' (sana 'Syyskau'); kuvaus 'Kausimaksu'') | manual: price_options from https://tapanilanera.myclub.fi/flow/courses/10889163 ('Hintatiedot: 'Toinen lapsi 38,00 €'; kuvaus: 'Kausimaksu 137 € yksi lapsi / 175 €, jos on useampi lapsi (alle 1 v. ilmaiseksi)'') | manual: fee_components from https://tapanilanera.myclub.fi/flow/courses/10889163 ('Vaadittavat tuotteet: 'Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026 14,00 €'') | manual: parent_child from https://tapanilanera.myclub.fi/flow/courses/10889163 ('Tunti on tarkoitettu 2-4 -vuotiaille lapsille ja heidän vanhemmilleen.') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10889163 ('paikka 'Tapanilan Urheilukeskus / LS 4' = kanonisen rivin hel-2026-0023 paikka 'Tapanilan Urheilukeskus, monitoimihalli' (district Tapanila)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10889163_0e863cb57608.html",
      "capture_sha256": "0e863cb576084da97c6811159b83542e1b2f80d613fb8105abb3bb3896b60d9c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.12,
    "monthly_cost_basis": "137.0 € / term jaettuna 3.25 kuukaudelle (2026-09-06–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Tapanilan Erä ry",
    "group_name": "Perheliikunta 3-4 v. / Henna Ustinov",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v.",
    "parent_child": "yes",
    "venue_name": "Tapanilan Urheilukeskus / LS 4",
    "address": null,
    "district": "Tapanila",
    "weekday": "keskiviikko",
    "start_time": "18:15",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 137.0,
    "price_basis": "Perheliikunta ke klo 18.15-19.00 / Syyskausi 2.9. – 9.12.2026 (ei tuntia 14.10.)",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10874632",
    "source_quote": "Perheliikunta 3-4 v. / Henna Ustinov | 2.9.2026 18:15 - 9.12.2026 | Perheliikunta ke klo 18.15-19.00 / Syyskausi 2.9. – 9.12.2026 (ei tuntia 14.10.) 137,00 €; Toinen lapsi 38,00 €",
    "activity_id": "hel-2026-0405",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 151.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 137,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [
      {
        "label": "Toinen lapsi 38,00 €",
        "amount_eur": 38.0,
        "applies_if": "toinen lapsi samasta perheestä samaan ryhmään",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_eur from https://tapanilanera.myclub.fi/flow/courses/10874632 ('Hintatiedot: 'Perheliikunta ke klo 18.15-19.00 / Syyskausi 2.9. – 9.12.2026 (ei tuntia 14.10.) 137,00 €'; kuvaus: 'Kausimaksu 137 € yksi lapsi / 175 €, jos on useampi lapsi (alle 1 v. ilmaiseksi)'') | manual: price_basis from https://tapanilanera.myclub.fi/flow/courses/10874632 ('Perheliikunta ke klo 18.15-19.00 / Syyskausi 2.9. – 9.12.2026 (ei tuntia 14.10.)') | manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10874632 ('hinnan nimi 'Perheliikunta ke klo 18.15-19.00 / Syyskausi 2.9. – 9.12.2026 (ei tuntia 14.10.)' (sana 'Syyskau'); kuvaus 'Kausimaksu'') | manual: price_options from https://tapanilanera.myclub.fi/flow/courses/10874632 ('Hintatiedot: 'Toinen lapsi 38,00 €'; kuvaus: 'Kausimaksu 137 € yksi lapsi / 175 €, jos on useampi lapsi (alle 1 v. ilmaiseksi)'') | manual: fee_components from https://tapanilanera.myclub.fi/flow/courses/10874632 ('Vaadittavat tuotteet: 'Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026 14,00 €'') | manual: parent_child from https://tapanilanera.myclub.fi/flow/courses/10874632 ('Tunti on tarkoitettu 3-4 -vuotiaille lapsille ja heidän vanhemmilleen.') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10874632 ('paikka 'Tapanilan Urheilukeskus / LS 4' = kanonisen rivin hel-2026-0023 paikka 'Tapanilan Urheilukeskus, monitoimihalli' (district Tapanila)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10874632_ed66751f997d.html",
      "capture_sha256": "ed66751f997d7c78eef71c3fd2469c6f27e16df849cda6f9dc33ef03ccfdf477",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.12,
    "monthly_cost_basis": "137.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Tapanilan Erä ry",
    "group_name": "Perheliikunta 3-4 v. / Sanna Vainio",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v.",
    "parent_child": "yes",
    "venue_name": "Tapanilan Urheilukeskus / LS 4",
    "address": null,
    "district": "Tapanila",
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 137.0,
    "price_basis": "Perheliikunta ma klo 17.30-18.15 / Syyskausi 31.8. – 7.12.2026 (ei tuntia 12.10.)",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10851144",
    "source_quote": "Perheliikunta 3-4 v. / Sanna Vainio | 31.8.2026 17:30 - 7.12.2026 | Perheliikunta ma klo 17.30-18.15 / Syyskausi 31.8. – 7.12.2026 (ei tuntia 12.10.) 137,00 €; Toinen lapsi 38,00 €",
    "activity_id": "hel-2026-0406",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 151.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 137,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [
      {
        "label": "Toinen lapsi 38,00 €",
        "amount_eur": 38.0,
        "applies_if": "toinen lapsi samasta perheestä samaan ryhmään",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: price_eur from https://tapanilanera.myclub.fi/flow/courses/10851144 ('Hintatiedot: 'Perheliikunta ma klo 17.30-18.15 / Syyskausi 31.8. – 7.12.2026 (ei tuntia 12.10.) 137,00 €'; kuvaus: 'Kausimaksu 137 € yksi lapsi / 175 €, jos on useampi lapsi (alle 1 v. ilmaiseksi)'') | manual: price_basis from https://tapanilanera.myclub.fi/flow/courses/10851144 ('Perheliikunta ma klo 17.30-18.15 / Syyskausi 31.8. – 7.12.2026 (ei tuntia 12.10.)') | manual: billing_period from https://tapanilanera.myclub.fi/flow/courses/10851144 ('hinnan nimi 'Perheliikunta ma klo 17.30-18.15 / Syyskausi 31.8. – 7.12.2026 (ei tuntia 12.10.)' (sana 'Syyskau'); kuvaus 'Kausimaksu'') | manual: price_options from https://tapanilanera.myclub.fi/flow/courses/10851144 ('Hintatiedot: 'Toinen lapsi 38,00 €'; kuvaus: 'Kausimaksu 137 € yksi lapsi / 175 €, jos on useampi lapsi (alle 1 v. ilmaiseksi)'') | manual: fee_components from https://tapanilanera.myclub.fi/flow/courses/10851144 ('Vaadittavat tuotteet: 'Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026 14,00 €'') | manual: parent_child from https://tapanilanera.myclub.fi/flow/courses/10851144 ('Tunti on tarkoitettu 3-4 -vuotiaille lapsille ja heidän vanhemmilleen.') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10851144 ('paikka 'Tapanilan Urheilukeskus / LS 4' = kanonisen rivin hel-2026-0023 paikka 'Tapanilan Urheilukeskus, monitoimihalli' (district Tapanila)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10851144_8e6f9ba45137.html",
      "capture_sha256": "8e6f9ba45137f5c3feec9c407f508d947c3e7b03b33a93fa509467d5ae618ddd",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.12,
    "monthly_cost_basis": "137.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Tapanilan Erä ry",
    "group_name": "Taaperojumppa 1-2 v. / Henna Ustinov",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "1-2 v.",
    "parent_child": "yes",
    "venue_name": "Tapanilan Urheilukeskus / LS 4",
    "address": null,
    "district": "Tapanila",
    "weekday": "perjantai",
    "start_time": "10:15",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": "2026-09-04",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 137.0,
    "price_basis": "Taaperojumppa pe klo 10.15-11.00 / Syyskausi 4.9. – 11.12.2026 (ei tuntia 16.10.)",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10874722",
    "source_quote": "Taaperojumppa 1-2 v. / Henna Ustinov | 4.9.2026 10:15 - 11.12.2026 | Taaperojumppa pe klo 10.15-11.00 / Syyskausi 4.9. – 11.12.2026 (ei tuntia 16.10.) 137,00 €",
    "activity_id": "hel-2026-0407",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 151.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-04",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-09-04",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 137,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: parent_child from https://tapanilanera.myclub.fi/flow/courses/10874722 ('Tunti on tarkoitettu 1-2 -vuotiaille lapsille ja heidän vanhemmilleen.') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10874722 ('paikka 'Tapanilan Urheilukeskus / LS 4' = kanonisen rivin hel-2026-0023 paikka 'Tapanilan Urheilukeskus, monitoimihalli' (district Tapanila)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10874722_d9ce1a31a6cb.html",
      "capture_sha256": "d9ce1a31a6cbc91467b2e1362074c9098ccbf2652befcd170fe0c020c18c8a24",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.12,
    "monthly_cost_basis": "137.0 € / term jaettuna 3.25 kuukaudelle (2026-09-04–2026-12-11, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Tapanilan Erä ry",
    "group_name": "Temppusankarit 3-5 v. / Peppi ja Laura",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "no",
    "venue_name": "Tapanilan Urheilukeskus / LS 4",
    "address": null,
    "district": "Tapanila",
    "weekday": "lauantai",
    "start_time": "10:45",
    "end_time": "11:30",
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 117.0,
    "price_basis": "Temppusankarit la klo 10.45-11.30 / Syyskausi 5.9. - 12.12.026 (ei tuntia 17.10.)",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10889425",
    "source_quote": "Temppusankarit 3-5 v. / Peppi ja Laura | 5.9.2026 10:45 - 12.12.2026 | Temppusankarit la klo 10.45-11.30 / Syyskausi 5.9. - 12.12.026 (ei tuntia 17.10.) 117,00 €",
    "activity_id": "hel-2026-0408",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 131.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 117,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: parent_child from https://tapanilanera.myclub.fi/flow/courses/10889425 ('Temppistunnilla lapset liikkuvat ilman aikuista.') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10889425 ('paikka 'Tapanilan Urheilukeskus / LS 4' = kanonisen rivin hel-2026-0023 paikka 'Tapanilan Urheilukeskus, monitoimihalli' (district Tapanila)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10889425_89a67cf0972c.html",
      "capture_sha256": "89a67cf0972cf776a5e28e9f7754a0d65f170e21f29216525c92349c72adf77a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 35.97,
    "monthly_cost_basis": "117.0 € / term jaettuna 3.25 kuukaudelle (2026-09-05–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Tapanilan Erä ry",
    "group_name": "Temppumuskari 3-5 v. / Henna Ustinov",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "no",
    "venue_name": "Tapanilan Urheilukeskus / LS 4",
    "address": null,
    "district": "Tapanila",
    "weekday": "keskiviikko",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 117.0,
    "price_basis": "Temppumuskari ke klo 16.45-17.30 / Syyskausi 2.9.-9.12.2026 (ei tuntia 14.10.)",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10846982",
    "source_quote": "Temppumuskari 3-5 v. / Henna Ustinov | 2.9.2026 16:45 - 9.12.2026 | Temppumuskari ke klo 16.45-17.30 / Syyskausi 2.9.-9.12.2026 (ei tuntia 14.10.) 117,00 €",
    "activity_id": "hel-2026-0409",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 131.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 117,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: parent_child from https://tapanilanera.myclub.fi/flow/courses/10846982 ('Temppumuskarissa (3-5 v.) lapset liikkuvat ilman vanhempaa.') | manual: weekday from https://tapanilanera.myclub.fi/flow/courses/10846982 ('Hintatiedot: 'Temppumuskari ke klo 16.45-17.30 / Syyskausi 2.9.-9.12.2026 (ei tuntia 14.10.)'; aloituspäivä 2026-09-02 = keskiviikko') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10846982 ('paikka 'Tapanilan Urheilukeskus / LS 4' = kanonisen rivin hel-2026-0023 paikka 'Tapanilan Urheilukeskus, monitoimihalli' (district Tapanila)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10846982_04ccdac4fec7.html",
      "capture_sha256": "04ccdac4fec7a9a6f4f813f136cc30690cfee804e0243e8457eb7b15fd55b0d9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 35.97,
    "monthly_cost_basis": "117.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Tapanilan Erä ry",
    "group_name": "Temppu parkour 4-6 v. / Peppi ja Laura",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v.",
    "parent_child": "unknown",
    "venue_name": "Tapanilan Urheilukeskus / LS 4",
    "address": null,
    "district": "Tapanila",
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 117.0,
    "price_basis": "Temppu parkour la klo 10-10.45 / Syyskausi 5.9.-12.12.2026 (ei tuntia 17.10.)",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10889384",
    "source_quote": "Temppu parkour 4-6 v. / Peppi ja Laura | 5.9.2026 10:00 - 12.12.2026 | Temppu parkour la klo 10-10.45 / Syyskausi 5.9.-12.12.2026 (ei tuntia 17.10.) 117,00 €",
    "activity_id": "hel-2026-0410",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 131.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 117,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: weekday from https://tapanilanera.myclub.fi/flow/courses/10889384 ('Hintatiedot: 'Temppu parkour la klo 10-10.45 / Syyskausi 5.9.-12.12.2026 (ei tuntia 17.10.)'; aloituspäivä 2026-09-05 = lauantai') | manual: end_time from https://tapanilanera.myclub.fi/flow/courses/10889384 ('Hintatiedot: 'Temppu parkour la klo 10-10.45 / Syyskausi 5.9.-12.12.2026 (ei tuntia 17.10.)'') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10889384 ('paikka 'Tapanilan Urheilukeskus / LS 4' = kanonisen rivin hel-2026-0023 paikka 'Tapanilan Urheilukeskus, monitoimihalli' (district Tapanila)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10889384_e8af8827f1a2.html",
      "capture_sha256": "e8af8827f1a2494ea084993630493c057719de84213316d76961f3fdfe77ad04",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 35.97,
    "monthly_cost_basis": "117.0 € / term jaettuna 3.25 kuukaudelle (2026-09-05–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Tapanilan Erä ry",
    "group_name": "Tempputanssi 3-4 v. / Siiri Hirvonen",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v.",
    "parent_child": "unknown",
    "venue_name": "Tapanilan Urheilukeskus / LS 4",
    "address": null,
    "district": "Tapanila",
    "weekday": "tiistai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 117.0,
    "price_basis": "Temputanssi ti klo 17.45-18.30 / Syyskausi 1.9.-8.12.2026 (ei tuntia 13.10.)",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10875070",
    "source_quote": "Tempputanssi 3-4 v. / Siiri Hirvonen | 1.9.2026 17:45 - 8.12.2026 | Temputanssi ti klo 17.45-18.30 / Syyskausi 1.9.-8.12.2026 (ei tuntia 13.10.) 117,00 €",
    "activity_id": "hel-2026-0411",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 131.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 117,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: district from https://tapanilanera.myclub.fi/flow/courses/10875070 ('paikka 'Tapanilan Urheilukeskus / LS 4' = kanonisen rivin hel-2026-0023 paikka 'Tapanilan Urheilukeskus, monitoimihalli' (district Tapanila)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10875070_bc44ad40467f.html",
      "capture_sha256": "bc44ad40467f865ceaf80eafc216049d9d20726592a3b935682224c9a0dc895a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 35.97,
    "monthly_cost_basis": "117.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tapanilan Erä ry",
    "group_name": "Lasten tanssi 4-6 v. / Siiri Hirvonen",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v.",
    "parent_child": "unknown",
    "venue_name": "Tapanilan Urheilukeskus / LS 2",
    "address": null,
    "district": "Tapanila",
    "weekday": "maanantai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 122.0,
    "price_basis": "Lasten tanssi ma klo 17.45-18.30 / Syyskausi 31.8. -7.12.2026 (ei tuntia 12.10.)",
    "membership_fee_eur": 14,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10874703",
    "source_quote": "Lasten tanssi 4-6 v. / Siiri Hirvonen | 31.8.2026 17:45 - 7.12.2026 | Lasten tanssi ma klo 17.45-18.30 / Syyskausi 31.8. -7.12.2026 (ei tuntia 12.10.) 122,00 €",
    "activity_id": "hel-2026-0412",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 136.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 122,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "seuran konfiguraatio: https://tapanilanera.myclub.fi/flow/courses/9929830"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: weekday from https://tapanilanera.myclub.fi/flow/courses/10874703 ('Hintatiedot: 'Lasten tanssi ma klo 17.45-18.30 / Syyskausi 31.8. -7.12.2026 (ei tuntia 12.10.)'; aloituspäivä 2026-08-31 = maanantai') | manual: end_time from https://tapanilanera.myclub.fi/flow/courses/10874703 ('Hintatiedot: 'Lasten tanssi ma klo 17.45-18.30 / Syyskausi 31.8. -7.12.2026 (ei tuntia 12.10.)'') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10874703 ('paikka 'Tapanilan Urheilukeskus / LS 2' = kanonisen rivin hel-2026-0023 paikka 'Tapanilan Urheilukeskus, monitoimihalli' (district Tapanila)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-027",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10874703_a552f1361f1f.html",
      "capture_sha256": "a552f1361f1f2a0d807483e8378a4eb243b3ace8f97291f266fecb9172fc2796",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.68,
    "monthly_cost_basis": "122.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start) + membership 14 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tapanilan Erä ry",
    "group_name": "Satubaletti 4-6 v./ Henna Ustinov",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v.",
    "parent_child": "unknown",
    "venue_name": "Tapanilan Urheilukeskus / LS 4",
    "address": null,
    "district": "Tapanila",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 122.0,
    "price_basis": "Satubaletti 4-6 v. to klo 17-17.45 / Syyskausi 3.9. - 10.12.2026 (ei tuntia 15.10.)",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10875203",
    "source_quote": "Satubaletti 4-6 v./ Henna Ustinov | 3.9.2026 17:00 - 10.12.2026 | Satubaletti 4-6 v. to klo 17-17.45 / Syyskausi 3.9. - 10.12.2026 (ei tuntia 15.10.) 122,00 €",
    "activity_id": "hel-2026-0413",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 136.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 122,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: weekday from https://tapanilanera.myclub.fi/flow/courses/10875203 ('Hintatiedot: 'Satubaletti 4-6 v. to klo 17-17.45 / Syyskausi 3.9. - 10.12.2026 (ei tuntia 15.10.)'; aloituspäivä 2026-09-03 = torstai') | manual: end_time from https://tapanilanera.myclub.fi/flow/courses/10875203 ('Hintatiedot: 'Satubaletti 4-6 v. to klo 17-17.45 / Syyskausi 3.9. - 10.12.2026 (ei tuntia 15.10.)'') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10875203 ('paikka 'Tapanilan Urheilukeskus / LS 4' = kanonisen rivin hel-2026-0023 paikka 'Tapanilan Urheilukeskus, monitoimihalli' (district Tapanila)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-028",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10875203_319d42a07735.html",
      "capture_sha256": "319d42a07735409440d267f1633e8473392167981e10f53fb9d54bd4825d1c06",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 37.51,
    "monthly_cost_basis": "122.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tapanilan Erä ry",
    "group_name": "Satubaletti 4-6 v. / Peppi Auranen",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v.",
    "parent_child": "unknown",
    "venue_name": "Tapanilan Urheilukeskus / LS 4",
    "address": null,
    "district": "Tapanila",
    "weekday": "torstai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 122.0,
    "price_basis": "Satubaletti to klo 17.45-18.30 / Syyskausi 3.9. - 10.12.2026 (ei tuntia 15.10.)",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10889302",
    "source_quote": "Satubaletti 4-6 v. / Peppi Auranen | 3.9.2026 17:45 - 10.12.2026 | Satubaletti to klo 17.45-18.30 / Syyskausi 3.9. - 10.12.2026 (ei tuntia 15.10.) 122,00 €",
    "activity_id": "hel-2026-0414",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 136.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 122,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: weekday from https://tapanilanera.myclub.fi/flow/courses/10889302 ('Hintatiedot: 'Satubaletti to klo 17.45-18.30 / Syyskausi 3.9. - 10.12.2026 (ei tuntia 15.10.)'; aloituspäivä 2026-09-03 = torstai') | manual: end_time from https://tapanilanera.myclub.fi/flow/courses/10889302 ('Hintatiedot: 'Satubaletti to klo 17.45-18.30 / Syyskausi 3.9. - 10.12.2026 (ei tuntia 15.10.)'') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10889302 ('paikka 'Tapanilan Urheilukeskus / LS 4' = kanonisen rivin hel-2026-0023 paikka 'Tapanilan Urheilukeskus, monitoimihalli' (district Tapanila)')",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-029",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10889302_3abbd2b1f0d7.html",
      "capture_sha256": "3abbd2b1f0d7b2f11f2e36d0b0c58e11c5d78e8645ddff00496b9a1cb02629b6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 37.51,
    "monthly_cost_basis": "122.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tapanilan Erä ry",
    "group_name": "Minishow 6-8 v. / Siiri Hirvonen",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8 v.",
    "parent_child": "unknown",
    "venue_name": "Tapanilan Urheilukeskus / LS 2",
    "address": null,
    "district": "Tapanila",
    "weekday": "tiistai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 122.0,
    "price_basis": "MInishow ti klo 16.45-17.30 / Syyskausi 1.9. - 8.12.2026 (ei tuntia 13.10.)",
    "membership_fee_eur": 14.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://tapanilanera.myclub.fi/flow/courses/10874984",
    "source_quote": "Minishow 6-8 v. / Siiri Hirvonen | 1.9.2026 16:45 - 8.12.2026 | MInishow ti klo 16.45-17.30 / Syyskausi 1.9. - 8.12.2026 (ei tuntia 13.10.) 122,00 €",
    "activity_id": "hel-2026-0415",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 136.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 122,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 14,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Tapanilan Erä ry:n jäsenmaksu 1.1.-31.12.2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "manual: weekday from https://tapanilanera.myclub.fi/flow/courses/10874984 ('Hintatiedot: 'MInishow ti klo 16.45-17.30 / Syyskausi 1.9. - 8.12.2026 (ei tuntia 13.10.)'; aloituspäivä 2026-09-01 = tiistai') | manual: end_time from https://tapanilanera.myclub.fi/flow/courses/10874984 ('Hintatiedot: 'MInishow ti klo 16.45-17.30 / Syyskausi 1.9. - 8.12.2026 (ei tuntia 13.10.)'') | manual: district from https://tapanilanera.myclub.fi/flow/courses/10874984 ('paikka 'Tapanilan Urheilukeskus / LS 2' = kanonisen rivin hel-2026-0023 paikka 'Tapanilan Urheilukeskus, monitoimihalli' (district Tapanila)') | sopii vain 6-vuotiaille",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_07.json",
      "staging_id": "batch_2026-09-21_07-030",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-21_07/myclub_tapanilanera_10874984_a68bccc0fc62.html",
      "capture_sha256": "a68bccc0fc6258d2eadf17f7b091c8a29031371d4982bdcd5c8091df252c95ec",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 37.51,
    "monthly_cost_basis": "122.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Perhefutis Latokartano syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024-2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "yes",
    "venue_name": "Latokartanon peruskoulun (sivukoulu) sali",
    "address": "Leskirouva Freytagin kuja 9",
    "district": "Latokartano",
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-09-09",
    "end_date": "2026-11-25",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskausi, sis. ohjauksen 11 krt, lapselle vakuutuksen, palkinnon ja vuoden 10 € jäsenmaksun (vuoden ensimmäinen maksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntaleikki.fi/perhefutis/",
    "source_quote": "Perhefutis Latokartano, 2024-2023-2022-syntyneet; keskiviikko; 11 harjoituspäivää 2026-09-09–2026-11-25. Perhefutis: kausi maksaa 105 euroa (sis. ohjauksen 11krt).",
    "activity_id": "hel-2026-0416",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": 9.55,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://liikuntaleikki.fi/info/",
    "billing_period": "term",
    "price_period_start": "2026-09-09",
    "price_period_end": "2026-11-25",
    "season_start_date": "2026-09-09",
    "season_end_date": "2026-11-25",
    "birth_year_min": 2022,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntaleikki.fi/info/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, lapsen vakuutuksen ja palkinnon; vuoden ensimmäiseen osallistumismaksuun sisältyy 10 € jäsenmaksu."
      }
    ],
    "price_options": [
      {
        "label": "Kaksi lasta samasta perheestä",
        "amount_eur": 175,
        "applies_if": "kaksi saman perheen lasta mukana",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (Liikuntaleikki Perhefutis syksy 2026, koillis-helsinki). Kurssi alkanut 9.9.2026. Ilmoittautuminen Ilmarix-lomakkeella 'Perhefutis Syksy 2026 (Koillis-Helsinki: Latokartano, Malmi/Tapanila, Suutarila)' (valinta 'Latokartano'; sama 105 €, 11 krt); lomakkeella ei ryhmäkohtaista täynnä-merkintää → availability unknown. Ikä syntymävuosina. Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-019",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/liikuntaleikki_perhefutis_8fe511cd3451.html",
      "capture_sha256": "8fe511cd3451ac3b37d54bef7c9a51c6ecd2c9cb3fb15af8a9f0bd364a92f64b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-09–2026-11-25, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Latokartano",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Perhefutis Malmi/Tapanila syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024-2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "yes",
    "venue_name": "Malmin peruskoulun sali",
    "address": "Talvelantie 1",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "16:30",
    "end_time": "17:10",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": "2026-11-29",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskausi, sis. ohjauksen 11 krt, lapselle vakuutuksen, palkinnon ja vuoden 10 € jäsenmaksun (vuoden ensimmäinen maksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntaleikki.fi/perhefutis/",
    "source_quote": "Perhefutis Malmi/Tapanila, 2024-2023-2022-syntyneet; sunnuntai; 11 harjoituspäivää 2026-09-07–2026-11-29. Perhefutis: kausi maksaa 105 euroa (sis. ohjauksen 11krt).",
    "activity_id": "hel-2026-0417",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": 9.55,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://liikuntaleikki.fi/info/",
    "billing_period": "term",
    "price_period_start": "2026-09-07",
    "price_period_end": "2026-11-29",
    "season_start_date": "2026-09-07",
    "season_end_date": "2026-11-29",
    "birth_year_min": 2022,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntaleikki.fi/info/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, lapsen vakuutuksen ja palkinnon; vuoden ensimmäiseen osallistumismaksuun sisältyy 10 € jäsenmaksu."
      }
    ],
    "price_options": [
      {
        "label": "Kaksi lasta samasta perheestä",
        "amount_eur": 175,
        "applies_if": "kaksi saman perheen lasta mukana",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (Liikuntaleikki Perhefutis syksy 2026, koillis-helsinki). Kurssi alkanut 7.9.2026. Ilmoittautuminen Ilmarix-lomakkeella 'Perhefutis Syksy 2026 (Koillis-Helsinki: Latokartano, Malmi/Tapanila, Suutarila)' (valinta 'Malmi/Tapanila'; sama 105 €, 11 krt); lomakkeella ei ryhmäkohtaista täynnä-merkintää → availability unknown. Ikä syntymävuosina. Kertamäärä 11 = listatut päivät (7.9., 14.9., 21.9. ma; 4.10.–29.11. su, 11.10. ei tuntia). Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-020",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/liikuntaleikki_perhefutis_8fe511cd3451.html",
      "capture_sha256": "8fe511cd3451ac3b37d54bef7c9a51c6ecd2c9cb3fb15af8a9f0bd364a92f64b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-21",
    "monthly_cost_eur": 38.05,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.76 kuukaudelle (2026-09-07–2026-11-29, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Malmi",
    "district_basis": "geokoodattu osoite -> neighborhood 'Malmi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Perhefutis Suutarila syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024-2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "yes",
    "venue_name": "Suutarilankylän peruskoulun sali",
    "address": "Töyrynummentie 8",
    "district": "Suutarila",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-09-10",
    "end_date": "2026-11-26",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskausi, sis. ohjauksen 11 krt, lapselle vakuutuksen, palkinnon ja vuoden 10 € jäsenmaksun (vuoden ensimmäinen maksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntaleikki.fi/perhefutis/",
    "source_quote": "Perhefutis Suutarila, 2024-2023-2022-syntyneet; torstai; 11 harjoituspäivää 2026-09-10–2026-11-26. Perhefutis: kausi maksaa 105 euroa (sis. ohjauksen 11krt).",
    "activity_id": "hel-2026-0418",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": 9.55,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://liikuntaleikki.fi/info/",
    "billing_period": "term",
    "price_period_start": "2026-09-10",
    "price_period_end": "2026-11-26",
    "season_start_date": "2026-09-10",
    "season_end_date": "2026-11-26",
    "birth_year_min": 2022,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntaleikki.fi/info/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, lapsen vakuutuksen ja palkinnon; vuoden ensimmäiseen osallistumismaksuun sisältyy 10 € jäsenmaksu."
      }
    ],
    "price_options": [
      {
        "label": "Kaksi lasta samasta perheestä",
        "amount_eur": 175,
        "applies_if": "kaksi saman perheen lasta mukana",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (Liikuntaleikki Perhefutis syksy 2026, koillis-helsinki). Kurssi alkanut 10.9.2026. Ilmoittautuminen Ilmarix-lomakkeella 'Perhefutis Syksy 2026 (Koillis-Helsinki: Latokartano, Malmi/Tapanila, Suutarila)' (valinta 'Suutarila'; sama 105 €, 11 krt); lomakkeella ei ryhmäkohtaista täynnä-merkintää → availability unknown. Ikä syntymävuosina. Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-021",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/liikuntaleikki_perhefutis_8fe511cd3451.html",
      "capture_sha256": "8fe511cd3451ac3b37d54bef7c9a51c6ecd2c9cb3fb15af8a9f0bd364a92f64b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-10–2026-11-26, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Suutarila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Perhefutis Katajanokka syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024-2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "yes",
    "venue_name": "Katajanokan ala-asteen liikuntasali",
    "address": "Laivastonkuja 6",
    "district": "Katajanokka",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-09-10",
    "end_date": "2026-11-26",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskausi, sis. ohjauksen 11 krt, lapselle vakuutuksen, palkinnon ja vuoden 10 € jäsenmaksun (vuoden ensimmäinen maksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntaleikki.fi/perhefutis/",
    "source_quote": "Perhefutis Katajanokka, 2024-2023-2022-syntyneet; torstai; 11 harjoituspäivää 2026-09-10–2026-11-26. Perhefutis: kausi maksaa 105 euroa (sis. ohjauksen 11krt).",
    "activity_id": "hel-2026-0419",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": 9.55,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://liikuntaleikki.fi/info/",
    "billing_period": "term",
    "price_period_start": "2026-09-10",
    "price_period_end": "2026-11-26",
    "season_start_date": "2026-09-10",
    "season_end_date": "2026-11-26",
    "birth_year_min": 2022,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntaleikki.fi/info/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, lapsen vakuutuksen ja palkinnon; vuoden ensimmäiseen osallistumismaksuun sisältyy 10 € jäsenmaksu."
      }
    ],
    "price_options": [
      {
        "label": "Kaksi lasta samasta perheestä",
        "amount_eur": 175,
        "applies_if": "kaksi saman perheen lasta mukana",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (Liikuntaleikki Perhefutis syksy 2026, kantakaupunki). Kurssi alkanut 10.9.2026. Ilmoittautuminen Ilmarix-lomakkeella 'Perhefutis Syksy 2026 (Itä + kantakaupunki: Aurinkolahti, Katajanokka, Laajasalo, Töölö to/su, Vuosaari)' (valinta 'Katajanokka'; sama 105 €, 11 krt); lomakkeella ei ryhmäkohtaista täynnä-merkintää → availability unknown. Ikä syntymävuosina. Lomakkeen hintateksti: 'Syyskauden hinta on 105€. Hinta sisältää ohjauksen 11krt, lapselle vakuutuksen ja palkinnon (PAITSI Aurinkolahden ja Vuosaaren ryhmissä t-paidan).'. Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-024",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/liikuntaleikki_perhefutis_8fe511cd3451.html",
      "capture_sha256": "8fe511cd3451ac3b37d54bef7c9a51c6ecd2c9cb3fb15af8a9f0bd364a92f64b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-10–2026-11-26, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Katajanokka",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Perhefutis Taka-Töölö syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024-2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "yes",
    "venue_name": "Taivallahden koulun liikuntasali",
    "address": "Eteläinen Hesperiankatu 38",
    "district": "Taka-Töölö",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-09-10",
    "end_date": "2026-11-26",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskausi, sis. ohjauksen 11 krt, lapselle vakuutuksen, palkinnon ja vuoden 10 € jäsenmaksun (vuoden ensimmäinen maksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntaleikki.fi/perhefutis/",
    "source_quote": "Perhefutis Taka-Töölö, 2024-2023-2022-syntyneet; torstai; 11 harjoituspäivää 2026-09-10–2026-11-26. Perhefutis: kausi maksaa 105 euroa (sis. ohjauksen 11krt).",
    "activity_id": "hel-2026-0420",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": 9.55,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://liikuntaleikki.fi/info/",
    "billing_period": "term",
    "price_period_start": "2026-09-10",
    "price_period_end": "2026-11-26",
    "season_start_date": "2026-09-10",
    "season_end_date": "2026-11-26",
    "birth_year_min": 2022,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntaleikki.fi/info/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, lapsen vakuutuksen ja palkinnon; vuoden ensimmäiseen osallistumismaksuun sisältyy 10 € jäsenmaksu."
      }
    ],
    "price_options": [
      {
        "label": "Kaksi lasta samasta perheestä",
        "amount_eur": 175,
        "applies_if": "kaksi saman perheen lasta mukana",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (Liikuntaleikki Perhefutis syksy 2026, kantakaupunki). Kurssi alkanut 10.9.2026. Ilmoittautuminen Ilmarix-lomakkeella 'Perhefutis Syksy 2026 (Itä + kantakaupunki: Aurinkolahti, Katajanokka, Laajasalo, Töölö to/su, Vuosaari)' (valinta 'Töölö (torstai)'; sama 105 €, 11 krt); lomakkeella ei ryhmäkohtaista täynnä-merkintää → availability unknown. Ikä syntymävuosina. Lomakkeen hintateksti: 'Syyskauden hinta on 105€. Hinta sisältää ohjauksen 11krt, lapselle vakuutuksen ja palkinnon (PAITSI Aurinkolahden ja Vuosaaren ryhmissä t-paidan).'. Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-025",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/liikuntaleikki_perhefutis_8fe511cd3451.html",
      "capture_sha256": "8fe511cd3451ac3b37d54bef7c9a51c6ecd2c9cb3fb15af8a9f0bd364a92f64b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-10–2026-11-26, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Taka-Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Perhefutis Etu-Töölö syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024-2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "yes",
    "venue_name": "Taivallahden koulun liikuntasali",
    "address": "Eteläinen Hesperiankatu 38",
    "district": "Etu-Töölö",
    "weekday": "sunnuntai",
    "start_time": "16:00",
    "end_time": "16:40",
    "season": "syksy 2026",
    "start_date": "2026-09-13",
    "end_date": "2026-11-29",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskausi, sis. ohjauksen 11 krt, lapselle vakuutuksen, palkinnon ja vuoden 10 € jäsenmaksun (vuoden ensimmäinen maksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://liikuntaleikki.fi/perhefutis/",
    "source_quote": "Perhefutis Etu-Töölö, 2024-2023-2022-syntyneet; sunnuntai; 11 harjoituspäivää 2026-09-13–2026-11-29. Perhefutis: kausi maksaa 105 euroa (sis. ohjauksen 11krt).",
    "activity_id": "hel-2026-0421",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": 9.55,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://liikuntaleikki.fi/info/",
    "billing_period": "term",
    "price_period_start": "2026-09-13",
    "price_period_end": "2026-11-29",
    "season_start_date": "2026-09-13",
    "season_end_date": "2026-11-29",
    "birth_year_min": 2022,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntaleikki.fi/info/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, lapsen vakuutuksen ja palkinnon; vuoden ensimmäiseen osallistumismaksuun sisältyy 10 € jäsenmaksu."
      }
    ],
    "price_options": [
      {
        "label": "Kaksi lasta samasta perheestä",
        "amount_eur": 175,
        "applies_if": "kaksi saman perheen lasta mukana",
        "includes": "yhteissumma kahdelle lapselle"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_06 deferred-listalta (Liikuntaleikki Perhefutis syksy 2026, kantakaupunki). Kurssi alkanut 13.9.2026. Ilmoittautuminen Ilmarix-lomakkeella 'Perhefutis Syksy 2026 (Itä + kantakaupunki: Aurinkolahti, Katajanokka, Laajasalo, Töölö to/su, Vuosaari)' (valinta 'Töölö (sunnuntai)'; sama 105 €, 11 krt); lomakkeella ei ryhmäkohtaista täynnä-merkintää → availability unknown. Ikä syntymävuosina. Lomakkeen hintateksti: 'Syyskauden hinta on 105€. Hinta sisältää ohjauksen 11krt, lapselle vakuutuksen ja palkinnon (PAITSI Aurinkolahden ja Vuosaaren ryhmissä t-paidan).'. Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_08.json",
      "staging_id": "batch_2026-09-22_08-026",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_08/liikuntaleikki_perhefutis_8fe511cd3451.html",
      "capture_sha256": "8fe511cd3451ac3b37d54bef7c9a51c6ecd2c9cb3fb15af8a9f0bd364a92f64b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-13–2026-11-29, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Etu-Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingin Luistelijat ry",
    "group_name": "Lasten luistelukoulu maanantai SYKSY 2026 (Herttoniemen jäähalli)",
    "min_age": 3,
    "max_age": 9,
    "eligibility_text": "Lasten luistelukoulu on tarkoitettu 3-9 –vuotiaille.",
    "parent_child": "unknown",
    "venue_name": "Herttoniemen jäähalli, kenttä 1",
    "address": "Abraham Wetterin tie 1, 00810 Helsinki",
    "district": "Herttoniemi",
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": 15,
    "price_eur": 190.0,
    "price_basis": "190€ luistelukoulun syyskausi (15 harjoituskertaa) + 45€ jäsenmaksu + 15€ luistelukoulupassi; 2022–2023 syntyneille ehdollinen maksuton/puolen hinnan syyskausi",
    "membership_fee_eur": 45.0,
    "other_required_fees": "Seuran jäsenmaksu 45 € ja luistelukoulupassi 15 € kaikilta luistelukoululaisilta.",
    "equipment_notes": "Omat luistimet (suositus taitoluistimet), lämpimät vaatteet, hanskat; kypärä suositeltu.",
    "trial_info": "Luistelukoulussa voi käydä tutustumassa yhden kerran ilmaiseksi.",
    "enrollment_status": "open",
    "source_url": "https://hl.myclub.fi/flow/courses/10889140",
    "source_quote": "Maanantai klo 18.00-18.45; 15 harjoituskertaa; 190€ luistelukoulun syyskausi, 45€ seuran jäsenmaksu, 15€ luistelukoulupassi; 3-9-vuotiaille.",
    "activity_id": "hel-2026-0422",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 250.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://hl.myclub.fi/flow/courses/10889140",
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "conditional",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 190,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": "täysi hinta; ks. price_options (2022–2023 syntyneet)",
        "note": "190€ luistelukoulun syyskausi"
      },
      {
        "type": "membership",
        "amount_eur": 45,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "45€ seuran jäsenmaksu; voimassa myös kevätkauden 2027"
      },
      {
        "type": "skating_school_pass",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "15€ Taitoluisteluliiton luistelukoulupassi vakuutuksella; voimassa myös kevätkauden 2027"
      }
    ],
    "price_options": [
      {
        "label": "Täysi hinta",
        "amount_eur": 250.0,
        "applies_if": "190 € syyskausi + 45 € jäsenmaksu + 15 € passi",
        "includes": null
      },
      {
        "label": "2022–2023 syntynyt, ensimmäistä kertaa aloittava",
        "amount_eur": 60.0,
        "applies_if": "30.9.2026 mennessä ilmoittautunut; syyskausi maksuton (1krt/vko), jäsenmaksu 45 € + passi 15 € laskutetaan",
        "includes": null
      },
      {
        "label": "2022–2023 syntynyt, kertaalleen ilmaiseen osallistunut",
        "amount_eur": 155.0,
        "applies_if": "syyskausi puoleen hintaan 95 € + 45 € + 15 €",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä: kuvaus '15 harjoituskertaa' ja aikataulun 15 riviä (koodilla laskettu) täsmäävät. Ristiriita: hl.fi/luistelukoulu (21.9.2026) sanoo maksuttomuuden koskevan '30.1.2027 mennessä ilmoittautuneita', myClub-ilmoittautumissivu '30.9.2026 mennessä ilmoittautuneille' – ilmoittautumissivu voittaa. price_options-summat laskettu koodilla. Kurssi alkanut 2026-08-31. Ehdollinen hinta (Ilpon jonolinjaus 4, 22.9.2026): price_eur on normaalihinta, ehdot price_options-alkioina; ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/hl_ma_0ec060a991d3.html",
      "capture_sha256": "0ec060a991d3e2445e3060ba3bf066dfc45bc48876a3a72f9e835428b803abda",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 63.42,
    "monthly_cost_basis": "190.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start) + membership 45 €/v ÷ 12 + skating_school_pass 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingin Luistelijat ry",
    "group_name": "Lasten luistelukoulu tiistai SYKSY 2026 (Pirkkolan jäähalli)",
    "min_age": 3,
    "max_age": 9,
    "eligibility_text": "Lasten luistelukoulu on tarkoitettu 3-9 –vuotiaille.",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan jäähalli, kenttä 1",
    "address": "Plotinrinne 8, 00630 Helsinki",
    "district": "Pirkkola",
    "weekday": "tiistai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": 15,
    "price_eur": 190.0,
    "price_basis": "190€ luistelukoulun syyskausi (15 harjoituskertaa) + 45€ jäsenmaksu + 15€ luistelukoulupassi; 2022–2023 syntyneille ehdollinen maksuton/puolen hinnan syyskausi",
    "membership_fee_eur": 45.0,
    "other_required_fees": "Seuran jäsenmaksu 45 € ja luistelukoulupassi 15 € kaikilta luistelukoululaisilta.",
    "equipment_notes": "Omat luistimet (suositus taitoluistimet), lämpimät vaatteet, hanskat; kypärä suositeltu.",
    "trial_info": "Luistelukoulussa voi käydä tutustumassa yhden kerran ilmaiseksi.",
    "enrollment_status": "waitlist",
    "source_url": "https://hl.myclub.fi/flow/courses/10903902",
    "source_quote": "Tiistai klo 17.45-18.30; 15 harjoituskertaa; 190€ luistelukoulun syyskausi, 45€ seuran jäsenmaksu, 15€ luistelukoulupassi; 3-9-vuotiaille.",
    "activity_id": "hel-2026-0423",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 250.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://hl.myclub.fi/flow/courses/10903902",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "conditional",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 190,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": "täysi hinta; ks. price_options (2022–2023 syntyneet)",
        "note": "190€ luistelukoulun syyskausi"
      },
      {
        "type": "membership",
        "amount_eur": 45,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "45€ seuran jäsenmaksu; voimassa myös kevätkauden 2027"
      },
      {
        "type": "skating_school_pass",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "15€ Taitoluisteluliiton luistelukoulupassi vakuutuksella; voimassa myös kevätkauden 2027"
      }
    ],
    "price_options": [
      {
        "label": "Täysi hinta",
        "amount_eur": 250.0,
        "applies_if": "190 € syyskausi + 45 € jäsenmaksu + 15 € passi",
        "includes": null
      },
      {
        "label": "2022–2023 syntynyt, ensimmäistä kertaa aloittava",
        "amount_eur": 60.0,
        "applies_if": "30.9.2026 mennessä ilmoittautunut; syyskausi maksuton (1krt/vko), jäsenmaksu 45 € + passi 15 € laskutetaan",
        "includes": null
      },
      {
        "label": "2022–2023 syntynyt, kertaalleen ilmaiseen osallistunut",
        "amount_eur": 155.0,
        "applies_if": "syyskausi puoleen hintaan 95 € + 45 € + 15 €",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä: kuvaus '15 harjoituskertaa' ja aikataulun 15 riviä (koodilla laskettu) täsmäävät. Ristiriita: hl.fi/luistelukoulu (21.9.2026) sanoo maksuttomuuden koskevan '30.1.2027 mennessä ilmoittautuneita', myClub-ilmoittautumissivu '30.9.2026 mennessä ilmoittautuneille' – ilmoittautumissivu voittaa. price_options-summat laskettu koodilla. Kurssi alkanut 2026-09-01. Ehdollinen hinta (Ilpon jonolinjaus 4, 22.9.2026): price_eur on normaalihinta, ehdot price_options-alkioina; ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/hl_ti_6756034e50b5.html",
      "capture_sha256": "6756034e50b5a2ef21611dc0997bce7fe4254fc9468555480563d8baa45250af",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 63.42,
    "monthly_cost_basis": "190.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start) + membership 45 €/v ÷ 12 + skating_school_pass 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingin Luistelijat ry",
    "group_name": "Lasten luistelukoulu keskiviikko SYKSY 2026 (Herttoniemen jäähalli)",
    "min_age": 3,
    "max_age": 9,
    "eligibility_text": "Lasten luistelukoulu on tarkoitettu 3-9 –vuotiaille.",
    "parent_child": "unknown",
    "venue_name": "Herttoniemen jäähalli, kenttä 1",
    "address": "Abraham Wetterin tie 1, 00810 Helsinki",
    "district": "Herttoniemi",
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": 15,
    "price_eur": 190.0,
    "price_basis": "190€ luistelukoulun syyskausi (15 harjoituskertaa) + 45€ jäsenmaksu + 15€ luistelukoulupassi; 2022–2023 syntyneille ehdollinen maksuton/puolen hinnan syyskausi",
    "membership_fee_eur": 45.0,
    "other_required_fees": "Seuran jäsenmaksu 45 € ja luistelukoulupassi 15 € kaikilta luistelukoululaisilta.",
    "equipment_notes": "Omat luistimet (suositus taitoluistimet), lämpimät vaatteet, hanskat; kypärä suositeltu.",
    "trial_info": "Luistelukoulussa voi käydä tutustumassa yhden kerran ilmaiseksi.",
    "enrollment_status": "open",
    "source_url": "https://hl.myclub.fi/flow/courses/10903938",
    "source_quote": "Keskiviikko klo 17.45-18.30; 15 harjoituskertaa; 190€ luistelukoulun syyskausi, 45€ seuran jäsenmaksu, 15€ luistelukoulupassi; 3-9-vuotiaille.",
    "activity_id": "hel-2026-0424",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 250.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://hl.myclub.fi/flow/courses/10903938",
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "conditional",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 190,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": "täysi hinta; ks. price_options (2022–2023 syntyneet)",
        "note": "190€ luistelukoulun syyskausi"
      },
      {
        "type": "membership",
        "amount_eur": 45,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "45€ seuran jäsenmaksu; voimassa myös kevätkauden 2027"
      },
      {
        "type": "skating_school_pass",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "15€ Taitoluisteluliiton luistelukoulupassi vakuutuksella; voimassa myös kevätkauden 2027"
      }
    ],
    "price_options": [
      {
        "label": "Täysi hinta",
        "amount_eur": 250.0,
        "applies_if": "190 € syyskausi + 45 € jäsenmaksu + 15 € passi",
        "includes": null
      },
      {
        "label": "2022–2023 syntynyt, ensimmäistä kertaa aloittava",
        "amount_eur": 60.0,
        "applies_if": "30.9.2026 mennessä ilmoittautunut; syyskausi maksuton (1krt/vko), jäsenmaksu 45 € + passi 15 € laskutetaan",
        "includes": null
      },
      {
        "label": "2022–2023 syntynyt, kertaalleen ilmaiseen osallistunut",
        "amount_eur": 155.0,
        "applies_if": "syyskausi puoleen hintaan 95 € + 45 € + 15 €",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä: kuvaus '15 harjoituskertaa' ja aikataulun 15 riviä (koodilla laskettu) täsmäävät. Ristiriita: hl.fi/luistelukoulu (21.9.2026) sanoo maksuttomuuden koskevan '30.1.2027 mennessä ilmoittautuneita', myClub-ilmoittautumissivu '30.9.2026 mennessä ilmoittautuneille' – ilmoittautumissivu voittaa. price_options-summat laskettu koodilla. Kurssi alkanut 2026-09-02. Ehdollinen hinta (Ilpon jonolinjaus 4, 22.9.2026): price_eur on normaalihinta, ehdot price_options-alkioina; ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/hl_ke_308230f856fa.html",
      "capture_sha256": "308230f856fa12a317d5e0534187844d21f916aa8e6466f6841c8bdd31538270",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 63.42,
    "monthly_cost_basis": "190.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start) + membership 45 €/v ÷ 12 + skating_school_pass 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingin Luistelijat ry",
    "group_name": "Lasten luistelukoulu perjantai SYKSY 2026 (Kivikon jäähalli)",
    "min_age": 3,
    "max_age": 9,
    "eligibility_text": "Lasten luistelukoulu on tarkoitettu 3-9 –vuotiaille.",
    "parent_child": "unknown",
    "venue_name": "Kivikon jäähalli, kenttä 3",
    "address": "Savikiekontie 4, 00940 Helsinki",
    "district": "Kivikko",
    "weekday": "perjantai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-04",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 190.0,
    "price_basis": "190€ luistelukoulun syyskausi (15 harjoituskertaa) + 45€ jäsenmaksu + 15€ luistelukoulupassi; 2022–2023 syntyneille ehdollinen maksuton/puolen hinnan syyskausi",
    "membership_fee_eur": 45.0,
    "other_required_fees": "Seuran jäsenmaksu 45 € ja luistelukoulupassi 15 € kaikilta luistelukoululaisilta.",
    "equipment_notes": "Omat luistimet (suositus taitoluistimet), lämpimät vaatteet, hanskat; kypärä suositeltu.",
    "trial_info": "Luistelukoulussa voi käydä tutustumassa yhden kerran ilmaiseksi.",
    "enrollment_status": "open",
    "source_url": "https://hl.myclub.fi/flow/courses/10903956",
    "source_quote": "Perjantai klo 17.45-18.30; 15 harjoituskertaa; 190€ luistelukoulun syyskausi, 45€ seuran jäsenmaksu, 15€ luistelukoulupassi; 3-9-vuotiaille.",
    "activity_id": "hel-2026-0425",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 250.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-04",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-09-04",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://hl.myclub.fi/flow/courses/10903956",
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "conditional",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 190,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": "täysi hinta; ks. price_options (2022–2023 syntyneet)",
        "note": "190€ luistelukoulun syyskausi"
      },
      {
        "type": "membership",
        "amount_eur": 45,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "45€ seuran jäsenmaksu; voimassa myös kevätkauden 2027"
      },
      {
        "type": "skating_school_pass",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "15€ Taitoluisteluliiton luistelukoulupassi vakuutuksella; voimassa myös kevätkauden 2027"
      }
    ],
    "price_options": [
      {
        "label": "Täysi hinta",
        "amount_eur": 250.0,
        "applies_if": "190 € syyskausi + 45 € jäsenmaksu + 15 € passi",
        "includes": null
      },
      {
        "label": "2022–2023 syntynyt, ensimmäistä kertaa aloittava",
        "amount_eur": 60.0,
        "applies_if": "30.9.2026 mennessä ilmoittautunut; syyskausi maksuton (1krt/vko), jäsenmaksu 45 € + passi 15 € laskutetaan",
        "includes": null
      },
      {
        "label": "2022–2023 syntynyt, kertaalleen ilmaiseen osallistunut",
        "amount_eur": 155.0,
        "applies_if": "syyskausi puoleen hintaan 95 € + 45 € + 15 €",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä: kuvaus '15 harjoituskertaa' ja aikataulun 15 riviä (koodilla laskettu) täsmäävät. Ristiriita: hl.fi/luistelukoulu (21.9.2026) sanoo maksuttomuuden koskevan '30.1.2027 mennessä ilmoittautuneita', myClub-ilmoittautumissivu '30.9.2026 mennessä ilmoittautuneille' – ilmoittautumissivu voittaa. price_options-summat laskettu koodilla. Kurssi alkanut 2026-09-04. Ehdollinen hinta (Ilpon jonolinjaus 4, 22.9.2026): price_eur on normaalihinta, ehdot price_options-alkioina; ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/hl_pe_59d44710d0b3.html",
      "capture_sha256": "59d44710d0b37f377e8811485856e1241b801a08a4f52d7c20c11dad083c6503",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 63.42,
    "monthly_cost_basis": "190.0 € / term jaettuna 3.25 kuukaudelle (2026-09-04–2026-12-11, price_period_start) + membership 45 €/v ÷ 12 + skating_school_pass 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Kivikko",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingin Luistelijat ry",
    "group_name": "Lasten luistelukoulu lauantai SYKSY 2026 (Kaarelan jäähalli)",
    "min_age": 3,
    "max_age": 9,
    "eligibility_text": "Lasten luistelukoulu on tarkoitettu 3-9 –vuotiaille.",
    "parent_child": "unknown",
    "venue_name": "Kaarelan jäähalli, kenttä 2",
    "address": "Kaarelan raitti 2, Helsinki",
    "district": "Kaarela",
    "weekday": "lauantai",
    "start_time": "15:30",
    "end_time": "16:15",
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": "2026-12-12",
    "sessions_count": 15,
    "price_eur": 190.0,
    "price_basis": "190€ luistelukoulun syyskausi (15 harjoituskertaa) + 45€ jäsenmaksu + 15€ luistelukoulupassi; 2022–2023 syntyneille ehdollinen maksuton/puolen hinnan syyskausi",
    "membership_fee_eur": 45.0,
    "other_required_fees": "Seuran jäsenmaksu 45 € ja luistelukoulupassi 15 € kaikilta luistelukoululaisilta.",
    "equipment_notes": "Omat luistimet (suositus taitoluistimet), lämpimät vaatteet, hanskat; kypärä suositeltu.",
    "trial_info": "Luistelukoulussa voi käydä tutustumassa yhden kerran ilmaiseksi.",
    "enrollment_status": "open",
    "source_url": "https://hl.myclub.fi/flow/courses/10903998",
    "source_quote": "Lauantai klo 15.30-16.15; 15 harjoituskertaa; 190€ luistelukoulun syyskausi, 45€ seuran jäsenmaksu, 15€ luistelukoulupassi; 3-9-vuotiaille.",
    "activity_id": "hel-2026-0426",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 250.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://hl.myclub.fi/flow/courses/10903998",
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "conditional",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 190,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": "täysi hinta; ks. price_options (2022–2023 syntyneet)",
        "note": "190€ luistelukoulun syyskausi"
      },
      {
        "type": "membership",
        "amount_eur": 45,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "45€ seuran jäsenmaksu; voimassa myös kevätkauden 2027"
      },
      {
        "type": "skating_school_pass",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "15€ Taitoluisteluliiton luistelukoulupassi vakuutuksella; voimassa myös kevätkauden 2027"
      }
    ],
    "price_options": [
      {
        "label": "Täysi hinta",
        "amount_eur": 250.0,
        "applies_if": "190 € syyskausi + 45 € jäsenmaksu + 15 € passi",
        "includes": null
      },
      {
        "label": "2022–2023 syntynyt, ensimmäistä kertaa aloittava",
        "amount_eur": 60.0,
        "applies_if": "30.9.2026 mennessä ilmoittautunut; syyskausi maksuton (1krt/vko), jäsenmaksu 45 € + passi 15 € laskutetaan",
        "includes": null
      },
      {
        "label": "2022–2023 syntynyt, kertaalleen ilmaiseen osallistunut",
        "amount_eur": 155.0,
        "applies_if": "syyskausi puoleen hintaan 95 € + 45 € + 15 €",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä: kuvaus '15 harjoituskertaa' ja aikataulun 15 riviä (koodilla laskettu) täsmäävät. Ristiriita: hl.fi/luistelukoulu (21.9.2026) sanoo maksuttomuuden koskevan '30.1.2027 mennessä ilmoittautuneita', myClub-ilmoittautumissivu '30.9.2026 mennessä ilmoittautuneille' – ilmoittautumissivu voittaa. price_options-summat laskettu koodilla. Kurssi alkanut 2026-09-05. Ehdollinen hinta (Ilpon jonolinjaus 4, 22.9.2026): price_eur on normaalihinta, ehdot price_options-alkioina; ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/hl_la_0054aa0922fe.html",
      "capture_sha256": "0054aa0922fec461a8ec024f95afc8126a6f6d0e95a071682bd6d3fb5a2175c0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 63.42,
    "monthly_cost_basis": "190.0 € / term jaettuna 3.25 kuukaudelle (2026-09-05–2026-12-12, price_period_start) + membership 45 €/v ÷ 12 + skating_school_pass 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Kaarela",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingin Luistelijat ry",
    "group_name": "Lasten luistelukoulu sunnuntai SYKSY 2026 (Paloheinän jäähalli)",
    "min_age": 3,
    "max_age": 9,
    "eligibility_text": "Lasten luistelukoulu on tarkoitettu 3-9 –vuotiaille.",
    "parent_child": "unknown",
    "venue_name": "Paloheinän jäähalli, kenttä 1",
    "address": "Pakilantie 122, Helsinki",
    "district": "Paloheinä",
    "weekday": "sunnuntai",
    "start_time": "12:45",
    "end_time": "13:30",
    "season": "syksy 2026",
    "start_date": "2026-09-06",
    "end_date": "2026-12-20",
    "sessions_count": 15,
    "price_eur": 190.0,
    "price_basis": "190€ luistelukoulun syyskausi (15 harjoituskertaa) + 45€ jäsenmaksu + 15€ luistelukoulupassi; 2022–2023 syntyneille ehdollinen maksuton/puolen hinnan syyskausi",
    "membership_fee_eur": 45.0,
    "other_required_fees": "Seuran jäsenmaksu 45 € ja luistelukoulupassi 15 € kaikilta luistelukoululaisilta.",
    "equipment_notes": "Omat luistimet (suositus taitoluistimet), lämpimät vaatteet, hanskat; kypärä suositeltu.",
    "trial_info": "Luistelukoulussa voi käydä tutustumassa yhden kerran ilmaiseksi.",
    "enrollment_status": "waitlist",
    "source_url": "https://hl.myclub.fi/flow/courses/10904145",
    "source_quote": "Sunnuntai klo 12.45-13.30; 15 harjoituskertaa; 190€ luistelukoulun syyskausi, 45€ seuran jäsenmaksu, 15€ luistelukoulupassi; 3-9-vuotiaille.",
    "activity_id": "hel-2026-0427",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 250.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-06",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-09-06",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://hl.myclub.fi/flow/courses/10904145",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "conditional",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 190,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": "täysi hinta; ks. price_options (2022–2023 syntyneet)",
        "note": "190€ luistelukoulun syyskausi"
      },
      {
        "type": "membership",
        "amount_eur": 45,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "45€ seuran jäsenmaksu; voimassa myös kevätkauden 2027"
      },
      {
        "type": "skating_school_pass",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "15€ Taitoluisteluliiton luistelukoulupassi vakuutuksella; voimassa myös kevätkauden 2027"
      }
    ],
    "price_options": [
      {
        "label": "Täysi hinta",
        "amount_eur": 250.0,
        "applies_if": "190 € syyskausi + 45 € jäsenmaksu + 15 € passi",
        "includes": null
      },
      {
        "label": "2022–2023 syntynyt, ensimmäistä kertaa aloittava",
        "amount_eur": 60.0,
        "applies_if": "30.9.2026 mennessä ilmoittautunut; syyskausi maksuton (1krt/vko), jäsenmaksu 45 € + passi 15 € laskutetaan",
        "includes": null
      },
      {
        "label": "2022–2023 syntynyt, kertaalleen ilmaiseen osallistunut",
        "amount_eur": 155.0,
        "applies_if": "syyskausi puoleen hintaan 95 € + 45 € + 15 €",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä: kuvaus '15 harjoituskertaa' ja aikataulun 15 riviä (koodilla laskettu) täsmäävät. Ristiriita: hl.fi/luistelukoulu (21.9.2026) sanoo maksuttomuuden koskevan '30.1.2027 mennessä ilmoittautuneita', myClub-ilmoittautumissivu '30.9.2026 mennessä ilmoittautuneille' – ilmoittautumissivu voittaa. price_options-summat laskettu koodilla. Kurssi alkanut 2026-09-06. Ehdollinen hinta (Ilpon jonolinjaus 4, 22.9.2026): price_eur on normaalihinta, ehdot price_options-alkioina; ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/hl_su_5965f75868ac.html",
      "capture_sha256": "5965f75868acaa505a0ae0c3e4be1eeaff97abd0e0d63afe6b734d9c276eb95d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 59.56,
    "monthly_cost_basis": "190.0 € / term jaettuna 3.48 kuukaudelle (2026-09-06–2026-12-20, price_period_start) + membership 45 €/v ÷ 12 + skating_school_pass 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Paloheinä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tennis",
    "provider": "Puistolan Urheilijat ry (PuiU Tennis)",
    "group_name": "Minitennis syksy 2026, ryhmä 1 (maanantaisin 17:30–18:30)",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 vuotiaille tytöille ja pojille (2019-2021-syntyneet)",
    "parent_child": "unknown",
    "venue_name": "Helsingin Mailapelikeskus (ent. Puistolan Tennis- ja Palloiluhalli)",
    "address": "Tapulikaupungintie 4, 00750 Helsinki",
    "district": "Tapulikaupunki",
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 240.0,
    "price_basis": "Syyskausi 24.8.-17.12.2026, 16 harjoitusta; 1h / viikko 240 € + PuiU Tenniksen jäsenmaksu 25 € (alle 19 v)",
    "membership_fee_eur": 25.0,
    "other_required_fees": "PuiU Tenniksen jäsenmaksu 2026 25 € (alle 19-vuotiaat).",
    "equipment_notes": "Sisäliikuntavarustus; mailan saa tarvittaessa lainaksi seuralta.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://puistolanurheilijat.fi/tennis/minitennis-syksy-2026/",
    "source_quote": "Minitennis – syksy 2026, 5-7 v (2019-2021); ryhmä 1. maanantaisin klo 17:30-18:30; Syyskausi 24.8.-17.12.2026, 16 harjoitusta; 1h / viikko 240 €; jäsenmaksu 25 € (alle 19 v).",
    "activity_id": "hel-2026-0428",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 265.0,
    "price_per_session_eur": 16.56,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-24",
    "price_period_end": "2026-12-17",
    "season_start_date": "2026-08-24",
    "season_end_date": "2026-12-17",
    "birth_year_min": 2019,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://puistolanurheilijat.fi/tennis/minitennis-syksy-2026/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "1h / viikko 240 € (Syyskausi 24.8.-17.12.2026)"
      },
      {
        "type": "membership",
        "amount_eur": 25,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "PuiU Tenniksen jäsenmaksu 2026 25€ (alle 19-vuotiaat); toiminnassa mukana oleminen edellyttää jäsenyyttä"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "'16 harjoitusta' koskee syyskautta; koodilla tarkistettu, että kummallekin viikonpäivälle osuu 24.8.–17.12.2026 välillä 16 kertaa, kun syysloman 12.10. ja 15.10. jätetään pois. Ryhmän ensimmäistä/viimeistä päivää ei ilmoitettu erikseen → start/end_date null. Ilmoittautumislomakkeen linkkiä ei löytynyt sivun HTML:stä. Sivu vaati selain-UA:n (403 oletus-UA:lla). Hintajakso term: sama virallinen teksti kertoo 'Syyskausi 24.8.-17.12.2026, 16 harjoitusta' ja hinnan 240 € (Ilpon jonolinjaus 2, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-021",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/puiu_minitennis_ee5c1629e729.html",
      "capture_sha256": "ee5c1629e729694dd5c66edbe9f52581fb6505a3fff22184519f3f6e25d447ec",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 65.06,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.81 kuukaudelle (2026-08-24–2026-12-17, price_period_start) + membership 25 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Tapulikaupunki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tennis",
    "provider": "Puistolan Urheilijat ry (PuiU Tennis)",
    "group_name": "Minitennis syksy 2026, ryhmä 2 (torstaisin 17:30–18:30)",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 vuotiaille tytöille ja pojille (2019-2021-syntyneet)",
    "parent_child": "unknown",
    "venue_name": "Helsingin Mailapelikeskus (ent. Puistolan Tennis- ja Palloiluhalli)",
    "address": "Tapulikaupungintie 4, 00750 Helsinki",
    "district": "Tapulikaupunki",
    "weekday": "torstai",
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 240.0,
    "price_basis": "Syyskausi 24.8.-17.12.2026, 16 harjoitusta; 1h / viikko 240 € + PuiU Tenniksen jäsenmaksu 25 € (alle 19 v)",
    "membership_fee_eur": 25.0,
    "other_required_fees": "PuiU Tenniksen jäsenmaksu 2026 25 € (alle 19-vuotiaat).",
    "equipment_notes": "Sisäliikuntavarustus; mailan saa tarvittaessa lainaksi seuralta.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://puistolanurheilijat.fi/tennis/minitennis-syksy-2026/",
    "source_quote": "Minitennis – syksy 2026, 5-7 v (2019-2021); ryhmä 2. torstaisin klo 17:30-18:30; Syyskausi 24.8.-17.12.2026, 16 harjoitusta; 1h / viikko 240 €; jäsenmaksu 25 € (alle 19 v).",
    "activity_id": "hel-2026-0429",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 265.0,
    "price_per_session_eur": 16.56,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-24",
    "price_period_end": "2026-12-17",
    "season_start_date": "2026-08-24",
    "season_end_date": "2026-12-17",
    "birth_year_min": 2019,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://puistolanurheilijat.fi/tennis/minitennis-syksy-2026/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "1h / viikko 240 € (Syyskausi 24.8.-17.12.2026)"
      },
      {
        "type": "membership",
        "amount_eur": 25,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "PuiU Tenniksen jäsenmaksu 2026 25€ (alle 19-vuotiaat); toiminnassa mukana oleminen edellyttää jäsenyyttä"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "'16 harjoitusta' koskee syyskautta; koodilla tarkistettu, että kummallekin viikonpäivälle osuu 24.8.–17.12.2026 välillä 16 kertaa, kun syysloman 12.10. ja 15.10. jätetään pois. Ryhmän ensimmäistä/viimeistä päivää ei ilmoitettu erikseen → start/end_date null. Ilmoittautumislomakkeen linkkiä ei löytynyt sivun HTML:stä. Sivu vaati selain-UA:n (403 oletus-UA:lla). Hintajakso term: sama virallinen teksti kertoo 'Syyskausi 24.8.-17.12.2026, 16 harjoitusta' ja hinnan 240 € (Ilpon jonolinjaus 2, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_09.json",
      "staging_id": "batch_2026-09-22_09-022",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_09/puiu_minitennis_ee5c1629e729.html",
      "capture_sha256": "ee5c1629e729694dd5c66edbe9f52581fb6505a3fff22184519f3f6e25d447ec",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 65.06,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.81 kuukaudelle (2026-08-24–2026-12-17, price_period_start) + membership 25 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Tapulikaupunki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Fliku ry",
    "group_name": "MANGOT 5-6V, Maanantai, SYKSY 2026",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6V",
    "parent_child": "unknown",
    "venue_name": "Liikuntakeskus PURO",
    "address": "Ratasmyllynkuja 1, 00920 Helsinki",
    "district": "Myllypuro",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-24",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 230.0,
    "price_basis": "Lapset 5-8v 230,00 € + Jäsenmaksu 2026 30,00 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Jäsenmaksu 2026 30 € (myClub-hintatiedoissa).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://fliku.myclub.fi/flow/courses/10654197",
    "source_quote": "MANGOT 5-6V, Maanantai, SYKSY 2026; Liikuntakeskus PURO; Lapset 5-8v 230,00 €; Jäsenmaksu 2026 30,00 €.",
    "activity_id": "hel-2026-0430",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 260.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://fliku.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-24",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-24",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 230,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Lapset 5-8v 230,00 € (myClub Hintatiedot)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 2026 30,00 € (myClub Hintatiedot, pakollinen); vähennys 'Olen jo maksanut jäsenmaksun vuodelle 2026 -30,00 €' valinnaisissa maksuissa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perutusta kurssipaikasta veloitetaan 50 € varausmaksu (peruutus mahdollinen ensimmäisen kokeilukerran jälkeen).",
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_09 deferred-listalta (collected from deferred batch_2026-09-22_09). Kertamäärä laskettu koodilla aikataulusta: 15 harjoitusriviä; pois 'EI HARJOITUKSIA' -rivit: 2026-10-12 SYYSLOMA, EI HARJOITUKSIA. Kurssi alkanut 2026-08-24. Laji: myClub-ryhmä 'Lapset 6-8v'; kurssi listattu fliku.fi:n upotuksessa 'ILMOITTAUTUMINEN (Telinevoimistelu ja TeamGym)'. Hintajakso term: kurssin nimi 'SYKSY 2026', kauden päivät ja yksi hinta samalla ilmoittautumissivulla (Ilpon jonolinjaus 2, 22.9.2026); kertahinta laskettu koodilla.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/fliku_mangot_84c90a617bb9.html",
      "capture_sha256": "84c90a617bb90a5b5f359704efe20958a6c40e2af3697494a946ae963708dbf0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 68.54,
    "monthly_cost_basis": "230.0 € / term jaettuna 3.48 kuukaudelle (2026-08-24–2026-12-07, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Fliku ry",
    "group_name": "METSÄMANSIKAT 5-6V, Tiistai, SYKSY 2026",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6V",
    "parent_child": "unknown",
    "venue_name": "Liikuntamylly",
    "address": "Jauhokuja 3, 00920 Helsinki",
    "district": "Myllypuro",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:50",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 230.0,
    "price_basis": "Lapset 5-8v 230,00 € + Jäsenmaksu 2026 30,00 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Jäsenmaksu 2026 30 € (myClub-hintatiedoissa).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://fliku.myclub.fi/flow/courses/10654217",
    "source_quote": "METSÄMANSIKAT 5-6V, Tiistai, SYKSY 2026; Liikuntamylly; Lapset 5-8v 230,00 €; Jäsenmaksu 2026 30,00 €.",
    "activity_id": "hel-2026-0431",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 260.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://fliku.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-25",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-08-25",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 230,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Lapset 5-8v 230,00 € (myClub Hintatiedot)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 2026 30,00 € (myClub Hintatiedot, pakollinen); vähennys 'Olen jo maksanut jäsenmaksun vuodelle 2026 -30,00 €' valinnaisissa maksuissa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perutusta kurssipaikasta veloitetaan 50 € varausmaksu (peruutus mahdollinen ensimmäisen kokeilukerran jälkeen).",
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_09 deferred-listalta (collected from deferred batch_2026-09-22_09). Kertamäärä laskettu koodilla aikataulusta: 15 harjoitusriviä; pois 'EI HARJOITUKSIA' -rivit: 2026-10-13 SYYSLOMA, EI HARJOITUKSIA. Kurssi alkanut 2026-08-25. Vakiovuoro 17:00–17:50 (14/15 kertaa); poikkeava aika: 2026-08-25 17:00–18:00. Laji: myClub-ryhmä 'Lapset 6-8v'; kurssi listattu fliku.fi:n upotuksessa 'ILMOITTAUTUMINEN (Telinevoimistelu ja TeamGym)'. Hintajakso term: kurssin nimi 'SYKSY 2026', kauden päivät ja yksi hinta samalla ilmoittautumissivulla (Ilpon jonolinjaus 2, 22.9.2026); kertahinta laskettu koodilla.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/fliku_metsamansikat_d4a3830f6a7a.html",
      "capture_sha256": "d4a3830f6a7a1e34f94cd8c81a483b1d92da624c4f7f296a5a29a1845d8eb4a4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 68.54,
    "monthly_cost_basis": "230.0 € / term jaettuna 3.48 kuukaudelle (2026-08-25–2026-12-08, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Fliku ry",
    "group_name": "PAPAIJAT 5-6V, Tiistai, SYKSY 2026",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6V",
    "parent_child": "unknown",
    "venue_name": "Liikuntamylly",
    "address": "Jauhokuja 3, 00920 Helsinki",
    "district": "Myllypuro",
    "weekday": "tiistai",
    "start_time": "18:10",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Lapset 5-8v 160,00 € + Jäsenmaksu 2026 30,00 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Jäsenmaksu 2026 30 € (myClub-hintatiedoissa).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://fliku.myclub.fi/flow/courses/10654307",
    "source_quote": "PAPAIJAT 5-6V, Tiistai, SYKSY 2026; Liikuntamylly; Lapset 5-8v 160,00 €; Jäsenmaksu 2026 30,00 €.",
    "activity_id": "hel-2026-0432",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 190.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://fliku.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-25",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-08-25",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Lapset 5-8v 160,00 € (myClub Hintatiedot)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 2026 30,00 € (myClub Hintatiedot, pakollinen); vähennys 'Olen jo maksanut jäsenmaksun vuodelle 2026 -30,00 €' valinnaisissa maksuissa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perutusta kurssipaikasta veloitetaan 50 € varausmaksu (peruutus mahdollinen ensimmäisen kokeilukerran jälkeen).",
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_09 deferred-listalta (collected from deferred batch_2026-09-22_09). Hintaristiriita: fliku.fi/hinnasto (21.9.2026, 'Hinnasto 1.10.2026 alkaen') 'Harjoitukset 1x/viikossa 45-60min: Syksy 4kk 230€', mutta myClub-ilmoittautumissivulla 160,00 € → ilmoittautumissivu voittaa (Ilpon päätös 21.9.2026). Kertamäärä laskettu koodilla aikataulusta: 15 harjoitusriviä; pois 'EI HARJOITUKSIA' -rivit: 2026-10-13 SYYSLOMA, EI HARJOITUKSIA. Kurssi alkanut 2026-08-25. Laji: myClub-ryhmä 'Lapset 6-8v'; kurssi listattu fliku.fi:n upotuksessa 'ILMOITTAUTUMINEN (Telinevoimistelu ja TeamGym)'. Hintajakso term: kurssin nimi 'SYKSY 2026', kauden päivät ja yksi hinta samalla ilmoittautumissivulla (Ilpon jonolinjaus 2, 22.9.2026); kertahinta laskettu koodilla.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/fliku_papaijat_fbc2f4f13043.html",
      "capture_sha256": "fbc2f4f130435d6a9c9085bb8172b114e210149c05d60af53effa67e8c1829cc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.44,
    "monthly_cost_basis": "160.0 € / term jaettuna 3.48 kuukaudelle (2026-08-25–2026-12-08, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Fliku ry",
    "group_name": "PERSIKAT 5-6V,Keskiviikko, SYKSY 2026",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6V",
    "parent_child": "unknown",
    "venue_name": "Liikuntamylly",
    "address": "Jauhokuja 3, 00920 Helsinki",
    "district": "Myllypuro",
    "weekday": "keskiviikko",
    "start_time": "18:15",
    "end_time": "19:15",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 230.0,
    "price_basis": "Lapset 5-8v 230,00 € + Jäsenmaksu 2026 30,00 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Jäsenmaksu 2026 30 € (myClub-hintatiedoissa).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://fliku.myclub.fi/flow/courses/10654376",
    "source_quote": "PERSIKAT 5-6V,Keskiviikko, SYKSY 2026; Liikuntamylly; Lapset 5-8v 230,00 €; Jäsenmaksu 2026 30,00 €.",
    "activity_id": "hel-2026-0433",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 260.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://fliku.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-26",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-26",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 230,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Lapset 5-8v 230,00 € (myClub Hintatiedot)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 2026 30,00 € (myClub Hintatiedot, pakollinen); vähennys 'Olen jo maksanut jäsenmaksun vuodelle 2026 -30,00 €' valinnaisissa maksuissa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perutusta kurssipaikasta veloitetaan 50 € varausmaksu (peruutus mahdollinen ensimmäisen kokeilukerran jälkeen).",
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_09 deferred-listalta (collected from deferred batch_2026-09-22_09). Kertamäärä laskettu koodilla aikataulusta: 15 harjoitusriviä; pois 'EI HARJOITUKSIA' -rivit: 2026-10-14 SYYSLOMA, EI HARJOITUKSIA. Kurssi alkanut 2026-08-26. Laji: myClub-ryhmä 'Lapset 6-8v'; kurssi listattu fliku.fi:n upotuksessa 'ILMOITTAUTUMINEN (Telinevoimistelu ja TeamGym)'. Hintajakso term: kurssin nimi 'SYKSY 2026', kauden päivät ja yksi hinta samalla ilmoittautumissivulla (Ilpon jonolinjaus 2, 22.9.2026); kertahinta laskettu koodilla.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/fliku_persikat_8a55ef59fe79.html",
      "capture_sha256": "8a55ef59fe7933f540f773f2e93cb3017a6e559ff38cf54e3a8f504f650583cc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 68.54,
    "monthly_cost_basis": "230.0 € / term jaettuna 3.48 kuukaudelle (2026-08-26–2026-12-09, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Fliku ry",
    "group_name": "NINJAT 5-6V, Sunnuntai, SYKSY 2026",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6V",
    "parent_child": "unknown",
    "venue_name": "Liikuntamylly",
    "address": "Jauhokuja 3, 00920 Helsinki",
    "district": "Myllypuro",
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": "2026-08-30",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Lapset 5-8v 160,00 € + Jäsenmaksu 2026 30,00 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Jäsenmaksu 2026 30 € (myClub-hintatiedoissa).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://fliku.myclub.fi/flow/courses/10654448",
    "source_quote": "NINJAT 5-6V, Sunnuntai, SYKSY 2026; Liikuntamylly; Lapset 5-8v 160,00 €; Jäsenmaksu 2026 30,00 €.",
    "activity_id": "hel-2026-0434",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 190.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://fliku.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-30",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-30",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Lapset 5-8v 160,00 € (myClub Hintatiedot)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 2026 30,00 € (myClub Hintatiedot, pakollinen); vähennys 'Olen jo maksanut jäsenmaksun vuodelle 2026 -30,00 €' valinnaisissa maksuissa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perutusta kurssipaikasta veloitetaan 50 € varausmaksu (peruutus mahdollinen ensimmäisen kokeilukerran jälkeen).",
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_09 deferred-listalta (collected from deferred batch_2026-09-22_09). Hintaristiriita: fliku.fi/hinnasto (21.9.2026, 'Hinnasto 1.10.2026 alkaen') 'Harjoitukset 1x/viikossa 45-60min: Syksy 4kk 230€', mutta myClub-ilmoittautumissivulla 160,00 € → ilmoittautumissivu voittaa (Ilpon päätös 21.9.2026). Kertamäärä laskettu koodilla aikataulusta: 14 harjoitusriviä; pois 'EI HARJOITUKSIA' -rivit: 2026-10-18 SYYSLOMA, EI HARJOITUKSIA; 2026-12-06 PYHÄPÄIVÄ, Ei harjoituksia. Kurssi alkanut 2026-08-30. Laji: myClub-ryhmä 'FreeGym/Parkour'; kurssi listattu fliku.fi:n upotuksessa 'ILMOITTAUTUMINEN (FreeGym/Parkour)'. | Laji voimistelu (Ilpon päätös 9, 22.9.2026: FreeGym/parkour/ninja/trampoliini → voimistelu, perhe-/tempputunnit → temppujumppa). Hintajakso term: kurssin nimi 'SYKSY 2026', kauden päivät ja yksi hinta samalla ilmoittautumissivulla (Ilpon jonolinjaus 2, 22.9.2026); kertahinta laskettu koodilla.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/fliku_ninjat_5d1a34786287.html",
      "capture_sha256": "5d1a347862871a3d01fbda4f4a934d414b3c03d5ead5648237ff3366328cae33",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.44,
    "monthly_cost_basis": "160.0 € / term jaettuna 3.48 kuukaudelle (2026-08-30–2026-12-13, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Fliku ry",
    "group_name": "PEHMIKSET 5-6V, Sunnuntai, SYKSY 2026",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6V",
    "parent_child": "unknown",
    "venue_name": "Liikuntamylly",
    "address": "Jauhokuja 3, 00920 Helsinki",
    "district": "Myllypuro",
    "weekday": "sunnuntai",
    "start_time": "11:10",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": "2026-08-30",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 230.0,
    "price_basis": "Lapset 5-8v 230,00 € + Jäsenmaksu 2026 30,00 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": "Jäsenmaksu 2026 30 € (myClub-hintatiedoissa).",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://fliku.myclub.fi/flow/courses/10654290",
    "source_quote": "PEHMIKSET 5-6V, Sunnuntai, SYKSY 2026; Liikuntamylly; Lapset 5-8v 230,00 €; Jäsenmaksu 2026 30,00 €.",
    "activity_id": "hel-2026-0435",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 260.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://fliku.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-30",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-30",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 230,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Lapset 5-8v 230,00 € (myClub Hintatiedot)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 2026 30,00 € (myClub Hintatiedot, pakollinen); vähennys 'Olen jo maksanut jäsenmaksun vuodelle 2026 -30,00 €' valinnaisissa maksuissa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perutusta kurssipaikasta veloitetaan 50 € varausmaksu (peruutus mahdollinen ensimmäisen kokeilukerran jälkeen).",
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-22_09 deferred-listalta (collected from deferred batch_2026-09-22_09). Kertamäärä laskettu koodilla aikataulusta: 14 harjoitusriviä; pois 'EI HARJOITUKSIA' -rivit: 2026-10-18 SYYSLOMA, EI HARJOITUKSIA; 2026-12-06 PYHÄPÄIVÄ, Ei harjoituksia. Kurssi alkanut 2026-08-30. Vakiovuoro 11:10–12:00 (13/14 kertaa); poikkeava aika: 2026-08-30 11:30–12:30. Laji: myClub-ryhmä 'Lapset 6-8v'; kurssi listattu fliku.fi:n upotuksessa 'ILMOITTAUTUMINEN (Telinevoimistelu ja TeamGym)'. Hintajakso term: kurssin nimi 'SYKSY 2026', kauden päivät ja yksi hinta samalla ilmoittautumissivulla (Ilpon jonolinjaus 2, 22.9.2026); kertahinta laskettu koodilla.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_12.json",
      "staging_id": "batch_2026-09-22_12-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_12/fliku_pehmikset_7eff8b0f3829.html",
      "capture_sha256": "7eff8b0f3829184d68e2ed582c6dd07577969606643ea798bf26dd53da413c22",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 68.54,
    "monthly_cost_basis": "230.0 € / term jaettuna 3.48 kuukaudelle (2026-08-30–2026-12-13, price_period_start) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 4–5 v. (26470)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-11",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "full",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 4–5 v. (26470): 26470 Ti 17:00 MUN 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0436",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "inferred",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 11.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 11.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00330 via data/venues_hto.json (postcode 00330 = Tilastokeskus Paavo postal area 'Munkkiniemi') Toimipaikka jätetty tyhjäksi (Ilpon jonolinjaus 5, 22.9.2026): lukujärjestyksessä vain studiokoodi 'MUN', vastaavuus toimipisteeseen 'Munkkiniemen Yhteiskoulu, Monttu-sali / Laajalahdentie 21, 00330 Helsinki / Munkkiniemi' perustui pelkkään etuliitteeseen. Kertamäärä 21 (inferred) ei ole järjestäjän virallisesti ilmoittama ryhmäkohtainen luku → ei julkaista (Ilpon jonolinjaus 1, 22.9.2026): sessions_count=null, ei kertahintaa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 5–6 v. (26566)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-10",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "unknown",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 5–6 v. (26566): 26566 Ma 16:45 MUN 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0437",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "inferred",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 10.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | district derived from postcode 00330 via data/venues_hto.json (postcode 00330 = Tilastokeskus Paavo postal area 'Munkkiniemi') Toimipaikka jätetty tyhjäksi (Ilpon jonolinjaus 5, 22.9.2026): lukujärjestyksessä vain studiokoodi 'MUN', vastaavuus toimipisteeseen 'Munkkiniemen Yhteiskoulu, Monttu-sali / Laajalahdentie 21, 00330 Helsinki / Munkkiniemi' perustui pelkkään etuliitteeseen. Kertamäärä 21 (inferred) ei ole järjestäjän virallisesti ilmoittama ryhmäkohtainen luku → ei julkaista (Ilpon jonolinjaus 1, 22.9.2026): sessions_count=null, ei kertahintaa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-016",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Esibaletti 5–6 v. (26568)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-11",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 245.7,
    "price_basis": "syyslukukausi (21 vk), 45 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 15 € (45 min), ei täysille tunneille.",
    "enrollment_status": "full",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Esibaletti 5–6 v. (26568): 26568 Ti 17:45 MUN 45 min; lukukausi 45 min 1 krt/vko 245,70 €.",
    "activity_id": "hel-2026-0438",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 245.7,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "inferred",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245.7,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärä 21 laskettu koodilla (tuntihaun alkupäivä 11.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 11.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00330 via data/venues_hto.json (postcode 00330 = Tilastokeskus Paavo postal area 'Munkkiniemi') Toimipaikka jätetty tyhjäksi (Ilpon jonolinjaus 5, 22.9.2026): lukujärjestyksessä vain studiokoodi 'MUN', vastaavuus toimipisteeseen 'Munkkiniemen Yhteiskoulu, Monttu-sali / Laajalahdentie 21, 00330 Helsinki / Munkkiniemi' perustui pelkkään etuliitteeseen. Kertamäärä 21 (inferred) ei ole järjestäjän virallisesti ilmoittama ryhmäkohtainen luku → ei julkaista (Ilpon jonolinjaus 1, 22.9.2026): sessions_count=null, ei kertahintaa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-018",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 48.56,
    "monthly_cost_basis": "245.7 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin tanssiopisto",
    "group_name": "Klassinen baletti Alkeet 1 6–8 v. (26589)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6–8-vuotiaat",
    "parent_child": "unknown",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": "perjantai",
    "start_time": "17:15",
    "end_time": "18:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-14",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 297.67,
    "price_basis": "syyslukukausi (21 vk), 60 min 1 kerta/vko",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Yksittäistunti 19 € (60 min), ei täysille tunneille.",
    "enrollment_status": "full",
    "source_url": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "source_quote": "Klassinen baletti Alkeet 1 6–8 v. (26589): 26589 Pe 17:15 MUN 60 min; lukukausi 60 min 1 krt/vko 297,67 €.",
    "activity_id": "hel-2026-0439",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 297.67,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2027-01-10",
    "season_start_date": "2026-08-10",
    "season_end_date": "2027-01-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "inferred",
    "sessions_count_source": "https://uusi.helsingintanssiopisto.fi/wpc/uploads/2026/09/HTO_Kausiesite_26-27DIGIVERSIO3-1.pdf",
    "availability_status": "full",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 297.67,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille | Kertamäärä 20 laskettu koodilla (tuntihaun alkupäivä 14.8.2026 – syyslukukauden loppu 10.1.2027, PDF s. 4 lomapäivät pois); HTO ei ilmoita ryhmäkohtaista kertamäärää → sessions_count_status=inferred, ei kertahintaa. | Ryhmä alkaa 14.8.2026 (lukukausi alkoi 10.8.2026); rivillä listahinta. | district derived from postcode 00330 via data/venues_hto.json (postcode 00330 = Tilastokeskus Paavo postal area 'Munkkiniemi') Toimipaikka jätetty tyhjäksi (Ilpon jonolinjaus 5, 22.9.2026): lukujärjestyksessä vain studiokoodi 'MUN', vastaavuus toimipisteeseen 'Munkkiniemen Yhteiskoulu, Monttu-sali / Laajalahdentie 21, 00330 Helsinki / Munkkiniemi' perustui pelkkään etuliitteeseen. Kertamäärä 20 (inferred) ei ole järjestäjän virallisesti ilmoittama ryhmäkohtainen luku → ei julkaista (Ilpon jonolinjaus 1, 22.9.2026): sessions_count=null, ei kertahintaa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_13.json",
      "staging_id": "batch_2026-09-22_13-032",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_13/hto_esite_3d17249c0e62.pdf",
      "capture_sha256": "3d17249c0e628d2cbb204086edbf096f7dc3dc82b2c946bb24a801f06f60764c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 58.83,
    "monthly_cost_basis": "297.67 € / term jaettuna 5.06 kuukaudelle (2026-08-10–2027-01-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Perheliikkari 2-3v. Lauantai 10-10.45 (syksy 2026)",
    "min_age": 2,
    "max_age": 3,
    "eligibility_text": "2-3v.",
    "parent_child": "unknown",
    "venue_name": "PNV Liikuntakeskus / Move",
    "address": "Ohrahuhdantie 4, 00680 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": "2026-08-22",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Perheliikunta syksy 2026",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942561",
    "source_quote": "Perheliikkari 2-3v. Lauantai 10-10.45 (syksy 2026) | 22.8.2026 10:00 - 12.12.2026 | Perheliikunta syksy 2026 151,00 € *",
    "activity_id": "hel-2026-0440",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-22",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Korjaus 22.9.2026: aikataulun 11 'muuta' tapahtumaa ovat samaa ryhmää – järjestäjän kirjoitusvirhe nimessä ('Lauantai 10.10.45' vs. 'Lauantai 10-10.45'). Kertamäärä 16 (22.8.–12.12.2026, ei 17.10.), kertahinta laskettu koodilla.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-023",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942561_92838e200661.html",
      "capture_sha256": "92838e2006618aaf7091779f3976fb214f32a3f3d37281b7fe8c42ae6b98a415",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-22–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Itä-Pakila",
    "district_basis": "geokoodattu osoite -> sub_district 'Itä-Pakila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Pakilan Voimistelijat PNV ry",
    "group_name": "Perhegym 1-3v. Maanantai 10.30-11.15 (Syksy 2026)",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3v.",
    "parent_child": "unknown",
    "venue_name": "PNV Liikuntakeskus / Move",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "10:30",
    "end_time": "11:15",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 151.0,
    "price_basis": "Seuran hinnat (kuvausteksti): 'Perheliikunta: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pnv.myclub.fi/flow/courses/10942052",
    "source_quote": "Perhegym 1-3v. Maanantai 10.30-11.15 (Syksy 2026) | 17.8.2026 10:30 - 7.12.2026 | Perheliikunta syksy 2026 -25% 114,00 € *; Perheliikunta: syyskausi 2026: 151 €",
    "activity_id": "hel-2026-0441",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 181.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 151,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnat (kuvausteksti): 'Perheliikunta: syyskausi 2026: 151 €' = normaalihinta; ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €' (alennettu, Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [
      {
        "label": "alennettu hinta -25 %",
        "amount_eur": 114.0,
        "applies_if": "ilmoittautumissivun Hintatiedot: 'Perheliikunta syksy 2026 -25% 114.00 €'",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hintaristiriita samalla sivulla: kuvaus 'Perheliikunta: syyskausi 2026: 151 €', myClub Hintatiedot 'Perheliikunta syksy 2026 -25% 114.00 €'. price_eur = normaalihinta 151.0 € (Ilpon päätös 4, 22.9.2026: alennus on ehto, ei perushinta – poikkeus sääntöön 'ilmoittautumissivu voittaa'); alennus price_options-kentässä. Aikataulun tapahtumat on nimetty 'Syksy 2025' (järjestäjän kirjoitusvirhe); päivämäärät ovat syksyn 2026 maanantaita. Kertamäärää ei julkaista (Ilpon jonolinjaus 1, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-025",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_pnv_10942052_bce478f39704.html",
      "capture_sha256": "bce478f39704e8356d1cbf36eb38307332cfb793c79324a8eb5b632ad7a853f9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.67,
    "monthly_cost_basis": "151.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Helsinki - VSH ry",
    "group_name": "2020-2021 Jekkuparkour KIVIKKO MA klo 16:00-17:00",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021",
    "parent_child": "no",
    "venue_name": "Kivikon Jekkulinna 3. krs",
    "address": "Savikiekontie 4, 00940 Helsinki, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:00",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Harjoitusmaksu SYKSY 2026",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://voimisteluseurahelsinki.myclub.fi/flow/courses/10729461",
    "source_quote": "2020-2021 Jekkuparkour KIVIKKO MA klo 16:00-17:00 | 17.8.2026 16:00 - 7.12.2026 | Harjoitusmaksu SYKSY 2026 240,00 €",
    "activity_id": "hel-2026-0442",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 270.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Jäsenmaksu 2026 30,00 € on merkitty valinnaiseksi, mutta seuran kuvausteksti: 'Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta' - pakollinen (Ilpon päätös, CLAUDE.md kohta A8, 22.9.2026)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Harjoitusmaksun SYKSY 2026 hyvitys -80,00 €",
    "unverified_fields": [],
    "verification_notes": "Jäsenmaksu näkyy myClubin 'Valinnaiset maksut' -kohdassa, mutta seuran oma kuvausteksti ('Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta') sanoo sen pakolliseksi -> fee_components mandatory=true (Ilpon päätös A8). Aikataulun PERUTTU-/näytös-/korvaava tapahtuma ei ole harjoitus eikä kerroissa mukana (Ilpon päätös 21.9.2026); ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-031",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_voimisteluseurahelsinki_10729461_8f790b142e9b.html",
      "capture_sha256": "8f790b142e9b79c2dca0047620c85c4e20e3fe5f18936785ec213f41c3a4efd6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 64.65,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kivikko",
    "district_basis": "geokoodattu osoite -> sub_district 'Kivikko' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Helsinki - VSH ry",
    "group_name": "2020-2021 Jekkukoulu tytöt KIVIKKO MA klo 18:30-19:30",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021",
    "parent_child": "no",
    "venue_name": "Kivikon Jekkulinna 3. krs",
    "address": "Savikiekontie 4, 00940 Helsinki, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:30",
    "end_time": "19:30",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Harjoitusmaksu SYKSY 2026",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://voimisteluseurahelsinki.myclub.fi/flow/courses/10740120",
    "source_quote": "2020-2021 Jekkukoulu tytöt KIVIKKO MA klo 18:30-19:30 | 17.8.2026 18:30 - 7.12.2026 | Harjoitusmaksu SYKSY 2026 240,00 €",
    "activity_id": "hel-2026-0443",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 270.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Jäsenmaksu 2026 30,00 € on merkitty valinnaiseksi, mutta seuran kuvausteksti: 'Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta' - pakollinen (Ilpon päätös, CLAUDE.md kohta A8, 22.9.2026)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Harjoitusmaksun SYKSY 2026 hyvitys -80,00 €",
    "unverified_fields": [],
    "verification_notes": "Jäsenmaksu näkyy myClubin 'Valinnaiset maksut' -kohdassa, mutta seuran oma kuvausteksti ('Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta') sanoo sen pakolliseksi -> fee_components mandatory=true (Ilpon päätös A8). Aikataulun PERUTTU-/näytös-/korvaava tapahtuma ei ole harjoitus eikä kerroissa mukana (Ilpon päätös 21.9.2026); ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-032",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_voimisteluseurahelsinki_10740120_e9a1c815288c.html",
      "capture_sha256": "e9a1c815288c37489e56e2dc5644928feba690157fc4c6df137b6b55f60cd34b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 64.65,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kivikko",
    "district_basis": "geokoodattu osoite -> sub_district 'Kivikko' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Helsinki - VSH ry",
    "group_name": "2020-2021 Jekkukoulu tytöt LIIKUNTAMYLLY KE klo 16:45-17:45",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021",
    "parent_child": "no",
    "venue_name": "Liikuntamylly Jekkusali",
    "address": "Jauhokuja 3, 00920 Helsinki, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "16:45",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Harjoitusmaksu SYKSY 2026",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://voimisteluseurahelsinki.myclub.fi/flow/courses/10738082",
    "source_quote": "2020-2021 Jekkukoulu tytöt LIIKUNTAMYLLY KE klo 16:45-17:45 | 19.8.2026 16:45 - 9.12.2026 | Harjoitusmaksu SYKSY 2026 240,00 €",
    "activity_id": "hel-2026-0444",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 270.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Jäsenmaksu 2026 30,00 € on merkitty valinnaiseksi, mutta seuran kuvausteksti: 'Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta' - pakollinen (Ilpon päätös, CLAUDE.md kohta A8, 22.9.2026)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Harjoitusmaksun SYKSY 2026 hyvitys -80,00 €",
    "unverified_fields": [],
    "verification_notes": "Jäsenmaksu näkyy myClubin 'Valinnaiset maksut' -kohdassa, mutta seuran oma kuvausteksti ('Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta') sanoo sen pakolliseksi -> fee_components mandatory=true (Ilpon päätös A8). Aikataulun PERUTTU-/näytös-/korvaava tapahtuma ei ole harjoitus eikä kerroissa mukana (Ilpon päätös 21.9.2026); ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-033",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_voimisteluseurahelsinki_10738082_ced9614fec78.html",
      "capture_sha256": "ced9614fec78aece317e295651ca70a225e6e5a1ef4bfcbc79f455265b7422ce",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 64.65,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.71 kuukaudelle (2026-08-19–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Myllypuro",
    "district_basis": "geokoodattu osoite -> sub_district 'Myllypuro' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Helsinki - VSH ry",
    "group_name": "2020-2021 Jekkutramppa KIVIKKO KE klo 17:00-18:00",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021",
    "parent_child": "no",
    "venue_name": "Kivikon Jekkulinna 3. krs",
    "address": "Savikiekontie 4, 00940 Helsinki, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Harjoitusmaksu SYKSY 2026",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://voimisteluseurahelsinki.myclub.fi/flow/courses/10735910",
    "source_quote": "2020-2021 Jekkutramppa KIVIKKO KE klo 17:00-18:00 | 19.8.2026 17:00 - 9.12.2026 | Harjoitusmaksu SYKSY 2026 240,00 €",
    "activity_id": "hel-2026-0445",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 270.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Jäsenmaksu 2026 30,00 € on merkitty valinnaiseksi, mutta seuran kuvausteksti: 'Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta' - pakollinen (Ilpon päätös, CLAUDE.md kohta A8, 22.9.2026)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Harjoitusmaksun SYKSY 2026 hyvitys -80,00 €",
    "unverified_fields": [],
    "verification_notes": "Jäsenmaksu näkyy myClubin 'Valinnaiset maksut' -kohdassa, mutta seuran oma kuvausteksti ('Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta') sanoo sen pakolliseksi -> fee_components mandatory=true (Ilpon päätös A8). Aikataulun PERUTTU-/näytös-/korvaava tapahtuma ei ole harjoitus eikä kerroissa mukana (Ilpon päätös 21.9.2026); ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-034",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_voimisteluseurahelsinki_10735910_729dd5af736a.html",
      "capture_sha256": "729dd5af736a43466915bcd26fcaeca26348b9e1067332cd87d7aa1395da9492",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 64.65,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.71 kuukaudelle (2026-08-19–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kivikko",
    "district_basis": "geokoodattu osoite -> sub_district 'Kivikko' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Helsinki - VSH ry",
    "group_name": "2020-2021 Jekkukoulu tytöt KIVIKKO TO klo 16:45-17:45",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021",
    "parent_child": "no",
    "venue_name": "Kivikon Jekkulinna 3. krs",
    "address": "Savikiekontie 4, 00940 Helsinki, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "16:45",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Harjoitusmaksu SYKSY 2026",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://voimisteluseurahelsinki.myclub.fi/flow/courses/10740154",
    "source_quote": "2020-2021 Jekkukoulu tytöt KIVIKKO TO klo 16:45-17:45 | 20.8.2026 16:45 - 10.12.2026 | Harjoitusmaksu SYKSY 2026 240,00 €",
    "activity_id": "hel-2026-0446",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 270.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-20",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Jäsenmaksu 2026 30,00 € on merkitty valinnaiseksi, mutta seuran kuvausteksti: 'Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta' - pakollinen (Ilpon päätös, CLAUDE.md kohta A8, 22.9.2026)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Harjoitusmaksun SYKSY 2026 hyvitys -80,00 €",
    "unverified_fields": [],
    "verification_notes": "Jäsenmaksu näkyy myClubin 'Valinnaiset maksut' -kohdassa, mutta seuran oma kuvausteksti ('Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta') sanoo sen pakolliseksi -> fee_components mandatory=true (Ilpon päätös A8). Aikataulun PERUTTU-/näytös-/korvaava tapahtuma ei ole harjoitus eikä kerroissa mukana (Ilpon päätös 21.9.2026); ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-035",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_voimisteluseurahelsinki_10740154_a16f1b79b21d.html",
      "capture_sha256": "a16f1b79b21d4645d8c7ab79de78c35ffa00ba13b618fd1812f44566feefbd56",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 64.65,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.71 kuukaudelle (2026-08-20–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kivikko",
    "district_basis": "geokoodattu osoite -> sub_district 'Kivikko' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Helsinki - VSH ry",
    "group_name": "2020-2022 Jekkukoulu pojat LIIKUNTAMYLLY ti klo 18:00-19:00",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2022",
    "parent_child": "no",
    "venue_name": "Liikuntamylly telinesali",
    "address": "Jauhokuja 3, 00920 Helsinki, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Harjoitusmaksu SYKSY 2026",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://voimisteluseurahelsinki.myclub.fi/flow/courses/10734638",
    "source_quote": "2020-2022 Jekkukoulu pojat LIIKUNTAMYLLY ti klo 18:00-19:00 | 18.8.2026 18:00 - 8.12.2026 | Harjoitusmaksu SYKSY 2026 240,00 €",
    "activity_id": "hel-2026-0447",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 270.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-18",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": 2020,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Jäsenmaksu 2026 30,00 € on merkitty valinnaiseksi, mutta seuran kuvausteksti: 'Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta' - pakollinen (Ilpon päätös, CLAUDE.md kohta A8, 22.9.2026)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Harjoitusmaksun SYKSY 2026 hyvitys -80,00 €",
    "unverified_fields": [],
    "verification_notes": "Jäsenmaksu näkyy myClubin 'Valinnaiset maksut' -kohdassa, mutta seuran oma kuvausteksti ('Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta') sanoo sen pakolliseksi -> fee_components mandatory=true (Ilpon päätös A8). Aikataulun PERUTTU-/näytös-/korvaava tapahtuma ei ole harjoitus eikä kerroissa mukana (Ilpon päätös 21.9.2026); ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-036",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_voimisteluseurahelsinki_10734638_d2971478f3ac.html",
      "capture_sha256": "d2971478f3ac02c70ac0d0865e73f7f66604eaa6d8403fe3323e2d2032c67ff0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 64.65,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.71 kuukaudelle (2026-08-18–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Myllypuro",
    "district_basis": "geokoodattu osoite -> sub_district 'Myllypuro' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Helsinki - VSH ry",
    "group_name": "2020-2022 Jekkukoulu pojat KIVIKKO to klo 17:00-18:00",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2022",
    "parent_child": "no",
    "venue_name": "Kivikon telinesali 1. krs",
    "address": "Savikiekontie 4, 00940 Helsinki, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Harjoitusmaksu SYKSY 2026",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://voimisteluseurahelsinki.myclub.fi/flow/courses/10735274",
    "source_quote": "2020-2022 Jekkukoulu pojat KIVIKKO to klo 17:00-18:00 | 20.8.2026 17:00 - 10.12.2026 | Harjoitusmaksu SYKSY 2026 240,00 €",
    "activity_id": "hel-2026-0448",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 270.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-20",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": 2020,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Jäsenmaksu 2026 30,00 € on merkitty valinnaiseksi, mutta seuran kuvausteksti: 'Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta' - pakollinen (Ilpon päätös, CLAUDE.md kohta A8, 22.9.2026)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Harjoitusmaksun SYKSY 2026 hyvitys -80,00 €",
    "unverified_fields": [],
    "verification_notes": "Jäsenmaksu näkyy myClubin 'Valinnaiset maksut' -kohdassa, mutta seuran oma kuvausteksti ('Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta') sanoo sen pakolliseksi -> fee_components mandatory=true (Ilpon päätös A8). Aikataulun PERUTTU-/näytös-/korvaava tapahtuma ei ole harjoitus eikä kerroissa mukana (Ilpon päätös 21.9.2026); ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-037",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_voimisteluseurahelsinki_10735274_e15f396fa778.html",
      "capture_sha256": "e15f396fa778c62839fd79fc387a46d5be8628cb9a6ecbe401bf83bd9a951b47",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 64.65,
    "monthly_cost_basis": "240.0 € / term jaettuna 3.71 kuukaudelle (2026-08-20–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kivikko",
    "district_basis": "geokoodattu osoite -> sub_district 'Kivikko' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura Helsinki - VSH ry",
    "group_name": "2018-2021 Jekkukoulu pojat JATKO LIIKUNTAMYLLY ke klo 16:30-17:30 ja pe klo 16:30-17:30",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2018-2021",
    "parent_child": "no",
    "venue_name": "Liikuntamylly telinesali",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": "16:30",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 420.0,
    "price_basis": "Harjoitusmaksu SYKSY 2026",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://voimisteluseurahelsinki.myclub.fi/flow/courses/10734397",
    "source_quote": "2018-2021 Jekkukoulu pojat JATKO LIIKUNTAMYLLY ke klo 16:30-17:30 ja pe klo 16:30-17:30 | 19.8.2026 16:30 - 11.12.2026 | Harjoitusmaksu SYKSY 2026 420,00 €",
    "activity_id": "hel-2026-0449",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 450.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-11",
    "birth_year_min": 2018,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 420,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Jäsenmaksu 2026 30,00 € on merkitty valinnaiseksi, mutta seuran kuvausteksti: 'Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta' - pakollinen (Ilpon päätös, CLAUDE.md kohta A8, 22.9.2026)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Harjoitusmaksun SYKSY 2026 hyvitys -140,00 €",
    "unverified_fields": [],
    "verification_notes": "Jäsenmaksu näkyy myClubin 'Valinnaiset maksut' -kohdassa, mutta seuran oma kuvausteksti ('Harrasteryhmien hinnat koostuvat harjoitusmaksusta ja jäsenmaksusta') sanoo sen pakolliseksi -> fee_components mandatory=true (Ilpon päätös A8). Ryhmällä on useita harjoituspäiviä/kellonaikoja/paikkoja: epäselvät kentät jätetty tyhjiksi ja koko aikataulu on lähteen otteessa (Ilpon jonolinjaus 3, 22.9.2026). Riviä ei pilkota. Aikataulun PERUTTU-/näytös-/korvaava tapahtuma ei ole harjoitus eikä kerroissa mukana (Ilpon päätös 21.9.2026); ei review-syy.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_15.json",
      "staging_id": "batch_2026-09-22_15-038",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_15/myclub_voimisteluseurahelsinki_10734397_c4e9ee94a188.html",
      "capture_sha256": "c4e9ee94a188090eded21e5098c20a5aa1a84b45112984bb0a1dff17e921cc7f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 111.16,
    "monthly_cost_basis": "420.0 € / term jaettuna 3.78 kuukaudelle (2026-08-19–2026-12-11, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "jääkiekko",
    "provider": "Helsingin Kiekko-Tiikerit ry",
    "group_name": "Tiikerikiekkokoulu 2020 syntyneet 2026-2027",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Kiekkokoulu suunnattu pääasiassa 4-6-vuotiaille, ikähaitari ei kiveen hakattu; tämä ryhmä 2020 syntyneille (6 v).",
    "parent_child": "unknown",
    "venue_name": "Salmisaaren jäähalli, kenttä 2",
    "address": "Salmisaaren liikuntakeskus, K2-kerros, Helsinki",
    "district": "Salmisaari",
    "weekday": null,
    "start_time": "18:00",
    "end_time": "18:50",
    "season": "kausi 2026-2027",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 429.0,
    "price_basis": "koko kausi (28 viikkoa, syys- ja kevätkausi)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Luistimet, kaulasuoja, kasvosuojuksellinen kypärä, jääkiekkohanskat, maila, juomapullo; polvi-/kyynärsuojat suositeltavia.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://kiekko-tiikerit.fi/tiikerikiekkokoulu/",
    "source_quote": "Kiekkokoulu 2020 syntyneet: Tiistaisin ja torstaisin klo 18:00-18:50, Salmisaaren jäähallin kenttä 2. Kausi alkaa viikolla 36 (1.9.2026)... Koko kausi käsittää siis yhteensä 28 viikkoa. Kiekkokoulun hinta 2020 syntyneet: 429€ koko kausi. Jokaisen pelaajan vanhemman on itse ostettava lisenssi pelaajalla osoitteesta suomisport.fi... kiekkokoulurekisteröinti hintaan 5€ (sisältää vakuutuksen).",
    "activity_id": "hel-2026-0450",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 434.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": null,
    "billing_period": "full_season",
    "price_period_start": "2026-09-01",
    "price_period_end": "2027-04-15",
    "season_start_date": "2026-09-01",
    "season_end_date": "2027-04-15",
    "birth_year_min": 2020,
    "birth_year_max": 2020,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 429,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Koko kausi 2026-2027 (28 viikkoa)."
      },
      {
        "type": "license",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jääkiekkoliiton kiekkokoulurekisteröinti + vakuutus, ostetaan suomisport.fi:stä (sportti-id lisätään myClub-profiiliin)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "weekday",
      "sessions_count"
    ],
    "verification_notes": "UUSI JÄRJESTÄJÄ (kiekko-tiikerit.fi), ei vielä data/providers.json:issa - ks. providers_extra_proposed_batch16.json, Ilpon hyväksyntää odottava. Ryhmä harjoittelee KAHTENA päivänä viikossa (ti+to), skeema sallii vain yhden weekday-arvon - jätetty null, molemmat ajat samat (18:00-18:50). Session-määrä ei laskettavissa luotettavasti sivun tekstistä (28 viikkoa x 2 krt/vko miinus tarkemmin nimeämättömät poikkeukset) - ei arvattu, sessions_count=null. Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026). Ryhmällä on useita harjoituspäiviä/kellonaikoja/paikkoja: epäselvät kentät jätetty tyhjiksi ja koko aikataulu on lähteen otteessa (Ilpon jonolinjaus 3, 22.9.2026). Riviä ei pilkota.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_16.json",
      "staging_id": "batch_2026-09-22_16-007",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-22",
    "monthly_cost_eur": 57.94,
    "monthly_cost_basis": "429.0 € / full_season jaettuna 7.46 kuukaudelle (2026-09-01–2027-04-15, price_period_start) + license 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Salmisaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jääkiekko",
    "provider": "Helsingin Kiekko-Tiikerit ry",
    "group_name": "Tiikerikiekkokoulu 2021 ja myöhemmin syntyneet 2026-2027",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Kiekkokoulu suunnattu pääasiassa 4-6-vuotiaille, ikähaitari ei kiveen hakattu; tämä ryhmä 2021 tai myöhemmin syntyneille.",
    "parent_child": "unknown",
    "venue_name": "Salmisaaren jäähalli, kenttä 2",
    "address": "Salmisaaren liikuntakeskus, K2-kerros, Helsinki",
    "district": "Salmisaari",
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:50",
    "season": "kausi 2026-2027",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 295.0,
    "price_basis": "koko kausi (28 viikkoa, syys- ja kevätkausi)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Luistimet, kaulasuoja, kasvosuojuksellinen kypärä, jääkiekkohanskat, maila, juomapullo; polvi-/kyynärsuojat suositeltavia.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://kiekko-tiikerit.fi/tiikerikiekkokoulu/",
    "source_quote": "Kiekkokoulu 2021 ja myöhemmin syntyneet: Tiistaisin klo 18:00-18:50, Salmisaaren jäähalli kenttä 2. Kiekkokoulun hinta 2021 ja myöhemmin syntyneet 295€ koko kausi.",
    "activity_id": "hel-2026-0451",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 300.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": null,
    "billing_period": "full_season",
    "price_period_start": "2026-09-01",
    "price_period_end": "2027-04-15",
    "season_start_date": "2026-09-01",
    "season_end_date": "2027-04-15",
    "birth_year_min": 2021,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 295,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Koko kausi 2026-2027 (28 viikkoa)."
      },
      {
        "type": "license",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jääkiekkoliiton kiekkokoulurekisteröinti + vakuutus, ostetaan suomisport.fi:stä."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "UUSI JÄRJESTÄJÄ, ks. providers_extra_proposed_batch16.json. Alaikäraja avoin (\"2021 ja myöhemmin syntyneet\") - ei ylärajaa keksitty, ks. sääntö 'vain alaikäraja'. Session-määrä ei laskettu luotettavasti, ks. rivi 7. Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_16.json",
      "staging_id": "batch_2026-09-22_16-008",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-22",
    "monthly_cost_eur": 39.97,
    "monthly_cost_basis": "295.0 € / full_season jaettuna 7.46 kuukaudelle (2026-09-01–2027-04-15, price_period_start) + license 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Salmisaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Vesimyyrät 6-7v. SU 12:00",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6-7v.",
    "parent_child": "unknown",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Itäkeskus",
    "weekday": "sunnuntai",
    "start_time": "12:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "UIMAKOULUT (17.8.-20.12.2026) 1 krt / vko",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://orca.myclub.fi/flow/events/10730740",
    "source_quote": "Vesimyyrät 6-7v. SU 12:00 | 23.8.2026 12:00 - 20.12.2026",
    "activity_id": "hel-2026-0452",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "seuran konfiguraatio: https://orca.fi/kausimaksut/"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja alkaa 6 vuodesta - sopii vain 6-vuotiaille (Ilpon rajauspäätös 21.9.2026). Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_orca_10730740_6faf22e938ea.html",
      "capture_sha256": "6faf22e938ea5d36899824258466a736061e5cd47b275d0f65308900bd782d03",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Itäkeskus",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Vesimyyrät 6-8v LA 12:00",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8v",
    "parent_child": "unknown",
    "venue_name": "Itäkeskuksen uimahalli",
    "address": "Olavinlinnantie 6, 00900 Helsinki",
    "district": "Itäkeskus",
    "weekday": "lauantai",
    "start_time": "12:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-22",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "UIMAKOULUT (17.8.-20.12.2026) 1 krt / vko",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://orca.myclub.fi/flow/events/10730744",
    "source_quote": "Vesimyyrät 6-8v LA 12:00 | 22.8.2026 12:00 - 19.12.2026",
    "activity_id": "hel-2026-0453",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "seuran konfiguraatio: https://orca.fi/kausimaksut/"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja alkaa 6 vuodesta - sopii vain 6-vuotiaille (Ilpon rajauspäätös 21.9.2026). Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_orca_10730744_2446447b1bf4.html",
      "capture_sha256": "2446447b1bf424e09b4fe9c12bea58ab978e9e959e45643aaa22c4f2c0a95855",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Itäkeskus",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Vesimyyrä 6-8v. (tiistaisin klo 17:20)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8v.",
    "parent_child": "unknown",
    "venue_name": "SYKin uimahalli",
    "address": "Isonnevantie 8, 00320 Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:20",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "UIMAKOULUT (17.8.-20.12.2026) 1 krt / vko",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://orca.myclub.fi/flow/events/10760258",
    "source_quote": "Vesimyyrä 6-8v. (tiistaisin klo 17:20) | 1.9.2026 17:20 - 15.12.2026",
    "activity_id": "hel-2026-0454",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-15",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "seuran konfiguraatio: https://orca.fi/kausimaksut/"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja alkaa 6 vuodesta - sopii vain 6-vuotiaille (Ilpon rajauspäätös 21.9.2026). Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_orca_10760258_41cfbe4a4422.html",
      "capture_sha256": "41cfbe4a44229b603e6cb5db57c8c07187ec0f6194725483bab475f600306534",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Etelä-Haaga",
    "district_basis": "geokoodattu osoite -> sub_district 'Etelä-Haaga' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Vesimyyrä 6-8v. (sunnuntaisin klo 9:20)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8v.",
    "parent_child": "unknown",
    "venue_name": "SYKin uimahalli",
    "address": "Isonnevantie 8, 00320 Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "09:20",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-09-06",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "UIMAKOULUT (17.8.-20.12.2026) 1 krt / vko",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://orca.myclub.fi/flow/events/10760255",
    "source_quote": "Vesimyyrä 6-8v. (sunnuntaisin klo 9:20) | 6.9.2026 09:20 - 20.12.2026",
    "activity_id": "hel-2026-0455",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-09-06",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "seuran konfiguraatio: https://orca.fi/kausimaksut/"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja alkaa 6 vuodesta - sopii vain 6-vuotiaille (Ilpon rajauspäätös 21.9.2026). Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_orca_10760255_6dc01a5ea770.html",
      "capture_sha256": "6dc01a5ea77017991eea0e1461ba2535a4420c1c79d5bfacda654cc32d6d2a27",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Etelä-Haaga",
    "district_basis": "geokoodattu osoite -> sub_district 'Etelä-Haaga' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Sammakot 6-7v. (vesiralli 1.) LA klo 9:25",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6-7v.",
    "parent_child": "unknown",
    "venue_name": "Vuosaaren uimahalli",
    "address": "Vuosaarentie 5, 00980 Helsinki",
    "district": "Vuosaari",
    "weekday": "lauantai",
    "start_time": "09:25",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-22",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "KAUSIMAKSUT VUOSAARI SAMMAKOT (22.8.-20.12.2026) 1 krt / vko",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://orca.myclub.fi/flow/events/10749031",
    "source_quote": "Sammakot 6-7v. (vesiralli 1.) LA klo 9:25 | 22.8.2026 09:25 - 19.12.2026",
    "activity_id": "hel-2026-0456",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-22",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "seuran konfiguraatio: https://orca.fi/kausimaksut/"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja alkaa 6 vuodesta - sopii vain 6-vuotiaille (Ilpon rajauspäätös 21.9.2026). Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_orca_10749031_653ad6aa6770.html",
      "capture_sha256": "653ad6aa67707f5bd849bbc6fe96433da1fe9389d916db5ba8a602075a60432b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 55.74,
    "monthly_cost_basis": "210.0 € / term jaettuna 3.98 kuukaudelle (2026-08-22–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "Водомерки",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "Группа «Водомерки» предназначена для детей 3 – 5 лет без опыта плавания, которые могут обучатся самостоятельно (без присутствия родителей) с инструктором.",
    "parent_child": "unknown",
    "venue_name": "SYKin uimahalli",
    "address": "Isonnevantie 8, 00320 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "17:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "UIMAKOULUT (17.8.-20.12.2026) 1 krt / vko",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://orca.myclub.fi/flow/events/10783553?group_id=98242",
    "source_quote": "Водомерки | 5.9.2026 17:00 - 19.12.2026",
    "activity_id": "hel-2026-0457",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "seuran konfiguraatio: https://orca.fi/kausimaksut/"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikä ja viikonpäivä poimittu ryhmän venäjänkielisestä kuvaustekstistä (myclub.py v4 ei tunnista kyrillistä ikäilmausta automaattisesti, käsin poimittu, käännös: 'lapsille 3-5-vuotiaille'). Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-015",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_orca_10783553_7d7782e48e3a.html",
      "capture_sha256": "7d7782e48e3aee7168df70c50f32261ac29e25904eb0f02bf2450ff621ce846c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Etelä-Haaga",
    "district_basis": "geokoodattu osoite -> sub_district 'Etelä-Haaga' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Orca Helsinki ry",
    "group_name": "водяные полёвки",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "Группа «водяные полёвки» предназначена для детей 6 – 7 лет которые могут нырять, скользить и проплыть 5 метров на спине и на животе а так же имеют в наличии значок группы «Блошки» и «Морские черепашки».",
    "parent_child": "unknown",
    "venue_name": "SYKin uimahalli",
    "address": "Isonnevantie 8, 00320 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "18:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "UIMAKOULUT (17.8.-20.12.2026) 1 krt / vko",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://orca.myclub.fi/flow/events/10783555?group_id=98242",
    "source_quote": "водяные полёвки | 5.9.2026 18:00 - 19.12.2026",
    "activity_id": "hel-2026-0458",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://orca.fi/kausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "seuran konfiguraatio: https://orca.fi/kausimaksut/"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikä ja viikonpäivä poimittu ryhmän venäjänkielisestä kuvaustekstistä (myclub.py v4 ei tunnista kyrillistä ikäilmausta automaattisesti, käsin poimittu, käännös: 'lapsille 6-7-vuotiaille'). Ikäraja alkaa 6 vuodesta - sopii vain 6-vuotiaille (Ilpon rajauspäätös 21.9.2026). Lopetusaika ei ole lähteessä → end_time=null (Ilpon jonolinjaus 5, 22.9.2026). Hinta seuran kausimaksusivulta; tapahtumakuvauksen vanhentunut 'KAUSIMAKSU KEVÄT 2024' -otsikko ei ole hintalähde.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-016",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_orca_10783555_4644b61d30c6.html",
      "capture_sha256": "4644b61d30c6600d2f0c80aa1a2f59cb644d7e736e6569d6cc45a169eef242d0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.65,
    "monthly_cost_basis": "210.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start) + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Etelä-Haaga",
    "district_basis": "geokoodattu osoite -> sub_district 'Etelä-Haaga' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Norppa 2, pe klo 16.30-17.15",
    "min_age": 6,
    "max_age": 9,
    "eligibility_text": "6-9v.",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan Liikuntapuiston Uimahalli",
    "address": "Pirkkolan Metsätie 6, 00630 Helsinki, Suomi",
    "district": null,
    "weekday": "perjantai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": "2026-09-04",
    "end_date": "2026-12-18",
    "sessions_count": null,
    "price_eur": 255.0,
    "price_basis": "Norppa 2",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785732?group_id=18261",
    "source_quote": "Norppa 2, pe klo 16.30-17.15 | 4.9.2026 16:30 - 18.12.2026 | Norppa 2 255,00 €",
    "activity_id": "hel-2026-0459",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 290.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-04",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-09-04",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 255,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 € – pakollinen (kurssikuvaus: kaikki uimarit ovat jäseniä)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikäväli 6–9 v osuu rajaukseen vain alarajan 6 v kohdalla; Ilpon päätös 21.9.2026). Jäsenmaksu (myClub 'Valinnaiset maksut') on merkitty pakolliseksi (fee_components.mandatory=true), koska kurssikuvaus vahvistaa jäsenyyden pakolliseksi ('Kaikki uimarimme ovat Helsingin Uimarien jäseniä vuoden kerrallaan.'). Ilpon päätöksellä 22.9.2026 (kierros 3) tämä ei ole enää oma review-syy; myclub.py merkitsee sen silti epävarmaksi kenttänä (tunnettu rajoite A8). Hintajakso term: sama virallinen kuvausteksti kertoo kauden päivät ja yhden hinnan (Ilpon jonolinjaus 2, 22.9.2026). Jäsenmaksu on pakollinen (Ilpon päätös 22.9.2026, kierros 3), joten se sisältyy known_min_total_eur-summaan ja kertahintaan (koodilla laskettu).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-033",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_helsinginuimarit_10785732_42887052406a.html",
      "capture_sha256": "42887052406a77c0efe6beed07682d9ea4eaaa2d5104e2c81e2587258dac2d47",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 73.22,
    "monthly_cost_basis": "255.0 € / term jaettuna 3.48 kuukaudelle (2026-09-04–2026-12-18, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pirkkola",
    "district_basis": "geokoodattu osoite -> sub_district 'Pirkkola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Sammakko 1, la klo 10.50-11.30",
    "min_age": 6,
    "max_age": 9,
    "eligibility_text": "6-9v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:50",
    "end_time": "11:30",
    "season": "syksy 2026",
    "start_date": "2026-08-29",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 238.0,
    "price_basis": "Sammakko 1",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785753?group_id=18261",
    "source_quote": "Sammakko 1, la klo 10.50-11.30 | 29.8.2026 10:50 - 12.12.2026 | Sammakko 1 238,00 €",
    "activity_id": "hel-2026-0460",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 273.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-29",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-29",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 238,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 € – pakollinen (kurssikuvaus: kaikki uimarit ovat jäseniä)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikäväli 6–9 v osuu rajaukseen vain alarajan 6 v kohdalla; Ilpon päätös 21.9.2026). Jäsenmaksu (myClub 'Valinnaiset maksut') on merkitty pakolliseksi (fee_components.mandatory=true), koska kurssikuvaus vahvistaa jäsenyyden pakolliseksi ('Kaikki uimarimme ovat Helsingin Uimarien jäseniä vuoden kerrallaan.'). Ilpon päätöksellä 22.9.2026 (kierros 3) tämä ei ole enää oma review-syy; myclub.py merkitsee sen silti epävarmaksi kenttänä (tunnettu rajoite A8). Hintajakso term: sama virallinen kuvausteksti kertoo kauden päivät ja yhden hinnan (Ilpon jonolinjaus 2, 22.9.2026). Jäsenmaksu on pakollinen (Ilpon päätös 22.9.2026, kierros 3), joten se sisältyy known_min_total_eur-summaan ja kertahintaan (koodilla laskettu).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-034",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_helsinginuimarit_10785753_7494d1412a1b.html",
      "capture_sha256": "7494d1412a1be0a0c4092b0d3621b2f6d7e83a7b4a6d4ee1b7ed53997ea063ae",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 68.34,
    "monthly_cost_basis": "238.0 € / term jaettuna 3.48 kuukaudelle (2026-08-29–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Norppa 2, la klo 10.10-10.50",
    "min_age": 6,
    "max_age": 9,
    "eligibility_text": "6-9v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:10",
    "end_time": "10:50",
    "season": "syksy 2026",
    "start_date": "2026-08-29",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 238.0,
    "price_basis": "Norppa 2",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785781?group_id=18261",
    "source_quote": "Norppa 2, la klo 10.10-10.50 | 29.8.2026 10:10 - 12.12.2026 | Norppa 2 238,00 €",
    "activity_id": "hel-2026-0461",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 273.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-29",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-29",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 238,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 € – pakollinen (kurssikuvaus: kaikki uimarit ovat jäseniä)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikäväli 6–9 v osuu rajaukseen vain alarajan 6 v kohdalla; Ilpon päätös 21.9.2026). Jäsenmaksu (myClub 'Valinnaiset maksut') on merkitty pakolliseksi (fee_components.mandatory=true), koska kurssikuvaus vahvistaa jäsenyyden pakolliseksi ('Kaikki uimarimme ovat Helsingin Uimarien jäseniä vuoden kerrallaan.'). Ilpon päätöksellä 22.9.2026 (kierros 3) tämä ei ole enää oma review-syy; myclub.py merkitsee sen silti epävarmaksi kenttänä (tunnettu rajoite A8). Hintajakso term: sama virallinen kuvausteksti kertoo kauden päivät ja yhden hinnan (Ilpon jonolinjaus 2, 22.9.2026). Jäsenmaksu on pakollinen (Ilpon päätös 22.9.2026, kierros 3), joten se sisältyy known_min_total_eur-summaan ja kertahintaan (koodilla laskettu).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-035",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_helsinginuimarit_10785781_75d1ebf37442.html",
      "capture_sha256": "75d1ebf3744292f309981998e27f96b74555cc09d4a425e87551b211df39bced",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 68.34,
    "monthly_cost_basis": "238.0 € / term jaettuna 3.48 kuukaudelle (2026-08-29–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "geokoodattu osoite -> sub_district 'Pohjois-Haaga' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Norppa 2, ti klo 17.00-17.40",
    "min_age": 6,
    "max_age": 9,
    "eligibility_text": "6-9v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-15",
    "sessions_count": null,
    "price_eur": 255.0,
    "price_basis": "Norppa 2",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785800?group_id=18261",
    "source_quote": "Norppa 2, ti klo 17.00-17.40 | 1.9.2026 17:00 - 15.12.2026 | Norppa 2 255,00 €",
    "activity_id": "hel-2026-0462",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 290.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-15",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-15",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 255,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 € – pakollinen (kurssikuvaus: kaikki uimarit ovat jäseniä)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikäväli 6–9 v osuu rajaukseen vain alarajan 6 v kohdalla; Ilpon päätös 21.9.2026). Jäsenmaksu (myClub 'Valinnaiset maksut') on merkitty pakolliseksi (fee_components.mandatory=true), koska kurssikuvaus vahvistaa jäsenyyden pakolliseksi ('Kaikki uimarimme ovat Helsingin Uimarien jäseniä vuoden kerrallaan.'). Ilpon päätöksellä 22.9.2026 (kierros 3) tämä ei ole enää oma review-syy; myclub.py merkitsee sen silti epävarmaksi kenttänä (tunnettu rajoite A8). Hintajakso term: sama virallinen kuvausteksti kertoo kauden päivät ja yhden hinnan (Ilpon jonolinjaus 2, 22.9.2026). Jäsenmaksu on pakollinen (Ilpon päätös 22.9.2026, kierros 3), joten se sisältyy known_min_total_eur-summaan ja kertahintaan (koodilla laskettu).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-036",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_helsinginuimarit_10785800_344efac908da.html",
      "capture_sha256": "344efac908da80dda94d50494b827d84ad2f6416286bf3a4abdd5aaecf982826",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 73.22,
    "monthly_cost_basis": "255.0 € / term jaettuna 3.48 kuukaudelle (2026-09-01–2026-12-15, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "geokoodattu osoite -> sub_district 'Pohjois-Haaga' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Norppa 2, pe klo 16.30-17.15",
    "min_age": 6,
    "max_age": 9,
    "eligibility_text": "6-9v.",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan Liikuntapuiston Uimahalli",
    "address": "Pirkkolan Metsätie 6, 00630 Helsinki, Suomi",
    "district": null,
    "weekday": "perjantai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": "2026-09-04",
    "end_date": "2026-12-18",
    "sessions_count": null,
    "price_eur": 255.0,
    "price_basis": "Norppa 2",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785914?group_id=18261",
    "source_quote": "Norppa 2, pe klo 16.30-17.15 | 4.9.2026 16:30 - 18.12.2026 | Norppa 2 255,00 €",
    "activity_id": "hel-2026-0463",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 290.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-04",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-09-04",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 255,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 € – pakollinen (kurssikuvaus: kaikki uimarit ovat jäseniä)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikäväli 6–9 v osuu rajaukseen vain alarajan 6 v kohdalla; Ilpon päätös 21.9.2026). Jäsenmaksu (myClub 'Valinnaiset maksut') on merkitty pakolliseksi (fee_components.mandatory=true), koska kurssikuvaus vahvistaa jäsenyyden pakolliseksi ('Kaikki uimarimme ovat Helsingin Uimarien jäseniä vuoden kerrallaan.'). Ilpon päätöksellä 22.9.2026 (kierros 3) tämä ei ole enää oma review-syy; myclub.py merkitsee sen silti epävarmaksi kenttänä (tunnettu rajoite A8). Hintajakso term: sama virallinen kuvausteksti kertoo kauden päivät ja yhden hinnan (Ilpon jonolinjaus 2, 22.9.2026). Jäsenmaksu on pakollinen (Ilpon päätös 22.9.2026, kierros 3), joten se sisältyy known_min_total_eur-summaan ja kertahintaan (koodilla laskettu).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-037",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_helsinginuimarit_10785914_4c4558ed0e6f.html",
      "capture_sha256": "4c4558ed0e6f81f03eacf11a83945ab3b721093e619707e13b5ba335e535ab2d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 73.22,
    "monthly_cost_basis": "255.0 € / term jaettuna 3.48 kuukaudelle (2026-09-04–2026-12-18, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pirkkola",
    "district_basis": "geokoodattu osoite -> sub_district 'Pirkkola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Delfiini 3, pe klo 17.15-18",
    "min_age": 6,
    "max_age": 9,
    "eligibility_text": "6-9v.",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan Liikuntapuiston Uimahalli",
    "address": "Pirkkolan Metsätie 6, 00630 Helsinki, Suomi",
    "district": null,
    "weekday": "perjantai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-04",
    "end_date": "2026-12-18",
    "sessions_count": null,
    "price_eur": 255.0,
    "price_basis": "Delfiini 3",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785952?group_id=18261",
    "source_quote": "Delfiini 3, pe klo 17.15-18 | 4.9.2026 17:15 - 18.12.2026 | Delfiini 3 255,00 €",
    "activity_id": "hel-2026-0464",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 290.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-04",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-09-04",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 255,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 € – pakollinen (kurssikuvaus: kaikki uimarit ovat jäseniä)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikäväli 6–9 v osuu rajaukseen vain alarajan 6 v kohdalla; Ilpon päätös 21.9.2026). Jäsenmaksu (myClub 'Valinnaiset maksut') on merkitty pakolliseksi (fee_components.mandatory=true), koska kurssikuvaus vahvistaa jäsenyyden pakolliseksi ('Kaikki uimarimme ovat Helsingin Uimarien jäseniä vuoden kerrallaan.'). Ilpon päätöksellä 22.9.2026 (kierros 3) tämä ei ole enää oma review-syy; myclub.py merkitsee sen silti epävarmaksi kenttänä (tunnettu rajoite A8). Hintajakso term: sama virallinen kuvausteksti kertoo kauden päivät ja yhden hinnan (Ilpon jonolinjaus 2, 22.9.2026). Jäsenmaksu on pakollinen (Ilpon päätös 22.9.2026, kierros 3), joten se sisältyy known_min_total_eur-summaan ja kertahintaan (koodilla laskettu).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-038",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_helsinginuimarit_10785952_38003814c7a8.html",
      "capture_sha256": "38003814c7a8460e4957f812a150159043dfa722a7b38468838cce9563110a69",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 73.22,
    "monthly_cost_basis": "255.0 € / term jaettuna 3.48 kuukaudelle (2026-09-04–2026-12-18, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pirkkola",
    "district_basis": "geokoodattu osoite -> sub_district 'Pirkkola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Delfiini 3, ma klo 17.30-18.10",
    "min_age": 6,
    "max_age": 9,
    "eligibility_text": "6-9v.",
    "parent_child": "unknown",
    "venue_name": "Suomalainen Yhteiskoulu SYK",
    "address": "Isonnevantie 8, 00320 Helsinki, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:10",
    "season": "syksy 2026",
    "start_date": "2026-09-07",
    "end_date": "2026-12-14",
    "sessions_count": null,
    "price_eur": 255.0,
    "price_basis": "Delfiini 3",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785973?group_id=18261",
    "source_quote": "Delfiini 3, ma klo 17.30-18.10 | 7.9.2026 17:30 - 14.12.2026 | Delfiini 3 255,00 €",
    "activity_id": "hel-2026-0465",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 290.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-07",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-09-07",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 255,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 € – pakollinen (kurssikuvaus: kaikki uimarit ovat jäseniä)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikäväli 6–9 v osuu rajaukseen vain alarajan 6 v kohdalla; Ilpon päätös 21.9.2026). Jäsenmaksu (myClub 'Valinnaiset maksut') on merkitty pakolliseksi (fee_components.mandatory=true), koska kurssikuvaus vahvistaa jäsenyyden pakolliseksi ('Kaikki uimarimme ovat Helsingin Uimarien jäseniä vuoden kerrallaan.'). Ilpon päätöksellä 22.9.2026 (kierros 3) tämä ei ole enää oma review-syy; myclub.py merkitsee sen silti epävarmaksi kenttänä (tunnettu rajoite A8). Kurssikuvauksen hinta 238 € on ristiriidassa ilmoittautumissivun hinnan 255,00 € kanssa; maksusivu voittaa (Ilpon sääntö 8, 21.9.2026). Hintajakso term: sama virallinen kuvausteksti kertoo kauden päivät ja yhden hinnan (Ilpon jonolinjaus 2, 22.9.2026). Jäsenmaksu on pakollinen (Ilpon päätös 22.9.2026, kierros 3), joten se sisältyy known_min_total_eur-summaan ja kertahintaan (koodilla laskettu).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-039",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_helsinginuimarit_10785973_6a86d5b62b7a.html",
      "capture_sha256": "6a86d5b62b7a3de6cb6bc008601e23468c1da9dd3fdc4696be5f97a17040e6cf",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 78.4,
    "monthly_cost_basis": "255.0 € / term jaettuna 3.25 kuukaudelle (2026-09-07–2026-12-14, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Etelä-Haaga",
    "district_basis": "geokoodattu osoite -> sub_district 'Etelä-Haaga' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Delfiini 3, la klo 12.10-12.50",
    "min_age": 6,
    "max_age": 9,
    "eligibility_text": "6-9v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": null,
    "weekday": "lauantai",
    "start_time": "12:10",
    "end_time": "12:50",
    "season": "syksy 2026",
    "start_date": "2026-08-29",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 238.0,
    "price_basis": "Delfiini 3",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10785994?group_id=18261",
    "source_quote": "Delfiini 3, la klo 12.10-12.50 | 29.8.2026 12:10 - 12.12.2026 | Delfiini 3 238,00 €",
    "activity_id": "hel-2026-0466",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 273.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-29",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-29",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 238,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 € – pakollinen (kurssikuvaus: kaikki uimarit ovat jäseniä)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikäväli 6–9 v osuu rajaukseen vain alarajan 6 v kohdalla; Ilpon päätös 21.9.2026). Jäsenmaksu (myClub 'Valinnaiset maksut') on merkitty pakolliseksi (fee_components.mandatory=true), koska kurssikuvaus vahvistaa jäsenyyden pakolliseksi ('Kaikki uimarimme ovat Helsingin Uimarien jäseniä vuoden kerrallaan.'). Ilpon päätöksellä 22.9.2026 (kierros 3) tämä ei ole enää oma review-syy; myclub.py merkitsee sen silti epävarmaksi kenttänä (tunnettu rajoite A8). Hintajakso term: sama virallinen kuvausteksti kertoo kauden päivät ja yhden hinnan (Ilpon jonolinjaus 2, 22.9.2026). Jäsenmaksu on pakollinen (Ilpon päätös 22.9.2026, kierros 3), joten se sisältyy known_min_total_eur-summaan ja kertahintaan (koodilla laskettu).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-040",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_helsinginuimarit_10785994_dde5730d9163.html",
      "capture_sha256": "dde5730d916398cc21ac7da8bb9d8997f46ee965f6df9d5534e0b366f64ac134",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 68.34,
    "monthly_cost_basis": "238.0 € / term jaettuna 3.48 kuukaudelle (2026-08-29–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "geokoodattu osoite -> sub_district 'Pohjois-Haaga' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Delfiini 3, ti klo 18.55-19.35",
    "min_age": 6,
    "max_age": 9,
    "eligibility_text": "6-9v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:55",
    "end_time": "19:35",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-15",
    "sessions_count": null,
    "price_eur": 255.0,
    "price_basis": "Delfiini 3",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10786015?group_id=18261",
    "source_quote": "Delfiini 3, ti klo 18.55-19.35 | 1.9.2026 18:55 - 15.12.2026 | Delfiini 3 255,00 €",
    "activity_id": "hel-2026-0467",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 290.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-15",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-15",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 255,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 € – pakollinen (kurssikuvaus: kaikki uimarit ovat jäseniä)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikäväli 6–9 v osuu rajaukseen vain alarajan 6 v kohdalla; Ilpon päätös 21.9.2026). Jäsenmaksu (myClub 'Valinnaiset maksut') on merkitty pakolliseksi (fee_components.mandatory=true), koska kurssikuvaus vahvistaa jäsenyyden pakolliseksi ('Kaikki uimarimme ovat Helsingin Uimarien jäseniä vuoden kerrallaan.'). Ilpon päätöksellä 22.9.2026 (kierros 3) tämä ei ole enää oma review-syy; myclub.py merkitsee sen silti epävarmaksi kenttänä (tunnettu rajoite A8). Hintajakso term: sama virallinen kuvausteksti kertoo kauden päivät ja yhden hinnan (Ilpon jonolinjaus 2, 22.9.2026). Jäsenmaksu on pakollinen (Ilpon päätös 22.9.2026, kierros 3), joten se sisältyy known_min_total_eur-summaan ja kertahintaan (koodilla laskettu).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-041",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_helsinginuimarit_10786015_fa7485ef7153.html",
      "capture_sha256": "fa7485ef7153009354e7ee538717eea10d9d735399b62eeb9dd0a0f6020136c6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 73.22,
    "monthly_cost_basis": "255.0 € / term jaettuna 3.48 kuukaudelle (2026-09-01–2026-12-15, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "geokoodattu osoite -> sub_district 'Pohjois-Haaga' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Sammakko 1, pe klo 17.15-18.00",
    "min_age": 6,
    "max_age": 9,
    "eligibility_text": "6-9v.",
    "parent_child": "unknown",
    "venue_name": "Pirkkolan Liikuntapuiston Uimahalli",
    "address": "Pirkkolan Metsätie 6, 00630 Helsinki, Suomi",
    "district": null,
    "weekday": "perjantai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-04",
    "end_date": "2026-12-18",
    "sessions_count": null,
    "price_eur": 255.0,
    "price_basis": "Sammakko 1",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10786038?group_id=18261",
    "source_quote": "Sammakko 1, pe klo 17.15-18.00 | 4.9.2026 17:15 - 18.12.2026 | Sammakko 1 255,00 €",
    "activity_id": "hel-2026-0468",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 290.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-04",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-09-04",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 255,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 € – pakollinen (kurssikuvaus: kaikki uimarit ovat jäseniä)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikäväli 6–9 v osuu rajaukseen vain alarajan 6 v kohdalla; Ilpon päätös 21.9.2026). Jäsenmaksu (myClub 'Valinnaiset maksut') on merkitty pakolliseksi (fee_components.mandatory=true), koska kurssikuvaus vahvistaa jäsenyyden pakolliseksi ('Kaikki uimarimme ovat Helsingin Uimarien jäseniä vuoden kerrallaan.'). Ilpon päätöksellä 22.9.2026 (kierros 3) tämä ei ole enää oma review-syy; myclub.py merkitsee sen silti epävarmaksi kenttänä (tunnettu rajoite A8). Hintajakso term: sama virallinen kuvausteksti kertoo kauden päivät ja yhden hinnan (Ilpon jonolinjaus 2, 22.9.2026). Jäsenmaksu on pakollinen (Ilpon päätös 22.9.2026, kierros 3), joten se sisältyy known_min_total_eur-summaan ja kertahintaan (koodilla laskettu).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-042",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_helsinginuimarit_10786038_43906f2f93d3.html",
      "capture_sha256": "43906f2f93d374cdc037fa82b0af1e38dbb3c6ef106bd6389cb55b711642fd38",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 73.22,
    "monthly_cost_basis": "255.0 € / term jaettuna 3.48 kuukaudelle (2026-09-04–2026-12-18, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pirkkola",
    "district_basis": "geokoodattu osoite -> sub_district 'Pirkkola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Sammakko 1, la klo 11.30-12.10",
    "min_age": 6,
    "max_age": 9,
    "eligibility_text": "6-9v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:30",
    "end_time": "12:10",
    "season": "syksy 2026",
    "start_date": "2026-08-29",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 238.0,
    "price_basis": "Sammakko 1",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10786059?group_id=18261",
    "source_quote": "Sammakko 1, la klo 11.30-12.10 | 29.8.2026 11:30 - 12.12.2026 | Sammakko 1 238,00 €",
    "activity_id": "hel-2026-0469",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 273.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-29",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-29",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 238,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 € – pakollinen (kurssikuvaus: kaikki uimarit ovat jäseniä)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikäväli 6–9 v osuu rajaukseen vain alarajan 6 v kohdalla; Ilpon päätös 21.9.2026). Jäsenmaksu (myClub 'Valinnaiset maksut') on merkitty pakolliseksi (fee_components.mandatory=true), koska kurssikuvaus vahvistaa jäsenyyden pakolliseksi ('Kaikki uimarimme ovat Helsingin Uimarien jäseniä vuoden kerrallaan.'). Ilpon päätöksellä 22.9.2026 (kierros 3) tämä ei ole enää oma review-syy; myclub.py merkitsee sen silti epävarmaksi kenttänä (tunnettu rajoite A8). Hintajakso term: sama virallinen kuvausteksti kertoo kauden päivät ja yhden hinnan (Ilpon jonolinjaus 2, 22.9.2026). Jäsenmaksu on pakollinen (Ilpon päätös 22.9.2026, kierros 3), joten se sisältyy known_min_total_eur-summaan ja kertahintaan (koodilla laskettu).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-043",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_helsinginuimarit_10786059_9f5b45ff1173.html",
      "capture_sha256": "9f5b45ff1173780a8010809c5a01419842f9b563b26d32288b1c1ae15fc8599a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 68.34,
    "monthly_cost_basis": "238.0 € / term jaettuna 3.48 kuukaudelle (2026-08-29–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "geokoodattu osoite -> sub_district 'Pohjois-Haaga' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Uimarit ry",
    "group_name": "Sammakko 1, ti klo 17.40-18.15",
    "min_age": 6,
    "max_age": 9,
    "eligibility_text": "6-9v.",
    "parent_child": "unknown",
    "venue_name": "Valkea Talo",
    "address": "Ilkantie 4, 00400 Helsinki, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:40",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-15",
    "sessions_count": null,
    "price_eur": 255.0,
    "price_basis": "Sammakko 1",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://helsinginuimarit.myclub.fi/flow/courses/10786076?group_id=18261",
    "source_quote": "Sammakko 1, ti klo 17.40-18.15 | 1.9.2026 17:40 - 15.12.2026 | Sammakko 1 255,00 €",
    "activity_id": "hel-2026-0470",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 290.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-15",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-15",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 255,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Helsingin Uimarit r.y. jäsenmaksu 2026 35,00 € – pakollinen (kurssikuvaus: kaikki uimarit ovat jäseniä)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikäväli 6–9 v osuu rajaukseen vain alarajan 6 v kohdalla; Ilpon päätös 21.9.2026). Jäsenmaksu (myClub 'Valinnaiset maksut') on merkitty pakolliseksi (fee_components.mandatory=true), koska kurssikuvaus vahvistaa jäsenyyden pakolliseksi ('Kaikki uimarimme ovat Helsingin Uimarien jäseniä vuoden kerrallaan.'). Ilpon päätöksellä 22.9.2026 (kierros 3) tämä ei ole enää oma review-syy; myclub.py merkitsee sen silti epävarmaksi kenttänä (tunnettu rajoite A8). Hintajakso term: sama virallinen kuvausteksti kertoo kauden päivät ja yhden hinnan (Ilpon jonolinjaus 2, 22.9.2026). Jäsenmaksu on pakollinen (Ilpon päätös 22.9.2026, kierros 3), joten se sisältyy known_min_total_eur-summaan ja kertahintaan (koodilla laskettu).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-044",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/myclub_helsinginuimarit_10786076_e790290592b0.html",
      "capture_sha256": "e790290592b0ea950ee4105858aa17fcbb0f6b0a8c61abfe474516253e31f19a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 73.22,
    "monthly_cost_basis": "255.0 € / term jaettuna 3.48 kuukaudelle (2026-09-01–2026-12-15, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "geokoodattu osoite -> sub_district 'Pohjois-Haaga' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Vapaa Tanssikoulu (Laajasalon opisto)",
    "group_name": "Tanssi, pojat 6–9 v. LT6010 (ti 17.00–18.00, Sali 2)",
    "min_age": 6,
    "max_age": 9,
    "eligibility_text": "6–9 v.",
    "parent_child": "no",
    "venue_name": "Vapaan Tanssikoulun Sali 2",
    "address": "Mekaanikonkatu 17, 00880 Helsinki",
    "district": "Herttoniemi",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 250.0,
    "price_basis": "Hinnasto: 60 min, 1 krt/vko = 250 €/lukukausi",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vapaatanssikoulu.fi/wp-content/uploads/2026/08/Vata_lukuja%CC%88rjestys-2026-2027.pdf",
    "source_quote": "TIISTAI ... 17.00–18.00 Tanssi, pojat 6–9 v. Oskari LT6010 (Sali 2). Opetuspaikat: Sali 1 ja 2 = Vapaan Tanssikoulun salit, Mekäänikonkatu 17, ylin kerros, Herttoniemi. [Hinnasto:] Lukukausimaksut / 60 min / 1 krt/vko: 250 €.",
    "activity_id": "hel-2026-0471",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 250.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://vapaatanssikoulu.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "inferred",
    "sessions_count_source": "Johdettu: hinnasto-sivun \"Syyslukukauden pituus on 16 viikkoa\" + päivämääräsivun loma-aikataulu (vain syysloma vko 42 osuu arkipäiville, pyhäinpäivä 31.10. on lauantai eikä vaikuta tiistairyhmään).",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 250,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Lukukausimaksu, 60 min tunti kerran viikossa, n. 16 opetuskertaa syyslukukaudella."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count",
      "start_date",
      "end_date"
    ],
    "verification_notes": "UUSI ryhmä (LT6010), ei sama kuin aiemmin kerätyt/hyväksytyt VTK-koodit (LT4505/LT4516/LT4525/LT4521/LT4520/LT4540/TA4517/TA6026, ks. data/staging/batch_2026-09-21_06.json). Ensimmäistä/viimeistä tiistain opetuspäivää ei ilmoitettu erikseen lukujärjestyksessä tai päivämääräsivulla, vain lukukauden yleiset alku-/loppupäivät (17.8. ja 13.12.2026) ja lomaviikot; sessions_count=16 johdettu, ei sanatarkasti ilmoitettu per ryhmä. Kertamäärä 16 (exact) ei ole järjestäjän virallisesti ilmoittama ryhmäkohtainen luku → ei julkaista (Ilpon jonolinjaus 1, 22.9.2026): sessions_count=null, ei kertahintaa.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-058",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/vata_lukujarjestys_0547bc806c7d.pdf",
      "capture_sha256": "0547bc806c7d2780bc9f9b9173ab4d6c69485775a7cff0dbe85a79a0bbcd884b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 63.94,
    "monthly_cost_basis": "250.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "koripallo",
    "provider": "Pakilan Visa ry",
    "group_name": "Tenavaliikkari 1-2 v. (Arabia, su 11.00–11.30)",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "1-2- vuotiaille naperoille, jotka osaavat jo kävellä ilman tukea.",
    "parent_child": "yes",
    "venue_name": "Arabian peruskoulu",
    "address": "Berliininkatu 4, Helsinki",
    "district": "Arabianranta",
    "weekday": "sunnuntai",
    "start_time": "11:00",
    "end_time": "11:30",
    "season": "syksy 2026",
    "start_date": "2026-09-13",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 100.0,
    "price_basis": "Liikkareiden hinnasto 2026-2027, Arabia, syksy 26: 100 euroa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.pakilanvisa.fi/palloilu-ja-tenavaliikkarit/",
    "source_quote": "Su 13.9. syyskauden ensimmäinen vuoro / Su 13.12. syyskauden viimeinen vuoro / Syyskauden 2026 peruutetut vuorot: 6.12.",
    "activity_id": "hel-2026-0472",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 100.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.pakilanvisa.fi/palloilu-ja-tenavaliikkarit/",
    "billing_period": "term",
    "price_period_start": "2026-09-13",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-13",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 100,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kerho maksaa syksy+kevät erikseen; sisältää lapsille vakuutuksen. Peruttu vuoro 6.12.2026."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "availability_status"
    ],
    "verification_notes": "Alasivun yläreunassa lukee \"ILMOITTAUTUMINEN KAUDEN 2025-2026 LIIKKAREIHIN\" / esimerkkisivulla jopa \"kauden 2022-2023\", mikä on ilmeisesti päivittämätönä jäänyt teksti; alempana oleva harjoitusaikataulu (13.9.2026 - 13.12.2026 syksy, 10.1.-16.5.2027 kevät) ja hinnaston otsikko \"2026-2027\" viittaavat selvästi kuluvaan kauteen. Aikataulu/hinta käytetty, ilmoittautumistilaa ei päätelty tästä. Tenavaliikkari: \"joka kerta tulisi aikuisen olla lapsen mukana\". availability_status=unknown on sallittu tila, ei review-syy (Ilpon päätös 21.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-065",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/pv_1_2_51312b58bb0a.html",
      "capture_sha256": "51312b58bb0ad0d34200007805cea05424ab14dc49688075969fd5dc05b6da99",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 33.08,
    "monthly_cost_basis": "100.0 € / term jaettuna 3.02 kuukaudelle (2026-09-13–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Arabianranta",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "koripallo",
    "provider": "Pakilan Visa ry",
    "group_name": "Palloiluliikkari 3-4 v. (Arabia, su 11.35–12.10)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Arabian peruskoulu",
    "address": "Berliininkatu 4, Helsinki",
    "district": "Arabianranta",
    "weekday": "sunnuntai",
    "start_time": "11:35",
    "end_time": "12:10",
    "season": "syksy 2026",
    "start_date": "2026-09-13",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 110.0,
    "price_basis": "Liikkareiden hinnasto 2026-2027, Arabia, syksy 26: 110 euroa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.pakilanvisa.fi/palloilu-ja-tenavaliikkarit/",
    "source_quote": "Su 13.9. syyskauden ensimmäinen vuoro / Su 13.12. syyskauden viimeinen vuoro / Syyskauden 2026 peruutetut vuorot: 6.12.",
    "activity_id": "hel-2026-0473",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 110.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.pakilanvisa.fi/palloilu-ja-tenavaliikkarit/",
    "billing_period": "term",
    "price_period_start": "2026-09-13",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-13",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 110,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kerho maksaa syksy+kevät erikseen; sisältää lapsille vakuutuksen. Peruttu vuoro 6.12.2026."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "availability_status"
    ],
    "verification_notes": "Alasivun yläreunassa lukee \"ILMOITTAUTUMINEN KAUDEN 2025-2026 LIIKKAREIHIN\" / esimerkkisivulla jopa \"kauden 2022-2023\", mikä on ilmeisesti päivittämätönä jäänyt teksti; alempana oleva harjoitusaikataulu (13.9.2026 - 13.12.2026 syksy, 10.1.-16.5.2027 kevät) ja hinnaston otsikko \"2026-2027\" viittaavat selvästi kuluvaan kauteen. Aikataulu/hinta käytetty, ilmoittautumistilaa ei päätelty tästä. availability_status=unknown on sallittu tila, ei review-syy (Ilpon päätös 21.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-066",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/pv_3_4_cc538587e996.html",
      "capture_sha256": "cc538587e99652cf12d0c83e85a7e3b60f783eb831c0a2d2441b5e43da748377",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 36.39,
    "monthly_cost_basis": "110.0 € / term jaettuna 3.02 kuukaudelle (2026-09-13–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Arabianranta",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "koripallo",
    "provider": "Pakilan Visa ry",
    "group_name": "Palloiluliikkari 5-6 v. (Arabia, su 12.15–13.00)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Arabian peruskoulu",
    "address": "Berliininkatu 4, Helsinki",
    "district": "Arabianranta",
    "weekday": "sunnuntai",
    "start_time": "12:15",
    "end_time": "13:00",
    "season": "syksy 2026",
    "start_date": "2026-09-13",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 110.0,
    "price_basis": "Liikkareiden hinnasto 2026-2027, Arabia, syksy 26: 110 euroa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.pakilanvisa.fi/palloilu-ja-tenavaliikkarit/",
    "source_quote": "Su 13.9. syyskauden ensimmäinen vuoro / Su 13.12. syyskauden viimeinen vuoro / Syyskauden 2026 peruutetut vuorot: 6.12.",
    "activity_id": "hel-2026-0474",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 110.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.pakilanvisa.fi/palloilu-ja-tenavaliikkarit/",
    "billing_period": "term",
    "price_period_start": "2026-09-13",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-13",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 110,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kerho maksaa syksy+kevät erikseen; sisältää lapsille vakuutuksen. Peruttu vuoro 6.12.2026."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "availability_status"
    ],
    "verification_notes": "Alasivun yläreunassa lukee \"ILMOITTAUTUMINEN KAUDEN 2025-2026 LIIKKAREIHIN\" / esimerkkisivulla jopa \"kauden 2022-2023\", mikä on ilmeisesti päivittämätönä jäänyt teksti; alempana oleva harjoitusaikataulu (13.9.2026 - 13.12.2026 syksy, 10.1.-16.5.2027 kevät) ja hinnaston otsikko \"2026-2027\" viittaavat selvästi kuluvaan kauteen. Aikataulu/hinta käytetty, ilmoittautumistilaa ei päätelty tästä. availability_status=unknown on sallittu tila, ei review-syy (Ilpon päätös 21.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-067",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/pv_5_6_58df90b1a816.html",
      "capture_sha256": "58df90b1a8161c853ae2f350f69ef811a215d7acb292991b1e8421c58c189c1f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 36.39,
    "monthly_cost_basis": "110.0 € / term jaettuna 3.02 kuukaudelle (2026-09-13–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Arabianranta",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Käpylän Pallo ry",
    "group_name": "Perhefutis (KäPa Campus, su 15.00–15.45)",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Vuonna 2020-syntyneille ja sitä nuoremmille lapsille, jotka ovat oppineet jo kävelemään.",
    "parent_child": "yes",
    "venue_name": "KäPa Campus",
    "address": "Elisabeth Kochin tie 3, 00550 Helsinki",
    "district": "Vallila",
    "weekday": "sunnuntai",
    "start_time": "15:00",
    "end_time": "15:45",
    "season": "2026 (jatkuva toiminta)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 0.0,
    "price_basis": "\"Toiminta on osallistujille maksutonta.\"",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Liikunnallinen vaatetus, juomapullo; oma pallo (nro 3) hyvä olla mukana muttei pakollinen. Huom: tapahtumat eivät sisällä vakuutusta osallistujille.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://kapylanpallo.fi/nappulaliiga/perhefutis",
    "source_quote": "PERHEFUTIS JATKUU 2.8. ⚽ TERVETULOA MUKAAN! Perhefutis-treenit ovat sunnuntaisin klo 15.00–15.45 KäPa Campuksella. Toiminta on osallistujille maksutonta. Perhefutis on tarkoitettu vanhemmille sekä heidän vuonna 2020-syntyneille ja sitä nuoremmille lapsille, jotka ovat oppineet jo kävelemään.",
    "activity_id": "hel-2026-0475",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 0.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://kapylanpallo.fi/nappulaliiga/perhefutis",
    "billing_period": "session",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-02",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": 2020,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date"
    ],
    "verification_notes": "Jatkuva viikoittainen toiminta ilman ilmoitettua päättymispäivää; sivu mainitsee vain kausiaan jatkumo-päivän \"jatkuu 2.8.\". Uusi järjestäjä (Ilpon hyväksyntä tarvitaan providers_extra.json-lisäykselle). Löydettiin Käpylän Pallon oman sivuston (ei leirit-sivun) Nappulaliiga-valikosta. Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_17.json",
      "staging_id": "batch_2026-09-22_17-077",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_17/kapylanpallo_perhefutis_b8d37b4c7ac6.html",
      "capture_sha256": "b8d37b4c7ac6da772ca43a793282890586c9673e47c601c8390890f7d23b4eeb",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa session ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Vallila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin Tanssikeskus (Emma Sandman)",
    "group_name": "Luova satubaletti 1 (2-4v.), syyskausi 2026",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "Luova satubaletti 1 (2-4v.)",
    "parent_child": "unknown",
    "venue_name": "Helsingin Tanssikeskus",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "Syyskausi 2026",
    "start_date": "2026-08-22",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 250.0,
    "price_basis": "Koko kauden hinta",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.helsingintanssikeskus.fi/index.php/hinnasto/",
    "source_quote": "Emma Sandmanin lastentunnit: Luova satubaletti 1 (2-4v.) ja 2 (4-6v.) ... Koko kauden hinta on 250€ (kauden kokonaiskesto: 22.8-12.12.2026, kaikki lauantait paitsi syyslomaviikolla 17.10)",
    "activity_id": "hel-2026-0476",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 250.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.helsingintanssikeskus.fi/index.php/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-22",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 250,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Koko kauden hinta; vaihtoehtoinen kuukausilaskutus 70€ x 4 (yhteensä 280€, kalliimpi kuin kertamaksu)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Vaihtoehtoinen maksutapa: kuukausilaskutus 70€/kk (4 erää, yhteensä 280€).",
    "unverified_fields": [
      "address"
    ],
    "verification_notes": "Kurssi alkanut 22.8.2026; saatavuutta ei kerrottu eksplisiittisesti. Sama kausihinta (250€) koskee sekä satubaletti 1 (2-4v) että 2 (4-6v) -ryhmiä (Emma Sandmanin lastentunnit, ei ryhmäkohtaista eroa hinnastossa). Ilmoittautuminen erillisellä Google-lomakkeella, ei myClub/hel.fi. Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-003",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 67.34,
    "monthly_cost_basis": "250.0 € / term jaettuna 3.71 kuukaudelle (2026-08-22–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin Tanssikeskus (Emma Sandman)",
    "group_name": "Luova satubaletti 2 (4-6v.), syyskausi 2026",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "Luova satubaletti 2 (4-6v.)",
    "parent_child": "unknown",
    "venue_name": "Helsingin Tanssikeskus",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "11:45",
    "season": "Syyskausi 2026",
    "start_date": "2026-08-22",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 250.0,
    "price_basis": "Koko kauden hinta",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.helsingintanssikeskus.fi/index.php/hinnasto/",
    "source_quote": "Emma Sandmanin lastentunnit: Luova satubaletti 1 (2-4v.) ja 2 (4-6v.) ... Koko kauden hinta on 250€ (kauden kokonaiskesto: 22.8-12.12.2026, kaikki lauantait paitsi syyslomaviikolla 17.10)",
    "activity_id": "hel-2026-0477",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 250.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.helsingintanssikeskus.fi/index.php/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-22",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 250,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Koko kauden hinta; vaihtoehtoinen kuukausilaskutus 70€ x 4 (yhteensä 280€, kalliimpi kuin kertamaksu)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Vaihtoehtoinen maksutapa: kuukausilaskutus 70€/kk (4 erää, yhteensä 280€).",
    "unverified_fields": [
      "address"
    ],
    "verification_notes": "Kurssi alkanut 22.8.2026; saatavuutta ei kerrottu eksplisiittisesti. Sama kausihinta (250€) koskee sekä satubaletti 1 (2-4v) että 2 (4-6v) -ryhmiä (Emma Sandmanin lastentunnit, ei ryhmäkohtaista eroa hinnastossa). Ilmoittautuminen erillisellä Google-lomakkeella, ei myClub/hel.fi. Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-004",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 67.34,
    "monthly_cost_basis": "250.0 € / term jaettuna 3.71 kuukaudelle (2026-08-22–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tanssi",
    "provider": "Attitude Helsinki",
    "group_name": "Perhetanssi 2-5v, syyskausi 2026",
    "min_age": 2,
    "max_age": 5,
    "eligibility_text": "2–5-vuotias lapsi ja 1–2 aikuista",
    "parent_child": "yes",
    "venue_name": "Attitude Lauttasaari 2",
    "address": null,
    "district": "Lauttasaari",
    "weekday": "lauantai",
    "start_time": "10:30",
    "end_time": "11:15",
    "season": "Syyskausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 284.0,
    "price_basis": "Kausimaksu, 1 krt/vko 45 min",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.attitudehelsinki.com/aikataulu",
    "source_quote": "Lauantai, Lauttasaari 2: 10.30-11.15 Perhetanssi 2-5v (HL) ... Perhetanssi: 2–5-vuotias lapsi ja 1–2 aikuista normaalin hinnastomme mukaan. Perheen muut yli 2-vuotiaat lapset -50%. ... 1 krt /vko: 284€/45min",
    "activity_id": "hel-2026-0478",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 284.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.attitudehelsinki.com/hinnat",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 284,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kausimaksu kattaa 1 lapsen (2-5v) ja 1-2 aikuista (\"normaalin hinnastomme mukaan\")"
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": null,
      "verified": true
    },
    "optional_cost_notes": "Perheen muut yli 2-vuotiaat lapset -50 % (ei tarkkaa euromäärää lähteessä).",
    "unverified_fields": [
      "address",
      "price_covers.adults_count"
    ],
    "verification_notes": "Kausi käynnissä (alkoi 17.8.2026); saatavuutta ei kerrottu eksplisiittisesti. Hinta kattaa lapsen ja 1-2 aikuista samalla maksulla (\"normaalin hinnastomme mukaan\"), tarkkaa aikuismäärää ei eritelty. Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-006",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 68.61,
    "monthly_cost_basis": "284.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 4-5v. HKI3, syyskausi 2026",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "Lastentanssi 4-5v.",
    "parent_child": "no",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "Syyskausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 1 x 45 min/vko (Helsingin keskusta/Espoo-hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10€ (vain avoimilla tunneilla, joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/opetusryhmat/lapset/",
    "source_quote": "Lastentanssi 4-5v. HKI3 | Toimipiste | maanantai 17:30 | 45.00 min",
    "activity_id": "hel-2026-0479",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus 15 % ensimmäisestä kausihinnasta, kun perheestä tanssii useampi (ei tätä riviä koskeva automaattisesti).",
    "unverified_fields": [
      "venue_name",
      "district"
    ],
    "verification_notes": "Kurssi alkanut 17.8.2026 (syyskauden alku); saatavuutta ei kerrottu eksplisiittisesti (paitsi jos lukujärjestyksessä eksplisiittinen 'TÄYNNÄ'-merkintä, jota tällä rivillä ei ollut). Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-007",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-22",
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi (Lapsi-aikuinen) 1,5-3v. HKI3, syyskausi 2026",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "Lastentanssi (Lapsi-aikuinen) 1,5-3v.",
    "parent_child": "yes",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:45",
    "end_time": "10:30",
    "season": "Syyskausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 1 x 45 min/vko (Helsingin keskusta/Espoo-hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10€ (vain avoimilla tunneilla, joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/opetusryhmat/lapset/",
    "source_quote": "Lastentanssi (Lapsi-aikuinen) 1,5-3v. HKI3 | Toimipiste | lauantai 09:45 | 45.00 min",
    "activity_id": "hel-2026-0480",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": "Perhealennus 15 % ensimmäisestä kausihinnasta, kun perheestä tanssii useampi (ei tätä riviä koskeva automaattisesti).",
    "unverified_fields": [
      "venue_name",
      "district"
    ],
    "verification_notes": "Kurssi alkanut 17.8.2026 (syyskauden alku); saatavuutta ei kerrottu eksplisiittisesti (paitsi jos lukujärjestyksessä eksplisiittinen 'TÄYNNÄ'-merkintä, jota tällä rivillä ei ollut). Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-008",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-22",
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin Naisvoimistelijat ry",
    "group_name": "Perheliikunta 3–6 v., Pihlajiston ala-aste (Viikinmäki), syksy 2026",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "Perheliikunnassa leikitään, tanssitaan ja temppuillaan yhdessä. 3–6-vuotiaat.",
    "parent_child": "yes",
    "venue_name": "Pihlajiston ala-aste, Viikinmäen toimipiste",
    "address": null,
    "district": "Viikki",
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "11:00",
    "season": "Syyskausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 110.0,
    "price_basis": "Perheliikunta, kausimaksu syksy 2026",
    "membership_fee_eur": 20.0,
    "other_required_fees": "Jokainen lapsi maksaa kausimaksun lisäksi jäsenmaksun (20 €); lisäksi yksi mukana oleva aikuinen maksaa jäsenmaksun (20 €). Uuden jäsenen ilmoittautuessa syyskaudella jäsenmaksu/t tulee itse lisätä kausimaksulaskuun.",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.helsinginnaisvoimistelijat.fi/lapset/tunnit/",
    "source_quote": "Perheliikunta (*: Jokainen lapsi maksaa kausimaksun lisäksi jäsenmaksun. Lisäksi yksi aikuinen maksaa jäsenmaksun. Perheliikunta (* 110 €",
    "activity_id": "hel-2026-0481",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 150.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.helsinginnaisvoimistelijat.fi/hinnat/",
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 110,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Perheliikunta, kausimaksu syksy 2026 (per lapsi)"
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lapsen jäsenmaksu, pakollinen, voimassa kalenterivuoden"
      },
      {
        "type": "membership_adult",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "yksi mukana oleva aikuinen",
        "note": "Perheliikunta: lisäksi yksi aikuinen maksaa jäsenmaksun (hinnastosivun huomautus *)"
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertamäärää ei ole ilmoitettu rakenteisena aikataulun listana (vain kausijakso ja viikoittainen toistuvuus) - sessions_count jätetty epävarmaksi.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-016",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 37.15,
    "monthly_cost_basis": "110.0 € / term jaettuna 3.25 kuukaudelle (2026-09-05–2026-12-12, price_period_start) + membership 20 €/v ÷ 12 + membership_adult 20 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Viikki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Helsingin Naisvoimistelijat ry",
    "group_name": "Satuvoimistelu 4–5 v., Pasilan peruskoulu, syksy 2026",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "Satuvoimistelu on monipuolinen ja innostava ensimmäinen harrastus lapselle, 4–5-vuotiaille.",
    "parent_child": "no",
    "venue_name": "Pasilan peruskoulu",
    "address": null,
    "district": "Pasila",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "Syyskausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 110.0,
    "price_basis": "Satuvoimistelu, kausimaksu syksy 2026",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.helsinginnaisvoimistelijat.fi/lapset/tunnit/",
    "source_quote": "Satuvoimistelu | 4–5-vuotiaat | Tuesday 17.00-18.00 | Pasilan peruskoulu [...] Satuvoimistelu 110 €",
    "activity_id": "hel-2026-0482",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 130.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.helsinginnaisvoimistelijat.fi/hinnat/",
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 110,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Satuvoimistelu, kausimaksu syksy 2026"
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu, pakollinen, voimassa kalenterivuoden"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Hinnastosivun huomautus: 'Liikuntamaksut eivät sisällä vakuutuksia.' - ei tiedossa vaatiiko tämä erillisen pakollisen maksun.",
    "unverified_fields": [],
    "verification_notes": "Kertamäärää ei ole ilmoitettu rakenteisena aikataulun listana (vain kausijakso ja viikoittainen toistuvuus) - sessions_count jätetty epävarmaksi.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-017",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 35.49,
    "monthly_cost_basis": "110.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start) + membership 20 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pasila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Vauvauimarit Oy",
    "group_name": "Vauva- ja perheuinti, Kamppi",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "Vauva- ja perheuinti, sopii perheen kaikille sisaruksille",
    "parent_child": "yes",
    "venue_name": "Kamppi (uimahalli)",
    "address": "Malminkatu 3 D, 00100 Helsinki",
    "district": "Kamppi",
    "weekday": "sunnuntai",
    "start_time": "17:30",
    "end_time": "18:00",
    "season": "Syksy 2026 (jatkuva jäsenyys)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 96.0,
    "price_basis": "Kuukausihinta, 1 lapsi (sunnuntaisin Kampissa)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.helsinginvauvauimarit.fi/uintikurssit",
    "source_quote": "Kamppi: sunnuntaisin 96 €/kk (1 lapsi, toisen lapsen kanssa 117 €/kk)",
    "activity_id": "hel-2026-0483",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 96.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 96,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Toisen lapsen kanssa",
        "amount_eur": 117.0,
        "applies_if": "toinen lapsi mukana samassa perheuinnissa",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "max_age",
      "sessions_count"
    ],
    "verification_notes": "Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026). Vain alaikäraja ilmoitettu: max_age=null (avoin yläraja, Ilpon päätös 22.9.2026); sisarusten yläikärajaa ei kerrota lähteessä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-021",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 96.0,
    "monthly_cost_basis": "96.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Kamppi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Vauvauimarit Oy",
    "group_name": "Vauva- ja perheuinti, Ruskeasuo",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "Vauva- ja perheuinti, sopii perheen kaikille sisaruksille",
    "parent_child": "yes",
    "venue_name": "Ruskeasuo (uimahalli)",
    "address": "Tenholantie 15, 00280 Helsinki",
    "district": "Ruskeasuo",
    "weekday": "sunnuntai",
    "start_time": "09:00",
    "end_time": "09:30",
    "season": "Syksy 2026 (jatkuva jäsenyys)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 82.0,
    "price_basis": "Kuukausihinta, 1 lapsi (sunnuntaisin Ruskeasuolla)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.helsinginvauvauimarit.fi/uintikurssit",
    "source_quote": "Ruskeasuo: sunnuntaisin 82 €/kk (1 lapsi, toisen lapsen kanssa 103 €/kk)",
    "activity_id": "hel-2026-0484",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 82.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 82,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Toisen lapsen kanssa",
        "amount_eur": 103.0,
        "applies_if": "toinen lapsi mukana samassa perheuinnissa",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "max_age",
      "sessions_count"
    ],
    "verification_notes": "Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026). Vain alaikäraja ilmoitettu: max_age=null (avoin yläraja, Ilpon päätös 22.9.2026); sisarusten yläikärajaa ei kerrota lähteessä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-022",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 82.0,
    "monthly_cost_basis": "82.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Ruskeasuo",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Uimakoulu Pikku Joutsen",
    "group_name": "Aloittavat vauvauimarit 0-2 vuotta, Wilhelmiina (ke 9:00-9:30)",
    "min_age": 0,
    "max_age": 2,
    "eligibility_text": "3kk-2v uimareille",
    "parent_child": "yes",
    "venue_name": "Hoivakoti Wilhelmiina",
    "address": "Taavetti Laitisen katu 4, 00300 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "09:00",
    "end_time": "09:30",
    "season": "Syksy 2026 (jatkuva jäsenyys)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kuukausihinta",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.pikkujoutsen.fi/missa-ja-milloin/helsinki.html",
    "source_quote": "Kuukausihinta 91 € ... Vauvauintiryhmissä (0-2v) alle kouluikäinen sisarus voi olla veloituksetta mukana.",
    "activity_id": "hel-2026-0485",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 91.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.pikkujoutsen.fi/tule-mukaan/hinta.html",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Alle kouluikäinen sisarus",
        "amount_eur": 0.0,
        "applies_if": "alle kouluikäinen sisarus mukana samassa vauvauintiryhmässä (0-2v), oma aikuinen mukana",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-024",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 91.0,
    "monthly_cost_basis": "91.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Pikku Huopalahti",
    "district_basis": "geokoodattu osoite -> sub_district 'Pikku Huopalahti' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Uimakoulu Pikku Joutsen",
    "group_name": "Aloittavat uimakoulut 2-7 vuotta, Iiris (la 10:00-10:30, ilman vanhempia)",
    "min_age": 2,
    "max_age": 7,
    "eligibility_text": "2-7 vuotta",
    "parent_child": "no",
    "venue_name": "Iiris-keskus",
    "address": "Marjaniementie 74, 00930 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:30",
    "season": "Syksy 2026 (jatkuva jäsenyys)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kuukausihinta",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.pikkujoutsen.fi/missa-ja-milloin/helsinki.html",
    "source_quote": "Aloittavat uimakoulut 2-7 vuotta: La 10:00-10:30 ilman vanhempia, Iiris ... Kuukausihinta 91 €",
    "activity_id": "hel-2026-0486",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 91.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.pikkujoutsen.fi/tule-mukaan/hinta.html",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Toisen lapsen uintien kuukausihinta (sisarusalennus, uimakoulu 2-7v)",
        "amount_eur": 77.35,
        "applies_if": "sisarus omassa tasoisessa ryhmässään uimakoulun 2-7-vuotiaiden ryhmissä",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-025",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 91.0,
    "monthly_cost_basis": "91.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Itäkeskus",
    "district_basis": "geokoodattu osoite -> sub_district 'Itäkeskus' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Vauvauinti Kultakalat",
    "group_name": "Vauvauinti Minikultakalat (aloittajat), tiistai klo 16:30",
    "min_age": 0,
    "max_age": 1,
    "eligibility_text": "Vauvauinnin voi aloittaa n. 3-12 kk:n ikäisenä.",
    "parent_child": "yes",
    "venue_name": "Vauvauinti Kultakalojen oma lämminvesiallas, Käpylä",
    "address": null,
    "district": "Käpylä",
    "weekday": "tiistai",
    "start_time": "16:30",
    "end_time": null,
    "season": "Syyskuu 2026 (jatkuva jäsenyys)",
    "start_date": null,
    "end_date": null,
    "sessions_count": 4,
    "price_eur": 99.0,
    "price_basis": "Kuukausihinta, uinteja n. 4 kertaa/kk",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Uintiin voi osallistua lapsen lisäksi enintään kaksi aikuista.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.vauvauinti.fi/vauvauinti-minikultakalat/",
    "source_quote": "Vauvauinnin kuukausihinta on 99 euroa. Uinteja järjestetään 4 kertaa per kk.",
    "activity_id": "hel-2026-0487",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 99.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "approximate",
    "sessions_count_source": "https://www.vauvauinti.fi/vauvauinti-minikultakalat/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 2,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_time (kestoa ei kerrottu sivulla)",
      "address (tarkkaa katuosoitetta ei julkaista sivulla)"
    ],
    "verification_notes": "Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-026",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 99.0,
    "monthly_cost_basis": "99.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Käpylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Vauvauinti Kultakalat",
    "group_name": "Vauvauinti Kultakalat (jatkoryhmä alle 12 kk), tiistai klo 17:00",
    "min_age": 0,
    "max_age": 1,
    "eligibility_text": "Kultakalat-ryhmissä uintia voi jatkaa yhden vuoden ikään asti.",
    "parent_child": "yes",
    "venue_name": "Vauvauinti Kultakalojen oma lämminvesiallas, Käpylä",
    "address": null,
    "district": "Käpylä",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": null,
    "season": "Syyskuu 2026 (jatkuva jäsenyys)",
    "start_date": null,
    "end_date": null,
    "sessions_count": 4,
    "price_eur": 99.0,
    "price_basis": "Kuukausihinta, uinteja n. 4 kertaa/kk",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Uintiin voi osallistua lapsen lisäksi enintään kaksi aikuista.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.vauvauinti.fi/vauvauinti-kultakalat/",
    "source_quote": "Vauvauinnin kuukausihinta on 99 euroa. Uinteja järjestetään 4 kertaa per kk.",
    "activity_id": "hel-2026-0488",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 99.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "approximate",
    "sessions_count_source": "https://www.vauvauinti.fi/vauvauinti-kultakalat/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 2,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_time (kestoa ei kerrottu sivulla)",
      "address (tarkkaa katuosoitetta ei julkaista sivulla)"
    ],
    "verification_notes": "Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-027",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 99.0,
    "monthly_cost_basis": "99.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Käpylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Vauvauinti Kultakalat",
    "group_name": "Perheuinti Meritähdet (1-2 v), keskiviikko klo 12:00",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "Meritähdet (1-2 v)",
    "parent_child": "yes",
    "venue_name": "Vauvauinti Kultakalojen oma lämminvesiallas, Käpylä",
    "address": null,
    "district": "Käpylä",
    "weekday": "keskiviikko",
    "start_time": "12:00",
    "end_time": null,
    "season": "Syyskuu 2026 (jatkuva jäsenyys)",
    "start_date": null,
    "end_date": null,
    "sessions_count": 4,
    "price_eur": 99.0,
    "price_basis": "Kuukausihinta, uinteja n. 4 kertaa/kk",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Meritähdet-ryhmissä uintiin voi osallistua lapsen lisäksi yksi aikuinen.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.vauvauinti.fi/perheuinti-meritahdet/",
    "source_quote": "Perheuinnin kuukausihinta on 99 euroa. Uinteja järjestetään 4 kertaa per kk. Meritähdet-ryhmissä uintiin voi osallistua lapsen lisäksi yksi aikuinen.",
    "activity_id": "hel-2026-0489",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 99.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "approximate",
    "sessions_count_source": "https://www.vauvauinti.fi/perheuinti-meritahdet/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_time (kestoa ei kerrottu sivulla)",
      "address (tarkkaa katuosoitetta ei julkaista sivulla)"
    ],
    "verification_notes": "Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-028",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 99.0,
    "monthly_cost_basis": "99.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Käpylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "taekwondo",
    "provider": "Helsingin NMKY ry",
    "group_name": "Taekwondo Taso 1 (5-11 v & perheet) / Pakila / ma 17:00-18:00",
    "min_age": 5,
    "max_age": 11,
    "eligibility_text": "Taso 1 (5-11 v & perheet, valkoiset-keltaiset); lapset voivat aloittaa harrastuksen 5-vuotiaasta alkaen.",
    "parent_child": "unknown",
    "venue_name": "Pakilan toimintakeskus",
    "address": "Palosuontie 4 B, Helsinki",
    "district": "Pakila",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "kausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 48.0,
    "price_basis": "48 €/kk (harjoittelu kerran viikossa); 64 €/kk jos useampia kertoja viikossa",
    "membership_fee_eur": 50.0,
    "other_required_fees": "Taekwondolisenssi hankittava itse Suomen Taekwondoliitolta; hintaa ei ilmoitettu hnmky.fi-sivuilla.",
    "equipment_notes": null,
    "trial_info": "Kahden viikon maksuton kokeilujakso.",
    "enrollment_status": "unknown",
    "source_url": "https://www.hnmky.fi/taekwondo/aikataulu",
    "source_quote": "Lapset voivat aloittaa harrastuksen 5 -vuotiaasta alkaen. / 48e/kk harjoittelu kerran viikossa tai 64e/kk harjoittelu useamman kerran viikossa. Lisäksi kerran vuodessa maksetaan seuran jäsenmaksu 50 euroa.",
    "activity_id": "hel-2026-0490",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": null,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "source_partial",
    "price_source_url": "https://www.hnmky.fi/taekwondo/hinnasto",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2027-06-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 48,
        "mandatory": true,
        "included": true,
        "recurrence": "month",
        "applies_if": "kerran viikossa; 64 €/kk jos useampia kertoja viikossa",
        "note": "hnmky.fi/taekwondo/hinnasto: '48e/kk harjoittelu kerran viikossa tai 64e/kk harjoittelu useamman kerran viikossa.'"
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "'Lisäksi kerran vuodessa maksetaan seuran jäsenmaksu 50 euroa.'"
      },
      {
        "type": "license_and_insurance",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "'Uudet taekwondoharrastajat hankkivat omatoimisesti taekwondolisenssin harrastuksen alkaessa.' Hintaa ei ilmoiteta hnmky.fi-sivuilla; hankitaan Suomen Taekwondoliitolta."
      }
    ],
    "price_options": [
      {
        "label": "Perhealennus",
        "amount_eur": 38.4,
        "applies_if": "20% kuukausimaksusta perheen toisesta harrastajasta alkaen (vanhin maksaa täyden hinnan)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus 20% kuukausimaksusta perheen toisesta harrastajasta alkaen; sisaralennus mahdollinen tietyin ehdoin (koripallo+taekwondo yhdistelmä).",
    "unverified_fields": [
      "fee_components[license_and_insurance].amount_eur"
    ],
    "verification_notes": "Ryhmä 'Taso 1 (5-11 v & perheet)' kokoontuu useana viikonpäivänä/paikassa (ma Pakila, la ja su Kaisaniemi); tämä rivi kattaa yhden viikoittaisen vuoron. Ryhmään voi osallistua myös ilman perhettä (hnmky.fi/taekwondo/harjoitusryhmat), joten parent_child=unknown. Pakollinen maksu hinnoittelematta → julkaistaan 'hinta osittain tiedossa' -merkinnällä (price_completeness=incomplete, Ilpon jonolinjaus 6, 22.9.2026). Hinnoittelematon pakollinen maksu on kirjattu kenttiin has_unpriced_required_fee/unverified_fields, ei erillisenä epävarmana kenttänä (Ilpon jonolinjaus 6, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-033",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-22",
    "monthly_cost_eur": 52.17,
    "monthly_cost_basis": "48.0 €/kk + membership 50 €/v ÷ 12",
    "monthly_cost_complete": false,
    "district_derived": "Pakila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "taekwondo",
    "provider": "Helsingin NMKY ry",
    "group_name": "Taekwondo Taso 1 (5-11 v & perheet) / Kaisaniemi / la 12:00-13:00",
    "min_age": 5,
    "max_age": 11,
    "eligibility_text": "Taso 1 (5-11 v & perheet, valkoiset-keltaiset); lapset voivat aloittaa harrastuksen 5-vuotiaasta alkaen.",
    "parent_child": "unknown",
    "venue_name": "Kaisaniemen ala-asteen koulu",
    "address": "Puutarhakatu 1, 00100 Helsinki",
    "district": "Kaisaniemi",
    "weekday": "lauantai",
    "start_time": "12:00",
    "end_time": "13:00",
    "season": "kausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 48.0,
    "price_basis": "48 €/kk (harjoittelu kerran viikossa); 64 €/kk jos useampia kertoja viikossa",
    "membership_fee_eur": 50.0,
    "other_required_fees": "Taekwondolisenssi hankittava itse Suomen Taekwondoliitolta; hintaa ei ilmoitettu hnmky.fi-sivuilla.",
    "equipment_notes": null,
    "trial_info": "Kahden viikon maksuton kokeilujakso.",
    "enrollment_status": "unknown",
    "source_url": "https://www.hnmky.fi/taekwondo/aikataulu",
    "source_quote": "Lapset voivat aloittaa harrastuksen 5 -vuotiaasta alkaen. / 48e/kk harjoittelu kerran viikossa tai 64e/kk harjoittelu useamman kerran viikossa. Lisäksi kerran vuodessa maksetaan seuran jäsenmaksu 50 euroa.",
    "activity_id": "hel-2026-0491",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": null,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "source_partial",
    "price_source_url": "https://www.hnmky.fi/taekwondo/hinnasto",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2027-06-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 48,
        "mandatory": true,
        "included": true,
        "recurrence": "month",
        "applies_if": "kerran viikossa; 64 €/kk jos useampia kertoja viikossa",
        "note": "hnmky.fi/taekwondo/hinnasto: '48e/kk harjoittelu kerran viikossa tai 64e/kk harjoittelu useamman kerran viikossa.'"
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "'Lisäksi kerran vuodessa maksetaan seuran jäsenmaksu 50 euroa.'"
      },
      {
        "type": "license_and_insurance",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "'Uudet taekwondoharrastajat hankkivat omatoimisesti taekwondolisenssin harrastuksen alkaessa.' Hintaa ei ilmoiteta hnmky.fi-sivuilla; hankitaan Suomen Taekwondoliitolta."
      }
    ],
    "price_options": [
      {
        "label": "Perhealennus",
        "amount_eur": 38.4,
        "applies_if": "20% kuukausimaksusta perheen toisesta harrastajasta alkaen (vanhin maksaa täyden hinnan)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus 20% kuukausimaksusta perheen toisesta harrastajasta alkaen; sisaralennus mahdollinen tietyin ehdoin (koripallo+taekwondo yhdistelmä).",
    "unverified_fields": [
      "fee_components[license_and_insurance].amount_eur"
    ],
    "verification_notes": "Ryhmä 'Taso 1 (5-11 v & perheet)' kokoontuu useana viikonpäivänä/paikassa (ma Pakila, la ja su Kaisaniemi); tämä rivi kattaa yhden viikoittaisen vuoron. Ryhmään voi osallistua myös ilman perhettä (hnmky.fi/taekwondo/harjoitusryhmat), joten parent_child=unknown. Pakollinen maksu hinnoittelematta → julkaistaan 'hinta osittain tiedossa' -merkinnällä (price_completeness=incomplete, Ilpon jonolinjaus 6, 22.9.2026). Hinnoittelematon pakollinen maksu on kirjattu kenttiin has_unpriced_required_fee/unverified_fields, ei erillisenä epävarmana kenttänä (Ilpon jonolinjaus 6, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-034",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-22",
    "monthly_cost_eur": 52.17,
    "monthly_cost_basis": "48.0 €/kk + membership 50 €/v ÷ 12",
    "monthly_cost_complete": false,
    "district_derived": "Kaisaniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "taekwondo",
    "provider": "Helsingin NMKY ry",
    "group_name": "Taekwondo Taso 1 (5-11 v & perheet) / Kaisaniemi / su 12:00-13:00",
    "min_age": 5,
    "max_age": 11,
    "eligibility_text": "Taso 1 (5-11 v & perheet, valkoiset-keltaiset); lapset voivat aloittaa harrastuksen 5-vuotiaasta alkaen.",
    "parent_child": "unknown",
    "venue_name": "Kaisaniemen ala-asteen koulu",
    "address": "Puutarhakatu 1, 00100 Helsinki",
    "district": "Kaisaniemi",
    "weekday": "sunnuntai",
    "start_time": "12:00",
    "end_time": "13:00",
    "season": "kausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 48.0,
    "price_basis": "48 €/kk (harjoittelu kerran viikossa); 64 €/kk jos useampia kertoja viikossa",
    "membership_fee_eur": 50.0,
    "other_required_fees": "Taekwondolisenssi hankittava itse Suomen Taekwondoliitolta; hintaa ei ilmoitettu hnmky.fi-sivuilla.",
    "equipment_notes": null,
    "trial_info": "Kahden viikon maksuton kokeilujakso.",
    "enrollment_status": "unknown",
    "source_url": "https://www.hnmky.fi/taekwondo/aikataulu",
    "source_quote": "Lapset voivat aloittaa harrastuksen 5 -vuotiaasta alkaen. / 48e/kk harjoittelu kerran viikossa tai 64e/kk harjoittelu useamman kerran viikossa. Lisäksi kerran vuodessa maksetaan seuran jäsenmaksu 50 euroa.",
    "activity_id": "hel-2026-0492",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": null,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "source_partial",
    "price_source_url": "https://www.hnmky.fi/taekwondo/hinnasto",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2027-06-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 48,
        "mandatory": true,
        "included": true,
        "recurrence": "month",
        "applies_if": "kerran viikossa; 64 €/kk jos useampia kertoja viikossa",
        "note": "hnmky.fi/taekwondo/hinnasto: '48e/kk harjoittelu kerran viikossa tai 64e/kk harjoittelu useamman kerran viikossa.'"
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "'Lisäksi kerran vuodessa maksetaan seuran jäsenmaksu 50 euroa.'"
      },
      {
        "type": "license_and_insurance",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "'Uudet taekwondoharrastajat hankkivat omatoimisesti taekwondolisenssin harrastuksen alkaessa.' Hintaa ei ilmoiteta hnmky.fi-sivuilla; hankitaan Suomen Taekwondoliitolta."
      }
    ],
    "price_options": [
      {
        "label": "Perhealennus",
        "amount_eur": 38.4,
        "applies_if": "20% kuukausimaksusta perheen toisesta harrastajasta alkaen (vanhin maksaa täyden hinnan)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus 20% kuukausimaksusta perheen toisesta harrastajasta alkaen; sisaralennus mahdollinen tietyin ehdoin (koripallo+taekwondo yhdistelmä).",
    "unverified_fields": [
      "fee_components[license_and_insurance].amount_eur"
    ],
    "verification_notes": "Ryhmä 'Taso 1 (5-11 v & perheet)' kokoontuu useana viikonpäivänä/paikassa (ma Pakila, la ja su Kaisaniemi); tämä rivi kattaa yhden viikoittaisen vuoron. Ryhmään voi osallistua myös ilman perhettä (hnmky.fi/taekwondo/harjoitusryhmat), joten parent_child=unknown. Pakollinen maksu hinnoittelematta → julkaistaan 'hinta osittain tiedossa' -merkinnällä (price_completeness=incomplete, Ilpon jonolinjaus 6, 22.9.2026). Hinnoittelematon pakollinen maksu on kirjattu kenttiin has_unpriced_required_fee/unverified_fields, ei erillisenä epävarmana kenttänä (Ilpon jonolinjaus 6, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-035",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-22",
    "monthly_cost_eur": 52.17,
    "monthly_cost_basis": "48.0 €/kk + membership 50 €/v ÷ 12",
    "monthly_cost_complete": false,
    "district_derived": "Kaisaniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "judo",
    "provider": "Meido-Kan ry",
    "group_name": "Muksujudo 6-11v Alkeisryhmä",
    "min_age": 6,
    "max_age": 11,
    "eligibility_text": "Muksujudo 6-11v Alkeisryhmä (sopii vain 6-vuotiaille rajauksen 0-6 v osalta)",
    "parent_child": "unknown",
    "venue_name": "Meido-Kan dojo, Vallila",
    "address": "Päijänteentie 1, 00550 Helsinki",
    "district": "Vallila",
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 395.0,
    "price_basis": "395 €/vuosi (Meido-Kan ry:n koko vuoden jäsenmaksu kaikilta lajeilta ja ikäryhmiltä)",
    "membership_fee_eur": 395.0,
    "other_required_fees": "Judoliiton pakollinen lisenssi/vakuutus, hinta ikäriippuvainen (67-154 €, edellisen kauden hinnat); kauden 2026-2027 hintaa ei vahvistettu.",
    "equipment_notes": null,
    "trial_info": "Ensimmäinen kuukausi ilmaiseksi.",
    "enrollment_status": "unknown",
    "source_url": "https://meidokan.fi/judo/harjoituskalenteri-tapahtumat/",
    "source_quote": "Keskiviikko: Muksujudo 6-11v Alkeisryhmä 17.00-18.00. Opetellaan harjoittelemaan yhdessä. Dojokäytös, pelisäännöt. Opetellaan kaatumaan oikein useasta eri asennosta...",
    "activity_id": "hel-2026-0493",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": null,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "source_partial",
    "price_source_url": "https://meidokan.fi/judo/liity-porukkaan/hinnat/",
    "billing_period": "full_season",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "membership",
        "amount_eur": 395,
        "mandatory": true,
        "included": true,
        "recurrence": "annual",
        "applies_if": null,
        "note": "'Seuran kaikkien lajien jäsenmaksu kaikenikäisiltä / KOKO VUOSI 2026.' Mahdollistaa osallistumisen kaikkiin sopiviin harjoituksiin. Perhealennus 35 € koko vuoden hinnasta (ei automaattinen)."
      },
      {
        "type": "license_and_insurance",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "ikä 6-7: 67 €/kausi; ikä 8-11: 154 €/kausi (edellisen kauden hinnat, kausi 1.8.2025-31.7.2026)",
        "note": "Judoliiton lisenssi/vakuutus pakollinen; hinta riippuu lapsen iästä eikä kauden 2026-2027 hintaa ollut päivitetty tarkistushetkellä."
      }
    ],
    "price_options": [
      {
        "label": "Perhealennus",
        "amount_eur": 35.0,
        "applies_if": "koko vuoden jäsenmaksusta, ei automaattinen",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "fee_components[license_and_insurance].amount_eur"
    ],
    "verification_notes": "Ryhmän kuvaus ja aika (keskiviikko 17.00-18.00, Vallila) syksyn 2026 harjoituskalenterista. Sama koko seuran jäsenmaksurakenne kuin muilla Meido-Kanin ryhmillä (395 €/vuosi); Judoliiton lisenssin hinta riippuu lapsen iästä (6-7 v: 67 €, 8-11 v: 154 €, edellisen kauden hinnat, ei päivitetty kaudelle 2026-2027). Pakollinen maksu hinnoittelematta → julkaistaan 'hinta osittain tiedossa' -merkinnällä (price_completeness=incomplete, Ilpon jonolinjaus 6, 22.9.2026). Hinnoittelematon pakollinen maksu on kirjattu kenttiin has_unpriced_required_fee/unverified_fields, ei erillisenä epävarmana kenttänä (Ilpon jonolinjaus 6, 22.9.2026).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-038",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Vallila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin kaupunki",
    "group_name": "Temppujumppa 4–5-vuotiaat, Latokartanon liikuntahalli",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Latokartanon liikuntahalli",
    "address": "Agronominkatu 26",
    "district": "Latokartano",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": 14,
    "price_eur": 31.0,
    "price_basis": "14 kertaa (Pohjoinen Ryhmäliikunta Lapsi 4-5 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84196",
    "source_quote": "Latokartanon liikuntahalli ti 17.00–17.45, 4–5-vuotiaat; hinta 31 €.",
    "activity_id": "hel-2026-0494",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 31.0,
    "price_per_session_eur": 2.21,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84196",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 31,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_21.json",
      "staging_id": "batch_2026-09-22_21-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_21/city_84196_c9d367ac1b30.json",
      "capture_sha256": "c9d367ac1b30fcf6c4a483e26ad4b7531217f07bb2f973fac917299bc9879c3b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 9.53,
    "monthly_cost_basis": "31.0 € / course jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Latokartano",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin kaupunki",
    "group_name": "Temppujumppa 5–6-vuotiaat, Latokartanon liikuntahalli",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Latokartanon liikuntahalli",
    "address": "Agronominkatu 26",
    "district": "Latokartano",
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": 14,
    "price_eur": 31.0,
    "price_basis": "14 kertaa (Pohjoinen Ryhmäliikunta Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84197",
    "source_quote": "Latokartanon liikuntahalli ti 18.00–18.45, 5–6-vuotiaat; hinta 31 €.",
    "activity_id": "hel-2026-0495",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 31.0,
    "price_per_session_eur": 2.21,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84197",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 31,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_21.json",
      "staging_id": "batch_2026-09-22_21-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_21/city_84197_c23c3de3cc4d.json",
      "capture_sha256": "c23c3de3cc4d7adf0f76daafee48dd9ca5ef744846f96283770b36047947ee0c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 9.53,
    "monthly_cost_basis": "31.0 € / course jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Latokartano",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin kaupunki",
    "group_name": "Temppujumppa perheet 2–6-vuotiaat, Oulunkylän liikuntapuisto",
    "min_age": 2,
    "max_age": 6,
    "eligibility_text": "2–6-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Oulunkylän liikuntapuisto",
    "address": "Käskynhaltijantie 11",
    "district": "Oulunkylä",
    "weekday": "keskiviikko",
    "start_time": "16:00",
    "end_time": "16:45",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": 14,
    "price_eur": 31.0,
    "price_basis": "14 kertaa (Pohjoinen Ryhmäliikunta Lapsi 2-6 -vuotiaat), lapsi + aikuinen",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84210",
    "source_quote": "Oulunkylän liikuntapuisto ke 16.00–16.45, 2–6-vuotiaat; 31 € / kausi lapselle ja aikuiselle.",
    "activity_id": "hel-2026-0496",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 31.0,
    "price_per_session_eur": 2.21,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84210",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 31,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": "Toinen lapsi maksaa 31 € lisää.",
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_21.json",
      "staging_id": "batch_2026-09-22_21-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_21/city_84210_c5a3f30967f6.json",
      "capture_sha256": "c5a3f30967f6f39c6a4c694995295f900ff9c432afd046bea0f1c5ea9c1d59cf",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 9.53,
    "monthly_cost_basis": "31.0 € / course jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Oulunkylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin kaupunki",
    "group_name": "Temppujumppa 4–5-vuotiaat, Oulunkylän liikuntapuisto",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4–5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Oulunkylän liikuntapuisto",
    "address": "Käskynhaltijantie 11",
    "district": "Oulunkylä",
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": 14,
    "price_eur": 31.0,
    "price_basis": "14 kertaa (Pohjoinen Ryhmäliikunta Lapsi 4-5 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84208",
    "source_quote": "Oulunkylän liikuntapuisto ke 17.00–17.45, 4–5-vuotiaat; hinta 31 €.",
    "activity_id": "hel-2026-0497",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 31.0,
    "price_per_session_eur": 2.21,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84208",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 31,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_21.json",
      "staging_id": "batch_2026-09-22_21-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_21/city_84208_6b6e24db020b.json",
      "capture_sha256": "6b6e24db020b3977999d072232ff80798a870069010fcebe6e01967b447584cd",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 9.53,
    "monthly_cost_basis": "31.0 € / course jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Oulunkylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin kaupunki",
    "group_name": "Temppujumppa 5–6-vuotiaat, Oulunkylän liikuntapuisto",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Oulunkylän liikuntapuisto",
    "address": "Käskynhaltijantie 11",
    "district": "Oulunkylä",
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": 14,
    "price_eur": 31.0,
    "price_basis": "14 kertaa (Pohjoinen Ryhmäliikunta Lapsi 5-6 -vuotiaat)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84209",
    "source_quote": "Oulunkylän liikuntapuisto ke 18.00–18.45, 5–6-vuotiaat; hinta 31 €.",
    "activity_id": "hel-2026-0498",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 31.0,
    "price_per_session_eur": 2.21,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://liikuntakauppa.hel.fi/helsinginkaupunki/reservations2/apieventgroups/84209",
    "availability_status": "full",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 31,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_21.json",
      "staging_id": "batch_2026-09-22_21-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_21/city_84209_86f53bec2e28.json",
      "capture_sha256": "86f53bec2e28c82fa98f0fd26944a7e65956ff4019ced53b60a48476b1022ece",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-22T12:30:34+00:00"
    },
    "monthly_cost_eur": 9.53,
    "monthly_cost_basis": "31.0 € / course jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Oulunkylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jääkiekko",
    "provider": "Viikingit Jääkiekko ry",
    "group_name": "Tyttö-Kiekkokoulu, syyskausi 2026",
    "min_age": 6,
    "max_age": 11,
    "eligibility_text": "Lähtökohtaisesti 6–11-vuotiaat tytöt",
    "parent_child": "no",
    "venue_name": "Vuosaaren jäähalli (Aimo Mäkinen Areena), kaukalo Vuosaari 1",
    "address": "Pallokuja 6, 00980 Helsinki",
    "district": "Vuosaari",
    "weekday": "sunnuntai",
    "start_time": "12:30",
    "end_time": "13:30",
    "season": "syyskausi 2026",
    "start_date": "2026-09-27",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 60.0,
    "price_basis": "syyskausi 2026 (27.9.–13.12.2026)",
    "membership_fee_eur": null,
    "other_required_fees": "Jääkiekkoliiton Kiekkokoulurekisteröinti vaaditaan; hintaa ei julkaistu.",
    "equipment_notes": "Luistimet, kypärä, hanskat, maila, kaulasuoja, juomapullo; seura voi lainata varusteita.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://viikingit.myclub.fi/flow/events/10707777",
    "source_quote": "Toiminta on suunnattu lähtökohtaisesti 6 -11 vuotiaille tytöille; sunnuntaisin klo 12.30-13.30 Vuosaaren jäähallilla; 27.9.2026–13.12.2026; 60,00 €.",
    "activity_id": "hel-2026-0499",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 60.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": "https://www.viikingit.fi/kiekkokoulut/tyttokiekko/",
    "billing_period": "term",
    "price_period_start": "2026-09-27",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-27",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 60,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "registration_and_insurance",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "season",
        "applies_if": null,
        "note": "Suomen Jääkiekkoliiton Kiekkokoulurekisteröinti (SuomiSport); hintaa ei ilmoiteta seuran sivuilla."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautuminen vaatii jäsenyyden seuran jäsenrekisterissä (MyClub); jäsenmaksua ei mainita. Kevätkausi 10.1.–21.3.2027 on erillinen kausi (ei tällä rivillä). Sopii vain 6-vuotiaille (ikäraja 6–11 v; rajaus alle kouluikäiset 0–6 v) – mukana Ilpon päätöksellä 21.9.2026. Pakollinen maksu hinnoittelematta → julkaistaan 'hinta osittain tiedossa' -merkinnällä (price_completeness=incomplete, Ilpon jonolinjaus 6, 22.9.2026). Ilmoittautuminen vaatii SuomiSport-rekisteröinnin (Suomen Jaakiekkoliitto); pakollinen mutta hinnoittelematon lisenssimaksu on jo merkitty fee_components-riville (registration_and_insurance, amount_eur=null, mandatory=true), price_completeness=incomplete, has_unpriced_required_fee=true -> julkaistaan 'hinta osittain tiedossa' -saannolla. [linjaus 6, 23.9.2026]",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_01.json",
      "staging_id": "batch_2026-09-21_01-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_01/vmc_777_929fc2d3b42a.html",
      "capture_sha256": "929fc2d3b42af976989cc8bec6898a00511da96b7f7ff2630fbbf9d0839eadbf",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 23.41,
    "monthly_cost_basis": "60.0 € / term jaettuna 2.56 kuukaudelle (2026-09-27–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "karate",
    "provider": "Tapanilan Erä Karate ry",
    "group_name": "Perhekarate 3–6 v (kertamaksu, kerran kuussa)",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotias lapsi ja aikuinen",
    "parent_child": "yes",
    "venue_name": "Tapanilan Erä Karaten sali",
    "address": "Jäkälätie 2, 00730 Helsinki",
    "district": "Tapanila",
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 7.0,
    "price_basis": "kertamaksu 7 € / harjoitus",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://erankarate.fi/fi/ryhmat/perhekarate",
    "source_quote": "Perhekarate 3–6-vuotiaalle ja aikuiselle kerran kuussa lauantaisin klo 11–12; kertamaksutunnit 7 eur.",
    "activity_id": "hel-2026-0500",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 7.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://erankarate.fi/fi/harjoitukset/hinnasto",
    "billing_period": "session",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 7,
        "mandatory": true,
        "included": true,
        "recurrence": "session",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": "Seura ei vakuuta harrastajia; kamppailulajin kattavaa tapaturmavakuutusta suositellaan (ei pakollinen).",
    "unverified_fields": [],
    "verification_notes": "Harjoituspäivämäärät (kerran kuussa) eivät näy staattisesta sivusta. Hinnaston 'Kertamaksutunnit 7 eur' yhdistetty perhekarateen alkeiskurssisivun 'Kertamaksutunnit'-listauksen perusteella; ei tiedossa, maksaako lapsi ja aikuinen kumpikin. Perhekarate-nimen perusteella perhetunti (lapsi + aikuinen); hinnasto ei kerro kattaako 7 EUR molemmat, joten price_covers merkitty verified=false CLAUDE.md:n perhetunti-saannon mukaisesti. Paikka ja viikonpaiva ovat jo evidenssin mukaiset (uncertain_fields), eivat yksinaan review-syy. [linjaus 5, 23.9.2026]",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_02.json",
      "staging_id": "batch_2026-09-21_02-015",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_02/era_perhekarate_2052cef962f7.html",
      "capture_sha256": "2052cef962f7014d58ac1fbc9af146685bef80cb49fdeb60a4d35de607e38d57",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa session ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Pirkkola voimistelukoulu 5-7 v",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v",
    "parent_child": "unknown",
    "venue_name": "Elise Arena",
    "address": "Pirkkolan metsätie 8, 00630 Helsinki, Suomi",
    "district": "Pirkkola",
    "weekday": "maanantai",
    "start_time": "16:05",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10750841",
    "source_quote": "Pirkkola voimistelukoulu 5-7 v | 31.8.2026 16:05 - 14.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0501",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district Aikataulun PERUTTU-/näytös-/korvaava tapahtuma ei ole harjoitus eikä kerroissa mukana (Ilpon päätös 21.9.2026); ei review-syy. Ryhmasivun HARJOITUSAIKATAULU-teksti ja aikataululista tasmaavat keskenaan (kellonajat kuten rivilla); vain erillinen yleiskuvauksen 'tunti kestaa X min' -maininta poikkeaa. Kaytetty ryhman omaa aikataulua ensisijaisena lahteena (sama periaate kuin saanto 8: tarkempi/ryhmakohtainen tieto voittaa yleisen kuvaustekstin). [linjaus 8-analogia, 23.9.2026]",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10750841_b977661fafe6.html",
      "capture_sha256": "b977661fafe69c453800e490cf686a2b5bb818efc82a57879018bc1c9744c4b8",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.81,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.48 kuukaudelle (2026-08-31–2026-12-14, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pirkkola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Elise Gymnastics",
    "group_name": "Latokartano voimistelukoulu 5-7 v",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v",
    "parent_child": "unknown",
    "venue_name": "Latokartanon liikuntahalli",
    "address": "Agronominkatu 26, 00790 Helsinki",
    "district": "Latokartano",
    "weekday": "maanantai",
    "start_time": "16:35",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu",
    "membership_fee_eur": 39.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elise.myclub.fi/flow/courses/10750607",
    "source_quote": "Latokartano voimistelukoulu 5-7 v | 31.8.2026 16:35 - 12.12.2026 | Syyskauden 2026 harjoitusmaksu 170,00 €",
    "activity_id": "hel-2026-0502",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 170,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 39,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Elisen Jäsenmaksu 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "collected from deferred batch_2026-09-21_01; myclub.py v2 (2026-09-21, tallenteesta) tuottaa nyt samana: district Ryhmasivun HARJOITUSAIKATAULU-teksti ja aikataululista tasmaavat keskenaan (kellonajat kuten rivilla); vain erillinen yleiskuvauksen 'tunti kestaa X min' -maininta poikkeaa. Kaytetty ryhman omaa aikataulua ensisijaisena lahteena (sama periaate kuin saanto 8: tarkempi/ryhmakohtainen tieto voittaa yleisen kuvaustekstin). [linjaus 8-analogia, 23.9.2026]",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_04.json",
      "staging_id": "batch_2026-09-21_04-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_04/myclub_elise_10750607_5bb1bd3a626d.html",
      "capture_sha256": "5bb1bd3a626d8d852761e6335ac35b43b23d8ee37088509049f075e8315332f4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.75,
    "monthly_cost_basis": "170.0 € / term jaettuna 3.42 kuukaudelle (2026-08-31–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Latokartano",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "HIFK Soccer rf",
    "group_name": "Perhefutis|Familjefotboll (2021- ja nuoremmat tytöt ja pojat|2021-födda och yngre flickor o pojkar)",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3–5-vuotiaille",
    "parent_child": "yes",
    "venue_name": "Väinämöinen",
    "address": null,
    "district": "Töölö",
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": "2026-08-08",
    "end_date": "2026-10-10",
    "sessions_count": 7,
    "price_eur": 50.0,
    "price_basis": "Perhefutis/Familjefotboll",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://hifksoccer.myclub.fi/flow/courses/10873098",
    "source_quote": "Perhefutis|Familjefotboll (2021- ja nuoremmat tytöt ja pojat|2021-födda och yngre flickor o pojkar) | 8.8.2026 11:00 - 10.10.2026 | Perhefutis/Familjefotboll 50,00 €",
    "activity_id": "hel-2026-0503",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-08",
    "season_end_date": "2026-10-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://hifksoccer.myclub.fi/flow/courses/10873098",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_01 deferred-listalta. Kurssi alkanut 8.8.2026, päättyy 10.10.2026 (ilmoittautuminen päättyy 10.10.2026 09:00; pelkkä Ilmoittaudu-painike → availability unknown). Aikataulu 11:00–12:00, kuvaus: 'Jokainen harjoitus on yhteisharjoitus (45min lapsi + aikuinen)'. Ei harjoituksia 22.8., 5.9., 26.9. (aikataululista 7 kertaa). Pian päättyvä/alkanut kurssi julkaistaan; käyttöliittymä merkitsee tilan end_date-kentästä (Ilpon jonolinjaus 7, 22.9.2026). Jasenmaksua ei mainita lahteessa lainkaan (ei vain hinnoittelematta, vaan olemassaoloa ei kerrota) -> membership_fee_eur=null, ei review-syy (yksittainen puuttuva kentta, saanto 5). [linjaus 5, 23.9.2026]",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/hifk_10873098_e0992ade9394.html",
      "capture_sha256": "e0992ade9394d9578ec796ff7b95e3122b0a6d55c736f6dda87035daf2406a33",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Töölö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Helsingin Vauvauimarit Oy",
    "group_name": "Alkeiskurssi (30 min), Ruskeasuo, 22.10.-17.12.2026",
    "min_age": 3,
    "max_age": null,
    "eligibility_text": "yli 3-vuotiaita lapsia",
    "parent_child": "yes",
    "venue_name": "Ruskeasuo (uimahalli)",
    "address": "Tenholantie 15, 00280 Helsinki",
    "district": "Ruskeasuo",
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "18:30",
    "season": "Syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-17",
    "sessions_count": 9,
    "price_eur": 144.0,
    "price_basis": "9 viikon alkeiskurssi (30 min ryhmä)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Uimataitoa ei vaadita; uimataidottomalla lapsella tulee olla vanhempi mukana.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.helsinginvauvauimarit.fi/uintikurssit",
    "source_quote": "20.8-8.10.2026 (8 krt) / 22.10-17.12.2026 (9 krt) ... 30 minuutin ryhmät 64 €/kk ... 9 viikkoa = 144 €",
    "activity_id": "hel-2026-0504",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": 144.0,
    "price_per_session_eur": 16.0,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-17",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.helsinginvauvauimarit.fi/uintikurssit",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 144,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "price_options[0].amount_eur (sisarushinta arvioitu kuukausihinnasta, ei sananmukaista kurssikohtaista summaa)"
    ],
    "verification_notes": "Järjestäjän oma domain hyväksytty data/providers_extra.json:iin (koordinaattorin tarkistus 22.9.2026). Sisarusalennuksen kurssikohtainen summa (129,60 EUR) oli koodin johtama kuukausihinnasta, ei sananmukainen lahteessa -> poistettu (amount_eur=null), ehto (applies_if) sailytetty sanatarkkana huomautuksena. Ei arvata. [linjaus data-saanto-1, 23.9.2026]",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_19.json",
      "staging_id": "batch_2026-09-22_19-023",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "monthly_cost_eur": 76.89,
    "monthly_cost_basis": "144.0 € / course jaettuna 1.87 kuukaudelle (2026-10-22–2026-12-17, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Ruskeasuo",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Puistolan Urheilijat ry",
    "group_name": "Jalkapallokoulu 4-5v, Puistolan tekonurma (ti 17.00-17.45)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5-vuotiaille (myös hieman nuoremmat tai vanhemmat, jos ryhmä sopii)",
    "parent_child": "no",
    "venue_name": "Puistolan tekonurma",
    "address": null,
    "district": "Puistola",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 38.0,
    "price_basis": "38€/kk (yksi ryhmä)",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://puistolanurheilijat.fi/jalkapallo/jalkapallokoulu/",
    "source_quote": "Jalkapallokoulu harjoittelee kerran viikossa. Harjoitukset kestävät 45 minuuttia ja toiminta pyörii ympäri vuoden. Harjoitusryhmiä on kaksi: Tiistaisin klo 17-17:45 Puistolan tekonurmella ja Torstaisin klo 18-18:45 Suurmetsän tekonurmella. ... Hinta: 38€/kk tai molemmat ryhmät 50€/kk + SEURAN JÄSENMAKSU 15 €. Laskutus tapahtuu kerran kalenterivuodessa (1 x kalenterivuosi). Kuukausihintaan sisältyy Palloliiton pelipassi ja vakuutus.",
    "activity_id": "hel-2026-0505",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 53.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 38,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "38€/kk, yksi ryhmä (Puistola)"
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lasten jäsenmaksu 15 €/vuosi, laskutetaan erikseen kerran kalenterivuodessa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Molempiin ryhmiin (Puistola + Suurmetsä) ilmoittautuminen 50€/kk yhteensä.",
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_23.json",
      "staging_id": "batch_2026-09-23_23-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_23/puiu_jalkapallokoulu_c6c54dee693b.html",
      "capture_sha256": "c6c54dee693b1c06ed2453ab8c7cb890f0d39e88404daecc00f1077bf6e739dd",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 39.25,
    "monthly_cost_basis": "38.0 €/kk + membership 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Puistola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Puistolan Urheilijat ry",
    "group_name": "Jalkapallokoulu 4-5v, Suurmetsän tekonurma (to 18.00-18.45)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5-vuotiaille (myös hieman nuoremmat tai vanhemmat, jos ryhmä sopii)",
    "parent_child": "no",
    "venue_name": "Suurmetsän tekonurma",
    "address": null,
    "district": "Suurmetsä",
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 38.0,
    "price_basis": "38€/kk (yksi ryhmä)",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://puistolanurheilijat.fi/jalkapallo/jalkapallokoulu/",
    "source_quote": "Jalkapallokoulu harjoittelee kerran viikossa. Harjoitukset kestävät 45 minuuttia ja toiminta pyörii ympäri vuoden. Harjoitusryhmiä on kaksi: Tiistaisin klo 17-17:45 Puistolan tekonurmella ja Torstaisin klo 18-18:45 Suurmetsän tekonurmella. ... Hinta: 38€/kk tai molemmat ryhmät 50€/kk + SEURAN JÄSENMAKSU 15 €. Laskutus tapahtuu kerran kalenterivuodessa (1 x kalenterivuosi). Kuukausihintaan sisältyy Palloliiton pelipassi ja vakuutus.",
    "activity_id": "hel-2026-0506",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 53.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 38,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "38€/kk, yksi ryhmä (Suurmetsä)"
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lasten jäsenmaksu 15 €/vuosi, laskutetaan erikseen kerran kalenterivuodessa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Molempiin ryhmiin (Puistola + Suurmetsä) ilmoittautuminen 50€/kk yhteensä.",
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_23.json",
      "staging_id": "batch_2026-09-23_23-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_23/puiu_jalkapallokoulu_c6c54dee693b.html",
      "capture_sha256": "c6c54dee693b1c06ed2453ab8c7cb890f0d39e88404daecc00f1077bf6e739dd",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 39.25,
    "monthly_cost_basis": "38.0 €/kk + membership 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Suurmetsä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Puistolan Urheilijat ry",
    "group_name": "Perhefutis 2-3v, Puistolan tekonurma (ti 18.00-18.45)",
    "min_age": 2,
    "max_age": 3,
    "eligibility_text": "2-3-vuotiaille",
    "parent_child": "yes",
    "venue_name": "Puistolan tekonurma",
    "address": null,
    "district": "Puistola",
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 38.0,
    "price_basis": "38€/kk",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://puistolanurheilijat.fi/jalkapallo/perhefutis-2-3-vuotiaille/",
    "source_quote": "Harjoitukset: Tiistaisin klo 18-18:45 Puistolan tekonurmella. Yhden harjoituskerran kesto on 45 minuuttia. ... Hinta: 38€/kk + SEURAN JÄSENMAKSU 15 €. ... Perhefutis sopii mainiosti perheen pienimmille ... vanhemman/tutun aikuisen kanssa.",
    "activity_id": "hel-2026-0507",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 53.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 38,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "38€/kk"
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lasten jäsenmaksu 15 €/vuosi, laskutetaan erikseen kerran kalenterivuodessa."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_23.json",
      "staging_id": "batch_2026-09-23_23-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_23/puiu_perhefutis_99ac5912d8d3.html",
      "capture_sha256": "99ac5912d8d3a974060679772281e1adf162547c11d94c3124d13e56486f4568",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 39.25,
    "monthly_cost_basis": "38.0 €/kk + membership 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Puistola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Puistolan Urheilijat ry",
    "group_name": "Lasten tanssi 4-6v, Nurkkatie (ma 17.10-17.55)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v",
    "parent_child": "no",
    "venue_name": "Puistolanraitin ala-aste, Nurkkatien toimipiste",
    "address": "Nurkkatie 2, Helsinki",
    "district": "Puistola",
    "weekday": "maanantai",
    "start_time": "17:10",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 105.0,
    "price_basis": "Lasten tanssi ja jumppa (kausimaksu, kaikki ei-perhetemppis-lastentunnit samalla hinnalla)",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://puistolanurheilijat.fi/kuntoliikunta/lapset/",
    "source_quote": "Lasten tunnit Syyskausi 31.8.-13.12.2026 MAANANTAI ... klo 17:10-17:55 Lasten tanssi 4-6v, Nurkkatie ... Nurkkatie: Puistolanraitin ala-aste, Nurkkatien toimipiste os. Nurkkatie 2 Lasten tuntien kausimaksu ... Lasten tanssi ja jumppa: 105€ ... Lasten jäsenmaksu 15€ /vuosi.",
    "activity_id": "hel-2026-0508",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 120.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Lasten tanssi ja jumppa -kausimaksu 105 € (yhteinen hinta usealle lastenryhmälle, ei ryhmäkohtaista erittelyä)"
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lasten jäsenmaksu 15 €/vuosi, laskutetaan erikseen kerran kalenterivuodessa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta (105 €) on sivun yhteinen kausimaksu kaikille ei-Perhetemppis-lastenryhmille (\"Lasten tanssi ja jumppa: 105€\"), ei ryhmäkohtaisesti eritelty.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_23.json",
      "staging_id": "batch_2026-09-23_23-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_23/puiu_lapset_6b78d0a06d42.html",
      "capture_sha256": "6b78d0a06d4238c065baf354d8f55de27e9b7e33f18781f4c9d8cc5ea36131b5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 31.69,
    "monthly_cost_basis": "105.0 € / term jaettuna 3.45 kuukaudelle (2026-08-31–2026-12-13, season_start_date) + membership 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Puistola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Puistolan Urheilijat ry",
    "group_name": "Perhetemppis 3-5v, Nurkkatie (ma+to 18.00-18.45)",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5v",
    "parent_child": "yes",
    "venue_name": "Puistolanraitin ala-aste, Nurkkatien toimipiste",
    "address": "Nurkkatie 2, Helsinki",
    "district": "Puistola",
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 112.0,
    "price_basis": "Perhetemppis-kausimaksu",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://puistolanurheilijat.fi/kuntoliikunta/lapset/",
    "source_quote": "MAANANTAI klo 18:00-18:45 Perhetemppis 3-5v, Nurkkatie UUSI! ... TORSTAI klo 18:00-18:45 Perhetemppis 3-5v, Nurkkatie ... Perhetemppis: 112€ ... Lasten jäsenmaksu 15€ /vuosi.",
    "activity_id": "hel-2026-0509",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 127.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Perhetemppis-kausimaksu 112 €"
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lasten jäsenmaksu 15 €/vuosi, laskutetaan erikseen kerran kalenterivuodessa."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ryhmä kokoontuu kahdesti viikossa (ma ja to klo 18:00-18:45, molemmat Nurkkatie); yksi rivi, weekday=null kahden päivän vuoksi (linjaus 22.9.2026 #3).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_23.json",
      "staging_id": "batch_2026-09-23_23-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_23/puiu_lapset_6b78d0a06d42.html",
      "capture_sha256": "6b78d0a06d4238c065baf354d8f55de27e9b7e33f18781f4c9d8cc5ea36131b5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 33.72,
    "monthly_cost_basis": "112.0 € / term jaettuna 3.45 kuukaudelle (2026-08-31–2026-12-13, season_start_date) + membership 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Puistola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Puistolan Urheilijat ry",
    "group_name": "MiniStreet 5-6v, Tuulen tupa (ke 17.00-17.45)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6 v.",
    "parent_child": "no",
    "venue_name": "Tuulen tupa",
    "address": "Ylermintie 2, Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 105.0,
    "price_basis": "Lasten tanssi ja jumppa (kausimaksu, kaikki ei-perhetemppis-lastentunnit samalla hinnalla)",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://puistolanurheilijat.fi/kuntoliikunta/lapset/",
    "source_quote": "KESKIVIIKKO ... klo 17:00-17:45 MiniStreet 5-6v., Tuulen tupa ... Lasten tanssi ja jumppa: 105€ ... Lasten jäsenmaksu 15€ /vuosi. Tuulen tupa, Ylermintie 2.",
    "activity_id": "hel-2026-0510",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 120.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Lasten tanssi ja jumppa -kausimaksu 105 € (yhteinen hinta usealle lastenryhmälle, ei ryhmäkohtaista erittelyä)"
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lasten jäsenmaksu 15 €/vuosi, laskutetaan erikseen kerran kalenterivuodessa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta (105 €) on sivun yhteinen kausimaksu kaikille ei-Perhetemppis-lastenryhmille. Tuulen tupa -toimipisteen kaupunginosaa ei vahvistettu (Ylermintie, lähellä Puistolaa/Tapanilaa, mutta ei varmistettu tässä erässä).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_23.json",
      "staging_id": "batch_2026-09-23_23-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_23/puiu_lapset_6b78d0a06d42.html",
      "capture_sha256": "6b78d0a06d4238c065baf354d8f55de27e9b7e33f18781f4c9d8cc5ea36131b5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 31.69,
    "monthly_cost_basis": "105.0 € / term jaettuna 3.45 kuukaudelle (2026-08-31–2026-12-13, season_start_date) + membership 15 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Puistola",
    "district_basis": "geokoodattu osoite -> sub_district 'Puistola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 5–6-vuotiaat, Tanssikoulu DCA, Saarinen",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Saarinen",
    "address": "Keskuskatu 6G, 00100 Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Helsinki-.pdf",
    "source_quote": "17:15-18:15 DCA Show Elite Dancers Kotajärvi                                        17:00-18:15 Locking avoin taso kaikenikäiset Sami P.       17:00-17:45 Lastentanssi 5-6v. KA                     17:30-18:15 K-pop alkeet 7-9v. VN",
    "activity_id": "hel-2026-0511",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 244.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 212.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_helsinki.pdf",
      "capture_sha256": "00492865dd574640cc1d4d1d06c64269d6e1c33d9356a143d785e85ab80b9ee4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kluuvi",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kluuvi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Dance 6–8-vuotiaat, Tanssikoulu DCA, Saarinen",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Saarinen",
    "address": "Keskuskatu 6G, 00100 Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Helsinki-.pdf",
    "source_quote": "18:15-19:15 Commercial jatkotaso/edistyneet 16v.+ Kotajärvi                         18:15-19:15 DCA Show Dancers Company SD                    17:45-18:30 Dance 6-8v. KA                            18:15-19:15 K-pop perustaso 13v.+ VN",
    "activity_id": "hel-2026-0512",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 244.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 212.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikähaarukka osuu rajaukseen vain alarajalla).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_helsinki.pdf",
      "capture_sha256": "00492865dd574640cc1d4d1d06c64269d6e1c33d9356a143d785e85ab80b9ee4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kluuvi",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kluuvi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Hip Hop 4–6-vuotiaat, Tanssikoulu DCA, Saarinen",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Saarinen",
    "address": "Keskuskatu 6G, 00100 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Helsinki-.pdf",
    "source_quote": "18:00-19:00 DCA Show Kids Company Riina                                         18:00-19:00 Hip hop keskitaso aikuiset 20v.+ KIIR            18:00-18:45 Hip Hop 4-6v. HEI                           18:15-19:15 K-pop Intensiivi 10-13v. IN",
    "activity_id": "hel-2026-0513",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 244.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 212.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_helsinki.pdf",
      "capture_sha256": "00492865dd574640cc1d4d1d06c64269d6e1c33d9356a143d785e85ab80b9ee4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kluuvi",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kluuvi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Esibaletti 6–8-vuotiaat, Tanssikoulu DCA, Saarinen",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Saarinen",
    "address": "Keskuskatu 6G, 00100 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "closed",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Helsinki-.pdf",
    "source_quote": "10:00-10:45 Esibaletti 6-8v. MINNI lopetettu 13.9.!                             10:15-11:00                                                  09:45-10:30 Lastentanssi (Lapsi -aikuinen) 1,5-3v. KA",
    "activity_id": "hel-2026-0514",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "closed",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 244.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 212.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikähaarukka osuu rajaukseen vain alarajalla). Kurssi päättynyt/keskeytynyt 13.9.2026 (lähde: 'lopetettu 13.9.!'); tieto säilytetty hintahistoriaa varten.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_helsinki.pdf",
      "capture_sha256": "00492865dd574640cc1d4d1d06c64269d6e1c33d9356a143d785e85ab80b9ee4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kluuvi",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kluuvi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Dance 6–7-vuotiaat, Tanssikoulu DCA, Saarinen",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6-7v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Saarinen",
    "address": "Keskuskatu 6G, 00100 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:45",
    "end_time": "11:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Helsinki-.pdf",
    "source_quote": "10:45-11:30 Dance 6-7v. MINNI                                                   11:00-11:45                                                  10:30-11:00 Lastentanssi 3-4v. KA",
    "activity_id": "hel-2026-0515",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 244.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 212.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikähaarukka osuu rajaukseen vain alarajalla).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_helsinki.pdf",
      "capture_sha256": "00492865dd574640cc1d4d1d06c64269d6e1c33d9356a143d785e85ab80b9ee4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kluuvi",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kluuvi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 3–4-vuotiaat, Tanssikoulu DCA, Saarinen",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Saarinen",
    "address": "Keskuskatu 6G, 00100 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:30",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 205.0,
    "price_basis": "Kausimaksu, 30 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Helsinki-.pdf",
    "source_quote": "10:45-11:30 Dance 6-7v. MINNI                                                   11:00-11:45                                                  10:30-11:00 Lastentanssi 3-4v. KA",
    "activity_id": "hel-2026-0516",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 205.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 205,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 181.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 157.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_helsinki.pdf",
      "capture_sha256": "00492865dd574640cc1d4d1d06c64269d6e1c33d9356a143d785e85ab80b9ee4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 52.43,
    "monthly_cost_basis": "205.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kluuvi",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kluuvi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 4–5-vuotiaat, Tanssikoulu DCA, Saarinen",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Saarinen",
    "address": "Keskuskatu 6G, 00100 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "11:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Helsinki-.pdf",
    "source_quote": "11:30-12:30 Baletti alkeisjatko 8-10v. MINNI                                    11:45-12:30                                                  11:00-11:45 Lastentanssi 4-5v. KA",
    "activity_id": "hel-2026-0517",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 244.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 212.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_helsinki.pdf",
      "capture_sha256": "00492865dd574640cc1d4d1d06c64269d6e1c33d9356a143d785e85ab80b9ee4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kluuvi",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kluuvi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 5–6-vuotiaat, Tanssikoulu DCA, Saarinen",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Saarinen",
    "address": "Keskuskatu 6G, 00100 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:45",
    "end_time": "12:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Helsinki-.pdf",
    "source_quote": "12:30-13:30 Jumps & turns perustaso 9-11v. MINNI                                12:30-13:30 DCA Show Juniors Intensiivi KA                   11:45-12:30 Lastentanssi 5-6v. KA",
    "activity_id": "hel-2026-0518",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 244.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 212.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_helsinki.pdf",
      "capture_sha256": "00492865dd574640cc1d4d1d06c64269d6e1c33d9356a143d785e85ab80b9ee4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kluuvi",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kluuvi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 3–4-vuotiaat, Tehtaankadun koulu",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v.",
    "parent_child": "no",
    "venue_name": "Tehtaankadun koulu",
    "address": "Tehtaankatu 15, 00140 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "16:30",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 184.0,
    "price_basis": "Kausimaksu, 30 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Helsinki-.pdf",
    "source_quote": "16:00-17:00 Hip Hop perustaso/keskitaso 10v.+ ET                                16:15-17:15 Break keskitaso 10v.+ KK                         16:15-17:15 Baletti 17v.+ / Aikuiset avoin taso Pilvi   18:30-19:30 K-pop perustaso 12-16v. IN / TÄYNNÄ            16:30-17:00 Lastentanssi 3-4 v. KA",
    "activity_id": "hel-2026-0519",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 184.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 184,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 163.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 141.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_helsinki.pdf",
      "capture_sha256": "00492865dd574640cc1d4d1d06c64269d6e1c33d9356a143d785e85ab80b9ee4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 47.06,
    "monthly_cost_basis": "184.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Ullanlinna",
    "district_basis": "geokoodattu osoite -> neighborhood 'Ullanlinna' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 4–6-vuotiaat, Tehtaankadun koulu",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v.",
    "parent_child": "no",
    "venue_name": "Tehtaankadun koulu",
    "address": "Tehtaankatu 15, 00140 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 249.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Helsinki-.pdf",
    "source_quote": "17:00-18:00 Commercial keskitaso 13v.+ ET                                       17:15-18:15 DCA Street Kopla KK                              17:15-18:00 Baletti alkeisjatko 8-10v. Pilvi            19:30-20:30 K-pop keskitaso/jatkotaso 15v.+ IN             17:00-17:45 Lastentanssi 4-6v. KA",
    "activity_id": "hel-2026-0520",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 249.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 249,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 220.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 191.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_helsinki.pdf",
      "capture_sha256": "00492865dd574640cc1d4d1d06c64269d6e1c33d9356a143d785e85ab80b9ee4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 63.69,
    "monthly_cost_basis": "249.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Ullanlinna",
    "district_basis": "geokoodattu osoite -> neighborhood 'Ullanlinna' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Dance 6–7-vuotiaat, Tehtaankadun koulu",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6-7v.",
    "parent_child": "no",
    "venue_name": "Tehtaankadun koulu",
    "address": "Tehtaankatu 15, 00140 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 249.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Helsinki-.pdf",
    "source_quote": "18:00-19:00 DCA Street Unity ET                                                 18:15-19:00 Break 7-9v. KK                                   18:00-19:00 Dance 8-10v. MIA                                                                                       17:45-18.30 Dance 6-7v. KA",
    "activity_id": "hel-2026-0521",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 249.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 249,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 220.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 191.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikähaarukka osuu rajaukseen vain alarajalla).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_helsinki.pdf",
      "capture_sha256": "00492865dd574640cc1d4d1d06c64269d6e1c33d9356a143d785e85ab80b9ee4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 63.69,
    "monthly_cost_basis": "249.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Ullanlinna",
    "district_basis": "geokoodattu osoite -> neighborhood 'Ullanlinna' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 4–5-vuotiaat, Asukastalo Ankkuri",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5v.",
    "parent_child": "no",
    "venue_name": "Asukastalo Ankkuri",
    "address": "Paasivaarankatu 6, 00810 Helsinki",
    "district": "Herttoniemi",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 249.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Herttoniemi-.pdf",
    "source_quote": "17:00-17:45 Lastentanssi 4-5v. LF                       17:30-18:30 Break 8-10v. KK",
    "activity_id": "hel-2026-0522",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 249.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 249,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 220.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 191.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_herttoniemi.pdf",
      "capture_sha256": "a7b65bc287e64d84b7989cb00742d5d95e0136631304fa9413aaa8da17a81462",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 63.69,
    "monthly_cost_basis": "249.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Dance 6–7-vuotiaat, Asukastalo Ankkuri",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6-7v.",
    "parent_child": "no",
    "venue_name": "Asukastalo Ankkuri",
    "address": "Paasivaarankatu 6, 00810 Helsinki",
    "district": "Herttoniemi",
    "weekday": "tiistai",
    "start_time": "18:30",
    "end_time": "19:15",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 249.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Herttoniemi-.pdf",
    "source_quote": "18:30-19:15 Dance 6-7v. LF",
    "activity_id": "hel-2026-0523",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 249.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 249,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 220.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 191.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikähaarukka osuu rajaukseen vain alarajalla).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_herttoniemi.pdf",
      "capture_sha256": "a7b65bc287e64d84b7989cb00742d5d95e0136631304fa9413aaa8da17a81462",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 63.69,
    "monthly_cost_basis": "249.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Nykytanssi 6–8-vuotiaat, Porolahden peruskoulun juhlasali",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8v.",
    "parent_child": "no",
    "venue_name": "Porolahden peruskoulun juhlasali",
    "address": "Satumaanpolku 2, 00820 Helsinki",
    "district": "Roihuvuori",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 307.0,
    "price_basis": "Kausimaksu, 60 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Herttoniemi-.pdf",
    "source_quote": "16:30-17:30 K-pop perustaso 10-12v. PV                  17:00-18:00 Nykytanssi 6-8v. EH                          16:45-17:45 Disco & Dance perustaso10-12v. VEP",
    "activity_id": "hel-2026-0524",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 307.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 307,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 271.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 235.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikähaarukka osuu rajaukseen vain alarajalla).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_herttoniemi.pdf",
      "capture_sha256": "a7b65bc287e64d84b7989cb00742d5d95e0136631304fa9413aaa8da17a81462",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 78.52,
    "monthly_cost_basis": "307.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Roihuvuori",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Disco & Dance 6–8-vuotiaat, Porolahden koulun alasali",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8v.",
    "parent_child": "no",
    "venue_name": "Porolahden koulun alasali",
    "address": "Roihuvuorentie 2, 00820 Helsinki",
    "district": "Roihuvuori",
    "weekday": "maanantai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 249.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Herttoniemi-.pdf",
    "source_quote": "17:30-18:15 K-pop alkeet 8-10v. PV / TÄYNNÄ!            18:00-19:00 Contemporary pt/kt 10-13v. EH                17:45-18:30 Disco & Dance 6-8v. VEP",
    "activity_id": "hel-2026-0525",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 249.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 249,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 220.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 191.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikähaarukka osuu rajaukseen vain alarajalla).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-015",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_herttoniemi.pdf",
      "capture_sha256": "a7b65bc287e64d84b7989cb00742d5d95e0136631304fa9413aaa8da17a81462",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 63.69,
    "monthly_cost_basis": "249.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Roihuvuori",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Break 6–7-vuotiaat, Porolahden koulun alasali",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6-7v.",
    "parent_child": "no",
    "venue_name": "Porolahden koulun alasali",
    "address": "Roihuvuorentie 2, 00820 Helsinki",
    "district": "Roihuvuori",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 249.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.–13.12.2026 (Tanssikoulu DCA hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Herttoniemi-.pdf",
    "source_quote": "17:00-17:45 Break 6-7v. KK",
    "activity_id": "hel-2026-0526",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 249.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 249,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.–13.12.2026 alkava jakso)",
        "amount_eur": 220.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.–13.12.2026 alkava jakso)",
        "amount_eur": 191.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikähaarukka osuu rajaukseen vain alarajalla).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-016",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/dca_herttoniemi.pdf",
      "capture_sha256": "a7b65bc287e64d84b7989cb00742d5d95e0136631304fa9413aaa8da17a81462",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 63.69,
    "monthly_cost_basis": "249.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Roihuvuori",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin Tanssikeskus (Elina Robinson)",
    "group_name": "Flamenco, lasten alkeet 6–8-vuotiaat, Helsingin Tanssikeskus",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8v.",
    "parent_child": "no",
    "venue_name": "Helsingin Tanssikeskus",
    "address": null,
    "district": "Vallila",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-27",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 270.0,
    "price_basis": "15 viikon jakso 24.8.–10.12.2026, ei tuntia syyslomaviikolla 42 (13.–17.10.) → n. 14 toteutuvaa kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Mukavat liikkumiseen sopivat vaatteet; flamencohameita voi lainata opettajalta. Jalkaan tukevapohjaiset kengät, joissa on vähän kantaa.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.elinarobinson.com/tunnit",
    "source_quote": "Torstaisin Lasten alkeet (6-8v.) klo 17-17.45 Tunnilla tutustutaan flamencon kiehtoviin rytmeihin ja vartalon liikkeisii",
    "activity_id": "hel-2026-0527",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 270.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.elinarobinson.com/tunnit",
    "billing_period": "term",
    "price_period_start": "2026-08-24",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-24",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": "https://www.elinarobinson.com/tunnit",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 270,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikähaarukka 6–8 v osuu rajaukseen vain alarajalla). Ilmoittautuminen sitova koko 15 viikon jaksolle; peruutus vain lääkärintodistuksella. Poissaoloja voi korvata Centro de baile Helsingin (Sturenkatu 27) tunneilla.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-017",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/elinarobinson_tunnit.html",
      "capture_sha256": "6c55222d546c6fd33e79aea809caba577f7195863fb503137cbc6129f875fbbe",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 75.4,
    "monthly_cost_basis": "270.0 € / term jaettuna 3.58 kuukaudelle (2026-08-24–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vallila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssila",
    "group_name": "Aikuinen-lapsitanssi (2–4v), Tanssila (Haaga tai Pakila)",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2–4v",
    "parent_child": "yes",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 248.0,
    "price_basis": "Lukukausimaksu, 45 min/viikko, 16 kertaa (Tanssila hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Aina veloitukseton kokeilukerta (kysy toimistolta).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssila.fi/fi/viikkotunnit/lastentanssi/",
    "source_quote": "Aikuinen- lapsitanssi (2–4v) Tunnilla lapset pääsevät tanssimaan turvallisesti oman tutun aikuisen kanssa. Aikuinen-lapsitanssi sopii erityisen hyvin ujommille lapsille tai lapsille, jotka vasta aloittavat tanssiharrastustaan. Tanssitunnilla mennään Iiris Salmenmaan suunnitteleman pedagogisen tanssi",
    "activity_id": "hel-2026-0528",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 248.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.tanssila.fi/fi/meista/hinnat/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 248,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": "10% alennus kaikista tunneista, jos osallistuu useammalle tunnille tai perheestä useampi tanssii (Tanssila hinnasto/info).",
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "venue_name",
      "address",
      "district",
      "end_date",
      "season_end_date",
      "price_period_end"
    ],
    "verification_notes": "Ikä, kesto ja lukukausihinta varmistettu Tanssilan omilta sivuilta (lastentanssi + hinnasto). Tarkka viikonpäivä/kellonaika ja toimipiste (Haaga vai Pakila) eivät selvinneet staattisesta hausta (lukujärjestys tanssila.fi/fi/syksy-2026/ on JS-pohjainen kauppa) - tarkistettava seuraavassa erässä. erä 29, renderöity lukujärjestys 23.9.2026: Tanssilan julkinen lukujärjestys-Google Sheet (https://docs.google.com/spreadsheets/d/e/2PACX-1vToT7i3l1fk_GKmQ_iCjC04Ht9--U7haIVdd86vK3JsHZb9DSpSHaxd-26qboam0i-U9TqsQYA5CxNl/pub?output=csv, tallenne data/staging/evidence_local/batch_2026-09-23_29/tanssila_lukujarjestys_csv_acd6dc578bb8.csv) löydetty tanssila.fi/fi/syksy-2026/-sivun upotetusta iframesta (sivu itse on JS-pohjainen kauppa, lukujärjestys on erillinen julkaistu taulukko). Useita rinnakkaisia vuoroja pk-seudulla samalla nimellä, ei valita yhtä: Haaga (Jadesali) ma 17.15-18.00; Pakila (Kvartsisali) ti 17.15-18.00. (Lisäksi Tuusulassa ke 18.00-18.45, ei kuulu Helsinki-rajaukseen.) Koska ryhmä järjestetään useassa Helsingin toimipisteessä/ajassa samalla nimellä, viikonpäivää/kellonaikaa/toimipistettä ei valita yhdeksi (CLAUDE.md, tarkistusjonon linjaus 3) - kentät jäävät null, koko aikataulu tallennettu tähän.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-018",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/tanssila_lastentanssi.html",
      "capture_sha256": "8f99d0541e4e4aedfae176f38cf7269644a25bbd8311bd454c7ed9457af97090",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssila",
    "group_name": "Satutanssi 3–4v, Tanssila (Haaga tai Pakila)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3–4v",
    "parent_child": "no",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 248.0,
    "price_basis": "Lukukausimaksu, 45 min/viikko, 16 kertaa (Tanssila hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Aina veloitukseton kokeilukerta (kysy toimistolta).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssila.fi/fi/viikkotunnit/lastentanssi/",
    "source_quote": "Satutanssi 3–4v Satutanssi on suunnattu 3–4-vuotiaille tanssijoille. Satutanssi-tasolla ollaan yleisesti 1–2 vuotta. Tanssitunnilla mennään Iiris Salmenmaan suunnitteleman pedagogisen tanssituntisuunnitelman mukaisesti eteenpäin ja vuoden aikana tuntien teemoissa tulevat esille niin erilaiset kulkun",
    "activity_id": "hel-2026-0529",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 248.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.tanssila.fi/fi/meista/hinnat/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 248,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "10% alennus kaikista tunneista, jos osallistuu useammalle tunnille tai perheestä useampi tanssii (Tanssila hinnasto/info).",
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "venue_name",
      "address",
      "district",
      "end_date",
      "season_end_date",
      "price_period_end"
    ],
    "verification_notes": "Ikä, kesto ja lukukausihinta varmistettu Tanssilan omilta sivuilta (lastentanssi + hinnasto). Tarkka viikonpäivä/kellonaika ja toimipiste (Haaga vai Pakila) eivät selvinneet staattisesta hausta (lukujärjestys tanssila.fi/fi/syksy-2026/ on JS-pohjainen kauppa) - tarkistettava seuraavassa erässä. erä 29, renderöity lukujärjestys 23.9.2026: Tanssilan julkinen lukujärjestys-Google Sheet (https://docs.google.com/spreadsheets/d/e/2PACX-1vToT7i3l1fk_GKmQ_iCjC04Ht9--U7haIVdd86vK3JsHZb9DSpSHaxd-26qboam0i-U9TqsQYA5CxNl/pub?output=csv, tallenne data/staging/evidence_local/batch_2026-09-23_29/tanssila_lukujarjestys_csv_acd6dc578bb8.csv) löydetty tanssila.fi/fi/syksy-2026/-sivun upotetusta iframesta (sivu itse on JS-pohjainen kauppa, lukujärjestys on erillinen julkaistu taulukko). Useita rinnakkaisia vuoroja pk-seudulla samalla nimellä, ei valita yhtä: Haaga (Jadesali) la 10.00-10.45; Haaga (Jadesali) ti 17.30-18.15 (1 paikka); Haaga (Jadesali) ke 17.30-18.15 (3 paikkaa); Haaga (Jadesali) to 17.15-18.00 (4 paikkaa); Pakila (Kidesali) ma 17.00-17.45 (1 paikka). Koska ryhmä järjestetään useassa Helsingin toimipisteessä/ajassa samalla nimellä, viikonpäivää/kellonaikaa/toimipistettä ei valita yhdeksi (CLAUDE.md, tarkistusjonon linjaus 3) - kentät jäävät null, koko aikataulu tallennettu tähän.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-019",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/tanssila_lastentanssi.html",
      "capture_sha256": "8f99d0541e4e4aedfae176f38cf7269644a25bbd8311bd454c7ed9457af97090",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssila",
    "group_name": "Tanssiakrobatia 4–6v, Tanssila (Haaga tai Pakila)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4–6v",
    "parent_child": "no",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 248.0,
    "price_basis": "Lukukausimaksu, 45 min/viikko, 16 kertaa (Tanssila hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Aina veloitukseton kokeilukerta (kysy toimistolta).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssila.fi/fi/viikkotunnit/lastentanssi/",
    "source_quote": "Tanssiakrobatia 4–6v Tanssiakrobatiatunnilla tehdään paljon välinetaitoja, temppuja ja temppuratataitoja tanssiteemojen lisäksi! Tämä tunti sopii erityisesti lapsille, jotka haluavat nopeasti hien pintaan ja nauttivat, kun pääsevät tekemään paljon erilaisia akrobatiaa vaativia osuuksia. Tunti onkin ",
    "activity_id": "hel-2026-0530",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 248.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.tanssila.fi/fi/meista/hinnat/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 248,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "10% alennus kaikista tunneista, jos osallistuu useammalle tunnille tai perheestä useampi tanssii (Tanssila hinnasto/info).",
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "venue_name",
      "address",
      "district",
      "end_date",
      "season_end_date",
      "price_period_end"
    ],
    "verification_notes": "Ikä, kesto ja lukukausihinta varmistettu Tanssilan omilta sivuilta (lastentanssi + hinnasto). Tarkka viikonpäivä/kellonaika ja toimipiste (Haaga vai Pakila) eivät selvinneet staattisesta hausta (lukujärjestys tanssila.fi/fi/syksy-2026/ on JS-pohjainen kauppa) - tarkistettava seuraavassa erässä. erä 29, renderöity lukujärjestys 23.9.2026: Tanssilan julkinen lukujärjestys-Google Sheet (https://docs.google.com/spreadsheets/d/e/2PACX-1vToT7i3l1fk_GKmQ_iCjC04Ht9--U7haIVdd86vK3JsHZb9DSpSHaxd-26qboam0i-U9TqsQYA5CxNl/pub?output=csv, tallenne data/staging/evidence_local/batch_2026-09-23_29/tanssila_lukujarjestys_csv_acd6dc578bb8.csv) löydetty tanssila.fi/fi/syksy-2026/-sivun upotetusta iframesta (sivu itse on JS-pohjainen kauppa, lukujärjestys on erillinen julkaistu taulukko). Useita rinnakkaisia vuoroja pk-seudulla samalla nimellä, ei valita yhtä: Haaga (Jadesali) ma 18.00-18.45 (täynnä); Pakila (Kvartsisali) ke 17.15-18.00. Koska ryhmä järjestetään useassa Helsingin toimipisteessä/ajassa samalla nimellä, viikonpäivää/kellonaikaa/toimipistettä ei valita yhdeksi (CLAUDE.md, tarkistusjonon linjaus 3) - kentät jäävät null, koko aikataulu tallennettu tähän.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-020",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/tanssila_lastentanssi.html",
      "capture_sha256": "8f99d0541e4e4aedfae176f38cf7269644a25bbd8311bd454c7ed9457af97090",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssila",
    "group_name": "Taikatanssi 5–6v, Tanssila (Haaga tai Pakila)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5–6v",
    "parent_child": "no",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 275.0,
    "price_basis": "Lukukausimaksu, 60 min/viikko, 16 kertaa (Tanssila hinnasto)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Aina veloitukseton kokeilukerta (kysy toimistolta).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssila.fi/fi/viikkotunnit/lastentanssi/",
    "source_quote": "Taikatanssi 5–6v Taikatanssi on suunnattu 5–6-vuotiaille tanssijoille. Taikatanssissa ollaan yleisesti 1–2 vuotta. Tanssitunnilla mennään Iiris Salmenmaan suunnitteleman pedagogisen tanssituntisuunnitelman mukaisesti eteenpäin ja vuoden aikana tuntien teemoissa tulevat esille niin erilaiset kulkuneu",
    "activity_id": "hel-2026-0531",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.tanssila.fi/fi/meista/hinnat/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 275,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "10% alennus kaikista tunneista, jos osallistuu useammalle tunnille tai perheestä useampi tanssii (Tanssila hinnasto/info).",
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "venue_name",
      "address",
      "district",
      "end_date",
      "season_end_date",
      "price_period_end"
    ],
    "verification_notes": "Ikä, kesto ja lukukausihinta varmistettu Tanssilan omilta sivuilta (lastentanssi + hinnasto). Tarkka viikonpäivä/kellonaika ja toimipiste (Haaga vai Pakila) eivät selvinneet staattisesta hausta (lukujärjestys tanssila.fi/fi/syksy-2026/ on JS-pohjainen kauppa) - tarkistettava seuraavassa erässä. erä 29, renderöity lukujärjestys 23.9.2026: Tanssilan julkinen lukujärjestys-Google Sheet (https://docs.google.com/spreadsheets/d/e/2PACX-1vToT7i3l1fk_GKmQ_iCjC04Ht9--U7haIVdd86vK3JsHZb9DSpSHaxd-26qboam0i-U9TqsQYA5CxNl/pub?output=csv, tallenne data/staging/evidence_local/batch_2026-09-23_29/tanssila_lukujarjestys_csv_acd6dc578bb8.csv) löydetty tanssila.fi/fi/syksy-2026/-sivun upotetusta iframesta (sivu itse on JS-pohjainen kauppa, lukujärjestys on erillinen julkaistu taulukko). Useita rinnakkaisia vuoroja pk-seudulla samalla nimellä, ei valita yhtä: Haaga (Helmisali) ma 17.15-18.15 (täynnä); Haaga (Jadesali) ti 18.15-19.15 (täynnä); Haaga (Jadesali) ke 18.15-19.15 (täynnä); Haaga (Jadesali) to 18.00-19.00; Haaga (Jadesali) la 10.45-11.45 (täynnä); Pakila (Kvartsisali) ti 18.00-19.00; Pakila (Kvartsisali) ke 18.15-19.15; Pakila (Kidesali) ma 17.45-18.45 (täynnä). Koska ryhmä järjestetään useassa Helsingin toimipisteessä/ajassa samalla nimellä, viikonpäivää/kellonaikaa/toimipistettä ei valita yhdeksi (CLAUDE.md, tarkistusjonon linjaus 3) - kentät jäävät null, koko aikataulu tallennettu tähän.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_27.json",
      "staging_id": "batch_2026-09-23_27-021",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_27/tanssila_lastentanssi.html",
      "capture_sha256": "8f99d0541e4e4aedfae176f38cf7269644a25bbd8311bd454c7ed9457af97090",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tanssi",
    "provider": "StepUp School",
    "group_name": "Show 3–4 v., StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v.",
    "parent_child": "no",
    "venue_name": "StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "address": "Kaikukatu 4 A, Helsinki",
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 290.0,
    "price_basis": "Kausimaksu, 40 min/viikko, StepUp Schoolin Tanssikoulu Helsinki (Sörnäinen), kausi alkaen viikolla 34 (tuntikohtainen, hinta laskee viikoittain kauden alusta) - täysi kauden alun hinta (StepUp hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kertalippu, 40 min: 21 € (myydään verkkokaupassa/vastaanotossa).",
    "enrollment_status": "open",
    "source_url": "https://oma.stepupschool.fi/",
    "source_quote": "maanantai / Tanssikoulu Helsinki (Sörnäinen) / Syksy 2026 ... 17:15 - 17:55\tShow 3–4 v.\tAnu Raita\tTilaa\t40 min",
    "activity_id": "hel-2026-0532",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 290.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.stepupschool.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 290,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus -5% avoimien viikkotuntien normaalihintaisista maksuista, jos perheestä käy vähintään kaksi (StepUp hinnasto).",
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time"
    ],
    "verification_notes": "Renderöity headless-selaimella (Puppeteer) 23.9.2026, koska aikataulu on oma.stepupschool.fi-verkkokaupan JS-suodatinwidgetissä eikä staattisessa HTML:ssä. Tallenne: data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_89a41f11b33d.txt Aikataulu haettu oma.stepupschool.fi:n aikataulunäkymästä (suodatus toimipisteen mukaan), esim. rivi: 'maanantai 17:15-17:55 Show 3–4 v. Anu Raita \"Tilaa\" 40 min'. Sama ryhmä myös lauantaisin 10.00-10.40 (opettaja Aurora Ylinen) - useita rinnakkaisia vuoroja, ei valittu yhtä (CLAUDE.md tarkistusjonolinjaus 3). Kausimaksun myynti tälle syyskaudelle (kausikohtaisena tuotteena) päättyi verkkokaupan hinnaston mukaan 20.9.2026, mutta kerta-/sarjaliput ovat edelleen ostettavissa; hintana kirjattu hinnaston kausimaksun täysi (kauden alun) hinta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_29.json",
      "staging_id": "batch_2026-09-23_29-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_e8cb436e9e95.html",
      "capture_sha256": "e8cb436e9e958159ceae86455db03f6438e05c34657d952e5a2c12f6f5478362",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 71.18,
    "monthly_cost_basis": "290.0 € / term jaettuna 4.07 kuukaudelle (2026-08-17–2026-12-18, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Sörnäinen",
    "district_basis": "geokoodattu osoite -> neighborhood 'Sörnäinen' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "StepUp School",
    "group_name": "Show 5–6 v., StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6 v.",
    "parent_child": "no",
    "venue_name": "StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "address": "Kaikukatu 4 A, Helsinki",
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 290.0,
    "price_basis": "Kausimaksu, 40 min/viikko, StepUp Schoolin Tanssikoulu Helsinki (Sörnäinen), kausi alkaen viikolla 34 (tuntikohtainen, hinta laskee viikoittain kauden alusta) - täysi kauden alun hinta (StepUp hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kertalippu, 40 min: 21 € (myydään verkkokaupassa/vastaanotossa).",
    "enrollment_status": "open",
    "source_url": "https://oma.stepupschool.fi/",
    "source_quote": "maanantai / Tanssikoulu Helsinki (Sörnäinen) / Syksy 2026 ... 18:00 - 18:40\tShow 5–6 v.\tAnu Raita\tTilaa\t40 min",
    "activity_id": "hel-2026-0533",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 290.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.stepupschool.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 290,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus -5% avoimien viikkotuntien normaalihintaisista maksuista, jos perheestä käy vähintään kaksi (StepUp hinnasto).",
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time"
    ],
    "verification_notes": "Renderöity headless-selaimella (Puppeteer) 23.9.2026, koska aikataulu on oma.stepupschool.fi-verkkokaupan JS-suodatinwidgetissä eikä staattisessa HTML:ssä. Tallenne: data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_89a41f11b33d.txt Aikataulu haettu oma.stepupschool.fi:n aikataulunäkymästä (suodatus toimipisteen mukaan), esim. rivi: 'maanantai 18:00-18:40 Show 5–6 v. Anu Raita \"Tilaa\" 40 min'. Sama ryhmä myös keskiviikkoisin 18.00-18.40 (Krista Kaskikari) ja lauantaisin 10.45-11.25 (Aurora Ylinen) - useita rinnakkaisia vuoroja, ei valittu yhtä. Kausimaksun myynti tälle syyskaudelle (kausikohtaisena tuotteena) päättyi verkkokaupan hinnaston mukaan 20.9.2026, mutta kerta-/sarjaliput ovat edelleen ostettavissa; hintana kirjattu hinnaston kausimaksun täysi (kauden alun) hinta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_29.json",
      "staging_id": "batch_2026-09-23_29-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_e8cb436e9e95.html",
      "capture_sha256": "e8cb436e9e958159ceae86455db03f6438e05c34657d952e5a2c12f6f5478362",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 71.18,
    "monthly_cost_basis": "290.0 € / term jaettuna 4.07 kuukaudelle (2026-08-17–2026-12-18, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Sörnäinen",
    "district_basis": "geokoodattu osoite -> neighborhood 'Sörnäinen' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "StepUp School",
    "group_name": "Skene Satutanssi 3–4 v., StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v.",
    "parent_child": "no",
    "venue_name": "StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "address": "Kaikukatu 4 A, Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:00",
    "end_time": "16:40",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 290.0,
    "price_basis": "Kausimaksu, 40 min/viikko, StepUp Schoolin Tanssikoulu Helsinki (Sörnäinen), kausi alkaen viikolla 34 (tuntikohtainen, hinta laskee viikoittain kauden alusta) - täysi kauden alun hinta (StepUp hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kertalippu, 40 min: 21 € (myydään verkkokaupassa/vastaanotossa).",
    "enrollment_status": "open",
    "source_url": "https://oma.stepupschool.fi/",
    "source_quote": "tiistai / Tanssikoulu Helsinki (Sörnäinen) / Syksy 2026 ... 16:00 - 16:40\tSkene Satutanssi 3–4 v.\tElina Lähde\tTilaa\t40 min",
    "activity_id": "hel-2026-0534",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 290.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.stepupschool.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 290,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus -5% avoimien viikkotuntien normaalihintaisista maksuista, jos perheestä käy vähintään kaksi (StepUp hinnasto).",
    "unverified_fields": [],
    "verification_notes": "Renderöity headless-selaimella (Puppeteer) 23.9.2026, koska aikataulu on oma.stepupschool.fi-verkkokaupan JS-suodatinwidgetissä eikä staattisessa HTML:ssä. Tallenne: data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_89a41f11b33d.txt Aikataulu haettu oma.stepupschool.fi:n aikataulunäkymästä (suodatus toimipisteen mukaan), esim. rivi: 'tiistai 16:00-16:40 Skene Satutanssi 3–4 v. Elina Lähde \"Tilaa\" 40 min'. Kausimaksun myynti tälle syyskaudelle (kausikohtaisena tuotteena) päättyi verkkokaupan hinnaston mukaan 20.9.2026, mutta kerta-/sarjaliput ovat edelleen ostettavissa; hintana kirjattu hinnaston kausimaksun täysi (kauden alun) hinta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_29.json",
      "staging_id": "batch_2026-09-23_29-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_e8cb436e9e95.html",
      "capture_sha256": "e8cb436e9e958159ceae86455db03f6438e05c34657d952e5a2c12f6f5478362",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 71.18,
    "monthly_cost_basis": "290.0 € / term jaettuna 4.07 kuukaudelle (2026-08-17–2026-12-18, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Sörnäinen",
    "district_basis": "geokoodattu osoite -> neighborhood 'Sörnäinen' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "StepUp School",
    "group_name": "Aikuinen & Lapsi 2–4 v., StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2-4 v.",
    "parent_child": "yes",
    "venue_name": "StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "address": "Kaikukatu 4 A, Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:30",
    "end_time": "17:10",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 290.0,
    "price_basis": "Kausimaksu, 40 min/viikko, StepUp Schoolin Tanssikoulu Helsinki (Sörnäinen), kausi alkaen viikolla 34 (tuntikohtainen, hinta laskee viikoittain kauden alusta) - täysi kauden alun hinta (StepUp hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kertalippu, 40 min: 21 € (myydään verkkokaupassa/vastaanotossa).",
    "enrollment_status": "open",
    "source_url": "https://oma.stepupschool.fi/",
    "source_quote": "tiistai / Tanssikoulu Helsinki (Sörnäinen) / Syksy 2026 ... 16:30 - 17:10\tAikuinen & Lapsi 2–4 v.\tSarppa Seppänen\tTilaa\t40 min",
    "activity_id": "hel-2026-0535",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 290.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.stepupschool.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 290,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": "Perhealennus -5% avoimien viikkotuntien normaalihintaisista maksuista, jos perheestä käy vähintään kaksi (StepUp hinnasto).",
    "unverified_fields": [],
    "verification_notes": "Renderöity headless-selaimella (Puppeteer) 23.9.2026, koska aikataulu on oma.stepupschool.fi-verkkokaupan JS-suodatinwidgetissä eikä staattisessa HTML:ssä. Tallenne: data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_89a41f11b33d.txt Aikataulu haettu oma.stepupschool.fi:n aikataulunäkymästä (suodatus toimipisteen mukaan), esim. rivi: 'tiistai 16:30-17:10 Aikuinen & Lapsi 2–4 v. Sarppa Seppänen \"Tilaa\" 40 min'. Kausimaksun myynti tälle syyskaudelle (kausikohtaisena tuotteena) päättyi verkkokaupan hinnaston mukaan 20.9.2026, mutta kerta-/sarjaliput ovat edelleen ostettavissa; hintana kirjattu hinnaston kausimaksun täysi (kauden alun) hinta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_29.json",
      "staging_id": "batch_2026-09-23_29-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_e8cb436e9e95.html",
      "capture_sha256": "e8cb436e9e958159ceae86455db03f6438e05c34657d952e5a2c12f6f5478362",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 71.18,
    "monthly_cost_basis": "290.0 € / term jaettuna 4.07 kuukaudelle (2026-08-17–2026-12-18, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Sörnäinen",
    "district_basis": "geokoodattu osoite -> neighborhood 'Sörnäinen' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "StepUp School",
    "group_name": "Skene avoin 5–6 v., StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6 v.",
    "parent_child": "no",
    "venue_name": "StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "address": "Kaikukatu 4 A, Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:45",
    "end_time": "18:25",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 290.0,
    "price_basis": "Kausimaksu, 40 min/viikko, StepUp Schoolin Tanssikoulu Helsinki (Sörnäinen), kausi alkaen viikolla 34 (tuntikohtainen, hinta laskee viikoittain kauden alusta) - täysi kauden alun hinta (StepUp hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kertalippu, 40 min: 21 € (myydään verkkokaupassa/vastaanotossa).",
    "enrollment_status": "open",
    "source_url": "https://oma.stepupschool.fi/",
    "source_quote": "tiistai / Tanssikoulu Helsinki (Sörnäinen) / Syksy 2026 ... 17:45 - 18:25\tSkene avoin 5–6 v.\tElina Lähde\tTilaa\t40 min",
    "activity_id": "hel-2026-0536",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 290.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.stepupschool.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 290,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus -5% avoimien viikkotuntien normaalihintaisista maksuista, jos perheestä käy vähintään kaksi (StepUp hinnasto).",
    "unverified_fields": [],
    "verification_notes": "Renderöity headless-selaimella (Puppeteer) 23.9.2026, koska aikataulu on oma.stepupschool.fi-verkkokaupan JS-suodatinwidgetissä eikä staattisessa HTML:ssä. Tallenne: data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_89a41f11b33d.txt Aikataulu haettu oma.stepupschool.fi:n aikataulunäkymästä (suodatus toimipisteen mukaan), esim. rivi: 'tiistai 17:45-18:25 Skene avoin 5–6 v. Elina Lähde \"Tilaa\" 40 min'. Kausimaksun myynti tälle syyskaudelle (kausikohtaisena tuotteena) päättyi verkkokaupan hinnaston mukaan 20.9.2026, mutta kerta-/sarjaliput ovat edelleen ostettavissa; hintana kirjattu hinnaston kausimaksun täysi (kauden alun) hinta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_29.json",
      "staging_id": "batch_2026-09-23_29-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_e8cb436e9e95.html",
      "capture_sha256": "e8cb436e9e958159ceae86455db03f6438e05c34657d952e5a2c12f6f5478362",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 71.18,
    "monthly_cost_basis": "290.0 € / term jaettuna 4.07 kuukaudelle (2026-08-17–2026-12-18, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Sörnäinen",
    "district_basis": "geokoodattu osoite -> neighborhood 'Sörnäinen' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "StepUp School",
    "group_name": "SkidiSKO 6–8 v., StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8 v.",
    "parent_child": "no",
    "venue_name": "StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "address": "Kaikukatu 4 A, Helsinki",
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 335.0,
    "price_basis": "Kausimaksu, 55 min/viikko, StepUp Schoolin Tanssikoulu Helsinki (Sörnäinen), kausi alkaen viikolla 34 (tuntikohtainen, hinta laskee viikoittain kauden alusta) - täysi kauden alun hinta (StepUp hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kertalippu, 55 min: 21 € (myydään verkkokaupassa/vastaanotossa).",
    "enrollment_status": "open",
    "source_url": "https://oma.stepupschool.fi/",
    "source_quote": "keskiviikko / Tanssikoulu Helsinki (Sörnäinen) / Syksy 2026 ... 18:00 - 18:55\tSkidiSKO 6–8 v.\tVeera Vallivaara\tTilaa\t55 min",
    "activity_id": "hel-2026-0537",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 335.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.stepupschool.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 335,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus -5% avoimien viikkotuntien normaalihintaisista maksuista, jos perheestä käy vähintään kaksi (StepUp hinnasto).",
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time"
    ],
    "verification_notes": "Renderöity headless-selaimella (Puppeteer) 23.9.2026, koska aikataulu on oma.stepupschool.fi-verkkokaupan JS-suodatinwidgetissä eikä staattisessa HTML:ssä. Tallenne: data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_89a41f11b33d.txt Aikataulu haettu oma.stepupschool.fi:n aikataulunäkymästä (suodatus toimipisteen mukaan), esim. rivi: 'keskiviikko 18:00-18:55 SkidiSKO 6–8 v. Veera Vallivaara \"Tilaa\" 55 min'. Sama ryhmä myös sunnuntaisin 16.45-17.40 (Netta Rekomaa) - useita rinnakkaisia vuoroja, ei valittu yhtä. Ikäraja 6-8v: sopii vain 6-vuotiaille rajauksen mukaan (alaraja 6 <= 6, CLAUDE.md rajaussäännöt). Kausimaksun myynti tälle syyskaudelle (kausikohtaisena tuotteena) päättyi verkkokaupan hinnaston mukaan 20.9.2026, mutta kerta-/sarjaliput ovat edelleen ostettavissa; hintana kirjattu hinnaston kausimaksun täysi (kauden alun) hinta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_29.json",
      "staging_id": "batch_2026-09-23_29-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_e8cb436e9e95.html",
      "capture_sha256": "e8cb436e9e958159ceae86455db03f6438e05c34657d952e5a2c12f6f5478362",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 82.23,
    "monthly_cost_basis": "335.0 € / term jaettuna 4.07 kuukaudelle (2026-08-17–2026-12-18, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Sörnäinen",
    "district_basis": "geokoodattu osoite -> neighborhood 'Sörnäinen' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "StepUp School",
    "group_name": "Dancemix 5–6 v., StepUp School, StepUp Studio Tapanila",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6 v.",
    "parent_child": "no",
    "venue_name": "StepUp School, StepUp Studio Tapanila",
    "address": "Erätie 3, Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 270.0,
    "price_basis": "Kausimaksu, 40 min/viikko, StepUp Schoolin StepUp Studio Tapanila, kausi alkaen viikolla 34 (tuntikohtainen, hinta laskee viikoittain kauden alusta) - täysi kauden alun hinta (StepUp hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kertalippu, 40 min: 21 € (myydään verkkokaupassa/vastaanotossa).",
    "enrollment_status": "open",
    "source_url": "https://oma.stepupschool.fi/",
    "source_quote": "keskiviikko / StepUp Studio Tapanila / Syksy 2026 ... 17:15 - 17:55\tDancemix 5–6 v.\tNetta Rekomaa\tTilaa\t40 min",
    "activity_id": "hel-2026-0538",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 270.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.stepupschool.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 270,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus -5% avoimien viikkotuntien normaalihintaisista maksuista, jos perheestä käy vähintään kaksi (StepUp hinnasto).",
    "unverified_fields": [],
    "verification_notes": "Renderöity headless-selaimella (Puppeteer) 23.9.2026, koska aikataulu on oma.stepupschool.fi-verkkokaupan JS-suodatinwidgetissä eikä staattisessa HTML:ssä. Tallenne: data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_89a41f11b33d.txt Aikataulu haettu oma.stepupschool.fi:n aikataulunäkymästä (suodatus toimipisteen mukaan), esim. rivi: 'keskiviikko 17:15-17:55 Dancemix 5–6 v. Netta Rekomaa \"Tilaa\" 40 min'. Kausimaksun myynti tälle syyskaudelle (kausikohtaisena tuotteena) päättyi verkkokaupan hinnaston mukaan 20.9.2026, mutta kerta-/sarjaliput ovat edelleen ostettavissa; hintana kirjattu hinnaston kausimaksun täysi (kauden alun) hinta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_29.json",
      "staging_id": "batch_2026-09-23_29-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_e8cb436e9e95.html",
      "capture_sha256": "e8cb436e9e958159ceae86455db03f6438e05c34657d952e5a2c12f6f5478362",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 66.28,
    "monthly_cost_basis": "270.0 € / term jaettuna 4.07 kuukaudelle (2026-08-17–2026-12-18, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Tapanila",
    "district_basis": "geokoodattu osoite -> sub_district 'Tapanila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "StepUp School",
    "group_name": "Dancemix 3–4 v., StepUp School, StepUp Studio Tapanila",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v.",
    "parent_child": "no",
    "venue_name": "StepUp School, StepUp Studio Tapanila",
    "address": "Erätie 3, Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "18:40",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 270.0,
    "price_basis": "Kausimaksu, 40 min/viikko, StepUp Schoolin StepUp Studio Tapanila, kausi alkaen viikolla 34 (tuntikohtainen, hinta laskee viikoittain kauden alusta) - täysi kauden alun hinta (StepUp hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kertalippu, 40 min: 21 € (myydään verkkokaupassa/vastaanotossa).",
    "enrollment_status": "open",
    "source_url": "https://oma.stepupschool.fi/",
    "source_quote": "keskiviikko / StepUp Studio Tapanila / Syksy 2026 ... 18:00 - 18:40\tDancemix 3–4 v.\tNetta Rekomaa\tTilaa\t40 min",
    "activity_id": "hel-2026-0539",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 270.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.stepupschool.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 270,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus -5% avoimien viikkotuntien normaalihintaisista maksuista, jos perheestä käy vähintään kaksi (StepUp hinnasto).",
    "unverified_fields": [],
    "verification_notes": "Renderöity headless-selaimella (Puppeteer) 23.9.2026, koska aikataulu on oma.stepupschool.fi-verkkokaupan JS-suodatinwidgetissä eikä staattisessa HTML:ssä. Tallenne: data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_89a41f11b33d.txt Aikataulu haettu oma.stepupschool.fi:n aikataulunäkymästä (suodatus toimipisteen mukaan), esim. rivi: 'keskiviikko 18:00-18:40 Dancemix 3–4 v. Netta Rekomaa \"Tilaa\" 40 min'. Kausimaksun myynti tälle syyskaudelle (kausikohtaisena tuotteena) päättyi verkkokaupan hinnaston mukaan 20.9.2026, mutta kerta-/sarjaliput ovat edelleen ostettavissa; hintana kirjattu hinnaston kausimaksun täysi (kauden alun) hinta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_29.json",
      "staging_id": "batch_2026-09-23_29-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_e8cb436e9e95.html",
      "capture_sha256": "e8cb436e9e958159ceae86455db03f6438e05c34657d952e5a2c12f6f5478362",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 66.28,
    "monthly_cost_basis": "270.0 € / term jaettuna 4.07 kuukaudelle (2026-08-17–2026-12-18, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Tapanila",
    "district_basis": "geokoodattu osoite -> sub_district 'Tapanila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "StepUp School",
    "group_name": "Street 3–4 v., StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v.",
    "parent_child": "no",
    "venue_name": "StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "address": "Kaikukatu 4 A, Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 290.0,
    "price_basis": "Kausimaksu, 40 min/viikko, StepUp Schoolin Tanssikoulu Helsinki (Sörnäinen), kausi alkaen viikolla 34 (tuntikohtainen, hinta laskee viikoittain kauden alusta) - täysi kauden alun hinta (StepUp hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kertalippu, 40 min: 21 € (myydään verkkokaupassa/vastaanotossa).",
    "enrollment_status": "open",
    "source_url": "https://oma.stepupschool.fi/",
    "source_quote": "torstai / Tanssikoulu Helsinki (Sörnäinen) / Syksy 2026 ... 17:00 - 17:40\tStreet 3–4 v.\tTilda Kuustonen\tTilaa\t40 min",
    "activity_id": "hel-2026-0540",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 290.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.stepupschool.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 290,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus -5% avoimien viikkotuntien normaalihintaisista maksuista, jos perheestä käy vähintään kaksi (StepUp hinnasto).",
    "unverified_fields": [],
    "verification_notes": "Renderöity headless-selaimella (Puppeteer) 23.9.2026, koska aikataulu on oma.stepupschool.fi-verkkokaupan JS-suodatinwidgetissä eikä staattisessa HTML:ssä. Tallenne: data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_89a41f11b33d.txt Aikataulu haettu oma.stepupschool.fi:n aikataulunäkymästä (suodatus toimipisteen mukaan), esim. rivi: 'torstai 17:00-17:40 Street 3–4 v. Tilda Kuustonen \"Tilaa\" 40 min'. Kausimaksun myynti tälle syyskaudelle (kausikohtaisena tuotteena) päättyi verkkokaupan hinnaston mukaan 20.9.2026, mutta kerta-/sarjaliput ovat edelleen ostettavissa; hintana kirjattu hinnaston kausimaksun täysi (kauden alun) hinta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_29.json",
      "staging_id": "batch_2026-09-23_29-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_e8cb436e9e95.html",
      "capture_sha256": "e8cb436e9e958159ceae86455db03f6438e05c34657d952e5a2c12f6f5478362",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 71.18,
    "monthly_cost_basis": "290.0 € / term jaettuna 4.07 kuukaudelle (2026-08-17–2026-12-18, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Sörnäinen",
    "district_basis": "geokoodattu osoite -> neighborhood 'Sörnäinen' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "StepUp School",
    "group_name": "Street 5–6 v., StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6 v.",
    "parent_child": "no",
    "venue_name": "StepUp School, Tanssikoulu Helsinki (Sörnäinen)",
    "address": "Kaikukatu 4 A, Helsinki",
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 290.0,
    "price_basis": "Kausimaksu, 40 min/viikko, StepUp Schoolin Tanssikoulu Helsinki (Sörnäinen), kausi alkaen viikolla 34 (tuntikohtainen, hinta laskee viikoittain kauden alusta) - täysi kauden alun hinta (StepUp hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kertalippu, 40 min: 21 € (myydään verkkokaupassa/vastaanotossa).",
    "enrollment_status": "open",
    "source_url": "https://oma.stepupschool.fi/",
    "source_quote": "torstai / Tanssikoulu Helsinki (Sörnäinen) / Syksy 2026 ... 17:45 - 18:25\tStreet 5–6 v.\tTilda Kuustonen\tTilaa\t40 min",
    "activity_id": "hel-2026-0541",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 290.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.stepupschool.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-18",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-18",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 290,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus -5% avoimien viikkotuntien normaalihintaisista maksuista, jos perheestä käy vähintään kaksi (StepUp hinnasto).",
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time"
    ],
    "verification_notes": "Renderöity headless-selaimella (Puppeteer) 23.9.2026, koska aikataulu on oma.stepupschool.fi-verkkokaupan JS-suodatinwidgetissä eikä staattisessa HTML:ssä. Tallenne: data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_89a41f11b33d.txt Aikataulu haettu oma.stepupschool.fi:n aikataulunäkymästä (suodatus toimipisteen mukaan), esim. rivi: 'torstai 17:45-18:25 Street 5–6 v. Tilda Kuustonen \"Tilaa\" 40 min'. Sama ryhmä myös sunnuntaisin 12.15-12.55 (Anni Utter) - useita rinnakkaisia vuoroja, ei valittu yhtä. Kausimaksun myynti tälle syyskaudelle (kausikohtaisena tuotteena) päättyi verkkokaupan hinnaston mukaan 20.9.2026, mutta kerta-/sarjaliput ovat edelleen ostettavissa; hintana kirjattu hinnaston kausimaksun täysi (kauden alun) hinta.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_29.json",
      "staging_id": "batch_2026-09-23_29-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_29/stepup_oma_e8cb436e9e95.html",
      "capture_sha256": "e8cb436e9e958159ceae86455db03f6438e05c34657d952e5a2c12f6f5478362",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 71.18,
    "monthly_cost_basis": "290.0 € / term jaettuna 4.07 kuukaudelle (2026-08-17–2026-12-18, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Sörnäinen",
    "district_basis": "geokoodattu osoite -> neighborhood 'Sörnäinen' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu Tanssin Maailma Ketonen",
    "group_name": "Lastentanssi 3-4v, Tanssin Maailma Ketonen",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4v",
    "parent_child": "no",
    "venue_name": "Tanssikoulu Tanssin Maailma Ketonen",
    "address": "Porttikuja 7, 00940 Helsinki",
    "district": "Kontula",
    "weekday": "keskiviikko",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 220.0,
    "price_basis": "Kausimaksu, 45 min/viikko, 15 oppituntia, kausi alkaen 19.8.2026 (Tanssin Maailma Ketonen, lastentanssi-sivu).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssinmaailmaketonen.fi/lastentanssi.htm",
    "source_quote": "Kausi alkaa 19.8. Kausimaksu 220€ (15 oppituntia) (Opetustunti 45 min.) ... Keskiviikko 3-4v klo 17:30-18:15",
    "activity_id": "hel-2026-0542",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 220.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.tanssinmaailmaketonen.fi/lastentanssi.htm",
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": null,
    "season_start_date": "2026-08-19",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 220,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "season_end_date"
    ],
    "verification_notes": "Renderöity headless-selaimella (Puppeteer) 23.9.2026, koska etusivun lajivalikko on JS-toteutettu (sivukartasta löytyi kuitenkin suora staattinen alisivu lastentanssi.htm). Kauden päättymispäivää ei mainita sivulla (vain alkupäivä 19.8.), joten end_date/season_end_date jäävät null:ksi.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_29.json",
      "staging_id": "batch_2026-09-23_29-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_29/ketonen_lastentanssi_38c2678ca1cd.txt",
      "capture_sha256": "38c2678ca1cd8cc09a804fcbe4ce12299d3c3128ee81e9e50a6255b32bd26abf",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Kontula",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu Tanssin Maailma Ketonen",
    "group_name": "Lastentanssi 5-6v, Tanssin Maailma Ketonen",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v",
    "parent_child": "no",
    "venue_name": "Tanssikoulu Tanssin Maailma Ketonen",
    "address": "Porttikuja 7, 00940 Helsinki",
    "district": "Kontula",
    "weekday": "keskiviikko",
    "start_time": "18:15",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 220.0,
    "price_basis": "Kausimaksu, 45 min/viikko, 15 oppituntia, kausi alkaen 19.8.2026 (Tanssin Maailma Ketonen, lastentanssi-sivu).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssinmaailmaketonen.fi/lastentanssi.htm",
    "source_quote": "Kausi alkaa 19.8. Kausimaksu 220€ (15 oppituntia) (Opetustunti 45 min.) ... Keskiviikko 5-6v klo 18:15-19:00",
    "activity_id": "hel-2026-0543",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 220.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.tanssinmaailmaketonen.fi/lastentanssi.htm",
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": null,
    "season_start_date": "2026-08-19",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 220,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "season_end_date"
    ],
    "verification_notes": "Renderöity headless-selaimella (Puppeteer) 23.9.2026, koska etusivun lajivalikko on JS-toteutettu (sivukartasta löytyi kuitenkin suora staattinen alisivu lastentanssi.htm). Kauden päättymispäivää ei mainita sivulla (vain alkupäivä 19.8.), joten end_date/season_end_date jäävät null:ksi.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_29.json",
      "staging_id": "batch_2026-09-23_29-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_29/ketonen_lastentanssi_38c2678ca1cd.txt",
      "capture_sha256": "38c2678ca1cd8cc09a804fcbe4ce12299d3c3128ee81e9e50a6255b32bd26abf",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T16:32:22+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Kontula",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin Lastenliitto ry",
    "group_name": "Leikkiliikunta 3–4 v., Helsingin Lastenliitto, Konala (1. ryhmä)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille",
    "parent_child": "no",
    "venue_name": "Konalan asukastila",
    "address": "Ajomiehentie 1, Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Ryhmän ilmoittautumissivun 'Hinta'-kenttä (50 euroa), vastaa kerhotoiminta-sivun hinnastoa (Liikunta 50 e).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-konala-3-4v-sy26/",
    "source_quote": "Ajankohta\n31.8.2026 17:00 – 7.12.2026 17:45\nHinta\n50 euroa",
    "activity_id": "hel-2026-0544",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-konala-3-4v-sy26/",
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautumislomakkeella voi halutessaan liittyä Helsingin Lastenliitto ry:n Helsingin piirin jäseneksi 17 e/vuosi (valinnainen kyllä/ei-valinta lomakkeella, ei vaikuta kerhoon osallistumiseen).",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Osallistujamäärä ilmoittautumissivulla 7 / 12 (paikkoja vapaana), tarkistettu 23.9.2026. Kerhoa ei pidetä syyslomaviikolla 42 (12.-18.10.2026); tarkkaa kertamäärää ei ole laskettu koodilla tässä erässä, joten sessions_count jätetty tyhjäksi (linjaus 1).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/helsinki-konala-3-4v-sy26_3dfea9360b8c.html",
      "capture_sha256": "3dfea9360b8cb4cc87c835de22c14b5bcc38f99fcea5510f99dbc1e9f23a9cc5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Konala",
    "district_basis": "geokoodattu osoite -> neighborhood 'Konala' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin Lastenliitto ry",
    "group_name": "Leikkiliikunta 3–4 v., Helsingin Lastenliitto, Konala (2. ryhmä)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille",
    "parent_child": "no",
    "venue_name": "Konalan asukastila",
    "address": "Ajomiehentie 1, Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:55",
    "end_time": "18:40",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Ryhmän ilmoittautumissivun 'Hinta'-kenttä (50 euroa), vastaa kerhotoiminta-sivun hinnastoa (Liikunta 50 e).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-konala-3-4v-sy26-2/",
    "source_quote": "Ajankohta\n31.8.2026 17:55 – 7.12.2026 18:40\nHinta\n50 euroa",
    "activity_id": "hel-2026-0545",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-konala-3-4v-sy26-2/",
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautumislomakkeella voi halutessaan liittyä Helsingin Lastenliitto ry:n Helsingin piirin jäseneksi 17 e/vuosi (valinnainen kyllä/ei-valinta lomakkeella, ei vaikuta kerhoon osallistumiseen).",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Osallistujamäärä ilmoittautumissivulla 12 / 12 (täynnä), tarkistettu 23.9.2026. Kerhoa ei pidetä syyslomaviikolla 42 (12.-18.10.2026); tarkkaa kertamäärää ei ole laskettu koodilla tässä erässä, joten sessions_count jätetty tyhjäksi (linjaus 1).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/helsinki-konala-3-4v-sy26-2_8dc791774fd4.html",
      "capture_sha256": "8dc791774fd45126e760710e797901b5cc84d07299062db9f86d81dc5680e0cf",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Konala",
    "district_basis": "geokoodattu osoite -> neighborhood 'Konala' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin Lastenliitto ry",
    "group_name": "Leikkiliikunta 5–6 v., Helsingin Lastenliitto, Konala",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Konalan asukastila",
    "address": "Ajomiehentie 1, Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:50",
    "end_time": "19:35",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Ryhmän ilmoittautumissivun 'Hinta'-kenttä (50 euroa), vastaa kerhotoiminta-sivun hinnastoa (Liikunta 50 e).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-konala-5-6v-sy26-2-1/",
    "source_quote": "Ajankohta\n31.8.2026 18:50 – 7.12.2026 19:35\nHinta\n50 euroa",
    "activity_id": "hel-2026-0546",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-konala-5-6v-sy26-2-1/",
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautumislomakkeella voi halutessaan liittyä Helsingin Lastenliitto ry:n Helsingin piirin jäseneksi 17 e/vuosi (valinnainen kyllä/ei-valinta lomakkeella, ei vaikuta kerhoon osallistumiseen).",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Osallistujamäärä ilmoittautumissivulla 8 / 12 (paikkoja vapaana), tarkistettu 23.9.2026. Kerhoa ei pidetä syyslomaviikolla 42 (12.-18.10.2026); tarkkaa kertamäärää ei ole laskettu koodilla tässä erässä, joten sessions_count jätetty tyhjäksi (linjaus 1).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/helsinki-konala-5-6v-sy26-2-1_06657d98fb6d.html",
      "capture_sha256": "06657d98fb6dda1a6eea3e226d257dea56540a3ffc07d529b09a65eed69a5925",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Konala",
    "district_basis": "geokoodattu osoite -> neighborhood 'Konala' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin Lastenliitto ry",
    "group_name": "Leikkiliikunta 3–4 v., Helsingin Lastenliitto, Roihuvuori",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille",
    "parent_child": "no",
    "venue_name": "Roihuvuoren nuorisotalo",
    "address": "Prinssintie 1, 00820 Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Ryhmän ilmoittautumissivun 'Hinta'-kenttä (50 euroa), vastaa kerhotoiminta-sivun hinnastoa (Liikunta 50 e).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-roihuvuori-3-4v-sy26-1/",
    "source_quote": "Ajankohta\n31.8.2026 17:15 – 7.12.2026 18:00\nHinta\n50 euroa",
    "activity_id": "hel-2026-0547",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-roihuvuori-3-4v-sy26-1/",
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautumislomakkeella voi halutessaan liittyä Helsingin Lastenliitto ry:n Helsingin piirin jäseneksi 17 e/vuosi (valinnainen kyllä/ei-valinta lomakkeella, ei vaikuta kerhoon osallistumiseen).",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Osallistujamäärä ilmoittautumissivulla 12 / 12 (täynnä), tarkistettu 23.9.2026. Kerhoa ei pidetä syyslomaviikolla 42 (12.-18.10.2026); tarkkaa kertamäärää ei ole laskettu koodilla tässä erässä, joten sessions_count jätetty tyhjäksi (linjaus 1).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/helsinki-roihuvuori-3-4v-sy26-1_9e985c80f2b5.html",
      "capture_sha256": "9e985c80f2b5b6d970c6063ce102212d4376db1dab4b8eb844a2e160dd91cc6f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Roihuvuori",
    "district_basis": "geokoodattu osoite -> sub_district 'Roihuvuori' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin Lastenliitto ry",
    "group_name": "Leikkiliikunta 5–6 v., Helsingin Lastenliitto, Roihuvuori",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Roihuvuoren nuorisotalo",
    "address": "Prinssintie 1, 00820 Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:05",
    "end_time": "18:50",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Ryhmän ilmoittautumissivun 'Hinta'-kenttä (50 euroa), vastaa kerhotoiminta-sivun hinnastoa (Liikunta 50 e).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-roihuvuori-5-6v-sy26/",
    "source_quote": "Ajankohta\n31.8.2026 18:05 – 7.12.2026 18:50\nHinta\n50 euroa",
    "activity_id": "hel-2026-0548",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-roihuvuori-5-6v-sy26/",
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautumislomakkeella voi halutessaan liittyä Helsingin Lastenliitto ry:n Helsingin piirin jäseneksi 17 e/vuosi (valinnainen kyllä/ei-valinta lomakkeella, ei vaikuta kerhoon osallistumiseen).",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Osallistujamäärä ilmoittautumissivulla 11 / 12 (paikkoja vapaana), tarkistettu 23.9.2026. Kerhoa ei pidetä syyslomaviikolla 42 (12.-18.10.2026); tarkkaa kertamäärää ei ole laskettu koodilla tässä erässä, joten sessions_count jätetty tyhjäksi (linjaus 1).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/helsinki-roihuvuori-5-6v-sy26_41cb297a5706.html",
      "capture_sha256": "41cb297a5706923439dd9e99dda151423bfd664324689bed40189677921ec234",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Roihuvuori",
    "district_basis": "geokoodattu osoite -> sub_district 'Roihuvuori' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin Lastenliitto ry",
    "group_name": "Leikkiliikunta 5–6 v., Helsingin Lastenliitto, Munkkivuori",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Munkkivuoren nuorisotalo",
    "address": "Raumantie 5, Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Ryhmän ilmoittautumissivun 'Hinta'-kenttä (50 euroa), vastaa kerhotoiminta-sivun hinnastoa (Liikunta 50 e).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-munkkivuori-5.6-sy26/",
    "source_quote": "Ajankohta\n31.8.2026 16:45 – 7.12.2026 17:30\nHinta\n50 euroa",
    "activity_id": "hel-2026-0549",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-munkkivuori-5.6-sy26/",
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautumislomakkeella voi halutessaan liittyä Helsingin Lastenliitto ry:n Helsingin piirin jäseneksi 17 e/vuosi (valinnainen kyllä/ei-valinta lomakkeella, ei vaikuta kerhoon osallistumiseen).",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Osallistujamäärä ilmoittautumissivulla 10 / 12 (paikkoja vapaana), tarkistettu 23.9.2026. Kerhoa ei pidetä syyslomaviikolla 42 (12.-18.10.2026); tarkkaa kertamäärää ei ole laskettu koodilla tässä erässä, joten sessions_count jätetty tyhjäksi (linjaus 1).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/helsinki-munkkivuori-5.6-sy26_f755312feb43.html",
      "capture_sha256": "f755312feb4384c3d5c7d232f7cbf242e7909f359033d7ff4ac03dc4ca5f3166",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Munkkivuori",
    "district_basis": "geokoodattu osoite -> sub_district 'Munkkivuori' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin Lastenliitto ry",
    "group_name": "Leikkiliikunta 3–4 v., Helsingin Lastenliitto, Pikku Huopalahti",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille",
    "parent_child": "no",
    "venue_name": "Pikku Huopalahden nuorisotalo",
    "address": "Hilda Flodinin aukio 1, 00300 Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Ryhmän ilmoittautumissivun 'Hinta'-kenttä (50 euroa), vastaa kerhotoiminta-sivun hinnastoa (Liikunta 50 e).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-pikkuhuopalahti-3-4v-sy26-1/",
    "source_quote": "Ajankohta\n1.9.2026 17:15 – 8.12.2026 18:00\nHinta\n50 euroa",
    "activity_id": "hel-2026-0550",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-pikkuhuopalahti-3-4v-sy26-1/",
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautumislomakkeella voi halutessaan liittyä Helsingin Lastenliitto ry:n Helsingin piirin jäseneksi 17 e/vuosi (valinnainen kyllä/ei-valinta lomakkeella, ei vaikuta kerhoon osallistumiseen).",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Osallistujamäärä ilmoittautumissivulla 12 / 12 (täynnä), tarkistettu 23.9.2026. Kerhoa ei pidetä syyslomaviikolla 42 (12.-18.10.2026); tarkkaa kertamäärää ei ole laskettu koodilla tässä erässä, joten sessions_count jätetty tyhjäksi (linjaus 1).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/helsinki-pikkuhuopalahti-3-4v-sy26-1_d8349d9e0027.html",
      "capture_sha256": "d8349d9e002772b042ee69e686464c1ff2443bac84be74672442cb854473edc5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pikku Huopalahti",
    "district_basis": "geokoodattu osoite -> sub_district 'Pikku Huopalahti' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin Lastenliitto ry",
    "group_name": "Leikkiliikunta 3–4 v., Helsingin Lastenliitto, Laajasalo (nuorisotalo)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille",
    "parent_child": "no",
    "venue_name": "Laajasalon nuorisotalo",
    "address": "Yliskylän puistokatu 4, Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Ryhmän ilmoittautumissivun 'Hinta'-kenttä (50 euroa), vastaa kerhotoiminta-sivun hinnastoa (Liikunta 50 e).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-laajasalo-3-4v-sy26-1-1/",
    "source_quote": "Ajankohta\n2.9.2026 17:00 – 9.12.2026 17:45\nHinta\n50 euroa",
    "activity_id": "hel-2026-0551",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-laajasalo-3-4v-sy26-1-1/",
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautumislomakkeella voi halutessaan liittyä Helsingin Lastenliitto ry:n Helsingin piirin jäseneksi 17 e/vuosi (valinnainen kyllä/ei-valinta lomakkeella, ei vaikuta kerhoon osallistumiseen).",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Osallistujamäärä ilmoittautumissivulla 12 / 12 (täynnä), tarkistettu 23.9.2026. Kerhoa ei pidetä syyslomaviikolla 42 (12.-18.10.2026); tarkkaa kertamäärää ei ole laskettu koodilla tässä erässä, joten sessions_count jätetty tyhjäksi (linjaus 1).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/helsinki-laajasalo-3-4v-sy26-1-1_396427cbac9c.html",
      "capture_sha256": "396427cbac9c7d537e136b39f2fc59e04003595187552975b55c2eb7264913d2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Laajasalo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Laajasalo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin Lastenliitto ry",
    "group_name": "Leikkiliikunta 5–6 v., Helsingin Lastenliitto, Laajasalo (nuorisotalo)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Laajasalon nuorisotalo",
    "address": "Yliskylän puistokatu 4, Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:55",
    "end_time": "18:40",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Ryhmän ilmoittautumissivun 'Hinta'-kenttä (50 euroa), vastaa kerhotoiminta-sivun hinnastoa (Liikunta 50 e).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-laajasalo-5-6v-sy26-1-1-1/",
    "source_quote": "Ajankohta\n2.9.2026 17:55 – 9.12.2026 18:40\nHinta\n50 euroa",
    "activity_id": "hel-2026-0552",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-laajasalo-5-6v-sy26-1-1-1/",
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautumislomakkeella voi halutessaan liittyä Helsingin Lastenliitto ry:n Helsingin piirin jäseneksi 17 e/vuosi (valinnainen kyllä/ei-valinta lomakkeella, ei vaikuta kerhoon osallistumiseen).",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Osallistujamäärä ilmoittautumissivulla 12 / 12 (täynnä), tarkistettu 23.9.2026. Kerhoa ei pidetä syyslomaviikolla 42 (12.-18.10.2026); tarkkaa kertamäärää ei ole laskettu koodilla tässä erässä, joten sessions_count jätetty tyhjäksi (linjaus 1).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/helsinki-laajasalo-5-6v-sy26-1-1-1_bbf9c0e6d93e.html",
      "capture_sha256": "bbf9c0e6d93eea4fa262932e98e58fad64b8b729055c9dac8053c716470a0139",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Laajasalo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Laajasalo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin Lastenliitto ry",
    "group_name": "Leikkiliikunta 3–4 v., Helsingin Lastenliitto, Laajasalo (peruskoulu)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille",
    "parent_child": "no",
    "venue_name": "Laajasalon peruskoulu",
    "address": "Holmanmoisionpolku 1, Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Ryhmän ilmoittautumissivun 'Hinta'-kenttä (50 euroa), vastaa kerhotoiminta-sivun hinnastoa (Liikunta 50 e).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-laajasalopk-3-4v-sy26-1-1-1/",
    "source_quote": "Ajankohta\n3.9.2026 17:00 – 10.12.2026 17:45\nHinta\n50 euroa",
    "activity_id": "hel-2026-0553",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-laajasalopk-3-4v-sy26-1-1-1/",
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautumislomakkeella voi halutessaan liittyä Helsingin Lastenliitto ry:n Helsingin piirin jäseneksi 17 e/vuosi (valinnainen kyllä/ei-valinta lomakkeella, ei vaikuta kerhoon osallistumiseen).",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Osallistujamäärä ilmoittautumissivulla 12 / 12 (täynnä), tarkistettu 23.9.2026. Kerhoa ei pidetä syyslomaviikolla 42 (12.-18.10.2026); tarkkaa kertamäärää ei ole laskettu koodilla tässä erässä, joten sessions_count jätetty tyhjäksi (linjaus 1).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/helsinki-laajasalopk-3-4v-sy26-1-1-1_2bd7e7f218cf.html",
      "capture_sha256": "2bd7e7f218cf65e7a78c06b82c3105fe2beb096defd72605d55b646613804baf",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Laajasalo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Laajasalo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin Lastenliitto ry",
    "group_name": "Leikkiliikunta 5–6 v., Helsingin Lastenliitto, Laajasalo (peruskoulu)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Laajasalon peruskoulu",
    "address": "Holmanmoisionpolku 1, Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Ryhmän ilmoittautumissivun 'Hinta'-kenttä (50 euroa), vastaa kerhotoiminta-sivun hinnastoa (Liikunta 50 e).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-laajasalopk-5-6v-sy26-1/",
    "source_quote": "Ajankohta\n3.9.2026 17:45 – 10.12.2026 18:30\nHinta\n50 euroa",
    "activity_id": "hel-2026-0554",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-laajasalopk-5-6v-sy26-1/",
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautumislomakkeella voi halutessaan liittyä Helsingin Lastenliitto ry:n Helsingin piirin jäseneksi 17 e/vuosi (valinnainen kyllä/ei-valinta lomakkeella, ei vaikuta kerhoon osallistumiseen).",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Osallistujamäärä ilmoittautumissivulla 12 / 12 (täynnä), tarkistettu 23.9.2026. Kerhoa ei pidetä syyslomaviikolla 42 (12.-18.10.2026); tarkkaa kertamäärää ei ole laskettu koodilla tässä erässä, joten sessions_count jätetty tyhjäksi (linjaus 1).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/helsinki-laajasalopk-5-6v-sy26-1_02c80f0f10b0.html",
      "capture_sha256": "02c80f0f10b047e1fff86745fb24749f9f8e0d5585c470b9a860617346c8a5e5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Laajasalo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Laajasalo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin Lastenliitto ry",
    "group_name": "Leikkiliikunta 3–4 v., Helsingin Lastenliitto, Postivarikko (Pasila)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille",
    "parent_child": "no",
    "venue_name": "Postivarikon yhteisörakennus",
    "address": "Rullakkokatu 2, Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "16:15",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Ryhmän ilmoittautumissivun 'Hinta'-kenttä (50 euroa), vastaa kerhotoiminta-sivun hinnastoa (Liikunta 50 e).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-pasila3-4v-sy26-1-1/",
    "source_quote": "Ajankohta\n3.9.2026 16:15 – 10.12.2026 17:00\nHinta\n50 euroa",
    "activity_id": "hel-2026-0555",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-pasila3-4v-sy26-1-1/",
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautumislomakkeella voi halutessaan liittyä Helsingin Lastenliitto ry:n Helsingin piirin jäseneksi 17 e/vuosi (valinnainen kyllä/ei-valinta lomakkeella, ei vaikuta kerhoon osallistumiseen).",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Osallistujamäärä ilmoittautumissivulla 12 / 12 (täynnä), tarkistettu 23.9.2026. Kerhoa ei pidetä syyslomaviikolla 42 (12.-18.10.2026); tarkkaa kertamäärää ei ole laskettu koodilla tässä erässä, joten sessions_count jätetty tyhjäksi (linjaus 1).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/helsinki-pasila3-4v-sy26-1-1_83e182892ad3.html",
      "capture_sha256": "83e182892ad34b055a5f97087e3a1b4562e83cf35cc3542b73516aa526627c62",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pasila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pasila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin Lastenliitto ry",
    "group_name": "Leikkiliikunta 5–6 v., Helsingin Lastenliitto, Postivarikko (Pasila)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Postivarikon yhteisörakennus",
    "address": "Rullakkokatu 2, Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:05",
    "end_time": "17:50",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Ryhmän ilmoittautumissivun 'Hinta'-kenttä (50 euroa), vastaa kerhotoiminta-sivun hinnastoa (Liikunta 50 e).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-pasila-5-6-v-sy26-1-1-1/",
    "source_quote": "Ajankohta\n3.9.2026 17:05 – 10.12.2026 17:50\nHinta\n50 euroa",
    "activity_id": "hel-2026-0556",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-pasila-5-6-v-sy26-1-1-1/",
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautumislomakkeella voi halutessaan liittyä Helsingin Lastenliitto ry:n Helsingin piirin jäseneksi 17 e/vuosi (valinnainen kyllä/ei-valinta lomakkeella, ei vaikuta kerhoon osallistumiseen).",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Osallistujamäärä ilmoittautumissivulla 12 / 12 (täynnä), tarkistettu 23.9.2026. Kerhoa ei pidetä syyslomaviikolla 42 (12.-18.10.2026); tarkkaa kertamäärää ei ole laskettu koodilla tässä erässä, joten sessions_count jätetty tyhjäksi (linjaus 1).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/helsinki-pasila-5-6-v-sy26-1-1-1_47606af5441f.html",
      "capture_sha256": "47606af5441fe56d42d8888a1999585cb293a2be8a88fa9b67be6c5245041791",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pasila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pasila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin Lastenliitto ry",
    "group_name": "Leikkiliikunta 5–6 v., Helsingin Lastenliitto, Haaga",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Haagan peruskoulu",
    "address": "Isonnevantie 16c, 00320 Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:05",
    "end_time": "18:50",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Ryhmän ilmoittautumissivun 'Hinta'-kenttä (50 euroa), vastaa kerhotoiminta-sivun hinnastoa (Liikunta 50 e).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-haaga-5-6v-sy26-1-1-1/",
    "source_quote": "Ajankohta\n3.9.2026 18:05 – 10.12.2026 18:50\nHinta\n50 euroa",
    "activity_id": "hel-2026-0557",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 50.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.lastenliitto.fi/helsinki/tapahtumat/helsinki-haaga-5-6v-sy26-1-1-1/",
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Ilmoittautumislomakkeella voi halutessaan liittyä Helsingin Lastenliitto ry:n Helsingin piirin jäseneksi 17 e/vuosi (valinnainen kyllä/ei-valinta lomakkeella, ei vaikuta kerhoon osallistumiseen).",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Osallistujamäärä ilmoittautumissivulla 12 / 12 (täynnä), tarkistettu 23.9.2026. Kerhoa ei pidetä syyslomaviikolla 42 (12.-18.10.2026); tarkkaa kertamäärää ei ole laskettu koodilla tässä erässä, joten sessions_count jätetty tyhjäksi (linjaus 1).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/helsinki-haaga-5-6v-sy26-1-1-1_eb3464e8e509.html",
      "capture_sha256": "eb3464e8e509f47ce284f38520342b64595e1585268d2bdde55613228704e9ec",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Etelä-Haaga",
    "district_basis": "geokoodattu osoite -> sub_district 'Etelä-Haaga' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "HTU Stadi",
    "group_name": "Vauvauinti, HTU Stadi (Jakomäen uimahalli)",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "Vauvauinnin voi aloittaa, kun vauva on vähintään 3kk ja 5kg.",
    "parent_child": "yes",
    "venue_name": "Jakomäen uimahalli",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:00",
    "end_time": "09:30",
    "season": "syksy 2026 (jakso 2)",
    "start_date": "2026-11-07",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 144.0,
    "price_basis": "Vauvauinti, 7x30min, HTU Stadi, Jakomäen uimahalli, lauantaisin 09:00-09:30, syksyn 2026 toinen kurssijakso 7.11. alkaen (HTU Stadin hinnasto/kurssisivu).",
    "membership_fee_eur": 5,
    "other_required_fees": null,
    "equipment_notes": "Vauvalla tulee olla uintivaippa uimapuvun alla; suositellaan kestouimavaippaa.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://htu.fi/perhe-ja-vauvauinti/",
    "source_quote": "Vauvauinti lauantaisin 09:00-09:30 7.11.alkaen ... Vauvauinnin voi aloittaa, kun vauva on vähintään 3kk ja 5kg. Vauvauintiin voivat osallistua vauvan lisäksi 1-2 aikuista. 7x30min, hinta 144 € ... Perimme viiden euron jäsenmaksun ensimmäisen kurssikerran jälkeen. Jos olette jo olleet jollakin HTU Stadin kurssilla vuonna 2026, ei jäsenmaksua veloiteta enää uudelleen.",
    "activity_id": "hel-2026-0558",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 149.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://htu.fi/perhe-ja-vauvauinti/",
    "billing_period": "course",
    "price_period_start": "2026-11-07",
    "price_period_end": null,
    "season_start_date": "2026-11-07",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 144,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "7x30min kurssimaksu"
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "once",
        "applies_if": "Ei veloiteta, jos harrastaja on jo osallistunut HTU Stadin kurssille vuonna 2026.",
        "note": "Peritään ensimmäisen kurssikerran jälkeen."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "address"
    ],
    "verification_notes": "Ilmoittautuminen/myynti tälle kurssijaksolle alkaa vasta 19.10.2026 (sivun mukaan 'kurssit ovat myynnissä maanantaina 19.10.'); tarkistushetkellä 23.9.2026 ei eksplisiittistä auki/täynnä-tilaa, siksi availability_status=unknown eikä closed. Osoitetta ei mainittu sivulla (vain 'Jakomäen uimahalli').",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_31.json",
      "staging_id": "batch_2026-09-23_31-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_31/htu_perhe_caf3e662541c.html",
      "capture_sha256": "caf3e662541c01e317272d9b16866c0115e8c90383ce037ce6ff0d4d06518dee",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "uinti",
    "provider": "HTU Stadi",
    "group_name": "Taaperouinti, HTU Stadi (Jakomäen uimahalli)",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3v ikäisille.",
    "parent_child": "yes",
    "venue_name": "Jakomäen uimahalli",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:30",
    "end_time": "10:00",
    "season": "syksy 2026 (jakso 2)",
    "start_date": "2026-11-07",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 142.0,
    "price_basis": "Taaperouinti, 7x30min, HTU Stadi, Jakomäen uimahalli, lauantaisin 09:30-10:00, syksyn 2026 toinen kurssijakso 7.11. alkaen (HTU Stadin hinnasto/kurssisivu).",
    "membership_fee_eur": 5,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://htu.fi/perhe-ja-vauvauinti/",
    "source_quote": "Taaperouinti lauantaisin klo 9:30-10:00 7.11. alkaen ... Järjestämme taaperouintia (1-3v ikäisille). Osallistuakseen lapsi ei tarvitse aikaisempaa kokemusta. 7x30min, hinta 142 €",
    "activity_id": "hel-2026-0559",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 147.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://htu.fi/perhe-ja-vauvauinti/",
    "billing_period": "course",
    "price_period_start": "2026-11-07",
    "price_period_end": null,
    "season_start_date": "2026-11-07",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 142,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "7x30min kurssimaksu"
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "once",
        "applies_if": "Ei veloiteta, jos harrastaja on jo osallistunut HTU Stadin kurssille vuonna 2026.",
        "note": "Peritään ensimmäisen kurssikerran jälkeen."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "address"
    ],
    "verification_notes": "Ilmoittautuminen/myynti alkaa vasta 19.10.2026; tarkistushetkellä 23.9.2026 ei eksplisiittistä auki/täynnä-tilaa. Osoitetta ei mainittu sivulla.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_31.json",
      "staging_id": "batch_2026-09-23_31-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_31/htu_perhe_caf3e662541c.html",
      "capture_sha256": "caf3e662541c01e317272d9b16866c0115e8c90383ce037ce6ff0d4d06518dee",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "uinti",
    "provider": "HTU Stadi",
    "group_name": "Vesipeuhu, HTU Stadi (Jakomäen uimahalli)",
    "min_age": 3,
    "max_age": null,
    "eligibility_text": "Vesipeuhu (3+ vuotiaat).",
    "parent_child": "no",
    "venue_name": "Jakomäen uimahalli",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026 (jakso 2)",
    "start_date": "2026-11-05",
    "end_date": "2026-12-20",
    "sessions_count": null,
    "price_eur": 70.0,
    "price_basis": "Vesipeuhu, torstaikurssi 7x30min 70 € (vaihtoehtoisesti sunnuntaikurssi 6x30min 62 €), HTU Stadi, Jakomäen uimahalli (HTU Stadin kurssisivu).",
    "membership_fee_eur": 5,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://htu.fi/lasten-kurssit/",
    "source_quote": "Vesipeuhu (3+ vuotiaat) torstaisin 16:00-16:30 lauantaisin 10:00-10:30 sunnuntaisin 09:30-10:00 ja 10:00-10:30 ... torstai 7x30min, hinta 70 € sunnuntai 6x30min, hinta 62 €",
    "activity_id": "hel-2026-0560",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://htu.fi/lasten-kurssit/",
    "billing_period": "course",
    "price_period_start": "2026-11-05",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-11-05",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "torstaikurssi 7x30min"
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "once",
        "applies_if": "Ei veloiteta, jos harrastaja on jo osallistunut HTU Stadin kurssille vuonna 2026.",
        "note": "Peritään ensimmäisen kurssikerran jälkeen."
      }
    ],
    "price_options": [
      {
        "label": "Sunnuntaikurssi (6x30min)",
        "amount_eur": 62,
        "applies_if": "Valitsee sunnuntain kurssin torstain/lauantain sijaan",
        "includes": "6x30min, sunnuntaisin 09:30-10:00 tai 10:00-10:30"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "address"
    ],
    "verification_notes": "Ryhmä tarjolla useassa rinnakkaisessa vuorossa samalla nimellä ja hinnalla: torstaisin 16:00-16:30 (7x30min, 70 €), lauantaisin 10:00-10:30 (7x30min, 70 €), sunnuntaisin 09:30-10:00 ja 10:00-10:30 (6x30min, 62 €) - CLAUDE.md-linjaus 3: yksi rivi, ei pilkota, ambivalentit kentät null. Rivin hintana torstai/lauantai-vaihtoehto (7x30min, 70 €); sunnuntain 6-kertainen 62 € vaihtoehto price_options-kentässä. Myynti tälle jaksolle alkaa 19.10.2026 - ei eksplisiittistä auki/täynnä-tilaa 23.9.2026.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_31.json",
      "staging_id": "batch_2026-09-23_31-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_31/htu_lapset_05c934752782.html",
      "capture_sha256": "05c934752782878fecb3c23ba82f73805a2a9a1e35fa157aa9ae9356e992f145",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 46.32,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.51 kuukaudelle (2026-11-05–2026-12-20, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "uinti",
    "provider": "HTU Stadi",
    "group_name": "Alkeisuimakoulu, HTU Stadi (Jakomäen uimahalli)",
    "min_age": 4,
    "max_age": null,
    "eligibility_text": "Alkeisuimakoulu (ala-ikäraja 4 vuotta).",
    "parent_child": "no",
    "venue_name": "Jakomäen uimahalli",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026 (jakso 2)",
    "start_date": "2026-11-05",
    "end_date": "2026-12-20",
    "sessions_count": null,
    "price_eur": 70.0,
    "price_basis": "Alkeisuimakoulu, lauantaikurssi 7x30min 70 € (vaihtoehtoisesti sunnuntaikurssi 6x30min 62 €), HTU Stadi, Jakomäen uimahalli (HTU Stadin kurssisivu).",
    "membership_fee_eur": 5,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://htu.fi/lasten-kurssit/",
    "source_quote": "Alkeisuimakoulu (ala-ikäraja 4 vuotta) lauantaisin 10:30-11:00 sunnuntaisin 09:00-09:30 ja 10:30-11:00 ... Ala-ikäraja kurssille on 4 vuotta. lauantai 7x30min, hinta 70 € sunnuntai 6x30min, hinta 62 €",
    "activity_id": "hel-2026-0561",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://htu.fi/lasten-kurssit/",
    "billing_period": "course",
    "price_period_start": "2026-11-05",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-11-05",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "lauantaikurssi 7x30min"
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "once",
        "applies_if": "Ei veloiteta, jos harrastaja on jo osallistunut HTU Stadin kurssille vuonna 2026.",
        "note": "Peritään ensimmäisen kurssikerran jälkeen."
      }
    ],
    "price_options": [
      {
        "label": "Sunnuntaikurssi (6x30min)",
        "amount_eur": 62,
        "applies_if": "Valitsee sunnuntain kurssin lauantain sijaan",
        "includes": "6x30min, sunnuntaisin 09:00-09:30 tai 10:30-11:00"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "address"
    ],
    "verification_notes": "Ryhmä tarjolla useassa rinnakkaisessa vuorossa samalla nimellä ja hinnalla: lauantaisin 10:30-11:00 (7x30min, 70 €), sunnuntaisin 09:00-09:30 ja 10:30-11:00 (6x30min, 62 €) - CLAUDE.md-linjaus 3: yksi rivi, ei pilkota. Rivin hintana lauantai-vaihtoehto; sunnuntain 62 € price_options-kentässä. Myynti tälle jaksolle alkaa 19.10.2026 - ei eksplisiittistä auki/täynnä-tilaa 23.9.2026.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_31.json",
      "staging_id": "batch_2026-09-23_31-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_31/htu_lapset_05c934752782.html",
      "capture_sha256": "05c934752782878fecb3c23ba82f73805a2a9a1e35fa157aa9ae9356e992f145",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 46.32,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.51 kuukaudelle (2026-11-05–2026-12-20, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "uinti",
    "provider": "Pikku Delfiinit",
    "group_name": "Baby Delfiinit, Pikku Delfiinit",
    "min_age": 0,
    "max_age": 2,
    "eligibility_text": "Ikä: 3kk.-2v.",
    "parent_child": "yes",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "jatkuva (kuukausiveloitus)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 104.0,
    "price_basis": "Baby Delfiinit -ryhmä, 104 €/kk/lapsi, sisältää kaksi aikuista + lapsen (Pikku Delfiinien hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Uimapuku 19 € + 6 € toimitus; kestovaippa 22 € + 6 € toimitus (valinnainen).",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.pikkudelfiinit.fi/hinnasto",
    "source_quote": "Vauvauintiryhmä Baby Delfiinit 104 € / kk. / lapsi +mahdollinen sisarus (kaksonen) samassa ryhmässä -50% / sisarus / kk. 52€ / kk. Ikä: 3kk.-2v. Hinta sisältää kaksi aikuista + lapsi.",
    "activity_id": "hel-2026-0562",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 104.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.pikkudelfiinit.fi/hinnasto",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 104,
        "mandatory": true,
        "included": true,
        "recurrence": "month",
        "applies_if": null,
        "note": "Sisältää kaksi aikuista + lapsi."
      }
    ],
    "price_options": [
      {
        "label": "Sisarushinta (sisarus samassa ryhmässä)",
        "amount_eur": 52,
        "applies_if": "+mahdollinen sisarus (kaksonen) samassa ryhmässä -50% / sisarus / kk.",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 2,
      "verified": true
    },
    "optional_cost_notes": "Sisarusalennus samassa ryhmässä uivalle sisarukselle -50 %/kk (52 €/kk); eri ryhmissä uivalle sisarukselle -20 %/kk. Paperilasku 8 €/lasku.",
    "unverified_fields": [
      "venue_name",
      "address",
      "weekday",
      "start_time",
      "end_time",
      "sessions_count"
    ],
    "verification_notes": "Pikku Delfiineillä toimipisteet Meilahdessa, Hakaniemessä ja Töölössä Helsingissä (lisäksi Keilaniemi, Espoo - ei Helsingissä); hinnastosivu ei kerro ryhmäkohtaista paikkaa/aikaa, varaus tapahtuu erillisen ajanvarausjärjestelmän kautta. Korvaa/täydentää erän 2026-09-22_19 deferred-merkinnän 'Baby Delfiinit' - hinta on nyt julkinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_31.json",
      "staging_id": "batch_2026-09-23_31-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_31/pikkudelfiinit_hinnasto_7196d3ec7b1d.html",
      "capture_sha256": "7196d3ec7b1dc5d9679acf9cdef89fd909fffc38e378299a95c7e81a0c9c2614",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 104.0,
    "monthly_cost_basis": "104.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "uinti",
    "provider": "Pikku Delfiinit",
    "group_name": "Tähti Delfiinit, Pikku Delfiinit",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "Ikä: 3kk. ylöspäin - ei yläikärajaa.",
    "parent_child": "yes",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "jatkuva (kuukausiveloitus)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 125.0,
    "price_basis": "Tähtidelfiinit-ryhmä (edistyneemmät vauvauimarit / perheet joilla sisaruksia), 125 €/kk/lapsi, sisältää kaksi aikuista (Pikku Delfiinien hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.pikkudelfiinit.fi/hinnasto",
    "source_quote": "Tähtidelfiinit (=edistyneemmät vauvat sekä perheet joilla on sisaruksia) 125 € / kk. / lapsi +mahdollinen sisarus samassa ryhmässä -50% / sisarus / kk. 62,50€ / kk. Ikä: 3kk. ylöspäin - ei yläikärajaa Ryhmä on tarkoitettu edistyneemmille vauvauimareille, sekä myös perheille joilla on sisaruksia Hinta sisältää kaksi aikuista.",
    "activity_id": "hel-2026-0563",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.pikkudelfiinit.fi/hinnasto",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 125,
        "mandatory": true,
        "included": true,
        "recurrence": "month",
        "applies_if": null,
        "note": "Sisältää kaksi aikuista."
      }
    ],
    "price_options": [
      {
        "label": "Sisarushinta (sisarus samassa ryhmässä)",
        "amount_eur": 62.5,
        "applies_if": "+mahdollinen sisarus samassa ryhmässä -50% / sisarus / kk.",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 2,
      "verified": true
    },
    "optional_cost_notes": "Sisarusalennus samassa ryhmässä uivalle sisarukselle -50 %/kk (62,50 €/kk); eri ryhmissä uivalle sisarukselle -20 %/kk. Paperilasku 8 €/lasku.",
    "unverified_fields": [
      "venue_name",
      "address",
      "weekday",
      "start_time",
      "end_time",
      "sessions_count"
    ],
    "verification_notes": "Tarkoitettu edistyneemmille vauvauimareille sekä perheille, joilla on sisaruksia. Toimipisteet Meilahti/Hakaniemi/Töölö (Helsinki) + Keilaniemi (Espoo, ei mukana). Korvaa/täydentää erän 2026-09-22_19 deferred-merkinnän 'Tähti Delfiinit' - hinta on nyt julkinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_31.json",
      "staging_id": "batch_2026-09-23_31-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_31/pikkudelfiinit_hinnasto_7196d3ec7b1d.html",
      "capture_sha256": "7196d3ec7b1dc5d9679acf9cdef89fd909fffc38e378299a95c7e81a0c9c2614",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 125.0,
    "monthly_cost_basis": "125.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "uinti",
    "provider": "Pikku Delfiinit",
    "group_name": "Perheuimakoulu, Pikku Delfiinit",
    "min_age": 3,
    "max_age": null,
    "eligibility_text": "Perheuimakoulussa 3v. ylöspäin - ei yläikärajaa.",
    "parent_child": "yes",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "jatkuva (kuukausiveloitus)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 129.0,
    "price_basis": "Perheuimakoulu, 129 €/kk/lapsi, sisältää kaksi aikuista, mahdollinen sisarus 1v. ylöspäin samassa hinnassa (Pikku Delfiinien hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.pikkudelfiinit.fi/hinnasto",
    "source_quote": "Perheuimakoulu ja lasten tekniikkaryhmä Delfiinien Timantit 129 € / kk. / lapsi +mahdollinen sisarus samassa ryhmässä -50% / sisarus / kk. 64,50€ / kk. Ikä: Perheuimakoulussa3v. ylöspäin - ei yläikärajaa (mahdollinen sisarus 1v. ylöspäin - ei yläikärajaa) Delfiinien Timantit5v.ylöspäin - ei yläikärajaa.",
    "activity_id": "hel-2026-0564",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.pikkudelfiinit.fi/hinnasto",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 129,
        "mandatory": true,
        "included": true,
        "recurrence": "month",
        "applies_if": null,
        "note": "Sisältää kaksi aikuista; mahdollinen sisarus 1v. ylöspäin."
      }
    ],
    "price_options": [
      {
        "label": "Sisarushinta (sisarus samassa ryhmässä)",
        "amount_eur": 64.5,
        "applies_if": "+mahdollinen sisarus samassa ryhmässä -50% / sisarus / kk.",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 2,
      "verified": true
    },
    "optional_cost_notes": "Sisarusalennus samassa ryhmässä uivalle sisarukselle -50 %/kk (64,50 €/kk); eri ryhmissä uivalle sisarukselle -20 %/kk. Paperilasku 8 €/lasku.",
    "unverified_fields": [
      "venue_name",
      "address",
      "weekday",
      "start_time",
      "end_time",
      "sessions_count"
    ],
    "verification_notes": "Eri ryhmä kuin samalla hinnalla listattu 'Delfiinien Timantit' -tekniikkaryhmä (5v. ylöspäin, vaatii 20 m itsenäisen uimataidon syvässä vedessä, ei omaa aikuista altaassa) - katso evidence.distinct_from. Korvaa/täydentää erän 2026-09-22_19 deferred-merkinnän 'Perheuimakoulu' - hinta on nyt julkinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_31.json",
      "staging_id": "batch_2026-09-23_31-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_31/pikkudelfiinit_hinnasto_7196d3ec7b1d.html",
      "capture_sha256": "7196d3ec7b1dc5d9679acf9cdef89fd909fffc38e378299a95c7e81a0c9c2614",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 129.0,
    "monthly_cost_basis": "129.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "uinti",
    "provider": "Pikku Delfiinit",
    "group_name": "Delfiinien Timantit (lasten tekniikkaryhmä), Pikku Delfiinit",
    "min_age": 5,
    "max_age": null,
    "eligibility_text": "Delfiinien Timantit 5v. ylöspäin - ei yläikärajaa. Vaatii 20 m itsenäisen uimataidon syvässä vedessä.",
    "parent_child": "no",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "jatkuva (kuukausiveloitus)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 129.0,
    "price_basis": "Delfiinien Timantit -tekniikkaryhmä, 129 €/kk/lapsi (Pikku Delfiinien hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Lähtövaatimus: 20 m itsenäinen uimataito syvässä vedessä. Altaassa ollaan jo ilman omaa aikuista.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.pikkudelfiinit.fi/hinnasto",
    "source_quote": "Perheuimakoulu ja lasten tekniikkaryhmä Delfiinien Timantit 129 € / kk. / lapsi ... Delfiinien Timantit5v.ylöspäin - ei yläikärajaa. Huom! Timanteissa 20 m itsenäinen uimataito syvässä vedessä välttämätön. Altaassa ollaan jo ilman omaa aikuista.",
    "activity_id": "hel-2026-0565",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.pikkudelfiinit.fi/hinnasto",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 129,
        "mandatory": true,
        "included": true,
        "recurrence": "month",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Sisarushinta (sisarus samassa ryhmässä)",
        "amount_eur": 64.5,
        "applies_if": "+mahdollinen sisarus samassa ryhmässä -50% / sisarus / kk.",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Sisarusalennus samassa ryhmässä uivalle sisarukselle -50 %/kk (64,50 €/kk); eri ryhmissä uivalle sisarukselle -20 %/kk. Paperilasku 8 €/lasku.",
    "unverified_fields": [
      "venue_name",
      "address",
      "weekday",
      "start_time",
      "end_time",
      "sessions_count"
    ],
    "verification_notes": "Eri ryhmä kuin samalla hinnalla listattu 'Perheuimakoulu' (3v. ylöspäin, aikuinen mukana altaassa) - katso evidence.distinct_from.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_31.json",
      "staging_id": "batch_2026-09-23_31-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_31/pikkudelfiinit_hinnasto_7196d3ec7b1d.html",
      "capture_sha256": "7196d3ec7b1dc5d9679acf9cdef89fd909fffc38e378299a95c7e81a0c9c2614",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 129.0,
    "monthly_cost_basis": "129.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tennis",
    "provider": "SATA-Tennis ry",
    "group_name": "Tempputennis (Taso 1), SATA-Tennis",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5 - 6 v. (2020 ja 2021 syntyneet).",
    "parent_child": "no",
    "venue_name": "Laajasalon Tennishallit",
    "address": "Sarvastonkaari 23, 00840 Helsinki",
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "sisäkausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 19.0,
    "price_basis": "U10-valmennus/Tempputennis, 1. viikkotunti 19 €/vko, lisäviikkotunnit 16,50 €/vko (SATA-Tenniksen hinnasto ja maksutavat -sivu); laskutus kahdessa jaksossa syyskaudella (17.8.-18.10. ja 19.10.-23.12.2026).",
    "membership_fee_eur": 25,
    "other_required_fees": null,
    "equipment_notes": "Pelipallona softis; pelialue kasvatetaan vähitellen minitenniskentälle. Ryhmäkoko max 16 lasta/3 ohjaajaa.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.sata-tennis.fi/lapset-nuoret/u10-valmennus/",
    "source_quote": "TASO 1 - TEMPPUTENNIS 5 - 6 v. (2020 ja 2021 syntyneet), 1 - 2 krt/vko ... Alustavat harjoitusajat sisäkaudella ovat lauantaiaamupäivisin ja maanantaisin klo 17:00 - 18:00.",
    "activity_id": "hel-2026-0566",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 44.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.sata-tennis.fi/seura/hinnat-ja-maksutavat/",
    "billing_period": "week",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-23",
    "season_start_date": "2026-08-17",
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 19,
        "mandatory": true,
        "included": true,
        "recurrence": "week",
        "applies_if": null,
        "note": "1. viikkotunti; suositellaan 2 krt/vko, jolloin lisäviikkotunti 16,50 €/vko."
      },
      {
        "type": "membership",
        "amount_eur": 25,
        "mandatory": true,
        "included": false,
        "recurrence": "year",
        "applies_if": null,
        "note": "Lapset (alle 18v) -jäsenmaksu; edellytys valmennukseen osallistumiselle."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Suositellaan kahta harjoituskertaa viikossa oppimistavoitteiden saavuttamiseksi; toinen viikkotunti 16,50 €/vko.",
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "sessions_count"
    ],
    "verification_notes": "Ryhmä tarjolla kahdessa rinnakkaisessa alustavassa vuorossa: 'lauantaiaamupäivisin' ja 'maanantaisin klo 17:00-18:00' - CLAUDE.md-linjaus 3: yksi rivi, ei pilkota, ajat sananmukaisesti tähän. Syyskausi alkanut viikolla 33 (17.8.2026); ei eksplisiittistä auki/täynnä-tilaa sivulla 23.9.2026, siksi availability_status=unknown huolimatta kauden alkamisesta (CLAUDE.md 7.5). Hinta on viikoittainen valmennusmaksu (U10-valmennus, ei ryhmäkohtaisesti eritelty); jäsenmaksu (Lapset alle 18v 25 €/vuosi) on pakollinen edellytys osallistumiselle.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_31.json",
      "staging_id": "batch_2026-09-23_31-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_31/sata_u10_b1c6265796c3.html",
      "capture_sha256": "b1c6265796c3b4d1090972518e7d697114735758f45c6333d22f9b1b1a865125",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa week ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Laajasalo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Laajasalo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "taekwondo",
    "provider": "Taekwondourheilijat 2011 ry (TU11)",
    "group_name": "Lapset (3-6-vuotiaat), TU11",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3-6-vuotiaat.",
    "parent_child": "no",
    "venue_name": "TU11 Taekwondosali",
    "address": "Ristipellontie 14, 00390 Helsinki",
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "jatkuva (kausilaskutus 3kk jaksoissa)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 59.0,
    "price_basis": "Harrastajaryhmä 3-6v, Perustreeni, 59 €/kk (TU11:n hinnasto); harjoitusmaksut laskutetaan 3 kk jaksoissa.",
    "membership_fee_eur": 30,
    "other_required_fees": null,
    "equipment_notes": "3-6-vuotiaiden ryhmät harjoittelevat kaksi kertaa viikossa; tasokokeet kauden päätteeksi (tiikeri-/lohikäärmemerkki), 7 vuotta täytettyään siirrytään 7-9-vuotiaiden ryhmään.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://tu11.fi/harjoitusryhmat/",
    "source_quote": "Lapset (3-6-vuotiaat) 3–6-vuotiaiden ryhmät harjoittelevat kaksi kertaa viikossa. || R yhmä Hinta Perustreeni Ottelu / poomsae Kunto-taekwondo 3-6v 59 € / kk X || Taekwondourheilijat 2011 ry:n jäsenmaksu on 30 euroa, joka veloitetaan kaikilta harrastajiltamme.",
    "activity_id": "hel-2026-0567",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 89.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://tu11.fi/hinnasto/",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 59,
        "mandatory": true,
        "included": true,
        "recurrence": "month",
        "applies_if": null,
        "note": "Perustreeni-ryhmä 3-6v."
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "year",
        "applies_if": null,
        "note": "Taekwondourheilijat 2011 ry:n jäsenmaksu, veloitetaan kaikilta harrastajilta."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Vaihtoehtoisesti 10 harjoituskerran kortti 110 €/kk-hintainen kokonaisuus (X Perustreeni/Ottelu-poomsae/Kunto-taekwondo); perhealennus -15 % kuukausimaksuista, jos samasta perheestä useampi harrastaja.",
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "sessions_count"
    ],
    "verification_notes": "Harjoitusajat-sivulla (tu11.fi/harjoitusajat-2/) tarkka viikonpäivä/kellonaika on kuvana (JPEG), ei tekstinä - ei saatu sananmukaista otetta ajoista; ryhmä harjoittelee 2 krt/vko useassa rinnakkaisessa vuorossa. Osoite on seuran salin osoite (Ristipellontie 14).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_31.json",
      "staging_id": "batch_2026-09-23_31-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_31/tu11_ryhmat_740ffb7e07b1.html",
      "capture_sha256": "740ffb7e07b1adadb3a9b65092a4ed2281339c58aad256329ccafa72e78fc4a8",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 61.5,
    "monthly_cost_basis": "59.0 €/kk + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Konala",
    "district_basis": "geokoodattu osoite -> neighborhood 'Konala' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "luistelu",
    "provider": "Oulunkylän Kiekko-Kerho (OKK)",
    "group_name": "Lapsi-vanhempi -luistelukoulu, OKK",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 -vuotiaille luistelusta kiinnostuneille tytöille ja pojille ilman taitovaatimuksia.",
    "parent_child": "yes",
    "venue_name": "Oulunkylän jäähalli",
    "address": "Käskynhaltijantie 11, 00640 Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "12:30",
    "end_time": "13:10",
    "season": "kausi 2026-2027",
    "start_date": "2026-09-06",
    "end_date": "2026-12-13",
    "sessions_count": 13,
    "price_eur": 70.0,
    "price_basis": "Lapsi-vanhempi -luistelukoulu, syyskausi 70 € (13 kertaa, 6.9.-13.12.2026); koko kausi (syksy+kevät, 28 kertaa) 120 €. Jäsenmaksu 20 €/vuosi sisältyy hintaan. (OKK:n ilmoittautumislomake.)",
    "membership_fee_eur": 20,
    "other_required_fees": null,
    "equipment_notes": "Varusteina teroitetut luistimet ja kypärä; kevyt vaatetus, jäähallissa ei tarvita toppavaatteita.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.okk.fi/lomakkeet/9447/lapsi-vanhempi-luistelukoulu-2026-2027",
    "source_quote": "Lapsi-vanhempi -luistelukoulu on tarkoitettu kaikille 4-6 -vuotiaille luistelusta kiinnostuneille tytöille ja pojille ilman taitovaatimuksia. Varusteina teroitetut luistimet ja kypärä. ... Syyskaudella 6.9.-13.12.2026 ja kevätkausi 10.1.-11.4.2027. (13 kertaa syksyllä, 15 kertaa keväällä.) Oulunkylän jäähallissa (Käskynhaltijantie 11, 00640 Helsinki) sunnuntaisin klo 12.30-13.10. ... Syyskausi 70 € Voit myös ilmoittautua mukaan koko kaudeksi (syys+kevätkausi) hintaan 120€. Ilmoittautuminen on sitova. Seuran jäsenmaksu on 20 euroa/vuosi (sisältyy hintaan).",
    "activity_id": "hel-2026-0568",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 70.0,
    "price_per_session_eur": 5.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.okk.fi/lomakkeet/9447/lapsi-vanhempi-luistelukoulu-2026-2027",
    "billing_period": "term",
    "price_period_start": "2026-09-06",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-06",
    "season_end_date": "2027-04-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.okk.fi/lomakkeet/9447/lapsi-vanhempi-luistelukoulu-2026-2027",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Syyskausi, 13 kertaa."
      }
    ],
    "price_options": [
      {
        "label": "Koko kausi (syksy + kevät)",
        "amount_eur": 120,
        "applies_if": "Ilmoittautuu suoraan koko kaudeksi 6.9.2026-11.4.2027",
        "includes": "13 kertaa syksyllä + 15 kertaa keväällä = 28 kertaa"
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": "Seuran jäsenmaksu 20 €/vuosi sisältyy hintaan (ei erillinen lisämaksu).",
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumislomake (okk.fi/lomakkeet/9447) oli toiminnassa 23.9.2026 ('Siirry vastaamaan' -painike), mutta sivu ei ilmoita eksplisiittistä auki/täynnä-tilaa, joten availability_status=unknown (CLAUDE.md: saatavuutta ei päätellä ilmoittautumislinkistä). Kausi on jo alkanut 6.9.2026 (CLAUDE.md 7.5: ei hylkäysperuste, ei myöskään closed ilman eksplisiittistä ilmoitusta).",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_31.json",
      "staging_id": "batch_2026-09-23_31-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_31/okk_lapsi_vanhempi_luistelukoulu_7119ed8d4e3d.txt",
      "capture_sha256": "7119ed8d4e3d25a1db6213325571326aa6094d22c74a25c346137b18d3d7765f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 21.52,
    "monthly_cost_basis": "70.0 € / term jaettuna 3.25 kuukaudelle (2026-09-06–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Oulunkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Oulunkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "jalkapallo",
    "provider": "Pohjois-Haagan Urheilijat ry (FC POHU)",
    "group_name": "Futiskerho Kesä 2026, FC POHU, POHU Areena",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "tytöt ja pojat 2017-2022",
    "parent_child": "no",
    "venue_name": "POHU Areena, Lassilan liikuntapuisto, tekonurmi",
    "address": "Laurinniitynpolku 2, Helsinki",
    "district": "Pohjois-Haaga",
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "18:50",
    "season": "kesä 2026",
    "start_date": "2026-05-06",
    "end_date": "2026-08-26",
    "sessions_count": 10,
    "price_eur": 95.0,
    "price_basis": "Osallistumismaksu: 95€, sisältää FC POHU Stanno t-paidan, Mitre pallon ja vakuutuksen.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "T-paidan koko merkittävä ilmoittautuessa, pienin koko 116cm.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.fcpohu.fi/futiskerhot-ja-leirit/futiskerho2026/",
    "source_quote": "FUTISKERHO KESÄ 2026 (TYTÖT JA POJAT 2017-2022) Keskiviikkoisin 6.5. alkaen klo 18-18.50 ... 10 KERTAA, KESKIVIIKKOISIN KLO 18-18.50 Touko-elokuu 6.5.-17.6. ja 12.8.-26.8.2026 (10 kertaa) Paikka: POHU Areena, Lassilan liikuntapuisto, tekonurmi, Laurinniitynpolku 2, 00440 Helsinki Osallistumismaksu: 95€, sisältää FC POHU Stanno t-paidan, Mitre pallon ja vakuutuksen.",
    "activity_id": "hel-2026-0569",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 95.0,
    "price_per_session_eur": 9.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.fcpohu.fi/futiskerhot-ja-leirit/futiskerho2026/",
    "billing_period": "course",
    "price_period_start": "2026-05-06",
    "price_period_end": "2026-08-26",
    "season_start_date": "2026-05-06",
    "season_end_date": "2026-08-26",
    "birth_year_min": 2017,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.fcpohu.fi/futiskerhot-ja-leirit/futiskerho2026/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 95,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää Stanno t-paidan, Mitre-pallon ja vakuutuksen; ei erillistä seuran jäsenmaksua mainittu tälle kerholle."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Halutessaan voi samalla hankkia muita Stanno-seuravarusteita (pelisukat, shortsit) vapaaehtoisesti ilmoittautumisen yhteydessä.",
    "unverified_fields": [],
    "verification_notes": "Lähde: fcpohu.fi/futiskerhot-ja-leirit/futiskerho2026/ (23.9.2026). Ikähaarukka 2017-2022-syntyneet (n. 4-9 v) osuu osittain 0-6 v rajaukseen (alaraja 2022-synt. = 4 v, CLAUDE.md-säännön mukaan riittää). Tytöille ja pojille omat ryhmät samalla hinnalla/aikataululla - kirjattu yhtenä rivinä sananmukaisen ilmoituksen mukaisesti (\"Tytöillä ja pojilla omat ryhmät\", ei erillisiä hintoja/aikoja). 10 kertaa jakautuu kahteen jaksoon (6.5.-17.6. ja 12.8.-26.8.2026), kaikki keskiviikkoisin klo 18-18.50 - yksi rivi CLAUDE.md-linjauksen 3 mukaisesti, jakso kirjattu sananmukaisesti. Saatavuutta ei mainittu ryhmäkohtaisesti -> unknown.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_32.json",
      "staging_id": "batch_2026-09-23_32-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_32/fcpohu_7a19fd228be7.html",
      "capture_sha256": "7a19fd228be705c1e4f418db7fdca5a805d040fde50cbfc7cb42d1e3653c4753",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "monthly_cost_eur": 25.59,
    "monthly_cost_basis": "95.0 € / course jaettuna 3.71 kuukaudelle (2026-05-06–2026-08-26, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pohjois-Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssiklubi Master ry",
    "group_name": "Tanssin ABC 4-6 v., Tanssiklubi Master, ma/ke",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 VUOTIAILLE",
    "parent_child": "no",
    "venue_name": "Tanssiklubi Master ry",
    "address": "Itäkatu 5, Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 85.0,
    "price_basis": "85 €/kk (8 tuntia)",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": "Ensimmäiselle tunnille mukavat vaatteet, jotka eivät rajoita liikkeitä; myöhemmin tossut tai tanssilenkkarit.",
    "trial_info": "Ensimmäinen tunti on tutustumiskerta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssiklubimaster.fi/lasten-tanssi/tanssin-abc",
    "source_quote": "TANSSIN ABC 4-6 VUOTIAILLE ... maanantai / keskiviikko Aika 17:30-18:15 Opettaja Emilia Syyskausi 03.08.2026-16.12.2026 Loma 17.12.2026-04.01.2027 85 €/kk(8 tuntia) (Jäsenmaksu 35 euroa/vuosi)",
    "activity_id": "hel-2026-0570",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 120.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssiklubimaster.fi/lasten-tanssi/tanssin-abc",
    "billing_period": "month",
    "price_period_start": "2026-08-03",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-08-03",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 85,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "85 €/kk, 8 tuntia/kk (2 x 45 min/vko)."
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 35 euroa/vuosi."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Renderöity headless-selaimella (Chrome/Puppeteer) 23.9.2026, sivu tanssiklubimaster.fi/lasten-tanssi/tanssin-abc on JS-sovellus (Webflow); navigointi aikakatkaistiin (45s) mutta näkyvä teksti saatiin talteen ennen katkaisua. Tallenne: data/staging/evidence_local/batch_2026-09-23_32/master_tanssiabc_ae79d1f13c01.txt. Kolme rinnakkaista aikataulua samalle Tanssin ABC -ohjelmalle (ma/ke, ti/to, su) - kirjattu kolmena erillisenä rivinä, koska opettaja, viikonpäivät ja su-ryhmän hinta/tuntimäärä poikkeavat. Kausi 'Syyskausi 03.08.2026-16.12.2026', loma 17.12.2026-04.01.2027.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_32.json",
      "staging_id": "batch_2026-09-23_32-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_32/master_tanssiabc_ae79d1f13c01.txt",
      "capture_sha256": "ae79d1f13c013329b4f765a2806ea7067c1f0efb117a652f730a513d775a2a86",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 87.92,
    "monthly_cost_basis": "85.0 €/kk + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Itäkeskus",
    "district_basis": "geokoodattu osoite -> sub_district 'Itäkeskus' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssiklubi Master ry",
    "group_name": "Tanssin ABC 4-6 v., Tanssiklubi Master, ti/to",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 VUOTIAILLE",
    "parent_child": "no",
    "venue_name": "Tanssiklubi Master ry",
    "address": "Itäkatu 5, Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 85.0,
    "price_basis": "85 €/kk (8 tuntia)",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": "Ensimmäiselle tunnille mukavat vaatteet, jotka eivät rajoita liikkeitä; myöhemmin tossut tai tanssilenkkarit.",
    "trial_info": "Ensimmäinen tunti on tutustumiskerta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssiklubimaster.fi/lasten-tanssi/tanssin-abc",
    "source_quote": "tiistai / torstai Aika 17:30-18:15 Opettaja Diana Syyskausi 04.08.2026-17.12.2026 Loma 18.12.2026-05.01.2027 85 €/kk(8 tuntia) (Jäsenmaksu 35 euroa/vuosi)",
    "activity_id": "hel-2026-0571",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 120.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssiklubimaster.fi/lasten-tanssi/tanssin-abc",
    "billing_period": "month",
    "price_period_start": "2026-08-04",
    "price_period_end": "2026-12-17",
    "season_start_date": "2026-08-04",
    "season_end_date": "2026-12-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 85,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "85 €/kk, 8 tuntia/kk (2 x 45 min/vko)."
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 35 euroa/vuosi."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Renderöity headless-selaimella 23.9.2026, ks. rivin -003 huomautus samasta sivusta (tanssiklubimaster.fi/lasten-tanssi/tanssin-abc). Kausi 'Syyskausi 04.08.2026-17.12.2026', loma 18.12.2026-05.01.2027.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_32.json",
      "staging_id": "batch_2026-09-23_32-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_32/master_tanssiabc_ae79d1f13c01.txt",
      "capture_sha256": "ae79d1f13c013329b4f765a2806ea7067c1f0efb117a652f730a513d775a2a86",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 87.92,
    "monthly_cost_basis": "85.0 €/kk + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Itäkeskus",
    "district_basis": "geokoodattu osoite -> sub_district 'Itäkeskus' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssiklubi Master ry",
    "group_name": "Tanssin ABC 4-6 v., Tanssiklubi Master, su",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 VUOTIAILLE",
    "parent_child": "no",
    "venue_name": "Tanssiklubi Master ry",
    "address": "Itäkatu 5, Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "11:00",
    "end_time": "11:45",
    "season": "syksy 2026",
    "start_date": "2026-08-09",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 58.0,
    "price_basis": "58 €/kk (4 tuntia)",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": "Ensimmäiselle tunnille mukavat vaatteet, jotka eivät rajoita liikkeitä; myöhemmin tossut tai tanssilenkkarit.",
    "trial_info": "Ensimmäinen tunti on tutustumiskerta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssiklubimaster.fi/lasten-tanssi/tanssin-abc",
    "source_quote": "sunnuntai Aika 11:00-11:45 Opettaja Diana Syyskausi 09.08.2026-20.12.2026 Loma 20.12.2026-10.01.2027 58 €/kk(4 tuntia) (Jäsenmaksu 35 euroa/vuosi)",
    "activity_id": "hel-2026-0572",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 93.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssiklubimaster.fi/lasten-tanssi/tanssin-abc",
    "billing_period": "month",
    "price_period_start": "2026-08-09",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-09",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 58,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "58 €/kk, 4 tuntia/kk (1 x 45 min/vko)."
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Jäsenmaksu 35 euroa/vuosi."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Renderöity headless-selaimella 23.9.2026, ks. rivin -003 huomautus samasta sivusta (tanssiklubimaster.fi/lasten-tanssi/tanssin-abc). Kausi 'Syyskausi 09.08.2026-20.12.2026', loma 20.12.2026-10.01.2027. Opettaja sama (Diana) kuin ti/to-ryhmällä, mutta eri viikonpäivä/hinta -> oma rivi.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_32.json",
      "staging_id": "batch_2026-09-23_32-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_32/master_tanssiabc_ae79d1f13c01.txt",
      "capture_sha256": "ae79d1f13c013329b4f765a2806ea7067c1f0efb117a652f730a513d775a2a86",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:36:47+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "monthly_cost_eur": 60.92,
    "monthly_cost_basis": "58.0 €/kk + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Itäkeskus",
    "district_basis": "geokoodattu osoite -> sub_district 'Itäkeskus' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "jalkapallo",
    "provider": "FC Viikingit ry",
    "group_name": "Futisleikkis Aurinkolahti 2021–2022 syntyneet, syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2021–2022-syntyneet tytöt ja pojat",
    "parent_child": "no",
    "venue_name": "Kanavan koulun kenttä (9.–23.9.), Kanavan koulun liikuntasali (30.9. alkaen)",
    "address": "Aurinkotuulenkatu 11",
    "district": "Aurinkolahti",
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-09",
    "end_date": "2026-11-25",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "syyskausi 2026, 11 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3) ja juomapullo; hinta sisältää vakuutuksen ja t-paidan. Huoltaja seuraa harjoituksia paikan päällä.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://fcviikingit.fi/uutiset/150797/ilmoittautuminen-syksyn-perhefutikseen-ja-futisleikkikseen-o",
    "source_quote": "Futisleikkis Aurinkolahti keskiviikkoisin, 2021–2022-syntyneet, klo 17:45–18:30. Syyskauden hinta on 105€. Hinta sisältää ohjauksen 11krt.",
    "activity_id": "hel-2026-0573",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari2.nsf/ilmoall?openform&s=n&id=53C811984632B18BC2258DFF0046E1C0",
    "billing_period": "term",
    "price_period_start": "2026-09-09",
    "price_period_end": "2026-11-25",
    "season_start_date": "2026-09-09",
    "season_end_date": "2026-11-25",
    "birth_year_min": 2021,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://fcviikingit.fi/uutiset/150797/ilmoittautuminen-syksyn-perhefutikseen-ja-futisleikkikseen-o",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt ja vakuutuksen (Liikuntaleikki Helsinki ry:n ilmoittautumislomake)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Järjestäjinä FC Viikingit ja Liikuntaleikki Helsinki ry; ilmoittautuminen ja laskutus Liikuntaleikin Ilmarix-lomakkeella (price_source_url). Kertamäärä 11 = FC Viikinkien uutisen päivämäärälista (11 toteutuvaa, perutut: 2026-10-14) ja lomakkeen '11krt' täsmäävät. Jäsenmaksua ei mainita kummassakaan lähteessä. QA: liikuntaleikki.fi/info (erän 03 tallenne liikuntaleikki_info_5ae1c20e8a67.html) kertoo 'Naperofutis/perhefutis/temppukoulu: vuoden ensimmäiseen osallistumismaksuun sisältyy 10€ jäsenmaksu'; Futisleikkistä ei mainita. Jos ehto koskee myös tätä ryhmää, jäsenmaksu sisältyy 105 €:oon (ei lisäkulua). | Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä. | Korjaus 23.9.2026 (c): membership_fee_eur epävarma, joten price_completeness=incomplete ja has_unpriced_required_fee=true (comparison_eligible=false, ei kertahintaa) - hinta ei ollut varmuudella täydellinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_01.json",
      "staging_id": "batch_2026-09-21_01-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_01/fcv_perhe_8b0969326246.html",
      "capture_sha256": "8b0969326246027b1ee1ebd0c941de107e5526ee0db49e8dd2398835145df305",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-09–2026-11-25, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Aurinkolahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "FC Viikingit ry",
    "group_name": "Futisleikkis Aurinkolahti 2019–2021 syntyneet, syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2019–2021-syntyneet tytöt ja pojat",
    "parent_child": "no",
    "venue_name": "Kanavan koulun kenttä (9.–23.9.), Kanavan koulun liikuntasali (30.9. alkaen)",
    "address": "Aurinkotuulenkatu 11",
    "district": "Aurinkolahti",
    "weekday": "keskiviikko",
    "start_time": "18:30",
    "end_time": "19:15",
    "season": "syksy 2026",
    "start_date": "2026-09-09",
    "end_date": "2026-11-25",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "syyskausi 2026, 11 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3) ja juomapullo; hinta sisältää vakuutuksen ja t-paidan. Huoltaja seuraa harjoituksia paikan päällä.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://fcviikingit.fi/uutiset/150797/ilmoittautuminen-syksyn-perhefutikseen-ja-futisleikkikseen-o",
    "source_quote": "Futisleikkis Aurinkolahti keskiviikkoisin, 2019–2021-syntyneet, klo 18:30–19:15. Syyskauden hinta on 105€. Hinta sisältää ohjauksen 11krt.",
    "activity_id": "hel-2026-0574",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari2.nsf/ilmoall?openform&s=n&id=53C811984632B18BC2258DFF0046E1C0",
    "billing_period": "term",
    "price_period_start": "2026-09-09",
    "price_period_end": "2026-11-25",
    "season_start_date": "2026-09-09",
    "season_end_date": "2026-11-25",
    "birth_year_min": 2019,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://fcviikingit.fi/uutiset/150797/ilmoittautuminen-syksyn-perhefutikseen-ja-futisleikkikseen-o",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt ja vakuutuksen (Liikuntaleikki Helsinki ry:n ilmoittautumislomake)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Järjestäjinä FC Viikingit ja Liikuntaleikki Helsinki ry; ilmoittautuminen ja laskutus Liikuntaleikin Ilmarix-lomakkeella (price_source_url). Kertamäärä 11 = FC Viikinkien uutisen päivämäärälista (11 toteutuvaa, perutut: 2026-10-14) ja lomakkeen '11krt' täsmäävät. Jäsenmaksua ei mainita kummassakaan lähteessä. QA: liikuntaleikki.fi/info (erän 03 tallenne liikuntaleikki_info_5ae1c20e8a67.html) kertoo 'Naperofutis/perhefutis/temppukoulu: vuoden ensimmäiseen osallistumismaksuun sisältyy 10€ jäsenmaksu'; Futisleikkistä ei mainita. Jos ehto koskee myös tätä ryhmää, jäsenmaksu sisältyy 105 €:oon (ei lisäkulua). | Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä. | Korjaus 23.9.2026 (c): membership_fee_eur epävarma, joten price_completeness=incomplete ja has_unpriced_required_fee=true (comparison_eligible=false, ei kertahintaa) - hinta ei ollut varmuudella täydellinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_01.json",
      "staging_id": "batch_2026-09-21_01-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_01/fcv_perhe_8b0969326246.html",
      "capture_sha256": "8b0969326246027b1ee1ebd0c941de107e5526ee0db49e8dd2398835145df305",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-09–2026-11-25, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Aurinkolahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "FC Viikingit ry",
    "group_name": "Futisleikkis Vuosaari 2019–2022 syntyneet, syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2019–2022-syntyneet tytöt ja pojat",
    "parent_child": "no",
    "venue_name": "Puistopolun peruskoulun kenttä (7.–21.9.), Vuoniityn peruskoulun sali (28.9. alkaen)",
    "address": "Punakiventie 4 (kenttä); Venemestarintie 14 (sali)",
    "district": "Vuosaari",
    "weekday": "maanantai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-07",
    "end_date": "2026-11-23",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "syyskausi 2026, 11 kertaa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3) ja juomapullo; hinta sisältää vakuutuksen ja t-paidan. Huoltaja seuraa harjoituksia paikan päällä.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://fcviikingit.fi/uutiset/150797/ilmoittautuminen-syksyn-perhefutikseen-ja-futisleikkikseen-o",
    "source_quote": "Futisleikkis Vuosaari maanantaisin, 2019–2022-syntyneet, klo 17:45–18:30. Syyskauden hinta on 105€. Hinta sisältää ohjauksen 11krt.",
    "activity_id": "hel-2026-0575",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari2.nsf/ilmoall?openform&s=n&id=53C811984632B18BC2258DFF0046E1C0",
    "billing_period": "term",
    "price_period_start": "2026-09-07",
    "price_period_end": "2026-11-23",
    "season_start_date": "2026-09-07",
    "season_end_date": "2026-11-23",
    "birth_year_min": 2019,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://fcviikingit.fi/uutiset/150797/ilmoittautuminen-syksyn-perhefutikseen-ja-futisleikkikseen-o",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt ja vakuutuksen (Liikuntaleikki Helsinki ry:n ilmoittautumislomake)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Järjestäjinä FC Viikingit ja Liikuntaleikki Helsinki ry; ilmoittautuminen ja laskutus Liikuntaleikin Ilmarix-lomakkeella (price_source_url). Kertamäärä 11 = FC Viikinkien uutisen päivämäärälista (11 toteutuvaa, perutut: 2026-10-12) ja lomakkeen '11krt' täsmäävät. Jäsenmaksua ei mainita kummassakaan lähteessä. QA: liikuntaleikki.fi/info (erän 03 tallenne liikuntaleikki_info_5ae1c20e8a67.html) kertoo 'Naperofutis/perhefutis/temppukoulu: vuoden ensimmäiseen osallistumismaksuun sisältyy 10€ jäsenmaksu'; Futisleikkistä ei mainita. Jos ehto koskee myös tätä ryhmää, jäsenmaksu sisältyy 105 €:oon (ei lisäkulua). | Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä. | Korjaus 23.9.2026 (c): membership_fee_eur epävarma, joten price_completeness=incomplete ja has_unpriced_required_fee=true (comparison_eligible=false, ei kertahintaa) - hinta ei ollut varmuudella täydellinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_01.json",
      "staging_id": "batch_2026-09-21_01-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_01/fcv_perhe_8b0969326246.html",
      "capture_sha256": "8b0969326246027b1ee1ebd0c941de107e5526ee0db49e8dd2398835145df305",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-07–2026-11-23, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Futisliikkari Puotinkylä 2023-2022-syntyneet, syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2023-2022-syntyneet tytöt ja pojat",
    "parent_child": "no",
    "venue_name": "Vartiokylän yläasteen sali",
    "address": "Rusthollarintie 6",
    "district": "Puotinkylä",
    "weekday": "maanantai",
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-09-07",
    "end_date": "2026-11-23",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskauden hinta; sis. ohjauksen 11 krt, vakuutuksen, Puotinkylän Valtin pelipassin ja t-paidan",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.valtti1946.fi/syksyn-futisliikkari-ja-perhefutis/",
    "source_quote": "Futisliikkari Puotinkylä, 2023-2022-syntyneet; maanantai; 11 harjoituspäivää 2026-09-07–2026-11-23. Syyskauden hinta on 105€ (sis. ohjauksen 11krt, vakuutuksen, Valtin pelipassin ja t-paidan).",
    "activity_id": "hel-2026-0576",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari2.nsf/ilmoall?openform&s=n&id=2060B98F1B453641C2258DFF004833AC",
    "billing_period": "term",
    "price_period_start": "2026-09-07",
    "price_period_end": "2026-11-23",
    "season_start_date": "2026-09-07",
    "season_end_date": "2026-11-23",
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.ilmarix.fi/tietoverkko/isoilmari2.nsf/ilmoall?openform&s=n&id=2060B98F1B453641C2258DFF004833AC",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, vakuutuksen, Puotinkylän Valtin pelipassin ja t-paidan (pelipassi ei ole erillinen lisämaksu)."
      }
    ],
    "price_options": [
      {
        "label": "Sisarusalennus",
        "amount_eur": 70,
        "applies_if": "toinen saman perheen lapsi Liikuntaleikin ryhmissä (toisen laskun loppusumma 70 €)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_03 deferred-listalta. Kurssi alkanut 7.9.2026. Järjestäjät: 'Valtti 1946 ja Liikuntaleikki Helsinki järjestävät…'; ilmoittautuminen ja laskutus Liikuntaleikin Ilmarix-lomakkeella. Lomakkeella ei ryhmäkohtaista täynnä-merkintää → availability unknown. Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa. | Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä. | Korjaus 23.9.2026 (c): membership_fee_eur epävarma, joten price_completeness=incomplete ja has_unpriced_required_fee=true (comparison_eligible=false, ei kertahintaa) - hinta ei ollut varmuudella täydellinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-017",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/valtti_futisliikkari_06b0fef83f4d.html",
      "capture_sha256": "06b0fef83f4df4768cf97f9cc01fdca55b7b73c8d1da97e8b8b75639fbed8c18",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-07–2026-11-23, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Puotinkylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Futisliikkari Puotinkylä 2021-2020-2019-syntyneet, syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2021-2020-2019-syntyneet tytöt ja pojat",
    "parent_child": "no",
    "venue_name": "Vartiokylän yläasteen sali",
    "address": "Rusthollarintie 6",
    "district": "Puotinkylä",
    "weekday": "maanantai",
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-09-07",
    "end_date": "2026-11-23",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskauden hinta; sis. ohjauksen 11 krt, vakuutuksen, Puotinkylän Valtin pelipassin ja t-paidan",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.valtti1946.fi/syksyn-futisliikkari-ja-perhefutis/",
    "source_quote": "Futisliikkari Puotinkylä, 2021-2020-2019-syntyneet; maanantai; 11 harjoituspäivää 2026-09-07–2026-11-23. Syyskauden hinta on 105€ (sis. ohjauksen 11krt, vakuutuksen, Valtin pelipassin ja t-paidan).",
    "activity_id": "hel-2026-0577",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari2.nsf/ilmoall?openform&s=n&id=2060B98F1B453641C2258DFF004833AC",
    "billing_period": "term",
    "price_period_start": "2026-09-07",
    "price_period_end": "2026-11-23",
    "season_start_date": "2026-09-07",
    "season_end_date": "2026-11-23",
    "birth_year_min": 2019,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.ilmarix.fi/tietoverkko/isoilmari2.nsf/ilmoall?openform&s=n&id=2060B98F1B453641C2258DFF004833AC",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, vakuutuksen, Puotinkylän Valtin pelipassin ja t-paidan (pelipassi ei ole erillinen lisämaksu)."
      }
    ],
    "price_options": [
      {
        "label": "Sisarusalennus",
        "amount_eur": 70,
        "applies_if": "toinen saman perheen lapsi Liikuntaleikin ryhmissä (toisen laskun loppusumma 70 €)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_03 deferred-listalta. Kurssi alkanut 7.9.2026. Järjestäjät: 'Valtti 1946 ja Liikuntaleikki Helsinki järjestävät…'; ilmoittautuminen ja laskutus Liikuntaleikin Ilmarix-lomakkeella ('Toimimme yhteistyössä jalkapalloseura Puotinkylän Valtin kanssa'). Lomakkeella ei ryhmäkohtaista täynnä-merkintää → availability unknown. Ikä syntymävuosina; 2019 syntyneet täyttävät 7 v 2026 (osittainen osuma 2–6 v rajaukseen). Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa. | Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä. | Korjaus 23.9.2026 (c): membership_fee_eur epävarma, joten price_completeness=incomplete ja has_unpriced_required_fee=true (comparison_eligible=false, ei kertahintaa) - hinta ei ollut varmuudella täydellinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-018",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/valtti_futisliikkari_06b0fef83f4d.html",
      "capture_sha256": "06b0fef83f4df4768cf97f9cc01fdca55b7b73c8d1da97e8b8b75639fbed8c18",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-07–2026-11-23, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Puotinkylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Futisliikkari Myllypuro 2022-2021-2020-2019-syntyneet, syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-2021-2020-2019-syntyneet tytöt ja pojat",
    "parent_child": "no",
    "venue_name": "Myllypuron peruskoulu",
    "address": "Yläkivenrinne 4",
    "district": "Myllypuro",
    "weekday": "torstai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-10",
    "end_date": "2026-11-26",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskauden hinta; sis. ohjauksen 11 krt, vakuutuksen, Puotinkylän Valtin pelipassin ja t-paidan",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.valtti1946.fi/syksyn-futisliikkari-ja-perhefutis/",
    "source_quote": "Futisliikkari Myllypuro, 2022-2021-2020-2019; torstai; 11 harjoituspäivää 2026-09-10–2026-11-26. Syyskauden hinta on 105€ (sis. ohjauksen 11krt, vakuutuksen, Valtin pelipassin ja t-paidan).",
    "activity_id": "hel-2026-0578",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari2.nsf/ilmoall?openform&s=n&id=2060B98F1B453641C2258DFF004833AC",
    "billing_period": "term",
    "price_period_start": "2026-09-10",
    "price_period_end": "2026-11-26",
    "season_start_date": "2026-09-10",
    "season_end_date": "2026-11-26",
    "birth_year_min": 2019,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.ilmarix.fi/tietoverkko/isoilmari2.nsf/ilmoall?openform&s=n&id=2060B98F1B453641C2258DFF004833AC",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, vakuutuksen, Puotinkylän Valtin pelipassin ja t-paidan (pelipassi ei ole erillinen lisämaksu)."
      }
    ],
    "price_options": [
      {
        "label": "Sisarusalennus",
        "amount_eur": 70,
        "applies_if": "toinen saman perheen lapsi Liikuntaleikin ryhmissä (toisen laskun loppusumma 70 €)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_03 deferred-listalta. Kurssi alkanut 10.9.2026. Järjestäjät: 'Valtti 1946 ja Liikuntaleikki Helsinki järjestävät…'; ilmoittautuminen ja laskutus Liikuntaleikin Ilmarix-lomakkeella ('Toimimme yhteistyössä jalkapalloseura Puotinkylän Valtin kanssa'). Lomakkeella ei ryhmäkohtaista täynnä-merkintää → availability unknown. Ikä syntymävuosina; 2019 syntyneet täyttävät 7 v 2026 (osittainen osuma 2–6 v rajaukseen). Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa. | Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä. | Korjaus 23.9.2026 (c): membership_fee_eur epävarma, joten price_completeness=incomplete ja has_unpriced_required_fee=true (comparison_eligible=false, ei kertahintaa) - hinta ei ollut varmuudella täydellinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-019",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/valtti_futisliikkari_06b0fef83f4d.html",
      "capture_sha256": "06b0fef83f4df4768cf97f9cc01fdca55b7b73c8d1da97e8b8b75639fbed8c18",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-10–2026-11-26, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Futisliikkari Herttoniemenranta 2022-2021-syntyneet, syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-2021-syntyneet tytöt ja pojat",
    "parent_child": "no",
    "venue_name": "Roihuvuoren ala-asteen liikuntasali",
    "address": "Vuorenpeikontie 7",
    "district": "Herttoniemenranta",
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-09",
    "end_date": "2026-11-25",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskauden hinta; sis. ohjauksen 11 krt, vakuutuksen, Puotinkylän Valtin pelipassin ja t-paidan",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.valtti1946.fi/syksyn-futisliikkari-ja-perhefutis/",
    "source_quote": "Futisliikkari Herttoniemenranta, 2022-2021-syntyneet; keskiviikko; 11 harjoituspäivää 2026-09-09–2026-11-25. Syyskauden hinta on 105€ (sis. ohjauksen 11krt, vakuutuksen, Valtin pelipassin ja t-paidan).",
    "activity_id": "hel-2026-0579",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari2.nsf/ilmoall?openform&s=n&id=2060B98F1B453641C2258DFF004833AC",
    "billing_period": "term",
    "price_period_start": "2026-09-09",
    "price_period_end": "2026-11-25",
    "season_start_date": "2026-09-09",
    "season_end_date": "2026-11-25",
    "birth_year_min": 2021,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.ilmarix.fi/tietoverkko/isoilmari2.nsf/ilmoall?openform&s=n&id=2060B98F1B453641C2258DFF004833AC",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, vakuutuksen, Puotinkylän Valtin pelipassin ja t-paidan (pelipassi ei ole erillinen lisämaksu)."
      }
    ],
    "price_options": [
      {
        "label": "Sisarusalennus",
        "amount_eur": 70,
        "applies_if": "toinen saman perheen lapsi Liikuntaleikin ryhmissä (toisen laskun loppusumma 70 €)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_03 deferred-listalta. Kurssi alkanut 9.9.2026. Järjestäjät: 'Valtti 1946 ja Liikuntaleikki Helsinki järjestävät…'; ilmoittautuminen ja laskutus Liikuntaleikin Ilmarix-lomakkeella. Lomakkeella ei ryhmäkohtaista täynnä-merkintää → availability unknown. Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa. | Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä. | Korjaus 23.9.2026 (c): membership_fee_eur epävarma, joten price_completeness=incomplete ja has_unpriced_required_fee=true (comparison_eligible=false, ei kertahintaa) - hinta ei ollut varmuudella täydellinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-020",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/valtti_futisliikkari_06b0fef83f4d.html",
      "capture_sha256": "06b0fef83f4df4768cf97f9cc01fdca55b7b73c8d1da97e8b8b75639fbed8c18",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-09–2026-11-25, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Herttoniemenranta",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Liikuntaleikki Helsinki ry",
    "group_name": "Futisliikkari Herttoniemenranta 2021-2020-2019-syntyneet, syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2021-2020-2019-syntyneet tytöt ja pojat",
    "parent_child": "no",
    "venue_name": "Roihuvuoren ala-asteen liikuntasali",
    "address": "Vuorenpeikontie 7",
    "district": "Herttoniemenranta",
    "weekday": "keskiviikko",
    "start_time": "18:30",
    "end_time": "19:15",
    "season": "syksy 2026",
    "start_date": "2026-09-09",
    "end_date": "2026-11-25",
    "sessions_count": 11,
    "price_eur": 105.0,
    "price_basis": "Syyskauden hinta; sis. ohjauksen 11 krt, vakuutuksen, Puotinkylän Valtin pelipassin ja t-paidan",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma jalkapallo (koko 3), juomapullo, sään-/sisäliikuntavarusteet.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.valtti1946.fi/syksyn-futisliikkari-ja-perhefutis/",
    "source_quote": "Futisliikkari Herttoniemenranta, 2021-2020-2019-syntyneet; keskiviikko; 11 harjoituspäivää 2026-09-09–2026-11-25. Syyskauden hinta on 105€ (sis. ohjauksen 11krt, vakuutuksen, Valtin pelipassin ja t-paidan).",
    "activity_id": "hel-2026-0580",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 105.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari2.nsf/ilmoall?openform&s=n&id=2060B98F1B453641C2258DFF004833AC",
    "billing_period": "term",
    "price_period_start": "2026-09-09",
    "price_period_end": "2026-11-25",
    "season_start_date": "2026-09-09",
    "season_end_date": "2026-11-25",
    "birth_year_min": 2019,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.ilmarix.fi/tietoverkko/isoilmari2.nsf/ilmoall?openform&s=n&id=2060B98F1B453641C2258DFF004833AC",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-21",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen 11 krt, vakuutuksen, Puotinkylän Valtin pelipassin ja t-paidan (pelipassi ei ole erillinen lisämaksu)."
      }
    ],
    "price_options": [
      {
        "label": "Sisarusalennus",
        "amount_eur": 70,
        "applies_if": "toinen saman perheen lapsi Liikuntaleikin ryhmissä (toisen laskun loppusumma 70 €)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kerätty erän batch_2026-09-21_03 deferred-listalta. Kurssi alkanut 9.9.2026. Järjestäjät: 'Valtti 1946 ja Liikuntaleikki Helsinki järjestävät…'; ilmoittautuminen ja laskutus Liikuntaleikin Ilmarix-lomakkeella ('Toimimme yhteistyössä jalkapalloseura Puotinkylän Valtin kanssa'). Lomakkeella ei ryhmäkohtaista täynnä-merkintää → availability unknown. Ikä syntymävuosina; 2019 syntyneet täyttävät 7 v 2026 (osittainen osuma 2–6 v rajaukseen). Aikataulussa kaksi jaksoa (syyskuu ulkona, lokakuusta sali); rivillä näytetään lokakuussa alkava salikausi (Ilpon jonolinjaus 3, 22.9.2026). Koko aikataulu lähteen otteessa. | Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä. | Korjaus 23.9.2026 (c): membership_fee_eur epävarma, joten price_completeness=incomplete ja has_unpriced_required_fee=true (comparison_eligible=false, ei kertahintaa) - hinta ei ollut varmuudella täydellinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-21_06.json",
      "staging_id": "batch_2026-09-21_06-021",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence/batch_2026-09-21_06/valtti_futisliikkari_06b0fef83f4d.html",
      "capture_sha256": "06b0fef83f4df4768cf97f9cc01fdca55b7b73c8d1da97e8b8b75639fbed8c18",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 40.97,
    "monthly_cost_basis": "105.0 € / term jaettuna 2.56 kuukaudelle (2026-09-09–2026-11-25, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Herttoniemenranta",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Pallokerho-35 ry",
    "group_name": "PK-35 MINIFUTIS 2026 Loka-joulukuu, ryhmä 1 klo 17:30-18:30",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Minifutistoimintaan ovat tervetulleita mukaan kaikki 2020-2022 -syntyneet lapset.",
    "parent_child": "unknown",
    "venue_name": "Helsingin Uusi yhteiskoulu / Liikuntasali",
    "address": "Lucina Hagmanin kuja 4, 00710 Helsinki",
    "district": "Pihlajamäki",
    "weekday": null,
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-10-05",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 49.0,
    "price_basis": "myClub Hintatiedot: 'Pallokerho-35 ry. / Minifutis 2026 // Ryhmä 1 klo 17.30-18.30 alkaen 5.10.2026' 49,00 €; 'Koko kauden toimintamaksu on 49€' (toimintakausi 5.10.–7.12.2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma pallo koko 3, juomapullo, pelaamiseen sopiva vaatetus (suositus).",
    "trial_info": "Toimintaan voi tutustua yhden harjoituksen ajan.",
    "enrollment_status": "unknown",
    "source_url": "https://pk-35.myclub.fi/flow/courses/11582602",
    "source_quote": "PK-35 MINIFUTIS 2026 Loka-joulukuu; 2020-2022 -syntyneet; Aika torstaisin ryhmä 1 klo 17.30-18.30 ja ryhmä 2 klo 18.30-19.30; Koko kauden toimintamaksu on 49€",
    "activity_id": "hel-2026-0581",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 49.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-10-05",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-05",
    "season_end_date": "2026-12-07",
    "birth_year_min": 2020,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 49,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "myClub Hintatiedot: 'Pallokerho-35 ry. / Minifutis 2026 // Ryhmä 1 klo 17.30-18.30 alkaen 5.10.2026' 49,00 €; 'Koko kauden toimintamaksu on 49€' (toimintakausi 5.10.–7.12.2026)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Osallistujia ei ole vakuutettu seuran toimesta.",
    "unverified_fields": [],
    "verification_notes": "Sama ilmoittautumissivu on sisäisesti ristiriidassa: kuvaus 'Aika torstaisin ryhmä 1 klo 17.30-18.30 ja ryhmä 2 klo 18.30-19.30', mutta myClub-aikataulu listaa maanantait (10 kertaa tälle kellonajalle, 5.10.–7.12.2026) ja myClub-hintarivi 'Pallokerho-35 ry. / Minifutis 2026 // Ryhmä 1 klo 17.30-18.30 alkaen 5.10.2026' (5.10.2026 = maanantai). Viikonpäivä ja kertamäärä jätetty tyhjiksi. Ryhmäjako (ikä/sukupuoli?) ei kerrota; 'Tytöille ja pojille on omat ryhmät tarvittaessa'. Sopii 4–6-vuotiaille (2020–2022 syntyneet). | Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä. | Korjaus 23.9.2026 (c): membership_fee_eur epävarma, joten price_completeness=incomplete ja has_unpriced_required_fee=true (comparison_eligible=false, ei kertahintaa) - hinta ei ollut varmuudella täydellinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_11.json",
      "staging_id": "batch_2026-09-22_11-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_11/pk_35_myclub_fi_flow_courses_11582602_f3eedd18621f.html",
      "capture_sha256": "f3eedd18621fccdf94e3b4d14e1959072532db94596d5ea331c4465d162ec107",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 23.3,
    "monthly_cost_basis": "49.0 € / term jaettuna 2.10 kuukaudelle (2026-10-05–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pihlajamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Pallokerho-35 ry",
    "group_name": "PK-35 MINIFUTIS 2026 Loka-joulukuu, ryhmä 2 klo 18:30-19:30",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Minifutistoimintaan ovat tervetulleita mukaan kaikki 2020-2022 -syntyneet lapset.",
    "parent_child": "unknown",
    "venue_name": "Helsingin Uusi yhteiskoulu / Liikuntasali",
    "address": "Lucina Hagmanin kuja 4, 00710 Helsinki",
    "district": "Pihlajamäki",
    "weekday": null,
    "start_time": "18:30",
    "end_time": "19:30",
    "season": "syksy 2026",
    "start_date": "2026-10-05",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 49.0,
    "price_basis": "myClub Hintatiedot: 'Pallokerho-35 ry. / Minifutis 2026 / Ryhmä 2 klo 18.30-19.30 alkaen 5.10.2026' 49,00 €; 'Koko kauden toimintamaksu on 49€' (toimintakausi 5.10.–7.12.2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma pallo koko 3, juomapullo, pelaamiseen sopiva vaatetus (suositus).",
    "trial_info": "Toimintaan voi tutustua yhden harjoituksen ajan.",
    "enrollment_status": "unknown",
    "source_url": "https://pk-35.myclub.fi/flow/courses/11582602",
    "source_quote": "PK-35 MINIFUTIS 2026 Loka-joulukuu; 2020-2022 -syntyneet; Aika torstaisin ryhmä 1 klo 17.30-18.30 ja ryhmä 2 klo 18.30-19.30; Koko kauden toimintamaksu on 49€",
    "activity_id": "hel-2026-0582",
    "city": "Helsinki",
    "checked_at": "2026-09-21",
    "known_min_total_eur": 49.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-10-05",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-05",
    "season_end_date": "2026-12-07",
    "birth_year_min": 2020,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 49,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "myClub Hintatiedot: 'Pallokerho-35 ry. / Minifutis 2026 / Ryhmä 2 klo 18.30-19.30 alkaen 5.10.2026' 49,00 €; 'Koko kauden toimintamaksu on 49€' (toimintakausi 5.10.–7.12.2026)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Osallistujia ei ole vakuutettu seuran toimesta.",
    "unverified_fields": [],
    "verification_notes": "Sama ilmoittautumissivu on sisäisesti ristiriidassa: kuvaus 'Aika torstaisin ryhmä 1 klo 17.30-18.30 ja ryhmä 2 klo 18.30-19.30', mutta myClub-aikataulu listaa maanantait (10 kertaa tälle kellonajalle, 5.10.–7.12.2026) ja myClub-hintarivi 'Pallokerho-35 ry. / Minifutis 2026 / Ryhmä 2 klo 18.30-19.30 alkaen 5.10.2026' (5.10.2026 = maanantai). Viikonpäivä ja kertamäärä jätetty tyhjiksi. Ryhmäjako (ikä/sukupuoli?) ei kerrota; 'Tytöille ja pojille on omat ryhmät tarvittaessa'. Sopii 4–6-vuotiaille (2020–2022 syntyneet). | Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä. | Korjaus 23.9.2026 (c): membership_fee_eur epävarma, joten price_completeness=incomplete ja has_unpriced_required_fee=true (comparison_eligible=false, ei kertahintaa) - hinta ei ollut varmuudella täydellinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_11.json",
      "staging_id": "batch_2026-09-22_11-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_11/pk_35_myclub_fi_flow_courses_11582602_f3eedd18621f.html",
      "capture_sha256": "f3eedd18621fccdf94e3b4d14e1959072532db94596d5ea331c4465d162ec107",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 23.3,
    "monthly_cost_basis": "49.0 € / term jaettuna 2.10 kuukaudelle (2026-10-05–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pihlajamäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tennis",
    "provider": "Helsingin Lawn-Tennis Klubi ry (HLK)",
    "group_name": "Pikkudinot (s. 2018-2020), kausi 2026-2027",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "s. 2018-2020, tavoitteellinen treeniryhmä (4-6 h/vko) tenniksessä kehittymiseen",
    "parent_child": "no",
    "venue_name": "Meilahti (ma, pe) / Tapiola, Espoo (ke)",
    "address": "Zaidankatu 9, 00250 Helsinki",
    "district": "Meilahti",
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 3100.0,
    "price_basis": "Kausimaksu 2026-2027, 2 harjoitusta (4h) viikossa -vaihtoehto (pienin hintataso)",
    "membership_fee_eur": null,
    "other_required_fees": "Ylimääräiset leirit ja kisamatkat laskutetaan erikseen (summaa ei kerrottu).",
    "equipment_notes": null,
    "trial_info": "Mukaan voi tulla kokeilemaan matalalla kynnyksellä: aluksi harjoitellaan kerran viikossa, kokeilujakso kestää kolme kuukautta ensimmäisestä Pikkudino-harjoituksesta alkaen, minkä jälkeen harjoitusmäärä nousee vähintään kahteen kertaan viikossa.",
    "enrollment_status": "unknown",
    "source_url": "https://www.hlk.fi/pikkudinot/",
    "source_quote": "HLK Pikkudinot (s. 2018-2020) / Pikkudinot on tavoitteellinen treeniryhmä (4-6 h/vko) lapsille, jotka haluavat kehittyä tenniksessä ja ottaa ensimmäisen askeleen kohti kilpatennistä / Pikkudinoihin voi tulla mukaan kokeilemaan matalalla kynnyksellä - aluksi harjoitellaan kerran viikossa, ja kokeilujakso kestää kolme kuukautta ensimmäisestä Pikkudino-harjoituksesta alkaen. / Hae mukaan: Tee hakemus TennisClubissa, hakuaika Pikkudinoille on kaudelle 2026-2027 aukeaa huhtikuussa. Päätös paikasta annetaan viimeistään juhannusviikolla. / Alustavat Harjoitusajat kaudella 2026-2027 ovat: Maanantaina klo 17-19 (Meilahti) / Keskiviikkona klo 17-19 (Tapiola) / Perjantaina klo 16-18 (Meilahti). / Hinta (2026-2027): Kausimaksu 3100€ (2 harjoitusta 4h /viikko) / Kausimaksu 4 000€ (3 harjoitusta 6h/viikko). / Kausimaksuun sisältyy myös 2 viikkoa Kesäleiritoimintaa. / Tämän lisäksi veloitetaan jäsenmaksu sekä ylimääräiset leirit ja kisamatkat",
    "activity_id": "hel-2026-0583",
    "city": "Helsinki",
    "checked_at": "2026-09-22",
    "known_min_total_eur": null,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "source_partial",
    "price_source_url": null,
    "billing_period": "full_season",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2018,
    "birth_year_max": 2020,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-22",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 3100,
        "mandatory": true,
        "included": true,
        "recurrence": "full_season",
        "applies_if": "2 harjoitusta (4h) viikossa -vaihtoehto",
        "note": "Kausimaksu 2026-2027, sisältää 2 viikkoa kesäleiritoimintaa sekä syys- ja hiihtolomaleirit (Meilahti)."
      },
      {
        "type": "membership",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "\"Tämän lisäksi veloitetaan jäsenmaksu sekä ylimääräiset leirit ja kisamatkat\" - summaa ei kerrota tällä sivulla."
      }
    ],
    "price_options": [
      {
        "label": "3 harjoitusta (6h) viikossa",
        "amount_eur": 4000.0,
        "applies_if": "Jos valitaan 3 harjoitusta (6h) viikossa 2 harjoituksen (4h) sijaan",
        "includes": "Samat kesäleirit kuin perushinnassa; ryhmän sopivuus tarkistetaan puolessa välissä kautta"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "membership_fee_eur",
      "weekday",
      "start_time",
      "end_time",
      "sessions_count",
      "known_min_total_eur"
    ],
    "verification_notes": "Uusi järjestäjä (HLK, tennis). Ryhmään haetaan hakemuksella TennisClub-järjestelmässä (\"Hae mukaan - Tee hakemus TennisClubissa\"), haku kaudelle 2026-2027 aukeaa huhtikuussa, päätös viimeistään juhannusviikolla - ei suoraa ostoa, saatavuutta (paikkoja/jonoa) ei voi vahvistaa. Kolme eri harjoituspäivää/aikaa samalle ryhmälle (ma 17-19 Meilahti, ke 17-19 Tapiola/Espoo, pe 16-18 Meilahti) - skeema tukee vain yhtä weekday/start_time-arvoa, joten kentät jätetty tyhjiksi ja aikataulu kirjattu tähän (samantyyppinen tilanne kuin Helsingin Kiekko-Tiikereiden ti+to-ryhmä, batch16 avoin kysymys 3). Keskiviikon harjoitus on Tapiolassa, Espoossa, ei Helsingissä - kaksi kolmesta viikkoharjoituksesta silti Helsingissä (Meilahti). Kaksi hintatasoa (3100€/4000€) ovat eri palvelutasoja (2 vs 3 treeniä/vko), ei alennus - käytetty pienintä hintaa sääntö 8:n \"pienin riittävä hinta\" -periaatteen mukaisesti (vrt. FC Viikingit 70€). Jäsenmaksu mainitaan pakolliseksi mutta summaa ei kerrota tällä sivulla eikä sitä löytynyt tästä erästä muualta HLK:n sivustolta tässä ajassa. availability_status=unknown on sallittu tila, ei review-syy (Ilpon päätös 21.9.2026). Pakollinen maksu hinnoittelematta → julkaistaan 'hinta osittain tiedossa' -merkinnällä (price_completeness=incomplete, Ilpon jonolinjaus 6, 22.9.2026). Ryhmällä on useita harjoituspäiviä/kellonaikoja/paikkoja: epäselvät kentät jätetty tyhjiksi ja koko aikataulu on lähteen otteessa (Ilpon jonolinjaus 3, 22.9.2026). Riviä ei pilkota. | Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-22_18.json",
      "staging_id": "batch_2026-09-22_18-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-22_18/hlk_pikkudinot_a82f5feb046f.html",
      "capture_sha256": "a82f5feb046fd21d0c0c33de49d51456b42c32742ee5beb991fe54c8bec42893",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Meilahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingin Taitoluisteluklubi ry",
    "group_name": "JääTähdet Salmisaari Maanantai klo 18:00-18:45 syksy 2026",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaiden",
    "parent_child": "unknown",
    "venue_name": "Salmisaaren jäähalli 1",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Jäätähdet 1x/viikko - syyskausi 2026",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://htk.myclub.fi/flow/courses/10810759",
    "source_quote": "JääTähdet Salmisaari Maanantai klo 18:00-18:45 syksy 2026 | 7.9.2026 18:00 - 13.12.2026 | Jäätähdet 1x/viikko - syyskausi 2026 199,00 €",
    "activity_id": "hel-2026-0584",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 199.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-07",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-07",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä. | Korjaus 23.9.2026 (c): membership_fee_eur epävarma, joten price_completeness=incomplete ja has_unpriced_required_fee=true (comparison_eligible=false, ei kertahintaa) - hinta ei ollut varmuudella täydellinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_25.json",
      "staging_id": "batch_2026-09-23_25-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_25/myclub_htk_10810759_5b96c396fe6a.html",
      "capture_sha256": "5b96c396fe6a5473a20b8952aeec9cafa3821790b7f96dd1cb02be4089b6ad32",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 61.81,
    "monthly_cost_basis": "199.0 € / term jaettuna 3.22 kuukaudelle (2026-09-07–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingin Taitoluisteluklubi ry",
    "group_name": "Jäätähdet Herttoniemi Torstai klo 17:30-18:15 Syksy 2026",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaiden",
    "parent_child": "unknown",
    "venue_name": "Herttoniemen Jäähalli 2",
    "address": "Abraham Wetterin tie 1, 00810 HELSINKI, Suomi",
    "district": "Herttoniemi",
    "weekday": "torstai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-09-10",
    "end_date": "2026-12-17",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Jäätähdet 1x/viikko - syyskausi 2026",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://htk.myclub.fi/flow/courses/10811741",
    "source_quote": "Jäätähdet Herttoniemi Torstai klo 17:30-18:15 Syksy 2026 | 10.9.2026 17:30 - 17.12.2026 | Jäätähdet 1x/viikko - syyskausi 2026 199,00 €",
    "activity_id": "hel-2026-0585",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 199.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-10",
    "price_period_end": "2026-12-17",
    "season_start_date": "2026-09-10",
    "season_end_date": "2026-12-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä. | Korjaus 23.9.2026 (c): membership_fee_eur epävarma, joten price_completeness=incomplete ja has_unpriced_required_fee=true (comparison_eligible=false, ei kertahintaa) - hinta ei ollut varmuudella täydellinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_25.json",
      "staging_id": "batch_2026-09-23_25-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_25/myclub_htk_10811741_c1eac28510ef.html",
      "capture_sha256": "c1eac28510efa460d06d3538df12f22d50c3d53ad15e8100886737dc173328fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 61.18,
    "monthly_cost_basis": "199.0 € / term jaettuna 3.25 kuukaudelle (2026-09-10–2026-12-17, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Helsingin Taitoluisteluklubi ry",
    "group_name": "Jäätähdet Herttoniemi Sunnuntai klo 11:15-12:00 syksy 2026",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaiden",
    "parent_child": "unknown",
    "venue_name": "Herttoniemen jäähalli 1",
    "address": "Abraham Wetterin tie 1, 00810 Helsinki",
    "district": "Herttoniemi",
    "weekday": "sunnuntai",
    "start_time": "11:15",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": "2026-09-13",
    "end_date": "2026-12-20",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Jäätähdet 1x/viikko - syyskausi 2026",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://htk.myclub.fi/flow/courses/10812354",
    "source_quote": "Jäätähdet Herttoniemi Sunnuntai klo 11:15-12:00 syksy 2026 | 13.9.2026 11:15 - 20.12.2026 | Jäätähdet 1x/viikko - syyskausi 2026 199,00 €",
    "activity_id": "hel-2026-0586",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 199.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-13",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-09-13",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä. | Korjaus 23.9.2026 (c): membership_fee_eur epävarma, joten price_completeness=incomplete ja has_unpriced_required_fee=true (comparison_eligible=false, ei kertahintaa) - hinta ei ollut varmuudella täydellinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_25.json",
      "staging_id": "batch_2026-09-23_25-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_25/myclub_htk_10812354_f8f973ac5cee.html",
      "capture_sha256": "f8f973ac5cee3f7b27e40d015ef8e87c3e99308a8ea262a611206710920688e2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 61.18,
    "monthly_cost_basis": "199.0 € / term jaettuna 3.25 kuukaudelle (2026-09-13–2026-12-20, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "IF Gnistan ry",
    "group_name": "Futiskerho talvi 2026 (4-7 -vuotiaille tytöille ja pojille)",
    "min_age": 4,
    "max_age": 7,
    "eligibility_text": "4-7 -vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Stadin Ammatti- Ja Aikuisopisto, Kullervonkadun Toimipaikka",
    "address": null,
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "11:00",
    "end_time": "11:45",
    "season": "kevät 2026",
    "start_date": "2026-01-11",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 75.0,
    "price_basis": "IF Gnistan Futiskerho",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://ifgnistan.myclub.fi/flow/courses/9874028",
    "source_quote": "Futiskerho talvi 2026 (4-7 -vuotiaille tytöille ja pojille) | 11.1.2026 11:00 - 22.2.2026 | IF Gnistan Futiskerho 75,00 €",
    "activity_id": "hel-2026-0587",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-01-11",
    "season_end_date": "2026-02-22",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 75,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Gnistan t-paita 10,00 €",
    "unverified_fields": [],
    "verification_notes": "Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä. | Korjaus 23.9.2026 (c): membership_fee_eur epävarma, joten price_completeness=incomplete ja has_unpriced_required_fee=true (comparison_eligible=false, ei kertahintaa) - hinta ei ollut varmuudella täydellinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_26.json",
      "staging_id": "batch_2026-09-23_26-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_26/myclub_ifgnistan_9874028_b1b951e36e91.html",
      "capture_sha256": "b1b951e36e913209540356277b02a4e8078f7ab1ccb17e4a6f5c98c739a98a2b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "jalkapallo",
    "provider": "IF Gnistan ry",
    "group_name": "Perhefutis talvikausi 2026 (2-5 vuotiaille vanhemman kanssa)",
    "min_age": 2,
    "max_age": 5,
    "eligibility_text": "2-5 vuotiaille",
    "parent_child": "yes",
    "venue_name": "Stadin Ammatti- Ja Aikuisopisto, Kullervonkadun Toimipaikka",
    "address": null,
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "kevät 2026",
    "start_date": "2026-01-11",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 55.0,
    "price_basis": "IF Gnistan Perhefutis 2026",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://ifgnistan.myclub.fi/flow/courses/9671227",
    "source_quote": "Perhefutis talvikausi 2026 (2-5 vuotiaille vanhemman kanssa) | 11.1.2026 10:00 - 22.2.2026 | IF Gnistan Perhefutis 2026 55,00 €",
    "activity_id": "hel-2026-0588",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 55.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-01-11",
    "season_end_date": "2026-02-22",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 55,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Gnistan t-paita 10,00 €",
    "unverified_fields": [],
    "verification_notes": "Linjaus 23.9.2026 (c): perushinta, ryhmä, ikä ja kausi ovat virallisesta lähteestä varmoja; vain lisämaksun summa/pakollisuus puuttuu, joten rivi julkaistaan 'hinta osittain tiedossa' -merkinnällä. | Korjaus 23.9.2026 (c): membership_fee_eur epävarma, joten price_completeness=incomplete ja has_unpriced_required_fee=true (comparison_eligible=false, ei kertahintaa) - hinta ei ollut varmuudella täydellinen.",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_26.json",
      "staging_id": "batch_2026-09-23_26-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_26/myclub_ifgnistan_9671227_d1d0931b80c8.html",
      "capture_sha256": "d1d0931b80c804cb8e80d2a71321bd14795fc6bbfd253e17ca07379b49a75138",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin työväenopisto",
    "group_name": "Aikuinen-lapsi-tanssi 2-3 v., Helsingin työväenopisto",
    "min_age": 2,
    "max_age": 3,
    "eligibility_text": "noin 2-3-vuotiaalle lapselle + aikuinen",
    "parent_child": "yes",
    "venue_name": "Helsingin työväenopisto, Herttoniemi, Silkkikutomo",
    "address": "Laivalahdenkatu 2 b A, 00810 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": "2026-11-07",
    "end_date": "2026-11-28",
    "sessions_count": 4,
    "price_eur": 24.0,
    "price_basis": "ilmonet.fi kurssisivun 'Hinta: Syksy 24.00 e'-kenttä (yksi hinta koko syyskaudelle, sisältää aikuisen ja lapsen/lapset).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://ilmonet.fi/course/H263008?lang=fi",
    "source_quote": "Ilmoittautuminen to 13.08.2026 klo 10:00 alkaen\nKurssitunnus: H263008\nHinta: Syksy 24,00 e",
    "activity_id": "hel-2026-0589",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 24.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://ilmonet.fi/course/H263008?lang=fi",
    "billing_period": "term",
    "price_period_start": "2026-11-07",
    "price_period_end": "2026-11-28",
    "season_start_date": "2026-11-07",
    "season_end_date": "2026-11-28",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmonet.fi kurssisivu: '(4 ses.)' / 'Päättyy ... (4 krt, ...)'.",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 24,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "adults_count": 1,
      "children_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautuminen ilmonet.fi:ssä (Helsingin työväenopiston, Espoon työväenopiston, Helsingfors arbiksen ja Vantaan aikuisopiston yhteinen kurssihaku ja -ilmoittautumisjärjestelmä), joka ei ole tämän datasetin OFFICIAL_SYSTEM_DOMAINS-listalla (hel.fi/myclub.fi/ilmarix.fi) - kolmannen osapuolen järjestelmä, joka vaatii Ilpon päätöksen (CLAUDE.md sääntö 8b) ennen kuin sitä voi käsitellä hyväksyttynä lähteenä. Hakusivun mukaan haku palautti hetkellä 23.9.2026 'Ilmoittaudu jonoon'-tilan kaikille neljälle ryhmälle (ei 'Enroll'/plain-tilaa) -> availability_status=waitlist. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-016",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/ilmonet_course_tanssi23_44e6db417f25.html",
      "capture_sha256": "44e6db417f25b42fe48ceccb0170b591871d0ed605d50d1a8852e54277d7dc8d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 33.2,
    "monthly_cost_basis": "24.0 € / term jaettuna 0.72 kuukaudelle (2026-11-07–2026-11-28, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "geokoodattu osoite -> neighborhood 'Herttoniemi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin työväenopisto",
    "group_name": "Aikuinen-lapsi-tanssi 4-6 v., Helsingin työväenopisto",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "noin 4-6-vuotiaalle lapselle + aikuinen",
    "parent_child": "yes",
    "venue_name": "Helsingin työväenopisto, Herttoniemi, Silkkikutomo",
    "address": "Laivalahdenkatu 2 b A, 00810 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": "2026-11-07",
    "end_date": "2026-11-28",
    "sessions_count": 4,
    "price_eur": 30.0,
    "price_basis": "ilmonet.fi kurssisivun 'Hinta: Syksy 30.00 e'-kenttä (yksi hinta koko syyskaudelle, sisältää aikuisen ja lapsen/lapset).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://ilmonet.fi/course/H263009?lang=fi",
    "source_quote": "Ilmoittautuminen to 13.08.2026 klo 10:00 alkaen\nKurssitunnus: H263009\nHinta: Syksy 30,00 e",
    "activity_id": "hel-2026-0590",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 30.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://ilmonet.fi/course/H263009?lang=fi",
    "billing_period": "term",
    "price_period_start": "2026-11-07",
    "price_period_end": "2026-11-28",
    "season_start_date": "2026-11-07",
    "season_end_date": "2026-11-28",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmonet.fi kurssisivu: '(4 ses.)' / 'Päättyy ... (4 krt, ...)'.",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 30,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "adults_count": 1,
      "children_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautuminen ilmonet.fi:ssä (Helsingin työväenopiston, Espoon työväenopiston, Helsingfors arbiksen ja Vantaan aikuisopiston yhteinen kurssihaku ja -ilmoittautumisjärjestelmä), joka ei ole tämän datasetin OFFICIAL_SYSTEM_DOMAINS-listalla (hel.fi/myclub.fi/ilmarix.fi) - kolmannen osapuolen järjestelmä, joka vaatii Ilpon päätöksen (CLAUDE.md sääntö 8b) ennen kuin sitä voi käsitellä hyväksyttynä lähteenä. Hakusivun mukaan haku palautti hetkellä 23.9.2026 'Ilmoittaudu jonoon'-tilan kaikille neljälle ryhmälle (ei 'Enroll'/plain-tilaa) -> availability_status=waitlist. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-017",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/ilmonet_course_tanssi46_876432097f8a.html",
      "capture_sha256": "876432097f8aad5774935c37a915ea650d48a9ef4286394fc0b8920507d27133",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 41.51,
    "monthly_cost_basis": "30.0 € / term jaettuna 0.72 kuukaudelle (2026-11-07–2026-11-28, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Herttoniemi",
    "district_basis": "geokoodattu osoite -> neighborhood 'Herttoniemi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Helsingin työväenopisto",
    "group_name": "Perheliikunta, Helsingin työväenopisto",
    "min_age": 1,
    "max_age": 4,
    "eligibility_text": "1-4-vuotiaille lapsille + aikuinen (max 2 lasta / aikuinen)",
    "parent_child": "yes",
    "venue_name": "Helsingin työväenopisto, Kannelmäki – Haaga, Meilahden ala-aste",
    "address": "Jalavatie 6, 00270 Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-11-30",
    "sessions_count": 13,
    "price_eur": 66.0,
    "price_basis": "ilmonet.fi kurssisivun 'Hinta: Syksy 66.00 e'-kenttä (yksi hinta koko syyskaudelle, sisältää aikuisen ja lapsen/lapset).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://ilmonet.fi/course/H263630?lang=fi",
    "source_quote": "Ilmoittautuminen to 13.08.2026 klo 10:00 alkaen\nKurssitunnus: H263630\nHinta: Syksy 66,00 e",
    "activity_id": "hel-2026-0591",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 66.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://ilmonet.fi/course/H263630?lang=fi",
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-11-30",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-11-30",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmonet.fi kurssisivu: '(13 ses.)' / 'Päättyy ... (13 krt, ...)'.",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 66,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "adults_count": 1,
      "children_count": 2,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautuminen ilmonet.fi:ssä (Helsingin työväenopiston, Espoon työväenopiston, Helsingfors arbiksen ja Vantaan aikuisopiston yhteinen kurssihaku ja -ilmoittautumisjärjestelmä), joka ei ole tämän datasetin OFFICIAL_SYSTEM_DOMAINS-listalla (hel.fi/myclub.fi/ilmarix.fi) - kolmannen osapuolen järjestelmä, joka vaatii Ilpon päätöksen (CLAUDE.md sääntö 8b) ennen kuin sitä voi käsitellä hyväksyttynä lähteenä. Hakusivun mukaan haku palautti hetkellä 23.9.2026 'Ilmoittaudu jonoon'-tilan kaikille neljälle ryhmälle (ei 'Enroll'/plain-tilaa) -> availability_status=waitlist. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-018",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/ilmonet_course_perheliikunta_c93331c5d311.html",
      "capture_sha256": "c93331c5d3118383bc90e84115aee0f8448ee1b8f5533c15690ec0a299f0cbe8",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 21.84,
    "monthly_cost_basis": "66.0 € / term jaettuna 3.02 kuukaudelle (2026-08-31–2026-11-30, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Meilahti",
    "district_basis": "geokoodattu osoite -> sub_district 'Meilahti' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Helsingin työväenopisto",
    "group_name": "Aikuinen-vauva-baletti, Helsingin työväenopisto",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "vauva (ei numeerista ikähaarukkaa lähteessä; vauvan tulee pystyä kannattamaan päätään) + aikuinen",
    "parent_child": "yes",
    "venue_name": "Helsingin työväenopisto, Kallio, Opistotalo",
    "address": "Helsinginkatu 26, 00530 Helsinki",
    "district": null,
    "weekday": "perjantai",
    "start_time": "15:05",
    "end_time": "15:50",
    "season": "syksy 2026",
    "start_date": "2026-09-18",
    "end_date": "2026-12-04",
    "sessions_count": 11,
    "price_eur": 36.0,
    "price_basis": "ilmonet.fi kurssisivun 'Hinta: Syksy 36.00 e'-kenttä (yksi hinta koko syyskaudelle, sisältää aikuisen ja lapsen/lapset).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://ilmonet.fi/course/H263650?lang=fi",
    "source_quote": "Ilmoittautuminen to 13.08.2026 klo 10:00 alkaen\nKurssitunnus: H263650\nHinta: Syksy 36,00 e",
    "activity_id": "hel-2026-0592",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 36.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://ilmonet.fi/course/H263650?lang=fi",
    "billing_period": "term",
    "price_period_start": "2026-09-18",
    "price_period_end": "2026-12-04",
    "season_start_date": "2026-09-18",
    "season_end_date": "2026-12-04",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmonet.fi kurssisivu: '(11 ses.)' / 'Päättyy ... (11 krt, ...)'.",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 36,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "adults_count": 1,
      "children_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautuminen ilmonet.fi:ssä (Helsingin työväenopiston, Espoon työväenopiston, Helsingfors arbiksen ja Vantaan aikuisopiston yhteinen kurssihaku ja -ilmoittautumisjärjestelmä), joka ei ole tämän datasetin OFFICIAL_SYSTEM_DOMAINS-listalla (hel.fi/myclub.fi/ilmarix.fi) - kolmannen osapuolen järjestelmä, joka vaatii Ilpon päätöksen (CLAUDE.md sääntö 8b) ennen kuin sitä voi käsitellä hyväksyttynä lähteenä. Hakusivun mukaan haku palautti hetkellä 23.9.2026 'Ilmoittaudu jonoon'-tilan kaikille neljälle ryhmälle (ei 'Enroll'/plain-tilaa) -> availability_status=waitlist. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-019",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/ilmonet_course_vauvabaletti_52eae70e9b41.html",
      "capture_sha256": "52eae70e9b415a2cb5c9658756158cf8f75a56d21c8f41fe0713dd771b5e6e66",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 14.05,
    "monthly_cost_basis": "36.0 € / term jaettuna 2.56 kuukaudelle (2026-09-18–2026-12-04, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kallio",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kallio' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia",
    "group_name": "Pomppusankarit 3-4v (LAUviiPom1/02), Parkour Akatemia, Lauttasaari",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille (alle kouluikäiset lapset)",
    "parent_child": "unknown",
    "venue_name": "Lauttasaaren Parkour Akatemia ja Sirkuskoulu",
    "address": "Kiviaidankatu 2 C, 00210 Helsinki",
    "district": "Lauttasaari",
    "weekday": "lauantai",
    "start_time": "10:15",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": "2026-08-15",
    "end_date": "2026-12-12",
    "sessions_count": 17,
    "price_eur": 275.0,
    "price_basis": "uusi.pilvikanava.fi-ilmoittautumisjärjestelmän kurssikortin hinta (kausimaksu, koko syyskausi).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Juomapullo, sisäliikuntaan sopivat varusteet ja sisäkengät (voi liikkua myös paljain jaloin).",
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "source_quote": "Pomppusankarit 3-4v - Lauantai 10:15-11:00\nLAUviiPom1/02\nSyyskausi (2026-08-15–2026-12-12, 17 kertaa)\n275.00 €\nIlmoittautuminen on avoinna / Ilmoittaudu jonoon",
    "activity_id": "hel-2026-0593",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-15",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-15",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmoittautumissivun kurssikortti: '(17 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 275,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Valinnainen harrastajavakuutus voidaan lisätä ostoskoriin erikseen. Alennukset (perheenjäsenalennus -20 e, määräalennus -30 e, opiskelija-alennus -15 e) koskevat toista/useampaa osallistujaa/ryhmää samasta perheestä, ei tämän rivin perushintaa.",
    "unverified_fields": [],
    "verification_notes": "domain uusi.pilvikanava.fi ei ole järjestäjän tunnettu domain eikä hyväksytty virallinen ilmoittautumisjärjestelmä (CLAUDE.md sääntö 8b) - uusi kolmannen osapuolen ilmoittautumisjärjestelmä (vrt. Hoika), vaatii Ilpon päätöksen ennen candidate_clear-tilaa. Kurssikortissa ei näytetty vapaiden paikkojen määrää ja ilmoittautumispainike oli 'Ilmoittaudu jonoon' -> availability_status=full. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-022",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/parkour_allekoulu_b234d07e8e4d.html",
      "capture_sha256": "b234d07e8e4ddd7c15ca1d49629a11b25f4aad64769f72936460d7d03619c52c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 69.75,
    "monthly_cost_basis": "275.0 € / term jaettuna 3.94 kuukaudelle (2026-08-15–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia",
    "group_name": "Pomppusankarit 3-4v (LAUviiPom1/03), Parkour Akatemia, Lauttasaari",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille (alle kouluikäiset lapset)",
    "parent_child": "unknown",
    "venue_name": "Lauttasaaren Parkour Akatemia ja Sirkuskoulu",
    "address": "Kiviaidankatu 2 C, 00210 Helsinki",
    "district": "Lauttasaari",
    "weekday": "perjantai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": "2026-08-14",
    "end_date": "2026-12-11",
    "sessions_count": 17,
    "price_eur": 275.0,
    "price_basis": "uusi.pilvikanava.fi-ilmoittautumisjärjestelmän kurssikortin hinta (kausimaksu, koko syyskausi).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Juomapullo, sisäliikuntaan sopivat varusteet ja sisäkengät (voi liikkua myös paljain jaloin).",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "source_quote": "Pomppusankarit 3-4v - Perjantai 16:30-17:15\nLAUviiPom1/03\nSyyskausi (2026-08-14–2026-12-11, 17 kertaa)\n275.00 €\nIlmoittautuminen on avoinna / 2 paikkaa vapaana",
    "activity_id": "hel-2026-0594",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-14",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-08-14",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmoittautumissivun kurssikortti: '(17 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 275,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Valinnainen harrastajavakuutus voidaan lisätä ostoskoriin erikseen. Alennukset (perheenjäsenalennus -20 e, määräalennus -30 e, opiskelija-alennus -15 e) koskevat toista/useampaa osallistujaa/ryhmää samasta perheestä, ei tämän rivin perushintaa.",
    "unverified_fields": [],
    "verification_notes": "domain uusi.pilvikanava.fi ei ole järjestäjän tunnettu domain eikä hyväksytty virallinen ilmoittautumisjärjestelmä (CLAUDE.md sääntö 8b) - uusi kolmannen osapuolen ilmoittautumisjärjestelmä (vrt. Hoika), vaatii Ilpon päätöksen ennen candidate_clear-tilaa. Kurssikortti näytti '2 paikkaa vapaana' -> availability_status=open. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-023",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/parkour_allekoulu_b234d07e8e4d.html",
      "capture_sha256": "b234d07e8e4ddd7c15ca1d49629a11b25f4aad64769f72936460d7d03619c52c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 69.75,
    "monthly_cost_basis": "275.0 € / term jaettuna 3.94 kuukaudelle (2026-08-14–2026-12-11, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia",
    "group_name": "Pomppusankarit 3-4v (LAUviiPom1/01), Parkour Akatemia, Lauttasaari",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille (alle kouluikäiset lapset)",
    "parent_child": "unknown",
    "venue_name": "Lauttasaaren Parkour Akatemia ja Sirkuskoulu",
    "address": "Kiviaidankatu 2 C, 00210 Helsinki",
    "district": "Lauttasaari",
    "weekday": "tiistai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": "2026-08-11",
    "end_date": "2026-12-08",
    "sessions_count": 17,
    "price_eur": 275.0,
    "price_basis": "uusi.pilvikanava.fi-ilmoittautumisjärjestelmän kurssikortin hinta (kausimaksu, koko syyskausi).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Juomapullo, sisäliikuntaan sopivat varusteet ja sisäkengät (voi liikkua myös paljain jaloin).",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "source_quote": "Pomppusankarit 3-4v - Tiistai 16:30-17:15\nLAUviiPom1/01\nSyyskausi (2026-08-11–2026-12-08, 17 kertaa)\n275.00 €\nIlmoittautuminen on avoinna / 8 paikkaa vapaana",
    "activity_id": "hel-2026-0595",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-11",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-08-11",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmoittautumissivun kurssikortti: '(17 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 275,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Valinnainen harrastajavakuutus voidaan lisätä ostoskoriin erikseen. Alennukset (perheenjäsenalennus -20 e, määräalennus -30 e, opiskelija-alennus -15 e) koskevat toista/useampaa osallistujaa/ryhmää samasta perheestä, ei tämän rivin perushintaa.",
    "unverified_fields": [],
    "verification_notes": "domain uusi.pilvikanava.fi ei ole järjestäjän tunnettu domain eikä hyväksytty virallinen ilmoittautumisjärjestelmä (CLAUDE.md sääntö 8b) - uusi kolmannen osapuolen ilmoittautumisjärjestelmä (vrt. Hoika), vaatii Ilpon päätöksen ennen candidate_clear-tilaa. Kurssikortti näytti '8 paikkaa vapaana' -> availability_status=open. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-024",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/parkour_allekoulu_b234d07e8e4d.html",
      "capture_sha256": "b234d07e8e4ddd7c15ca1d49629a11b25f4aad64769f72936460d7d03619c52c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 69.75,
    "monthly_cost_basis": "275.0 € / term jaettuna 3.94 kuukaudelle (2026-08-11–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia",
    "group_name": "Tempputaiturit 5-6v (LAUviiTem1/03), Parkour Akatemia, Lauttasaari",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille (alle kouluikäiset lapset)",
    "parent_child": "unknown",
    "venue_name": "Lauttasaaren Parkour Akatemia ja Sirkuskoulu",
    "address": "Kiviaidankatu 2 C, 00210 Helsinki",
    "district": "Lauttasaari",
    "weekday": "keskiviikko",
    "start_time": "18:15",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-12",
    "end_date": "2026-12-09",
    "sessions_count": 17,
    "price_eur": 275.0,
    "price_basis": "uusi.pilvikanava.fi-ilmoittautumisjärjestelmän kurssikortin hinta (kausimaksu, koko syyskausi).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Juomapullo, sisäliikuntaan sopivat varusteet ja sisäkengät (voi liikkua myös paljain jaloin).",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "source_quote": "Tempputaiturit 5-6v - Keskiviikko 18:15-19:00\nLAUviiTem1/03\nSyyskausi (2026-08-12–2026-12-09, 17 kertaa)\n275.00 €\nIlmoittautuminen on avoinna / 3 paikkaa vapaana",
    "activity_id": "hel-2026-0596",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-12",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-12",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmoittautumissivun kurssikortti: '(17 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 275,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Valinnainen harrastajavakuutus voidaan lisätä ostoskoriin erikseen. Alennukset (perheenjäsenalennus -20 e, määräalennus -30 e, opiskelija-alennus -15 e) koskevat toista/useampaa osallistujaa/ryhmää samasta perheestä, ei tämän rivin perushintaa.",
    "unverified_fields": [],
    "verification_notes": "domain uusi.pilvikanava.fi ei ole järjestäjän tunnettu domain eikä hyväksytty virallinen ilmoittautumisjärjestelmä (CLAUDE.md sääntö 8b) - uusi kolmannen osapuolen ilmoittautumisjärjestelmä (vrt. Hoika), vaatii Ilpon päätöksen ennen candidate_clear-tilaa. Kurssikortti näytti '3 paikkaa vapaana' -> availability_status=open. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-025",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/parkour_allekoulu_b234d07e8e4d.html",
      "capture_sha256": "b234d07e8e4ddd7c15ca1d49629a11b25f4aad64769f72936460d7d03619c52c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 69.75,
    "monthly_cost_basis": "275.0 € / term jaettuna 3.94 kuukaudelle (2026-08-12–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia",
    "group_name": "Tempputaiturit 5-6v (LAUviiTem1/05), Parkour Akatemia, Lauttasaari",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille (alle kouluikäiset lapset)",
    "parent_child": "unknown",
    "venue_name": "Lauttasaaren Parkour Akatemia ja Sirkuskoulu",
    "address": "Kiviaidankatu 2 C, 00210 Helsinki",
    "district": "Lauttasaari",
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "11:45",
    "season": "syksy 2026",
    "start_date": "2026-08-15",
    "end_date": "2026-12-12",
    "sessions_count": 17,
    "price_eur": 275.0,
    "price_basis": "uusi.pilvikanava.fi-ilmoittautumisjärjestelmän kurssikortin hinta (kausimaksu, koko syyskausi).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Juomapullo, sisäliikuntaan sopivat varusteet ja sisäkengät (voi liikkua myös paljain jaloin).",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "source_quote": "Tempputaiturit 5-6v - Lauantai 11:00-11:45\nLAUviiTem1/05\nSyyskausi (2026-08-15–2026-12-12, 17 kertaa)\n275.00 €\nIlmoittautuminen on avoinna / Yksi paikka vapaana",
    "activity_id": "hel-2026-0597",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-15",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-15",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmoittautumissivun kurssikortti: '(17 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 275,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Valinnainen harrastajavakuutus voidaan lisätä ostoskoriin erikseen. Alennukset (perheenjäsenalennus -20 e, määräalennus -30 e, opiskelija-alennus -15 e) koskevat toista/useampaa osallistujaa/ryhmää samasta perheestä, ei tämän rivin perushintaa.",
    "unverified_fields": [],
    "verification_notes": "domain uusi.pilvikanava.fi ei ole järjestäjän tunnettu domain eikä hyväksytty virallinen ilmoittautumisjärjestelmä (CLAUDE.md sääntö 8b) - uusi kolmannen osapuolen ilmoittautumisjärjestelmä (vrt. Hoika), vaatii Ilpon päätöksen ennen candidate_clear-tilaa. Kurssikortti näytti 'Yksi paikka vapaana' -> availability_status=open. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-026",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/parkour_allekoulu_b234d07e8e4d.html",
      "capture_sha256": "b234d07e8e4ddd7c15ca1d49629a11b25f4aad64769f72936460d7d03619c52c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 69.75,
    "monthly_cost_basis": "275.0 € / term jaettuna 3.94 kuukaudelle (2026-08-15–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia",
    "group_name": "Tempputaiturit 5-6v (LAUviiTem1/01), Parkour Akatemia, Lauttasaari",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille (alle kouluikäiset lapset)",
    "parent_child": "unknown",
    "venue_name": "Lauttasaaren Parkour Akatemia ja Sirkuskoulu",
    "address": "Kiviaidankatu 2 C, 00210 Helsinki",
    "district": "Lauttasaari",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-10",
    "end_date": "2026-12-07",
    "sessions_count": 17,
    "price_eur": 275.0,
    "price_basis": "uusi.pilvikanava.fi-ilmoittautumisjärjestelmän kurssikortin hinta (kausimaksu, koko syyskausi).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Juomapullo, sisäliikuntaan sopivat varusteet ja sisäkengät (voi liikkua myös paljain jaloin).",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "source_quote": "Tempputaiturit 5-6v - Maanantai 17:00-17:45\nLAUviiTem1/01\nSyyskausi (2026-08-10–2026-12-07, 17 kertaa)\n275.00 €\nIlmoittautuminen on avoinna / Yksi paikka vapaana",
    "activity_id": "hel-2026-0598",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-10",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmoittautumissivun kurssikortti: '(17 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 275,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Valinnainen harrastajavakuutus voidaan lisätä ostoskoriin erikseen. Alennukset (perheenjäsenalennus -20 e, määräalennus -30 e, opiskelija-alennus -15 e) koskevat toista/useampaa osallistujaa/ryhmää samasta perheestä, ei tämän rivin perushintaa.",
    "unverified_fields": [],
    "verification_notes": "domain uusi.pilvikanava.fi ei ole järjestäjän tunnettu domain eikä hyväksytty virallinen ilmoittautumisjärjestelmä (CLAUDE.md sääntö 8b) - uusi kolmannen osapuolen ilmoittautumisjärjestelmä (vrt. Hoika), vaatii Ilpon päätöksen ennen candidate_clear-tilaa. Kurssikortti näytti 'Yksi paikka vapaana' -> availability_status=open. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-027",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/parkour_allekoulu_b234d07e8e4d.html",
      "capture_sha256": "b234d07e8e4ddd7c15ca1d49629a11b25f4aad64769f72936460d7d03619c52c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 69.75,
    "monthly_cost_basis": "275.0 € / term jaettuna 3.94 kuukaudelle (2026-08-10–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia",
    "group_name": "Tempputaiturit 5-6v (LAUviiTem1/02), Parkour Akatemia, Lauttasaari",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille (alle kouluikäiset lapset)",
    "parent_child": "unknown",
    "venue_name": "Lauttasaaren Parkour Akatemia ja Sirkuskoulu",
    "address": "Kiviaidankatu 2 C, 00210 Helsinki",
    "district": "Lauttasaari",
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-11",
    "end_date": "2026-12-08",
    "sessions_count": 17,
    "price_eur": 275.0,
    "price_basis": "uusi.pilvikanava.fi-ilmoittautumisjärjestelmän kurssikortin hinta (kausimaksu, koko syyskausi).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Juomapullo, sisäliikuntaan sopivat varusteet ja sisäkengät (voi liikkua myös paljain jaloin).",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "source_quote": "Tempputaiturit 5-6v - Tiistai 17:15-18:00\nLAUviiTem1/02\nSyyskausi (2026-08-11–2026-12-08, 17 kertaa)\n275.00 €\nIlmoittautuminen on avoinna / 2 paikkaa vapaana",
    "activity_id": "hel-2026-0599",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-11",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-08-11",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmoittautumissivun kurssikortti: '(17 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 275,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Valinnainen harrastajavakuutus voidaan lisätä ostoskoriin erikseen. Alennukset (perheenjäsenalennus -20 e, määräalennus -30 e, opiskelija-alennus -15 e) koskevat toista/useampaa osallistujaa/ryhmää samasta perheestä, ei tämän rivin perushintaa.",
    "unverified_fields": [],
    "verification_notes": "domain uusi.pilvikanava.fi ei ole järjestäjän tunnettu domain eikä hyväksytty virallinen ilmoittautumisjärjestelmä (CLAUDE.md sääntö 8b) - uusi kolmannen osapuolen ilmoittautumisjärjestelmä (vrt. Hoika), vaatii Ilpon päätöksen ennen candidate_clear-tilaa. Kurssikortti näytti '2 paikkaa vapaana' -> availability_status=open. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-028",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/parkour_allekoulu_b234d07e8e4d.html",
      "capture_sha256": "b234d07e8e4ddd7c15ca1d49629a11b25f4aad64769f72936460d7d03619c52c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 69.75,
    "monthly_cost_basis": "275.0 € / term jaettuna 3.94 kuukaudelle (2026-08-11–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia",
    "group_name": "Tempputaiturit 5-6v (LAUviiTem1/04), Parkour Akatemia, Lauttasaari",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille (alle kouluikäiset lapset)",
    "parent_child": "unknown",
    "venue_name": "Lauttasaaren Parkour Akatemia ja Sirkuskoulu",
    "address": "Kiviaidankatu 2 C, 00210 Helsinki",
    "district": "Lauttasaari",
    "weekday": "torstai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-13",
    "end_date": "2026-12-10",
    "sessions_count": 17,
    "price_eur": 275.0,
    "price_basis": "uusi.pilvikanava.fi-ilmoittautumisjärjestelmän kurssikortin hinta (kausimaksu, koko syyskausi).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Juomapullo, sisäliikuntaan sopivat varusteet ja sisäkengät (voi liikkua myös paljain jaloin).",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "source_quote": "Tempputaiturit 5-6v - Torstai 17:45-18:30\nLAUviiTem1/04\nSyyskausi (2026-08-13–2026-12-10, 17 kertaa)\n275.00 €\nIlmoittautuminen on avoinna / 5 paikkaa vapaana",
    "activity_id": "hel-2026-0600",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A28&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-13",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-13",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmoittautumissivun kurssikortti: '(17 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 275,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Valinnainen harrastajavakuutus voidaan lisätä ostoskoriin erikseen. Alennukset (perheenjäsenalennus -20 e, määräalennus -30 e, opiskelija-alennus -15 e) koskevat toista/useampaa osallistujaa/ryhmää samasta perheestä, ei tämän rivin perushintaa.",
    "unverified_fields": [],
    "verification_notes": "domain uusi.pilvikanava.fi ei ole järjestäjän tunnettu domain eikä hyväksytty virallinen ilmoittautumisjärjestelmä (CLAUDE.md sääntö 8b) - uusi kolmannen osapuolen ilmoittautumisjärjestelmä (vrt. Hoika), vaatii Ilpon päätöksen ennen candidate_clear-tilaa. Kurssikortti näytti '5 paikkaa vapaana' -> availability_status=open. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-029",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/parkour_allekoulu_b234d07e8e4d.html",
      "capture_sha256": "b234d07e8e4ddd7c15ca1d49629a11b25f4aad64769f72936460d7d03619c52c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 69.75,
    "monthly_cost_basis": "275.0 € / term jaettuna 3.94 kuukaudelle (2026-08-13–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia",
    "group_name": "Perheryhmä Aikuinen + 3-6v (LAUviiPer1/03), Parkour Akatemia, Lauttasaari",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "aikuinen + 3-6-vuotias lapsi",
    "parent_child": "yes",
    "venue_name": "Lauttasaaren Parkour Akatemia ja Sirkuskoulu",
    "address": "Kiviaidankatu 2 C, 00210 Helsinki",
    "district": "Lauttasaari",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-13",
    "end_date": "2026-12-10",
    "sessions_count": 17,
    "price_eur": 285.0,
    "price_basis": "uusi.pilvikanava.fi-ilmoittautumisjärjestelmän kurssikortin hinta (kausimaksu, koko syyskausi, kattaa aikuisen ja lapsen).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Juomapullo, sisäliikuntaan sopivat varusteet ja sisäkengät (voi liikkua myös paljain jaloin).",
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A35&page=1",
    "source_quote": "Perheryhmä Aikuinen + 3-6v - Torstai 17:00-17:45\nLAUviiPer1/03\nSyyskausi (2026-08-13–2026-12-10, 17 kertaa)\n285.00 €\nIlmoittautuminen on avoinna / Ilmoittaudu jonoon",
    "activity_id": "hel-2026-0601",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 285.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A35&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-13",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-13",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmoittautumissivun kurssikortti: '(17 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 285,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "adults_count": 1,
      "children_count": 1,
      "verified": true
    },
    "optional_cost_notes": "Valinnainen harrastajavakuutus voidaan lisätä ostoskoriin erikseen. Alennukset (perheenjäsenalennus -20 e, määräalennus -30 e, opiskelija-alennus -15 e) koskevat toista/useampaa osallistujaa/ryhmää samasta perheestä, ei tämän rivin perushintaa.",
    "unverified_fields": [],
    "verification_notes": "domain uusi.pilvikanava.fi ei ole järjestäjän tunnettu domain eikä hyväksytty virallinen ilmoittautumisjärjestelmä (CLAUDE.md sääntö 8b) - uusi kolmannen osapuolen ilmoittautumisjärjestelmä (vrt. Hoika), vaatii Ilpon päätöksen ennen candidate_clear-tilaa. Kurssikortissa ei näytetty vapaiden paikkojen määrää ja ilmoittautumispainike oli 'Ilmoittaudu jonoon' -> availability_status=full. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-030",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/parkour_perheet_65e17b1920fa.html",
      "capture_sha256": "65e17b1920fa25b86f9ae84375c12fdc0a8183205367964d052b4e62339289ba",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 72.29,
    "monthly_cost_basis": "285.0 € / term jaettuna 3.94 kuukaudelle (2026-08-13–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia",
    "group_name": "Perheryhmä Aikuinen + 4-6v (LAUviiPer1/01), Parkour Akatemia, Lauttasaari",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "aikuinen + 4-6-vuotias lapsi",
    "parent_child": "yes",
    "venue_name": "Lauttasaaren Parkour Akatemia ja Sirkuskoulu",
    "address": "Kiviaidankatu 2 C, 00210 Helsinki",
    "district": "Lauttasaari",
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-11",
    "end_date": "2026-12-08",
    "sessions_count": 17,
    "price_eur": 300.0,
    "price_basis": "uusi.pilvikanava.fi-ilmoittautumisjärjestelmän kurssikortin hinta (kausimaksu, koko syyskausi, kattaa aikuisen ja lapsen).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Juomapullo, sisäliikuntaan sopivat varusteet ja sisäkengät (voi liikkua myös paljain jaloin).",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A35&page=1",
    "source_quote": "Perheryhmä Aikuinen + 4-6v - Tiistai 18:00-19:00\nLAUviiPer1/01\nSyyskausi (2026-08-11–2026-12-08, 17 kertaa)\n300.00 €\nIlmoittautuminen on avoinna / 5 paikkaa vapaana",
    "activity_id": "hel-2026-0602",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 300.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A35&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-11",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-08-11",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmoittautumissivun kurssikortti: '(17 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 300,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "adults_count": 1,
      "children_count": 1,
      "verified": true
    },
    "optional_cost_notes": "Valinnainen harrastajavakuutus voidaan lisätä ostoskoriin erikseen. Alennukset (perheenjäsenalennus -20 e, määräalennus -30 e, opiskelija-alennus -15 e) koskevat toista/useampaa osallistujaa/ryhmää samasta perheestä, ei tämän rivin perushintaa.",
    "unverified_fields": [],
    "verification_notes": "domain uusi.pilvikanava.fi ei ole järjestäjän tunnettu domain eikä hyväksytty virallinen ilmoittautumisjärjestelmä (CLAUDE.md sääntö 8b) - uusi kolmannen osapuolen ilmoittautumisjärjestelmä (vrt. Hoika), vaatii Ilpon päätöksen ennen candidate_clear-tilaa. Kurssikortti näytti '5 paikkaa vapaana' -> availability_status=open. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-031",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/parkour_perheet_65e17b1920fa.html",
      "capture_sha256": "65e17b1920fa25b86f9ae84375c12fdc0a8183205367964d052b4e62339289ba",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 76.09,
    "monthly_cost_basis": "300.0 € / term jaettuna 3.94 kuukaudelle (2026-08-11–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia",
    "group_name": "Perheryhmä Aikuinen + lapsi 4-6v (LAUviiPer1/02), Parkour Akatemia, Lauttasaari",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "aikuinen + 4-6-vuotias lapsi",
    "parent_child": "yes",
    "venue_name": "Lauttasaaren Parkour Akatemia ja Sirkuskoulu",
    "address": "Kiviaidankatu 2 C, 00210 Helsinki",
    "district": "Lauttasaari",
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-12",
    "end_date": "2026-12-09",
    "sessions_count": 17,
    "price_eur": 300.0,
    "price_basis": "uusi.pilvikanava.fi-ilmoittautumisjärjestelmän kurssikortin hinta (kausimaksu, koko syyskausi, kattaa aikuisen ja lapsen).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Juomapullo, sisäliikuntaan sopivat varusteet ja sisäkengät (voi liikkua myös paljain jaloin).",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A35&page=1",
    "source_quote": "Perheryhmä Aikuinen + lapsi 4-6v - Keskiviikko 17:15-18:15\nLAUviiPer1/02\nSyyskausi (2026-08-12–2026-12-09, 17 kertaa)\n300.00 €\nIlmoittautuminen on avoinna / 4 paikkaa vapaana",
    "activity_id": "hel-2026-0603",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 300.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A35&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-12",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-12",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmoittautumissivun kurssikortti: '(17 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 300,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "adults_count": 1,
      "children_count": 1,
      "verified": true
    },
    "optional_cost_notes": "Valinnainen harrastajavakuutus voidaan lisätä ostoskoriin erikseen. Alennukset (perheenjäsenalennus -20 e, määräalennus -30 e, opiskelija-alennus -15 e) koskevat toista/useampaa osallistujaa/ryhmää samasta perheestä, ei tämän rivin perushintaa.",
    "unverified_fields": [],
    "verification_notes": "domain uusi.pilvikanava.fi ei ole järjestäjän tunnettu domain eikä hyväksytty virallinen ilmoittautumisjärjestelmä (CLAUDE.md sääntö 8b) - uusi kolmannen osapuolen ilmoittautumisjärjestelmä (vrt. Hoika), vaatii Ilpon päätöksen ennen candidate_clear-tilaa. Kurssikortti näytti '4 paikkaa vapaana' -> availability_status=open. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-032",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/parkour_perheet_65e17b1920fa.html",
      "capture_sha256": "65e17b1920fa25b86f9ae84375c12fdc0a8183205367964d052b4e62339289ba",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 76.09,
    "monthly_cost_basis": "300.0 € / term jaettuna 3.94 kuukaudelle (2026-08-12–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia",
    "group_name": "Taaperoparkour: aikuinen + 1-3v (LAUviiPer1/04), Parkour Akatemia, Lauttasaari",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "aikuinen + 1-3-vuotias taapero",
    "parent_child": "yes",
    "venue_name": "Lauttasaaren Parkour Akatemia ja Sirkuskoulu",
    "address": "Kiviaidankatu 2 C, 00210 Helsinki",
    "district": "Lauttasaari",
    "weekday": "torstai",
    "start_time": "16:15",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-08-13",
    "end_date": "2026-12-10",
    "sessions_count": 17,
    "price_eur": 285.0,
    "price_basis": "uusi.pilvikanava.fi-ilmoittautumisjärjestelmän kurssikortin hinta (kausimaksu, koko syyskausi, kattaa aikuisen ja lapsen).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Juomapullo, sisäliikuntaan sopivat varusteet ja sisäkengät (voi liikkua myös paljain jaloin).",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A35&page=1",
    "source_quote": "Taaperoparkour: aikuinen + 1-3v - Torstai 16:15-17:00\nLAUviiPer1/04\nSyyskausi (2026-08-13–2026-12-10, 17 kertaa)\n285.00 €\nIlmoittautuminen on avoinna / 5 paikkaa vapaana",
    "activity_id": "hel-2026-0604",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 285.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department%3A8%20category%3A35&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-13",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-13",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "ilmoittautumissivun kurssikortti: '(17 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 285,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "adults_count": 1,
      "children_count": 1,
      "verified": true
    },
    "optional_cost_notes": "Valinnainen harrastajavakuutus voidaan lisätä ostoskoriin erikseen. Alennukset (perheenjäsenalennus -20 e, määräalennus -30 e, opiskelija-alennus -15 e) koskevat toista/useampaa osallistujaa/ryhmää samasta perheestä, ei tämän rivin perushintaa.",
    "unverified_fields": [],
    "verification_notes": "domain uusi.pilvikanava.fi ei ole järjestäjän tunnettu domain eikä hyväksytty virallinen ilmoittautumisjärjestelmä (CLAUDE.md sääntö 8b) - uusi kolmannen osapuolen ilmoittautumisjärjestelmä (vrt. Hoika), vaatii Ilpon päätöksen ennen candidate_clear-tilaa. Kurssikortti näytti '5 paikkaa vapaana' -> availability_status=open. | Linjaus 23.9.2026 (a): ilmoittautumisjärjestelmä (ilmonet.fi/pilvikanava.fi) hyväksytty viralliseksi; muu tieto oli jo varmaa, rivi julkaistaan.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_30.json",
      "staging_id": "batch_2026-09-23_30-033",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_30/parkour_perheet_65e17b1920fa.html",
      "capture_sha256": "65e17b1920fa25b86f9ae84375c12fdc0a8183205367964d052b4e62339289ba",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:53:04+00:00"
    },
    "monthly_cost_eur": 72.29,
    "monthly_cost_basis": "285.0 € / term jaettuna 3.94 kuukaudelle (2026-08-13–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Lauttasaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Perhosvoltti Circus Arts Oy",
    "group_name": "Vauvasirkus (8 kk-1,5 v)",
    "min_age": 0,
    "max_age": 1,
    "eligibility_text": "8 kk–1,5 v vanhemman kanssa",
    "parent_child": "yes",
    "venue_name": "Perhosvoltti Circus Arts",
    "address": "Loisteputki 4 C, Suutarila, Helsinki",
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "ei vahvistettu (sivu: \"Uudet ajankohdat tulossa pian\")",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 95.0,
    "price_basis": "Kurssisivun hinta 95 €.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.perhosvoltti.com/classes/vauvasirkus",
    "source_quote": "Vauvasirkus (8 kk-1,5 v) | 8 kk–1,5 v vanhemman kanssa ... 95 € ... \"courseSchedule\": \"Uudet ajankohdat tulossa pian\", \"maximumAttendeeCapacity\": \"12\", \"remainingAttendeeCapacity\": \"12\"",
    "activity_id": "hel-2026-0605",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 95.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.perhosvoltti.com/classes/vauvasirkus",
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 95,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "season",
      "start_date",
      "end_date"
    ],
    "verification_notes": "Sivu ilmoittaa eksplisiittisesti 'Uudet ajankohdat tulossa pian' - ei vielä vahvistettua aikataulua tai kauden päivämääriä. Rakenteinen schema.org-data: maximumAttendeeCapacity 12, remainingAttendeeCapacity 12 (kaikki paikat vapaana) ja availability InStock -> tulkittu avoimeksi ilmoittautumiseksi tulevalle, vielä aikatauluttamattomalle kaudelle.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/perhosvoltti_vauva.html",
      "capture_sha256": "f27e9a14ad776a9c66fd6ecaf107f86decde378bee3c6fc0630de1e00ce4a675",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Siltamäki",
    "district_basis": "geokoodattu osoite -> sub_district 'Siltamäki' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Perhosvoltti Circus Arts Oy",
    "group_name": "Taaperosirkus (2-3v)",
    "min_age": 2,
    "max_age": 3,
    "eligibility_text": "2–3 v vanhemman kanssa",
    "parent_child": "yes",
    "venue_name": "Perhosvoltti Circus Arts",
    "address": "Loisteputki 4 C, Suutarila, Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "10:15",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": "2026-08-16",
    "end_date": "2026-12-20",
    "sessions_count": null,
    "price_eur": 316.0,
    "price_basis": "Kurssisivun hinta 316 € syyskaudelta 16.8.-20.12.2026.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.perhosvoltti.com/classes/taaperosirkus",
    "source_quote": "Taaperosirkus (2-3v) | 2–3 v vanhemman kanssa ... 316 € ... Syyskausi 2026 Syyskausi 16. elokuuta–20. joulukuuta 2026 18.10 tuntia ei pidetä Aikataulu: Sunnuntaisin klo 10.15-11.00",
    "activity_id": "hel-2026-0606",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 316.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.perhosvoltti.com/classes/taaperosirkus",
    "billing_period": "term",
    "price_period_start": "2026-08-16",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-16",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 316,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Ilmoittautumissivun 'Aikataulu: Sunnuntaisin klo 10.15-11.00', 'Syyskausi 16. elokuuta-20. joulukuuta 2026', '18.10 tuntia ei pidetä' (yksittäinen poikkeuspäivä). JSON-LD remainingAttendeeCapacity 5/12 -> open. Alkuperäinen laji sirkus/akrobatia, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/perhosvoltti_taapero.html",
      "capture_sha256": "6953e6fe5f23bccad015d8753ed2f33b08ae3952f15dc410a5368ae9ff0a7e73",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 75.73,
    "monthly_cost_basis": "316.0 € / term jaettuna 4.17 kuukaudelle (2026-08-16–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "geokoodattu osoite -> sub_district 'Siltamäki' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Perhosvoltti Circus Arts Oy",
    "group_name": "Lapsi-aikuinen akro 4-6 v",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4–6 v vanhemman kanssa",
    "parent_child": "yes",
    "venue_name": "Perhosvoltti Circus Arts",
    "address": "Loisteputki 4 C, Suutarila, Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:35",
    "end_time": "18:20",
    "season": "syksy 2026",
    "start_date": "2026-08-11",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 316.0,
    "price_basis": "Kurssisivun hinta 316 € syyskaudelta 10.8.-12.12.2026 (18 viikon kausijäsenyysohjelma).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.perhosvoltti.com/classes/lapsi-aikuinen-akro",
    "source_quote": "Lapsi-aikuinen akro 4–6 v | 4–6 v vanhemman kanssa ... 316 € ... Tiistaisin klo 17:35–18:20 ... Syyskausi 2026 10 elokuuta 2026 → 12. joulukuuta 2026 Lomat Syysloma: 12.–18. lokakuuta 2026",
    "activity_id": "hel-2026-0607",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 316.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.perhosvoltti.com/classes/lapsi-aikuinen-akro",
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-10",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 316,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Ilmoittautumissivun 'Tiistaisin klo 17:35-18:20', 'Syyskausi 2026 10 elokuuta 2026 -> 12. joulukuuta 2026', 'Syysloma: 12.-18. lokakuuta 2026'. JSON-LD remainingAttendeeCapacity 0/12 -> full. Alkuperäinen laji sirkus/akrobatia, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/perhosvoltti_akro.html",
      "capture_sha256": "21bf2108d41f1347645df1227927ca678bb3b00b740ba6868037d02bc564ade3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 76.95,
    "monthly_cost_basis": "316.0 € / term jaettuna 4.11 kuukaudelle (2026-08-10–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Siltamäki",
    "district_basis": "geokoodattu osoite -> sub_district 'Siltamäki' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Uimahyppääjien Kerho Härveli ry",
    "group_name": "Nuorten (6-10v) alkeiskurssi 4.10.-1.11.",
    "min_age": 6,
    "max_age": 10,
    "eligibility_text": "Kurssi on tarkoitettu 6-10-vuotiaille.",
    "parent_child": "no",
    "venue_name": "Pirkkolan uimahalli",
    "address": "Pirkkolan uimahalli, Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "17:00",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-10-04",
    "end_date": "2026-11-01",
    "sessions_count": 4,
    "price_eur": 65.0,
    "price_basis": "Kurssisivun 'Kurssin hinta 65 €'.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.harveli.fi/nuoret/nuorten-6-10v-alkeiskurssi-4-10--1-11",
    "source_quote": "Uimahyppyjen alkeiskurssi 6–10-vuotiaille 4.10.–1.11.2026 ... Kurssin kesto 4.10.–1.11.2026 Harjoitusten lukumäärä 4 Harjoitukset Sunnuntaisin klo 17–18.30 Paikka Pirkkolan uimahalli, Helsinki Kurssin hinta 65 € ... Täynnä",
    "activity_id": "hel-2026-0608",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 65.0,
    "price_per_session_eur": 16.25,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.harveli.fi/nuoret/nuorten-6-10v-alkeiskurssi-4-10--1-11",
    "billing_period": "course",
    "price_period_start": "2026-10-04",
    "price_period_end": "2026-11-01",
    "season_start_date": "2026-10-04",
    "season_end_date": "2026-11-01",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssisivun 'Harjoitusten lukumäärä 4'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 65,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Rajaus 'sopii vain 6-vuotiaille' (ikähaarukka 6-10 v, vain alaikäraja 6 osuu 0-6 v rajaukseen). Osallistujilta vaaditaan uimataito ja kyky toimia uimahallissa itsenäisesti; ei erillistä jäsen- tai lisenssimaksua mainittu. Alkuperäinen laji uimahypyt, merkitty uinniksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/harveli_610.html",
      "capture_sha256": "574de16986a588739226269feb94bdd9483495d023111de253f0d46a40690e29",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 68.22,
    "monthly_cost_basis": "65.0 € / course jaettuna 0.95 kuukaudelle (2026-10-04–2026-11-01, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "voimistelu",
    "provider": "Tanssiteatteri Hurjaruuth ry",
    "group_name": "Tonttukoulu, Taaperosirkus, tiistai",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3 v.",
    "parent_child": "yes",
    "venue_name": "Kaapelitehdas (Tonttukoulu)",
    "address": "Tallberginkatu 1, 00180 Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:00",
    "end_time": "16:45",
    "season": "syksy 2026",
    "start_date": "2026-09-08",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 190.0,
    "price_basis": "Ilmarix.fi-ilmoittautumislomakkeen 'Kauden hinta on 190 eur' -teksti.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=32E7F1F388244C21C2258DE2003FAE3F",
    "source_quote": "Lomakkeen avaushetkellä: paikkoja 0 Taaperoryhmään tullaan yhdessä aikuisen kanssa. ... Opettajana Celso de la Molina ... Syyskausi alkaa tiistaina 8.9.2026. Kauden hinta on 190 euroa (lapsi ja aikuinen) Lisähenkilö 90 euroa",
    "activity_id": "hel-2026-0609",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 190.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=32E7F1F388244C21C2258DE2003FAE3F",
    "billing_period": "term",
    "price_period_start": "2026-09-08",
    "price_period_end": null,
    "season_start_date": "2026-09-08",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 190,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Lisähenkilö (toinen perheenjäsen samaan ryhmään)",
        "amount_eur": 90,
        "applies_if": "Jos perheestä osallistuu useampi kuin yksi lapsi/aikuinen samaan ryhmään",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count",
      "season_end_date",
      "end_date"
    ],
    "verification_notes": "Ilmarix.fi-ilmoittautumissivun (kausivarauslomake) tila haettu 23.9.2026: paikkoja 0 (ei jonopaikkoja mainittu). Kauden päättymispäivää ei ilmoiteta sivulla, joten season_end_date/end_date ja sessions_count jätetty tyhjäksi (linjaus 1/5). Alkuperäinen laji sirkus (Tonttukoulu), merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti. Rekisteröinti- ja maksusivu ilmarix.fi on hyväksytty järjestelmä (CLAUDE.md, Ilpon päätös 23.9.2026 (a)).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/hurjaruuth_ilmarix_toddler_tue.html",
      "capture_sha256": "61e6d5573d3b72827ceab19b4128d86bc9a66de0c4778c733da1d4c8b888378d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Länsisatama",
    "district_basis": "geokoodattu osoite -> neighborhood 'Länsisatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tanssiteatteri Hurjaruuth ry",
    "group_name": "Tonttukoulu, Taaperosirkus, keskiviikko",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3 v.",
    "parent_child": "yes",
    "venue_name": "Kaapelitehdas (Tonttukoulu)",
    "address": "Tallberginkatu 1, 00180 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-09",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 190.0,
    "price_basis": "Ilmarix.fi-ilmoittautumislomakkeen 'Kauden hinta on 190 eur' -teksti.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=E0460E3FF5BB744CC2258DE200414DD0",
    "source_quote": "paikkoja 0 ... Syyskausi alkaa keskiviikkona 9.9.2026. Kauden hinta on 190 euroa (lapsi ja aikuinen) Lisähenkilö 90 euroa",
    "activity_id": "hel-2026-0610",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 190.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=E0460E3FF5BB744CC2258DE200414DD0",
    "billing_period": "term",
    "price_period_start": "2026-09-09",
    "price_period_end": null,
    "season_start_date": "2026-09-09",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 190,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Lisähenkilö (toinen perheenjäsen samaan ryhmään)",
        "amount_eur": 90,
        "applies_if": "Jos perheestä osallistuu useampi kuin yksi lapsi/aikuinen samaan ryhmään",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count",
      "season_end_date",
      "end_date"
    ],
    "verification_notes": "Ilmarix.fi-ilmoittautumissivun (kausivarauslomake) tila haettu 23.9.2026: paikkoja 0 (ei jonopaikkoja mainittu). Kauden päättymispäivää ei ilmoiteta sivulla, joten season_end_date/end_date ja sessions_count jätetty tyhjäksi (linjaus 1/5). Alkuperäinen laji sirkus (Tonttukoulu), merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti. Rekisteröinti- ja maksusivu ilmarix.fi on hyväksytty järjestelmä (CLAUDE.md, Ilpon päätös 23.9.2026 (a)).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/hurjaruuth_ilmarix_toddler_wed.html",
      "capture_sha256": "95a2f8dff5447ebdb6dcb63f761dbd3f23dd04102561771af30be5b090c6c949",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Länsisatama",
    "district_basis": "geokoodattu osoite -> neighborhood 'Länsisatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tanssiteatteri Hurjaruuth ry",
    "group_name": "Tonttukoulu, Taaperosirkus, lauantai",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3 v.",
    "parent_child": "yes",
    "venue_name": "Kaapelitehdas (Tonttukoulu)",
    "address": "Tallberginkatu 1, 00180 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": "2026-09-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 190.0,
    "price_basis": "Ilmarix.fi-ilmoittautumislomakkeen 'Kauden hinta on 190 eur' -teksti.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=E5DC669E50D8BEFEC2258DE20046369F",
    "source_quote": "paikkoja 0 ... Syyskausi alkaa lauantaina 12.9.2026. Kauden hinta on 190 euroa (lapsi ja aikuinen) Lisähenkilö 90 euroa",
    "activity_id": "hel-2026-0611",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 190.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=E5DC669E50D8BEFEC2258DE20046369F",
    "billing_period": "term",
    "price_period_start": "2026-09-12",
    "price_period_end": null,
    "season_start_date": "2026-09-12",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 190,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Lisähenkilö (toinen perheenjäsen samaan ryhmään)",
        "amount_eur": 90,
        "applies_if": "Jos perheestä osallistuu useampi kuin yksi lapsi/aikuinen samaan ryhmään",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count",
      "season_end_date",
      "end_date"
    ],
    "verification_notes": "Ilmarix.fi-ilmoittautumissivun (kausivarauslomake) tila haettu 23.9.2026: paikkoja 0 (ei jonopaikkoja mainittu). Kauden päättymispäivää ei ilmoiteta sivulla, joten season_end_date/end_date ja sessions_count jätetty tyhjäksi (linjaus 1/5). Alkuperäinen laji sirkus (Tonttukoulu), merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti. Rekisteröinti- ja maksusivu ilmarix.fi on hyväksytty järjestelmä (CLAUDE.md, Ilpon päätös 23.9.2026 (a)).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/hurjaruuth_ilmarix_toddler_sat.html",
      "capture_sha256": "ea7e49b18471a40404a51933afbbf14e45d01aeb4fda08961f986ecfc8a34687",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Länsisatama",
    "district_basis": "geokoodattu osoite -> neighborhood 'Länsisatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tanssiteatteri Hurjaruuth ry",
    "group_name": "Tonttukoulu, 4-6 v., maanantai",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v.",
    "parent_child": "no",
    "venue_name": "Kaapelitehdas (Tonttukoulu)",
    "address": "Tallberginkatu 1, 00180 Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-07",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Ilmarix.fi-ilmoittautumislomakkeen 'Kauden hinta on 160 eur' -teksti.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=74A72EC2F8276FECC2258DE2002E3501",
    "source_quote": "paikkoja 0, varapaikkoja 2 Tonttukoulu syksy 2026 Ma klo 17.15-18.00 / 4-6 v. ... Opettajana toimii ... Haidi Sadonkorpi. Syyskausi alkaa maanantaina 7.9.2026. Kauden hinta on 160 eur.",
    "activity_id": "hel-2026-0612",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=74A72EC2F8276FECC2258DE2002E3501",
    "billing_period": "term",
    "price_period_start": "2026-09-07",
    "price_period_end": null,
    "season_start_date": "2026-09-07",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count",
      "season_end_date",
      "end_date"
    ],
    "verification_notes": "Ilmarix.fi-ilmoittautumissivun (kausivarauslomake) tila haettu 23.9.2026: paikkoja 0, varapaikkoja 2 (jonopaikka). Kauden päättymispäivää ei ilmoiteta sivulla, joten season_end_date/end_date ja sessions_count jätetty tyhjäksi (linjaus 1/5). Alkuperäinen laji sirkus (Tonttukoulu), merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti. Rekisteröinti- ja maksusivu ilmarix.fi on hyväksytty järjestelmä (CLAUDE.md, Ilpon päätös 23.9.2026 (a)).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/hurjaruuth_ilmarix_age46_mon.html",
      "capture_sha256": "7368696ecdddb8648382f26f90c26ab3e48a60772b41d6ae40e1bef233668486",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Länsisatama",
    "district_basis": "geokoodattu osoite -> neighborhood 'Länsisatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tanssiteatteri Hurjaruuth ry",
    "group_name": "Tonttukoulu, 4-6 v., tiistai",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v.",
    "parent_child": "no",
    "venue_name": "Kaapelitehdas (Tonttukoulu)",
    "address": "Tallberginkatu 1, 00180 Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-09-08",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Ilmarix.fi-ilmoittautumislomakkeen 'Kauden hinta on 160 eur' -teksti.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=BE235D10BC6D319EC2258DE2003ECFA0",
    "source_quote": "paikkoja 4, varapaikkoja 2 Tonttukoulu syksy 2026 Ti klo 16.45-17.30 / 4-6 v. ... Opettajana toimii Celso de la Molina ... Kauden hinta on 160 eur.",
    "activity_id": "hel-2026-0613",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=BE235D10BC6D319EC2258DE2003ECFA0",
    "billing_period": "term",
    "price_period_start": "2026-09-08",
    "price_period_end": null,
    "season_start_date": "2026-09-08",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count",
      "season_end_date",
      "end_date"
    ],
    "verification_notes": "Ilmarix.fi-ilmoittautumissivun (kausivarauslomake) tila haettu 23.9.2026: 4 paikkaa vapaana. Kauden päättymispäivää ei ilmoiteta sivulla, joten season_end_date/end_date ja sessions_count jätetty tyhjäksi (linjaus 1/5). Alkuperäinen laji sirkus (Tonttukoulu), merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti. Rekisteröinti- ja maksusivu ilmarix.fi on hyväksytty järjestelmä (CLAUDE.md, Ilpon päätös 23.9.2026 (a)).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/hurjaruuth_ilmarix_age46_tue.html",
      "capture_sha256": "02bd1b001d68b54ff6152f10c0207aecf79446584a812e7d6f92f1872bd8b8f6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Länsisatama",
    "district_basis": "geokoodattu osoite -> neighborhood 'Länsisatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tanssiteatteri Hurjaruuth ry",
    "group_name": "Tonttukoulu, 4-6 v., keskiviikko",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v.",
    "parent_child": "no",
    "venue_name": "Kaapelitehdas (Tonttukoulu)",
    "address": "Tallberginkatu 1, 00180 Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-09",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Ilmarix.fi-ilmoittautumislomakkeen 'Kauden hinta on 160 eur' -teksti.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=5C9F99CFA2F86700C2258DE200416F24",
    "source_quote": "paikkoja 2, varapaikkoja 2 Tonttukoulu syksy 2026 Ke klo 17.45-18.30 / 4-6v. ... Opettajana toimii Celso de la Molina ... Kauden hinta on 160 eur.",
    "activity_id": "hel-2026-0614",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=5C9F99CFA2F86700C2258DE200416F24",
    "billing_period": "term",
    "price_period_start": "2026-09-09",
    "price_period_end": null,
    "season_start_date": "2026-09-09",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count",
      "season_end_date",
      "end_date"
    ],
    "verification_notes": "Ilmarix.fi-ilmoittautumissivun (kausivarauslomake) tila haettu 23.9.2026: 2 paikkaa vapaana. Kauden päättymispäivää ei ilmoiteta sivulla, joten season_end_date/end_date ja sessions_count jätetty tyhjäksi (linjaus 1/5). Alkuperäinen laji sirkus (Tonttukoulu), merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti. Rekisteröinti- ja maksusivu ilmarix.fi on hyväksytty järjestelmä (CLAUDE.md, Ilpon päätös 23.9.2026 (a)).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/hurjaruuth_ilmarix_age46_wed.html",
      "capture_sha256": "f4cd7efa94a781d61dcb00d5d65fdbcea8cabe53b8d4bda31ef2ec4f5f5e9f80",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Länsisatama",
    "district_basis": "geokoodattu osoite -> neighborhood 'Länsisatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tanssiteatteri Hurjaruuth ry",
    "group_name": "Tonttukoulu, 5-7 v., lauantai",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "no",
    "venue_name": "Kaapelitehdas (Tonttukoulu)",
    "address": "Tallberginkatu 1, 00180 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": "2026-09-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Ilmarix.fi-ilmoittautumislomakkeen 'Kauden hinta on 160 eur' -teksti.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=6845336336284A3DC2258DE200474825",
    "source_quote": "paikkoja 0 Tonttukoulu syksy 2026 La klo 11.00-12.00 / 5-7 v. ... Opettajana ... Karoliina Nordin. Syyskausi alkaa lauantaina 12.9.2026. Kauden hinta on 160 eur.",
    "activity_id": "hel-2026-0615",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=6845336336284A3DC2258DE200474825",
    "billing_period": "term",
    "price_period_start": "2026-09-12",
    "price_period_end": null,
    "season_start_date": "2026-09-12",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count",
      "season_end_date",
      "end_date"
    ],
    "verification_notes": "Ilmarix.fi-ilmoittautumissivun (kausivarauslomake) tila haettu 23.9.2026: paikkoja 0 (ei jonopaikkoja mainittu). Kauden päättymispäivää ei ilmoiteta sivulla, joten season_end_date/end_date ja sessions_count jätetty tyhjäksi (linjaus 1/5). Alkuperäinen laji sirkus (Tonttukoulu), merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti. Rekisteröinti- ja maksusivu ilmarix.fi on hyväksytty järjestelmä (CLAUDE.md, Ilpon päätös 23.9.2026 (a)).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-011",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/hurjaruuth_ilmarix_age46_sat.html",
      "capture_sha256": "02c689d0a7613b9816ff20e0a9a666ee0f73c538eeafb828dd8227c7fad24747",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Länsisatama",
    "district_basis": "geokoodattu osoite -> neighborhood 'Länsisatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tanssiteatteri Hurjaruuth ry",
    "group_name": "Tonttukoulu, Perhesirkus 4-7 v., lauantai",
    "min_age": 4,
    "max_age": 7,
    "eligibility_text": "4-7 v.",
    "parent_child": "yes",
    "venue_name": "Kaapelitehdas (Tonttukoulu)",
    "address": "Tallberginkatu 1, 00180 Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "15:30",
    "end_time": "16:30",
    "season": "syksy 2026",
    "start_date": "2026-09-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 190.0,
    "price_basis": "Ilmarix.fi-ilmoittautumislomakkeen 'Kauden hinta on 190 eur' -teksti.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=0690667D278F72C0C2258DE200490C7C",
    "source_quote": "paikkoja 0 Tonttukoulu syksy 2026 La klo 15.30-16.30 / 4-7 v. Perhesirkus Perheryhmään tullaan yhdessä aikuisen kanssa. ... Syyskausi alkaa lauantaina 12.9.2026. Kauden hinta on 190 euroa (lapsi ja aikuinen) Lisähenkilö 90 euroa",
    "activity_id": "hel-2026-0616",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 190.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.ilmarix.fi/tietoverkko/isoilmari3.nsf/ilmoall?openform&s=n&id=0690667D278F72C0C2258DE200490C7C",
    "billing_period": "term",
    "price_period_start": "2026-09-12",
    "price_period_end": null,
    "season_start_date": "2026-09-12",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 190,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Lisähenkilö (toinen perheenjäsen samaan ryhmään)",
        "amount_eur": 90,
        "applies_if": "Jos perheestä osallistuu useampi kuin yksi lapsi/aikuinen samaan ryhmään",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count",
      "season_end_date",
      "end_date"
    ],
    "verification_notes": "Ilmarix.fi-ilmoittautumissivun (kausivarauslomake) tila haettu 23.9.2026: paikkoja 0 (ei jonopaikkoja mainittu). Kauden päättymispäivää ei ilmoiteta sivulla, joten season_end_date/end_date ja sessions_count jätetty tyhjäksi (linjaus 1/5). Alkuperäinen laji sirkus (Tonttukoulu), merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti. Rekisteröinti- ja maksusivu ilmarix.fi on hyväksytty järjestelmä (CLAUDE.md, Ilpon päätös 23.9.2026 (a)).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-012",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/hurjaruuth_ilmarix_family_sat.html",
      "capture_sha256": "18fffb44902087a893015d72149f30c4e9c784b7c586be34c20b59024ffa18a6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Länsisatama",
    "district_basis": "geokoodattu osoite -> neighborhood 'Länsisatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Kuutit 6-12 kk",
    "min_age": 0,
    "max_age": 0,
    "eligibility_text": "Perheryhmät (6-12 kk)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "09:30",
    "end_time": "10:15",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F65&page=1",
    "source_quote": "Perhesirkusryhmä Kuutit 6-12 kk\n\n2001\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\n5 paikkaa vapaana",
    "activity_id": "hel-2026-0617",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F65&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-013",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/circushelsinki_baby_a1ac9b480a1b.txt",
      "capture_sha256": "a1ac9b480a1b733ecdb7baf9811ed3b4291ebdcb3748f7cf2a16cffeea79b132",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Karitsat 6-12 kk",
    "min_age": 0,
    "max_age": 0,
    "eligibility_text": "Perheryhmät (6-12 kk)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "11:00",
    "end_time": "11:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F65&page=1",
    "source_quote": "Perhesirkusryhmä Karitsat 6-12 kk\n\n2002\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nYksi paikka vapaana",
    "activity_id": "hel-2026-0618",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F65&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-014",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/circushelsinki_baby_a1ac9b480a1b.txt",
      "capture_sha256": "a1ac9b480a1b733ecdb7baf9811ed3b4291ebdcb3748f7cf2a16cffeea79b132",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Lumikonpoikaset 1-2 -vuotiaat",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "Perheryhmät (1-2 -vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Konttori",
    "address": "Kaasutehtaankatu 1, rak. 7, Helsinki",
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:00",
    "end_time": "16:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F66&page=1",
    "source_quote": "Perhesirkusryhmä Lumikonpoikaset 1-2 -vuotiaat\n\n2020\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Konttori\nKaasutehtaankatu 1, rak. 7, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0619",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F66&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-015",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_66_647ef473eafa.txt",
      "capture_sha256": "647ef473eafa03a6d5508a7fd8f39c3a9fc97b5767e28fee38cf15f099deeb1a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Varsat 1-2 -vuotiaat",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "Perheryhmät (1-2 -vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "10:15",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F66&page=1",
    "source_quote": "Perhesirkusryhmä Varsat 1-2 -vuotiaat\n\n2021\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0620",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F66&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-016",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_66_647ef473eafa.txt",
      "capture_sha256": "647ef473eafa03a6d5508a7fd8f39c3a9fc97b5767e28fee38cf15f099deeb1a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Hillerinpoikaset 1-2 -vuotiaat",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "Perheryhmät (1-2 -vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:00",
    "end_time": "09:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F66&page=1",
    "source_quote": "Perhesirkusryhmä Hillerinpoikaset 1-2 -vuotiaat\n\n2023\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\n6 paikkaa vapaana",
    "activity_id": "hel-2026-0621",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F66&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-017",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_66_647ef473eafa.txt",
      "capture_sha256": "647ef473eafa03a6d5508a7fd8f39c3a9fc97b5767e28fee38cf15f099deeb1a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Kirput 2-3-vuotiaat",
    "min_age": 2,
    "max_age": 3,
    "eligibility_text": "Perheryhmät (2-3-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Konttori",
    "address": "Kaasutehtaankatu 1, rak. 7, Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F67&page=1",
    "source_quote": "Perhesirkusryhmä Kirput 2-3-vuotiaat\n\n2050\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Konttori\nKaasutehtaankatu 1, rak. 7, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0622",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F67&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-018",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_67_b680c82daf02.txt",
      "capture_sha256": "b680c82daf02555f2bd29cbc3e26931d51b13dc337c9e88f9f3e5d99c55c6967",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Pääskyset 2-3-vuotiaat",
    "min_age": 2,
    "max_age": 3,
    "eligibility_text": "Perheryhmät (2-3-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Konttori",
    "address": "Kaasutehtaankatu 1, rak. 7, Helsinki",
    "district": null,
    "weekday": "perjantai",
    "start_time": "15:45",
    "end_time": "16:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F67&page=1",
    "source_quote": "Perhesirkusryhmä Pääskyset 2-3-vuotiaat\n\n2051\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Konttori\nKaasutehtaankatu 1, rak. 7, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0623",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F67&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-019",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_67_b680c82daf02.txt",
      "capture_sha256": "b680c82daf02555f2bd29cbc3e26931d51b13dc337c9e88f9f3e5d99c55c6967",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Oselotit 2-3-vuotiaat",
    "min_age": 2,
    "max_age": 3,
    "eligibility_text": "Perheryhmät (2-3-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:45",
    "end_time": "10:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F67&page=1",
    "source_quote": "Perhesirkusryhmä Oselotit 2-3-vuotiaat\n\n2052\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0624",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F67&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-020",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_67_b680c82daf02.txt",
      "capture_sha256": "b680c82daf02555f2bd29cbc3e26931d51b13dc337c9e88f9f3e5d99c55c6967",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Ketunpoikaset 2-3-vuotiaat",
    "min_age": 2,
    "max_age": 3,
    "eligibility_text": "Perheryhmät (2-3-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Konttori",
    "address": "Kaasutehtaankatu 1, rak. 7, Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:15",
    "end_time": "10:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F67&page=1",
    "source_quote": "Perhesirkusryhmä Ketunpoikaset 2-3-vuotiaat\n\n2053\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Konttori\nKaasutehtaankatu 1, rak. 7, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0625",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F67&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-021",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_67_b680c82daf02.txt",
      "capture_sha256": "b680c82daf02555f2bd29cbc3e26931d51b13dc337c9e88f9f3e5d99c55c6967",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Västäräkit 2-3-vuotiaat",
    "min_age": 2,
    "max_age": 3,
    "eligibility_text": "Perheryhmät (2-3-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "15:15",
    "end_time": "16:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F67&page=1",
    "source_quote": "Perhesirkusryhmä Västäräkit 2-3-vuotiaat\n\n2054\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\n4 paikkaa vapaana",
    "activity_id": "hel-2026-0626",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F67&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-022",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_67_b680c82daf02.txt",
      "capture_sha256": "b680c82daf02555f2bd29cbc3e26931d51b13dc337c9e88f9f3e5d99c55c6967",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Sinitiaiset 2-3-vuotiaat",
    "min_age": 2,
    "max_age": 3,
    "eligibility_text": "Perheryhmät (2-3-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "16:00",
    "end_time": "16:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F67&page=1",
    "source_quote": "Perhesirkusryhmä Sinitiaiset 2-3-vuotiaat\n\n2055\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0627",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F67&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-023",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_67_b680c82daf02.txt",
      "capture_sha256": "b680c82daf02555f2bd29cbc3e26931d51b13dc337c9e88f9f3e5d99c55c6967",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Koalat 3-4-vuotiaat",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "Perheryhmät (3-4-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Konttori",
    "address": "Kaasutehtaankatu 1, rak. 7, Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F1&page=1",
    "source_quote": "Perhesirkusryhmä Koalat 3-4-vuotiaat\n\n2100\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Konttori\nKaasutehtaankatu 1, rak. 7, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0628",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F1&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-024",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_1_35b82b13630b.txt",
      "capture_sha256": "35b82b13630b89a85bc9d185b15e0d79bba52e2d6675d98796c865ae8a1b765c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Kilit 3-4-vuotiaat",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "Perheryhmät (3-4-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:00",
    "end_time": "09:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F1&page=1",
    "source_quote": "Perhesirkusryhmä Kilit 3-4-vuotiaat\n\n2101\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\n7 paikkaa vapaana",
    "activity_id": "hel-2026-0629",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F1&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-025",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_1_35b82b13630b.txt",
      "capture_sha256": "35b82b13630b89a85bc9d185b15e0d79bba52e2d6675d98796c865ae8a1b765c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Riekonpoikaset 3-4-vuotiaat",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "Perheryhmät (3-4-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:45",
    "end_time": "10:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F1&page=1",
    "source_quote": "Perhesirkusryhmä Riekonpoikaset 3-4-vuotiaat\n\n2102\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0630",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F1&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-026",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_1_35b82b13630b.txt",
      "capture_sha256": "35b82b13630b89a85bc9d185b15e0d79bba52e2d6675d98796c865ae8a1b765c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Metsäkauriit 3-4-vuotiaat",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "Perheryhmät (3-4-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:30",
    "end_time": "11:15",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F1&page=1",
    "source_quote": "Perhesirkusryhmä Metsäkauriit 3-4-vuotiaat\n\n2103\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0631",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F1&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-027",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_1_35b82b13630b.txt",
      "capture_sha256": "35b82b13630b89a85bc9d185b15e0d79bba52e2d6675d98796c865ae8a1b765c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Hiirenpoikaset 3-4-vuotiaat",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "Perheryhmät (3-4-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Konttori",
    "address": "Kaasutehtaankatu 1, rak. 7, Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F1&page=1",
    "source_quote": "Perhesirkusryhmä Hiirenpoikaset 3-4-vuotiaat\n\n2105\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Konttori\nKaasutehtaankatu 1, rak. 7, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0632",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F1&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-028",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_1_35b82b13630b.txt",
      "capture_sha256": "35b82b13630b89a85bc9d185b15e0d79bba52e2d6675d98796c865ae8a1b765c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Kengurunpoikaset 3-4-vuotiaat",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "Perheryhmät (3-4-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "14:00",
    "end_time": "14:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F1&page=1",
    "source_quote": "Perhesirkusryhmä Kengurunpoikaset 3-4-vuotiaat\n\n2106\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0633",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F1&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-029",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_1_35b82b13630b.txt",
      "capture_sha256": "35b82b13630b89a85bc9d185b15e0d79bba52e2d6675d98796c865ae8a1b765c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Pingviinit 4-5-vuotiaat",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "Perheryhmät (4-5-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Konttori",
    "address": "Kaasutehtaankatu 1, rak. 7, Helsinki",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F49&page=1",
    "source_quote": "Perhesirkusryhmä Pingviinit 4-5-vuotiaat\n\n2200\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Konttori\nKaasutehtaankatu 1, rak. 7, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0634",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F49&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-030",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_49_ea6a65566b81.txt",
      "capture_sha256": "ea6a65566b815167e5d4aa0634e091042efa4b91e58a1d77928d74ba6275dca5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Ankanpoikaset 4-5-vuotiaat",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "Perheryhmät (4-5-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "12:30",
    "end_time": "13:15",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F49&page=1",
    "source_quote": "Perhesirkusryhmä Ankanpoikaset 4-5-vuotiaat\n\n2201\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0635",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F49&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-031",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_49_ea6a65566b81.txt",
      "capture_sha256": "ea6a65566b815167e5d4aa0634e091042efa4b91e58a1d77928d74ba6275dca5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Hylkeenpoikaset 4-5-vuotiaat",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "Perheryhmät (4-5-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:15",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F49&page=1",
    "source_quote": "Perhesirkusryhmä Hylkeenpoikaset 4-5-vuotiaat\n\n2202\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0636",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F49&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-032",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_49_ea6a65566b81.txt",
      "capture_sha256": "ea6a65566b815167e5d4aa0634e091042efa4b91e58a1d77928d74ba6275dca5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Sapelihammastiikerit 4-5-vuotiaat",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "Perheryhmät (4-5-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "15:00",
    "end_time": "15:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F49&page=1",
    "source_quote": "Perhesirkusryhmä Sapelihammastiikerit 4-5-vuotiaat\n\n2204\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nYksi paikka vapaana",
    "activity_id": "hel-2026-0637",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F49&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-033",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_49_ea6a65566b81.txt",
      "capture_sha256": "ea6a65566b815167e5d4aa0634e091042efa4b91e58a1d77928d74ba6275dca5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Karhunpoikaset 4-5-vuotiaat",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "Perheryhmät (4-5-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "14:45",
    "end_time": "15:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 206.0,
    "price_basis": "Kurssikortin hinta 206,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F49&page=1",
    "source_quote": "Perhesirkusryhmä Karhunpoikaset 4-5-vuotiaat\n\n2205\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n206,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\n5 paikkaa vapaana",
    "activity_id": "hel-2026-0638",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 206.0,
    "price_per_session_eur": 12.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F49&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 206,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-034",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_49_ea6a65566b81.txt",
      "capture_sha256": "ea6a65566b815167e5d4aa0634e091042efa4b91e58a1d77928d74ba6275dca5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 52.69,
    "monthly_cost_basis": "206.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Norsunpoikaset 5-6-vuotiaat",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "Perheryhmät (5-6-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Konttori",
    "address": "Kaasutehtaankatu 1, rak. 7, Helsinki",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 254.0,
    "price_basis": "Kurssikortin hinta 254,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F52&page=1",
    "source_quote": "Perhesirkusryhmä Norsunpoikaset 5-6-vuotiaat\n\n2300\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Konttori\nKaasutehtaankatu 1, rak. 7, Helsinki\n...Lisätietoja kurssista »\n254,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0639",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 254.0,
    "price_per_session_eur": 15.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F52&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 254,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-035",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_52_56796a46312a.txt",
      "capture_sha256": "56796a46312a62388bce4e3dd8650c2fdc604855c73132988865d19cce2037d2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 64.97,
    "monthly_cost_basis": "254.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Pupunpoikaset 5-6-vuotiaat",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "Perheryhmät (5-6-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:30",
    "end_time": "11:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 254.0,
    "price_basis": "Kurssikortin hinta 254,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F52&page=1",
    "source_quote": "Perhesirkusryhmä Pupunpoikaset 5-6-vuotiaat\n\n2301\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n254,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0640",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 254.0,
    "price_per_session_eur": 15.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F52&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 254,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-036",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_52_56796a46312a.txt",
      "capture_sha256": "56796a46312a62388bce4e3dd8650c2fdc604855c73132988865d19cce2037d2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 64.97,
    "monthly_cost_basis": "254.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Kultapandat 5-6-vuotiaat",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "Perheryhmät (5-6-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "14:00",
    "end_time": "15:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 254.0,
    "price_basis": "Kurssikortin hinta 254,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F52&page=1",
    "source_quote": "Perhesirkusryhmä Kultapandat 5-6-vuotiaat\n\n2302\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n254,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0641",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 254.0,
    "price_per_session_eur": 15.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F52&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 254,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-037",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_52_56796a46312a.txt",
      "capture_sha256": "56796a46312a62388bce4e3dd8650c2fdc604855c73132988865d19cce2037d2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 64.97,
    "monthly_cost_basis": "254.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Kissanpoikaset 5-6-vuotiaat",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "Perheryhmät (5-6-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "13:00",
    "end_time": "14:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 254.0,
    "price_basis": "Kurssikortin hinta 254,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F52&page=1",
    "source_quote": "Perhesirkusryhmä Kissanpoikaset 5-6-vuotiaat\n\n2303\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n254,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\n2 paikkaa vapaana",
    "activity_id": "hel-2026-0642",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 254.0,
    "price_per_session_eur": 15.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F52&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 254,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-038",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_52_56796a46312a.txt",
      "capture_sha256": "56796a46312a62388bce4e3dd8650c2fdc604855c73132988865d19cce2037d2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 64.97,
    "monthly_cost_basis": "254.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Peipot 5-6-vuotiaat",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "Perheryhmät (5-6-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "15:30",
    "end_time": "16:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 254.0,
    "price_basis": "Kurssikortin hinta 254,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F52&page=1",
    "source_quote": "Perhesirkusryhmä Peipot 5-6-vuotiaat\n\n2304\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n254,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0643",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 254.0,
    "price_per_session_eur": 15.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F52&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 254,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-039",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_52_56796a46312a.txt",
      "capture_sha256": "56796a46312a62388bce4e3dd8650c2fdc604855c73132988865d19cce2037d2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 64.97,
    "monthly_cost_basis": "254.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Metsäkissat 6-10-vuotiaat",
    "min_age": 6,
    "max_age": 10,
    "eligibility_text": "Perheryhmät (6-10-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:30",
    "end_time": "12:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 254.0,
    "price_basis": "Kurssikortin hinta 254,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F53&page=1",
    "source_quote": "Perhesirkusryhmä Metsäkissat 6-10-vuotiaat\n\n2400\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n254,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\n5 paikkaa vapaana",
    "activity_id": "hel-2026-0644",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 254.0,
    "price_per_session_eur": 15.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F53&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 254,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti. Ikähaarukka 6-10 v, vain alaikäraja 6 osuu 0-6 v rajaukseen (\"sopii vain 6-vuotiaille\").",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-040",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_53_8803beb68218.txt",
      "capture_sha256": "8803beb68218706dd8b351422e8b681dc6756454b81b79bbdf7dbec5ab1dc21c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 64.97,
    "monthly_cost_basis": "254.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Leppäkertut 6-10-vuotiaat",
    "min_age": 6,
    "max_age": 10,
    "eligibility_text": "Perheryhmät (6-10-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "13:00",
    "end_time": "14:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 254.0,
    "price_basis": "Kurssikortin hinta 254,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F53&page=1",
    "source_quote": "Perhesirkusryhmä Leppäkertut 6-10-vuotiaat\n\n2401\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n254,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\nKurssi on täynnä",
    "activity_id": "hel-2026-0645",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 254.0,
    "price_per_session_eur": 15.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F53&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 254,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti. Ikähaarukka 6-10 v, vain alaikäraja 6 osuu 0-6 v rajaukseen (\"sopii vain 6-vuotiaille\").",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-041",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_53_8803beb68218.txt",
      "capture_sha256": "8803beb68218706dd8b351422e8b681dc6756454b81b79bbdf7dbec5ab1dc21c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 64.97,
    "monthly_cost_basis": "254.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Circus Helsinki (Sirkuksen ja fyysisen teatterin koulu ry)",
    "group_name": "Perhesirkusryhmä Punatulkut 6-10-vuotiaat",
    "min_age": 6,
    "max_age": 10,
    "eligibility_text": "Perheryhmät (6-10-vuotiaat)",
    "parent_child": "yes",
    "venue_name": "Generaattorisali",
    "address": "Sörnäisten rantatie 22 rak 1, Helsinki",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "15:45",
    "end_time": "16:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 16,
    "price_eur": 254.0,
    "price_basis": "Kurssikortin hinta 254,00 €, syyslukukausi 17.8.-13.12.2026 (16 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F53&page=1",
    "source_quote": "Perhesirkusryhmä Punatulkut 6-10-vuotiaat\n\n2402\n\nSyyslukukausi\n17.8.–13.12.2026 (16 kertaa)\nPäivä ja kellonaika\n... Generaattorisali\nSörnäisten rantatie 22 rak 1, Helsinki\n...Lisätietoja kurssista »\n254,00 €\nLisää ostoskoriin\nIlmoittautuminen on avoinna\nIlmoittaudu viimeistään\n31.10.2026 23:59\n7 paikkaa vapaana",
    "activity_id": "hel-2026-0646",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 254.0,
    "price_per_session_eur": 15.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://uusi.pilvikanava.fi/circushelsinki/fi/?q=subject%3A2%2F53&page=1",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "Kurssikortin '17.8.-13.12.2026 (16 kertaa)'.",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 254,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautumis- ja maksusivu uusi.pilvikanava.fi (hyväksytty järjestelmä, Ilpon päätös 23.9.2026 (a)); ilmoittautuminen avoinna 31.10.2026 asti. Alkuperäinen laji sirkus, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen mukaisesti. Ikähaarukka 6-10 v, vain alaikäraja 6 osuu 0-6 v rajaukseen (\"sopii vain 6-vuotiaille\").",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_33.json",
      "staging_id": "batch_2026-09-23_33-042",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_33/ch_53_8803beb68218.txt",
      "capture_sha256": "8803beb68218706dd8b351422e8b681dc6756454b81b79bbdf7dbec5ab1dc21c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T17:54:13+00:00"
    },
    "monthly_cost_eur": 64.97,
    "monthly_cost_basis": "254.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kalasatama",
    "district_basis": "geokoodattu osoite -> sub_district 'Kalasatama' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "jalkapallo",
    "provider": "Laajasalon Palloseura (LPS)",
    "group_name": "LPS Perhefutis 2-4v (la 10:15-11:00 / 11:00-11:45)",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2–4-vuotiaille lapsille suunnattu liikunnallinen harrastus, yhdessä aikuisen kanssa",
    "parent_child": "yes",
    "venue_name": "Laajasalon palloiluhallin sali",
    "address": "Sarvastonkaari 23, 00840 Helsinki",
    "district": "Laajasalo",
    "weekday": "lauantai",
    "start_time": null,
    "end_time": null,
    "season": "talvikausi 2026-2027 (päivämäärät ilman vuotta lähteellä, ks. verification_notes)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 180.0,
    "price_basis": "Sivun hinta 180€ koko talvikaudelta.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://laajasalonpalloseura.fi/lps-harrastetoiminnot/lps-perhefutis/",
    "source_quote": "2–4-vuotiaille lapsille suunnattu liikunnallinen harrastus | Aika: Lauantaisin klo 10:15-11:00 / 11:00-11:45 | Paikka: Laajasalon palloiluhallin sali, Sarvastonkaari 23, 00840 Helsinki | Hinta: 180€ | Toimintakausi: 15.11.-11.4. | Paikkojen määrä: 20, paikat täytetään ilmoittautumisjärjestyksessä",
    "activity_id": "hel-2026-0647",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 180.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://laajasalonpalloseura.fi/lps-harrastetoiminnot/lps-perhefutis/",
    "billing_period": "full_season",
    "price_period_start": "2026-11-15",
    "price_period_end": "2027-04-11",
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 180,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "sessions_count"
    ],
    "verification_notes": "Kaksi rinnakkaista vuoroa samalla hinnalla/iällä (la 10:15-11:00 ja 11:00-11:45), kummassakin 20 paikkaa, täytetään ilmoittautumisjärjestyksessä - yksi rivi rajausäännön 3 mukaisesti (useita aikoja samassa ryhmässä). Toimintakausi ilmoitettu sivulla vain muodossa \"15.11.-11.4.\" ilman vuosilukua; tulkittu tulevaksi talvikaudeksi 2026-2027 hakuhetken (23.9.2026) perusteella - ei sanamukaisesti vahvistettu, siksi merkitty uncertain. Nykyistä täyttöastetta (auki/täynnä) ei ilmoiteta sivulla. Sivu palautti 403 Forbidden suoralle curl/headless-Chrome-haulle; sisältö saatu WebFetch-työkalulla, ei raakatallennetta (evidence.capture=null). season_start_date/season_end_date jatettu tyhjaksi, koska sivu ei ilmoita vuosilukua paivamaarille (vain 15.11.-11.4.) - ei arvattu.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_34.json",
      "staging_id": "batch_2026-09-23_34-001",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T18:47:49+00:00"
    },
    "monthly_cost_eur": 37.02,
    "monthly_cost_basis": "180.0 € / full_season jaettuna 4.86 kuukaudelle (2026-11-15–2027-04-11, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Laajasalo",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Saiffa – Flow Mo Dance School",
    "group_name": "Junnu-break 5-7v (to 17:15-18:00)",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "Junnu-break 5-7v",
    "parent_child": "no",
    "venue_name": "Saiffa – Flow Mo Dance School, Sali 2",
    "address": "Lönnrotinkatu 25 A 2. kerros, 00180 Helsinki",
    "district": "Kamppi",
    "weekday": "torstai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syyskausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 243.0,
    "price_basis": "Kausimaksu 45 min:n tunnille syyskuusta alkaen 243€, sisältää 19 opetusviikkoa. Junnu-break 5-7v on lukujärjestyksen mukaan 45 min tunti.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.saiffa.fi/lukujarjestys/",
    "source_quote": "Junnu-break 5-7 | Torstai 17.15 - 18.00 | Pietari | Sali 2 --- Kausimaksut 2026 Saiffan kausimaksu sisältää 19 opetusviikkoa... 45min:n tunnille syyskuusta alkaen 243€",
    "activity_id": "hel-2026-0648",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 243.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.saiffa.fi/tuntikuvaukset-ja-hinnasto/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 243,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "45 min:n tunnin kausimaksu"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "season_start_date",
      "season_end_date",
      "start_date",
      "end_date"
    ],
    "verification_notes": "Hinta ei ole kurssikohtaisella sivulla vaan johdettu keston mukaisesta kausimaksusta (Hinnasto-sivu): Junnu-break 5-7v on lukujärjestyksen mukaan 45 min tunti, joten sovelletaan 45 min:n kausimaksua 243€/19 viikkoa. Saatavuutta (täynnä/avoin) ei ilmoiteta julkisesti tälle ryhmälle.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_34.json",
      "staging_id": "batch_2026-09-23_34-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_34/saiffa_hinnasto.html",
      "capture_sha256": "7558b1b6f01e179a026889c15bc0bbb5a2e8c5490be86fabc50a9d0daa569782",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T18:47:49+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Kamppi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Roof Aerial Club",
    "group_name": "Sirkus 4-6v (ti 17:30-18:15)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "Sirkus 4-6v",
    "parent_child": "no",
    "venue_name": "Roof Aerial Club, Isosali",
    "address": "Malmin raitti 17 A, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syyskausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 18,
    "price_eur": 175.0,
    "price_basis": "Lastentuntien kausimaksu 45 min 1x/viikko 175€ (18 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.roofaerialclub.fi/lukujarjestys",
    "source_quote": "Isosali syyskausi 2026 -lukujärjestys (kuva); Lastentuntien kausimaksu 45 min 1x/viikko 175€ (18 kertaa)",
    "activity_id": "hel-2026-0649",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 175.0,
    "price_per_session_eur": 9.72,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.roofaerialclub.fi/hinnasto",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.roofaerialclub.fi/hinnasto",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 175,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "season_start_date",
      "season_end_date",
      "start_date",
      "end_date"
    ],
    "verification_notes": "Alkuperäinen laji sirkus/ilma-akrobatia, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen (b) mukaisesti. Päivä/aika luettu Isosalin syyskausi 2026 -lukujärjestyskuvasta (Read-työkalu), hinta erilliseltä hinnasto-sivulta (kesto+viikkotoisto -> kausimaksu). Saatavuutta ei ilmoiteta julkisesti. Ryhmä nimeä \"Sirkus 4-6v\" - ohjaajat Jerina/Sanni.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_34.json",
      "staging_id": "batch_2026-09-23_34-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_34/roof_hinnasto.html",
      "capture_sha256": "5525d4e95c747a7b04d4d444597ad69ee3d6a36f111e2f599b7e72f40fef1f7f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T18:47:49+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Roof Aerial Club",
    "group_name": "Ilma-akrobatia 6-7v (su 10:00-10:45)",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "Ilma-akrobatia 6-7 v",
    "parent_child": "no",
    "venue_name": "Roof Aerial Club, Isosali",
    "address": "Malmin raitti 17 A, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syyskausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 18,
    "price_eur": 175.0,
    "price_basis": "Lastentuntien kausimaksu 45 min 1x/viikko 175€ (18 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.roofaerialclub.fi/lukujarjestys",
    "source_quote": "Isosali syyskausi 2026 -lukujärjestys (kuva); Lastentuntien kausimaksu 45 min 1x/viikko 175€ (18 kertaa)",
    "activity_id": "hel-2026-0650",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 175.0,
    "price_per_session_eur": 9.72,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.roofaerialclub.fi/hinnasto",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.roofaerialclub.fi/hinnasto",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 175,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "season_start_date",
      "season_end_date",
      "start_date",
      "end_date"
    ],
    "verification_notes": "Alkuperäinen laji sirkus/ilma-akrobatia, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen (b) mukaisesti. Päivä/aika luettu Isosalin syyskausi 2026 -lukujärjestyskuvasta (Read-työkalu), hinta erilliseltä hinnasto-sivulta (kesto+viikkotoisto -> kausimaksu). Saatavuutta ei ilmoiteta julkisesti. Vain alaraja 6 osuu 0-6 v rajaukseen - merkitty \"sopii vain 6-vuotiaille\".",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_34.json",
      "staging_id": "batch_2026-09-23_34-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_34/roof_hinnasto.html",
      "capture_sha256": "5525d4e95c747a7b04d4d444597ad69ee3d6a36f111e2f599b7e72f40fef1f7f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T18:47:49+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Roof Aerial Club",
    "group_name": "Perhesirkus 1-4v (la 9:45-10:30)",
    "min_age": 1,
    "max_age": 4,
    "eligibility_text": "Perhesirkus 1-4 v",
    "parent_child": "yes",
    "venue_name": "Roof Aerial Club, Isosali",
    "address": "Malmin raitti 17 A, 00700 Helsinki",
    "district": "Malmi",
    "weekday": "lauantai",
    "start_time": "09:45",
    "end_time": "10:30",
    "season": "syyskausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": 18,
    "price_eur": 175.0,
    "price_basis": "Lastentuntien kausimaksu 45 min 1x/viikko 175€ (18 kertaa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.roofaerialclub.fi/lukujarjestys",
    "source_quote": "Isosali syyskausi 2026 -lukujärjestys (kuva); Lastentuntien kausimaksu 45 min 1x/viikko 175€ (18 kertaa)",
    "activity_id": "hel-2026-0651",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 175.0,
    "price_per_session_eur": 9.72,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.roofaerialclub.fi/hinnasto",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.roofaerialclub.fi/hinnasto",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 175,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "season_start_date",
      "season_end_date",
      "start_date",
      "end_date"
    ],
    "verification_notes": "Alkuperäinen laji sirkus/ilma-akrobatia, merkitty voimisteluksi Ilpon 23.9.2026 päätöksen (b) mukaisesti. Päivä/aika luettu Isosalin syyskausi 2026 -lukujärjestyskuvasta (Read-työkalu), hinta erilliseltä hinnasto-sivulta (kesto+viikkotoisto -> kausimaksu). Saatavuutta ei ilmoiteta julkisesti. Perheryhmä (lapsi+aikuinen); hinnasto-sivun huomautus \"perhe- ja lasten ryhmiin vain kausimaksulla\" kattaa tämän.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_34.json",
      "staging_id": "batch_2026-09-23_34-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_34/roof_hinnasto.html",
      "capture_sha256": "5525d4e95c747a7b04d4d444597ad69ee3d6a36f111e2f599b7e72f40fef1f7f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T18:47:49+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Malmi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "SAPA Helsinki 1970",
    "group_name": "Minifutis 4-6v (Katajanokka / Kalasatama)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4–6-vuotiaille",
    "parent_child": "no",
    "venue_name": null,
    "address": null,
    "district": "Katajanokka / Kalasatama",
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syyskausi 2026",
    "start_date": "2026-09-14",
    "end_date": "2026-12-07",
    "sessions_count": 12,
    "price_eur": 155.0,
    "price_basis": "Syyskausi 14.9.-7.12.2026, 12 ohjattua kertaa, 155€. Lisäksi pakolliset Palloliiton korttelipassi 16€ ja SAPAn jäsenmaksu 20€ (molemmat 1.7.2026-30.6.2027).",
    "membership_fee_eur": 20,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Voi tulla ensin kokeilemaan; jos parin ensimmäisen kerran jälkeen ei sovi, maksu palautetaan.",
    "enrollment_status": "unknown",
    "source_url": "https://sapa.fi/minifutis-4-6-vuotiaille/",
    "source_quote": "Milloin Ma & ti alkuillasta Missä Katajanokka, Kalasatama Hinta 155 € / kausi --- Mitä liikkari maksaa Syyskausi 14.9.–7.12.2026 12 ohjattua kertaa 155 € Palloliiton korttelipassi sisältää tapaturmavakuutuksen · 1.7.2026–30.6.2027 16 € SAPAn jäsenmaksu 1.7.2026–30.6.2027 20 € Yhteensä syyskaudelta 191 €",
    "activity_id": "hel-2026-0652",
    "city": "Helsinki",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 191.0,
    "price_per_session_eur": 15.92,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://sapa.fi/minifutis-4-6-vuotiaille/",
    "billing_period": "term",
    "price_period_start": "2026-09-14",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-09-14",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://sapa.fi/minifutis-4-6-vuotiaille/",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 155,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Syyskausi 14.9.-7.12.2026"
      },
      {
        "type": "license",
        "amount_eur": 16,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Palloliiton korttelipassi (sis. tapaturmavakuutuksen), 1.7.2026-30.6.2027"
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SAPAn jäsenmaksu, 1.7.2026-30.6.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "venue_name",
      "address"
    ],
    "verification_notes": "Kaksi vuoroa/paikkaa samalla hinnalla/iällä: Katajanokka (syksy ti 18:15-19:00, kevät ti 17:15-18:00) ja Kalasatama (18:45-19:30 molemmin kausin), päivä \"ma & ti alkuillasta\" - yksi rivi rajausäännön 3 mukaisesti (useita paikkoja/aikoja samassa ryhmässä). Syksyn 2026 ilmoittautuminen sulkeutui lähteen mukaan 13.9.2026 (ennen hakuhetkeä 23.9.2026); nykyistä auki/täynnä-tilaa ei voitu vahvistaa, siksi availability_status=unknown eikä purchasable_now. Kausihinta 155€ + pakolliset vuosimaksut (lisenssi 16€ + jäsenmaksu 20€) = sivun oma laskelma \"Yhteensä syyskaudelta 191€\", käytetty known_min_total_eur-kenttään.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_34.json",
      "staging_id": "batch_2026-09-23_34-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_34/sapa_minifutis.html",
      "capture_sha256": "9673fa09ee9d36bd639f2d9b6138520750fddd82e29330a69e3a44f1541036e2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T18:47:49+00:00"
    },
    "monthly_cost_eur": 58.5,
    "monthly_cost_basis": "155.0 € / term jaettuna 2.79 kuukaudelle (2026-09-14–2026-12-07, price_period_start) + license 16 €/v ÷ 12 + membership 20 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Katajanokka / Kalasatama",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Vammaisperheyhdistys Jaatinen ry",
    "group_name": "Pikku-Miinat RAVUT ryhmä 1, alle 6-vuotiaat (la 9:30-10:15)",
    "min_age": 0,
    "max_age": 5,
    "eligibility_text": "alle 6-vuotiaat; soveltava ryhmä vammaisten lasten perheille",
    "parent_child": "yes",
    "venue_name": "Validia Kuntoutus, lämmin allas",
    "address": "Nordenskiöldinkatu 18 B, Helsinki",
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:30",
    "end_time": "10:15",
    "season": "syksy 2026",
    "start_date": "2026-08-29",
    "end_date": "2026-11-21",
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Muut (ei-jäsenet): 160€. Jaatisen jäsenille 130€ (ehdollinen alennus, ks. price_options).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.jaatinen.info/harrastusryhmat/pikku-miinat-uintiryhma/",
    "source_quote": "RAVUT Ryhmät on jaettu ikäryhmittäin. SYKSY 2026 RAVUT 29.8., 12.9., 26.9., 10.10., 24.10., 7.11. ja 21.11. (17.10. syyslomaviikolla ei ole uinteja) klo 9.30-10.15 ryhmä 1, alle 6-vuotiaat (täynnä) ... Ilmoittautuminen SYKSY 2026 Ryhmät ovat täynnä. ... Jaatisen jäsenet: 130 € / Muut: 160 €",
    "activity_id": "hel-2026-0653",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.jaatinen.info/harrastusryhmat/pikku-miinat-uintiryhma/",
    "billing_period": "course",
    "price_period_start": "2026-08-29",
    "price_period_end": "2026-11-21",
    "season_start_date": "2026-08-29",
    "season_end_date": "2026-11-21",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Ei-jäsenhinta"
      }
    ],
    "price_options": [
      {
        "label": "Jaatisen jäsenhinta",
        "amount_eur": 130,
        "applies_if": "Jaatinen ry:n jäsenyys",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Soveltava järjestö (Vammaisperheyhdistys Jaatinen ry) - kaikki vammaisten lasten perheet, ei diagnoosi- tai kuntarajoitusta; comparison_eligible=true silti koska hinta/kesto ovat täysin tiedossa. Jokaisella lapsella oltava oma aikuinen mukana altaassa. Ryhmä oli tarkistushetkellä täynnä (kaikki kolme RAVUT-ryhmää merkitty \"täynnä\" sivulla), jonopaikkoja voi kysyä sähköpostilla.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-23_34.json",
      "staging_id": "batch_2026-09-23_34-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-23_34/jaatinen_pikkumiinat.html",
      "capture_sha256": "cef7a99325926932b6f9d4af6b244a473317a026ff3a866330e633d32635efd9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-23T18:47:49+00:00"
    },
    "monthly_cost_eur": 57.29,
    "monthly_cost_basis": "160.0 € / course jaettuna 2.79 kuukaudelle (2026-08-29–2026-11-21, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Laakso",
    "district_basis": "geokoodattu osoite -> neighborhood 'Laakso' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Espoon kaupunki",
    "group_name": "Perheliikuntaryhmä, Kannusillanmäen liikuntahalli",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "suunnattu erityisesti 3-6-vuotiaille lapsille perheineen, myös sisarukset tervetulleita",
    "parent_child": "yes",
    "venue_name": "Kannusillanmäen liikuntahalli, palloilusali, koko sali 394m2",
    "address": "Kannusillankatu 4, 02770, ESPOO",
    "district": "Keski-Espoo",
    "weekday": "perjantai",
    "start_time": "10:00",
    "end_time": "11:00",
    "season": "syyskausi 2026, joka toinen perjantai",
    "start_date": "2026-09-04",
    "end_date": "2026-11-06",
    "sessions_count": 5,
    "price_eur": 0.0,
    "price_basis": "Kurssikuvaus: \"Innostavaa ja matalan kynnyksen maksutonta liikuntaa koko perheelle.\"",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://resurssivaraus.espoo.fi/ohjattuliikunta/info?Key=163444B421BCAE3C75775DA519DA77EC",
    "source_quote": "Ryhmä on suunnattu erityisesti 3–6-vuotiaille lapsille perheineen, myös sisarukset ovat tervetulleita. Ryhmä kokoontuu joka toinen perjantai: 4.9., 18.9., 2.10., 23.10. ja 6.11.",
    "activity_id": "esp-2026-0001",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 0.0,
    "price_per_session_eur": 0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-04",
    "price_period_end": "2026-11-06",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://resurssivaraus.espoo.fi/ohjattuliikunta/info?Key=163444B421BCAE3C75775DA519DA77EC",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [],
    "price_options": [],
    "price_covers": {
      "children_count": null,
      "adults_count": null,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Espoon kaupungin oma maksuton perheliikuntaryhmä; kokoontuu joka toinen viikko (ei viikoittain). Lisätiedot-yhteyshenkilö nikke.seppänen@espoo.fi mainittu lähteessä.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_01.json",
      "staging_id": "batch_espoo_2026-09-23_01-001",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_01/info/163444B421BCAE3C75775DA519DA77EC.html",
      "capture_sha256": "31d527a293940dbb218011421980fba0f1c58b77cdb5de09db510ab24f601e63",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 0.0,
    "monthly_cost_basis": "0.0 € / term jaettuna 2.10 kuukaudelle (2026-09-04–2026-11-06, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Keski-Espoo",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Espoon kaupunki",
    "group_name": "Perheliikuntaryhmä, Matinkylän uimahallin peilisali / lähialueet",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "suunnattu erityisesti 3-6-vuotiaille lapsille perheineen, myös sisarukset tervetulleita",
    "parent_child": "yes",
    "venue_name": "Matinkylän uimahallin peilisali / lähialueet",
    "address": "Tynnyritie 6, 02230 Espoo",
    "district": "Matinkylä-Olari",
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:55",
    "season": "syyskausi 2026, joka toinen maanantai",
    "start_date": "2026-09-07",
    "end_date": "2026-11-09",
    "sessions_count": 5,
    "price_eur": 0.0,
    "price_basis": "Kurssikuvaus: \"Innostavaa ja matalan kynnyksen maksutonta liikuntaa koko perheelle.\"",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://resurssivaraus.espoo.fi/ohjattuliikunta/info?Key=BFEFB384C7816FD1E6D7155BB49F0344",
    "source_quote": "Ryhmä on suunnattu erityisesti 3–6-vuotiaille lapsille perheineen, myös sisarukset ovat tervetulleita. Ryhmät kokoontuvat joka toinen maanantai: 7.9., 21.9., 5.10., 26.10. ja 9.11.",
    "activity_id": "esp-2026-0002",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 0.0,
    "price_per_session_eur": 0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-07",
    "price_period_end": "2026-11-09",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://resurssivaraus.espoo.fi/ohjattuliikunta/info?Key=BFEFB384C7816FD1E6D7155BB49F0344",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [],
    "price_options": [],
    "price_covers": {
      "children_count": null,
      "adults_count": null,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Espoon kaupungin oma maksuton perheliikuntaryhmä; kokoontuu joka toinen viikko (ei viikoittain). Lisätiedot-yhteyshenkilö nikke.seppänen@espoo.fi mainittu lähteessä.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_01.json",
      "staging_id": "batch_espoo_2026-09-23_01-002",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_01/info/BFEFB384C7816FD1E6D7155BB49F0344.html",
      "capture_sha256": "66f7a40781a28b58b7b3e775ebae12aa27d885476fe964d52b7e927f9120de82",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 0.0,
    "monthly_cost_basis": "0.0 € / term jaettuna 2.10 kuukaudelle (2026-09-07–2026-11-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Matinkylä-Olari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Espoon kaupunki",
    "group_name": "Perheliikuntaryhmä, Lippulaivan kirjasto",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "suunnattu erityisesti 3-6-vuotiaille lapsille perheineen, myös sisarukset tervetulleita",
    "parent_child": "yes",
    "venue_name": "Lippulaivan kirjasto, Salonki",
    "address": "Espoonlahdenkatu 8, 02320 Espoo",
    "district": "Espoonlahti",
    "weekday": "torstai",
    "start_time": "10:30",
    "end_time": "11:30",
    "season": "syyskausi 2026, joka toinen torstai",
    "start_date": "2026-09-10",
    "end_date": "2026-11-05",
    "sessions_count": 5,
    "price_eur": 0.0,
    "price_basis": "Kurssikuvaus: \"Innostavaa ja matalan kynnyksen maksutonta liikuntaa koko perheelle.\"",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://resurssivaraus.espoo.fi/ohjattuliikunta/info?Key=E4ED21DC25B8CEBDA5E9685E9AF453EF",
    "source_quote": "Ryhmä on suunnattu erityisesti 3–6-vuotiaille lapsille perheineen, myös sisarukset ovat tervetulleita. Ryhmä kokoontuu joka toinen torstai: 10.9., 24.9., 8.10., 22.10., ja 5.11.",
    "activity_id": "esp-2026-0003",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 0.0,
    "price_per_session_eur": 0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-10",
    "price_period_end": "2026-11-05",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://resurssivaraus.espoo.fi/ohjattuliikunta/info?Key=E4ED21DC25B8CEBDA5E9685E9AF453EF",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [],
    "price_options": [],
    "price_covers": {
      "children_count": null,
      "adults_count": null,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Espoon kaupungin oma maksuton perheliikuntaryhmä; kokoontuu joka toinen viikko (ei viikoittain). Lisätiedot-yhteyshenkilö nikke.seppänen@espoo.fi mainittu lähteessä.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_01.json",
      "staging_id": "batch_espoo_2026-09-23_01-003",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_01/info/E4ED21DC25B8CEBDA5E9685E9AF453EF.html",
      "capture_sha256": "3602021af4faa49c73e1a0eeb8b2e2c82d3efab682a2e7347e50d09149a70863",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 0.0,
    "monthly_cost_basis": "0.0 € / term jaettuna 1.87 kuukaudelle (2026-09-10–2026-11-05, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Espoonlahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / TI 18.20-19.05 Kameleonten / Siru S ja Laura V",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:20",
    "end_time": "19:05",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10677264",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / TI 18.20-19.05 Kameleonten / Siru S ja Laura V | 18.8.2026 18:20 - 8.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0004",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-001",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10677264_0903d3b521ab.html",
      "capture_sha256": "0903d3b521ab6d44f25de143228b7e49d02de20c3bbe15acf08262c2ba01612a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2076 / PerheGym 1-6 v. / SU 9.00-10.00 Kameleonten / Emilia L ja Siru S",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "09:00",
    "end_time": "10:00",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10683396",
    "source_quote": "2026-2076 / PerheGym 1-6 v. / SU 9.00-10.00 Kameleonten / Emilia L ja Siru S | 23.8.2026 09:00 - 13.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0005",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-23",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-002",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10683396_b48350927539.html",
      "capture_sha256": "b48350927539b3ccd3b14441fb134ba5c5008b87d27d02ae6cd9d163e919343e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-23–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / SU 11.05-11.50 Kameleonten / Anjelica S",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "11:05",
    "end_time": "11:50",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10677432",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / SU 11.05-11.50 Kameleonten / Anjelica S | 23.8.2026 11:05 - 13.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0006",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-003",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10677432_7915d03bb8e7.html",
      "capture_sha256": "7915d03bb8e7391457aca6d871e2942eee4dc5a500153060e87b5b83aa0cc056",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / LA 11.05-11.50 Tuulimäki / Iida M",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen iso sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:05",
    "end_time": "11:50",
    "season": "syksy 2026",
    "start_date": "2026-09-19",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10695523",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / LA 11.05-11.50 Tuulimäki / Iida M | 22.8.2026 11:05 - 12.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0007",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-004",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10695523_ee1efe7b1ce3.html",
      "capture_sha256": "ee1efe7b1ce3ed88b1700c5025a8552e0596f66f1964d3f49831b5cc0452c406",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / TO 18.00-18.45 Vitikka / Julianna J",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10683257",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / TO 18.00-18.45 Vitikka / Julianna J | 20.8.2026 18:00 - 10.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0008",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-005",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10683257_552c125b571d.html",
      "capture_sha256": "552c125b571def87027feb09ce36edd51cad28aac8b3d922a08b1c6c0e57fa76",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / KE 16.45-17.30 Kameleonten / Neea H ja Aino L",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-09-16",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10677324",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / KE 16.45-17.30 Kameleonten / Neea H ja Aino L | 19.8.2026 16:45 - 9.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0009",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-006",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10677324_1bea89fed41c.html",
      "capture_sha256": "1bea89fed41cf64fb3e3fae8f6a75e8bc367087e1b135e888a72b33b8d176cf0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / TO 17.15-18.00 Kameleonten / Stefani V ja Kimi B",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10677388",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / TO 17.15-18.00 Kameleonten / Stefani V ja Kimi B | 20.8.2026 17:15 - 10.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0010",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-007",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10677388_04af04c0282f.html",
      "capture_sha256": "04af04c0282f487562db25eab2b558dc5eef6cdf7209f90fd8365d37ffc39d79",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / TI 17.30-18.30 Tuulimäki / Anna B ja Elias N",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen iso sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 261.0,
    "price_basis": "Lapset ja nuoret 60 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10685762",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / TI 17.30-18.30 Tuulimäki / Anna B ja Elias N | 18.8.2026 17:30 - 8.12.2026 | Lapset ja nuoret 60 min / vko 261,00 €",
    "activity_id": "esp-2026-0011",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 296.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 261,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-008",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10685762_4f021fe06f17.html",
      "capture_sha256": "4f021fe06f17e7eb42f6d4e4e6454af608075b515a72990e48cefdba7162f565",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / KE 18.00-18.45 Suomenoja / Aada P ja Ida M",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Suomenojan sali",
    "address": "Niittyrinne 4, 02270 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-09-09",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10674391",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / KE 18.00-18.45 Suomenoja / Aada P ja Ida M | 19.8.2026 18:00 - 16.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0012",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-009",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10674391_971a02e93111.html",
      "capture_sha256": "971a02e93111bd1eee93c8c22949fedc73cc3bcdc7e536f26b503b7d7e08cac7",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Nöykkiö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Nöykkiö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / KE 17.45-18.30 Vitikka / Nelly E ja Saaga R",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10683238",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / KE 17.45-18.30 Vitikka / Nelly E ja Saaga R | 19.8.2026 17:45 - 9.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0013",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-010",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10683238_f1d48da75a15.html",
      "capture_sha256": "f1d48da75a15b5e45a1155b84364f329b557ccce1786e3fa685770ae817de911",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / PerheGym 1-6 v. / LA 10.00-11.00 Kameleonten / Iina T ja Mari G",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": "2026-09-26",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10683395",
    "source_quote": "2026-2027 / PerheGym 1-6 v. / LA 10.00-11.00 Kameleonten / Iina T ja Mari G | 22.8.2026 10:00 - 12.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0014",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-22",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-011",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10683395_1d383d7a49fe.html",
      "capture_sha256": "1d383d7a49fe2ff8d10be5b17c29f91de9548e82997d2d44da029e545d1cfc3f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-22–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / PerheGym 1-6 v. / LA 9.00-10.00 Kameleonten / Iina T",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:00",
    "end_time": "10:00",
    "season": "syksy 2026",
    "start_date": "2026-08-22",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10683392",
    "source_quote": "2026-2027 / PerheGym 1-6 v. / LA 9.00-10.00 Kameleonten / Iina T | 22.8.2026 09:00 - 12.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0015",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-22",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-012",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10683392_ec883278acc5.html",
      "capture_sha256": "ec883278acc5c629ae58c066d2be14c86d7bf5a33d77f6843f02d8e3b65a177e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-22–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / SU 12.35-13.20 Tuulimäki pikkusali / Viola K ja Alma T",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen pieni sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "12:35",
    "end_time": "13:20",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10674456",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / SU 12.35-13.20 Tuulimäki pikkusali / Viola K ja Alma T | 23.8.2026 12:35 - 13.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0016",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-013",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10674456_ef82d00eaab8.html",
      "capture_sha256": "ef82d00eaab84f89e5cd493fa5c0c081e2ba3320d9d5e3a611b3fc139fe02571",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / LA 11.05-11.50 Kameleonten / Iina T",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:05",
    "end_time": "11:50",
    "season": "syksy 2026",
    "start_date": "2026-08-22",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10677428",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / LA 11.05-11.50 Kameleonten / Iina T | 22.8.2026 11:05 - 12.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0017",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-014",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10677428_5b26506786d2.html",
      "capture_sha256": "5b26506786d2e356c6c2b851bfb5338b945762a9a8ab6f989db8743b06fbfe8d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / SU 12.45-13.30 Suomenoja / Sofia K",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Suomenojan sali",
    "address": "Niittyrinne 4, 02270 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "12:45",
    "end_time": "13:30",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10674390",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / SU 12.45-13.30 Suomenoja / Sofia K | 23.8.2026 12:45 - 13.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0018",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-015",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10674390_469c28109921.html",
      "capture_sha256": "469c28109921b701c5124bd9aab3fddbb010debc30c0ae106834f9d732337e80",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Nöykkiö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Nöykkiö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / PerheGym 1-6 v. / SU 11.45-12.45 Suomenoja / Sofia K",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Suomenojan sali",
    "address": "Niittyrinne 4, 02270 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "11:45",
    "end_time": "12:45",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10673863",
    "source_quote": "2026-2027 / PerheGym 1-6 v. / SU 11.45-12.45 Suomenoja / Sofia K | 23.8.2026 11:45 - 13.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0019",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-23",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-016",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10673863_7a0b3189201a.html",
      "capture_sha256": "7a0b3189201a16bb2a0e6ccf1122034254db4d79d9745e41fcf68e45a10c321f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-23–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Nöykkiö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Nöykkiö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2076 / PerheGym 1-6 v. / SU 10.00-11.00 Kameleonten / Siru S ja Meeri L",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10683397",
    "source_quote": "2026-2076 / PerheGym 1-6 v. / SU 10.00-11.00 Kameleonten / Siru S ja Meeri L | 23.8.2026 10:00 - 13.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0020",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-23",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-017",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10683397_766f9112d800.html",
      "capture_sha256": "766f9112d8007a1f3b9450e8d3a65850439c415884475f785c430a4693d57dfd",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-23–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / TO 17.00-17.45 Suomenoja / Ida M ja Yasmine H",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Suomenojan sali",
    "address": "Niittyrinne 4, 02270 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-27",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10674389",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / TO 17.00-17.45 Suomenoja / Ida M ja Yasmine H | 20.8.2026 17:00 - 10.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0021",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-018",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10674389_3419509c0180.html",
      "capture_sha256": "3419509c01803b0d0eff8effae1476d6b8e50ba959192676ccb2144465dc975e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Nöykkiö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Nöykkiö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / MA 17.30-18.15 Suomenoja / Aada P ja Anna H",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Suomenojan sali",
    "address": "Niittyrinne 4, 02270 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10685736",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / MA 17.30-18.15 Suomenoja / Aada P ja Anna H | 17.8.2026 17:30 - 7.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0022",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-019",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10685736_eafe29acb1dc.html",
      "capture_sha256": "eafe29acb1dc71ea2e9bdfb5505b562298fd9b859498754a0e3f59727078aa65",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Nöykkiö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Nöykkiö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027/ PerheGym 1-6 v. / SU 10.00-11.00 Vitikka / Elli G (ja Nicole V)",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10683145",
    "source_quote": "2026-2027/ PerheGym 1-6 v. / SU 10.00-11.00 Vitikka / Elli G (ja Nicole V) | 23.8.2026 10:00 - 13.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0023",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-23",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-020",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10683145_ac3d15beade8.html",
      "capture_sha256": "ac3d15beade8fa85131d614d0e994f478b73d76bdab190117eccf3a63e838af2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-23–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / PerheGym 1-6 v. / SU 10.45-11.45 Suomenoja / Sofia K",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Suomenojan sali",
    "address": "Niittyrinne 4, 02270 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "10:45",
    "end_time": "11:45",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10673855",
    "source_quote": "2026-2027 / PerheGym 1-6 v. / SU 10.45-11.45 Suomenoja / Sofia K | 23.8.2026 10:45 - 13.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0024",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-23",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-021",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10673855_8d731ca48e06.html",
      "capture_sha256": "8d731ca48e06151c1721af620677bd8cd07cd028111ad959cb92dd41e3d731eb",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-23–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Nöykkiö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Nöykkiö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / PerheGym 1-6 v. / SU 15.30-16.30 Tuulimäki / Unna G",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen iso sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "15:30",
    "end_time": "16:30",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10680660",
    "source_quote": "2026-2027 / PerheGym 1-6 v. / SU 15.30-16.30 Tuulimäki / Unna G | 23.8.2026 15:30 - 13.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0025",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-23",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-022",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10680660_8345a25fce9c.html",
      "capture_sha256": "8345a25fce9c4abe443c03de76655cfeda8d22bddec0b18ae096d212c627c295",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-23–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / MA 18.05-18.50 Vitikka / Iida M ja Laura V",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:05",
    "end_time": "18:50",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10683232",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / MA 18.05-18.50 Vitikka / Iida M ja Laura V | 17.8.2026 18:05 - 7.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0026",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-023",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10683232_c41c35a60e6b.html",
      "capture_sha256": "c41c35a60e6bbd18d2a72e74ec18e8ddb3031bf6699f8e53b2f434951c39c004",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / PerheGym 1-6 v. / SU 16.00-17.00 Vitikka / Daniela M ja Seela K",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "16:00",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10683226",
    "source_quote": "2026-2027 / PerheGym 1-6 v. / SU 16.00-17.00 Vitikka / Daniela M ja Seela K | 23.8.2026 16:00 - 13.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0027",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-23",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-024",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10683226_1b748716f62c.html",
      "capture_sha256": "1b748716f62c4a7546c09dd597bcbb4a415dd72c28d9030a6857ac8e87cfd6af",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-23–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / TI 18.05-18.50 Vitikka / Julianna J",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:05",
    "end_time": "18:50",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10683234",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / TI 18.05-18.50 Vitikka / Julianna J | 18.8.2026 18:05 - 8.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0028",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-025",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10683234_6fa20d77256d.html",
      "capture_sha256": "6fa20d77256ddf3fca2aca9d1109895cfd18e77d194737d971582f5ac017a01d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / PerheGym 1-6 v. / SU 9.00-10.00 Tuulimäki / Viola K ja Seela K",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen iso sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "09:00",
    "end_time": "10:00",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10680663",
    "source_quote": "2026-2027 / PerheGym 1-6 v. / SU 9.00-10.00 Tuulimäki / Viola K ja Seela K | 23.8.2026 09:00 - 13.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0029",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-23",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-026",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10680663_f298f49345f8.html",
      "capture_sha256": "f298f49345f8527d88393908e3172b4b0c1845e7b31f21745681b9564131785b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-23–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027/ PerheGym 1-6 v. / SU 9.00-10.00 Vitikka / Juulia P ja Adanna O",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "09:00",
    "end_time": "10:00",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10683136",
    "source_quote": "2026-2027/ PerheGym 1-6 v. / SU 9.00-10.00 Vitikka / Juulia P ja Adanna O | 23.8.2026 09:00 - 13.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0030",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-23",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-027",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10683136_928a3d1a824c.html",
      "capture_sha256": "928a3d1a824c6f241a7ed3807d96f259c864099dee8cb4b1bb3d01b50cb08cdf",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-23–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / TO 17.30-18.15 Tuulimäki pikkusali / Iida V ja Jenna T",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen pieni sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10674455",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / TO 17.30-18.15 Tuulimäki pikkusali / Iida V ja Jenna T | 20.8.2026 17:30 - 10.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0031",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-028",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10674455_b75c6c021521.html",
      "capture_sha256": "b75c6c0215216a72250a4026966d0e37d6e4ade3627a2e2d78949f3529cafc69",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / PerheGym 1-6 v. / LA 10.00-11.00 Tuulimäki / Anika H ja Iida M",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen iso sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": "2026-08-22",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10680668",
    "source_quote": "2026-2027 / PerheGym 1-6 v. / LA 10.00-11.00 Tuulimäki / Anika H ja Iida M | 22.8.2026 10:00 - 12.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0032",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-22",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-029",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10680668_43a1a0098262.html",
      "capture_sha256": "43a1a009826281fe712c4d21226c266e827823fac1d486aa67d00892bcbc7d5c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-22–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / PerheGym 1-6 v. / PE 17.30-18.30 Tuulimäki / Unna G",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen iso sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "perjantai",
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-21",
    "end_date": "2026-12-11",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10680635",
    "source_quote": "2026-2027 / PerheGym 1-6 v. / PE 17.30-18.30 Tuulimäki / Unna G | 21.8.2026 17:30 - 11.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0033",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-21",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-08-21",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-030",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10680635_210eb5a5a3e7.html",
      "capture_sha256": "210eb5a5a3e7d811a5705026b6ae81ebb21a00e10fa99be6086b7b18accbd9e6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-21–2026-12-11, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / NinjaGym 5-7 v. / MA 16.40-17.25 Kameleonten / Johanna S (ja Aino L)",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:40",
    "end_time": "17:25",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10677246",
    "source_quote": "2026-2027 / NinjaGym 5-7 v. / MA 16.40-17.25 Kameleonten / Johanna S (ja Aino L) | 17.8.2026 16:40 - 7.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0034",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-031",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10677246_61d323d05d5e.html",
      "capture_sha256": "61d323d05d5ee50660aa75206f5a83b9795a5a34aa85c408fdd3f43be0156e43",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / PerheGym 1-6 v. / MA 17.00-18.00 Vitikka / Iida M",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10683132",
    "source_quote": "2026-2027 / PerheGym 1-6 v. / MA 17.00-18.00 Vitikka / Iida M | 17.8.2026 17:00 - 7.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0035",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-032",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10683132_6fe86caa098b.html",
      "capture_sha256": "6fe86caa098b500bc8eddbc1f8b473d4c41c087d6168d4e76f3a3962edf89c32",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / PerheGym 1-6 v. / SU 10.00-11.00 Tuulimäki / Viola K ja Seela K",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen iso sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10680665",
    "source_quote": "2026-2027 / PerheGym 1-6 v. / SU 10.00-11.00 Tuulimäki / Viola K ja Seela K | 23.8.2026 10:00 - 13.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0036",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-23",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-033",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10680665_8c9a62f580ef.html",
      "capture_sha256": "8c9a62f580ef751022d142b6729b4261b2bc9964d0f54b3d86b1db3e1bed7b63",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-23–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / PerheGym 1-6 v. / LA 9.00-10.00 Tuulimäki / Anika H ja Iida M",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen iso sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:00",
    "end_time": "10:00",
    "season": "syksy 2026",
    "start_date": "2026-08-22",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "PerheGym",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10680666",
    "source_quote": "2026-2027 / PerheGym 1-6 v. / LA 9.00-10.00 Tuulimäki / Anika H ja Iida M | 22.8.2026 09:00 - 12.12.2026 | PerheGym 143,00 €",
    "activity_id": "esp-2026-0037",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 178.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-22",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-034",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/estt_10680666_3862c01b8252.html",
      "capture_sha256": "3862c01b8252cbf52bdbe73e63f747f42f78dd18313a3a264b056e0969065703",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 38.52,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.71 kuukaudelle (2026-08-22–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Perheliikunta 2-4v (2024-2022) KE klo 17.15-18.00 Laajalahden koulu",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2-4v",
    "parent_child": "unknown",
    "venue_name": "Laajalahden koulu",
    "address": "Elisenvaarankuja 9, 02140 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2026-12-02",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Perheliikunta 2-4v (2024-2022) KE klo 17.15-18.00 Laajalahden koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10714206",
    "source_quote": "Perheliikunta 2-4v (2024-2022) KE klo 17.15-18.00 Laajalahden koulu | 26.8.2026 17:15 - 2.12.2026 | Perheliikunta 2-4v (2024-2022) KE klo 17.15-18.00 Laajalahden koulu 115,00 € *; Toinen lapsi samassa ryhmässä Perheliikunta 2-4v (2024-2022) KE klo 17.15-18.00 Laajalahden koulu 60,00 € *",
    "activity_id": "esp-2026-0038",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-26",
    "season_end_date": "2026-12-02",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [
      {
        "label": "Toinen lapsi samassa ryhmässä Perheliikunta 2-4v (2024-2022) KE klo 17.15-18.00 Laajalahden koulu",
        "amount_eur": 60.0,
        "applies_if": "sisarus: myClub 'Hintatiedot': Toinen lapsi samassa ryhmässä Perheliikunta 2-4v (2024-2022) KE klo 17.15-18.00 Laajalahden koulu 60,00 € *",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-035",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/tapvo_10714206_bd97dcf0e84e.html",
      "capture_sha256": "bd97dcf0e84e955967dc476d2a8d41a5adbf04f9979c8c58f2b75f6dfa57c802",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Laajalahti",
    "district_basis": "geokoodattu osoite -> neighborhood 'Laajalahti' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Perheliikunta 4-6v (2022-2020) KE klo 18-18.45 Laajalahden koulu",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v",
    "parent_child": "unknown",
    "venue_name": "Laajalahden koulu",
    "address": "Elisenvaarankuja 9, 02140 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2026-12-02",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Perheliikunta 4-6v (2022-2020) KE klo 18-18.45 Laajalahden koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10714262",
    "source_quote": "Perheliikunta 4-6v (2022-2020) KE klo 18-18.45 Laajalahden koulu | 26.8.2026 18:00 - 2.12.2026 | Perheliikunta 4-6v (2022-2020) KE klo 18-18.45 Laajalahden koulu 115,00 €",
    "activity_id": "esp-2026-0039",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-26",
    "season_end_date": "2026-12-02",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-036",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/tapvo_10714262_c543d530b8a2.html",
      "capture_sha256": "c543d530b8a27408ebd820104929c98f05e715d914619c1a02202a9af602cf34",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Laajalahti",
    "district_basis": "geokoodattu osoite -> neighborhood 'Laajalahti' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "NinjaGym 3-4 v (2022-2023) to klo 17.00-17.45 Toppelundin koulu",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v",
    "parent_child": "unknown",
    "venue_name": "Toppelundin koulu",
    "address": "Toppelundintie 15, 02170 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-27",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "NinjaGym 3-4 v to klo 17.00-17.45 Toppelundin koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10774258",
    "source_quote": "NinjaGym 3-4 v (2022-2023) to klo 17.00-17.45 Toppelundin koulu | 27.8.2026 17:00 - 10.12.2026 | NinjaGym 3-4 v to klo 17.00-17.45 Toppelundin koulu 115,00 €",
    "activity_id": "esp-2026-0040",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-27",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-037",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/tapvo_10774258_4289681b36da.html",
      "capture_sha256": "4289681b36da1940dd45dec7db05caacb0df9495ce342382a18c9b3381c7c301",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Haukilahti",
    "district_basis": "geokoodattu osoite -> neighborhood 'Haukilahti' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Perheliikunta 2-4v (2024-2022) SU klo 15.15-16.00 Mankkaan koulu",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2-4v",
    "parent_child": "unknown",
    "venue_name": "Mankkaan koulu",
    "address": "Mankkaansuo 8, 02180 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "16:15",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": "2026-08-30",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Perheliikunta 2-4v (2024-2022) SU klo 15.15-16.00 Mankkaan koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10714348",
    "source_quote": "Perheliikunta 2-4v (2024-2022) SU klo 15.15-16.00 Mankkaan koulu | 30.8.2026 16:15 - 13.12.2026 | Perheliikunta 2-4v (2024-2022) SU klo 15.15-16.00 Mankkaan koulu 115,00 € *; Toinen lapsi samassa ryhmässä Perheliikunta 2-4v (2024-2022) SU klo 15.15-16.00 Mankkaan koulu 60,00 € *",
    "activity_id": "esp-2026-0041",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-30",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [
      {
        "label": "Toinen lapsi samassa ryhmässä Perheliikunta 2-4v (2024-2022) SU klo 15.15-16.00 Mankkaan koulu",
        "amount_eur": 60.0,
        "applies_if": "sisarus: myClub 'Hintatiedot': Toinen lapsi samassa ryhmässä Perheliikunta 2-4v (2024-2022) SU klo 15.15-16.00 Mankkaan koulu 60,00 € *",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-038",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/tapvo_10714348_64045b566081.html",
      "capture_sha256": "64045b5660812c427e01fba42df1db6b5b4d000c054e3c09d40b4fe629ea0313",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Mankkaa",
    "district_basis": "geokoodattu osoite -> neighborhood 'Mankkaa' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Perhetemppuilu 1-3v (2025-2023) MA klo 17.00-17.45 Ruusutorpan koulu",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3v",
    "parent_child": "unknown",
    "venue_name": "Ruusutorpan koulu",
    "address": "Leppävaarankatu 24, 02600 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-24",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Perhetemppuilu 1-3v (2025-2023) MA klo 16.30-17.15 Ruusutorpan koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10714128",
    "source_quote": "Perhetemppuilu 1-3v (2025-2023) MA klo 17.00-17.45 Ruusutorpan koulu | 24.8.2026 17:00 - 7.12.2026 | Perhetemppuilu 1-3v (2025-2023) MA klo 16.30-17.15 Ruusutorpan koulu 115,00 € *; Toinen lapsi samaan ryhmään Perhetemppuilu 1-3v (2025-2023) MA klo 17.00-17.45 Ruusutorpan koulu 60,00 € *",
    "activity_id": "esp-2026-0042",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-24",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [
      {
        "label": "Toinen lapsi samaan ryhmään Perhetemppuilu 1-3v (2025-2023) MA klo 17.00-17.45 Ruusutorpan koulu",
        "amount_eur": 60.0,
        "applies_if": "sisarus: myClub 'Hintatiedot': Toinen lapsi samaan ryhmään Perhetemppuilu 1-3v (2025-2023) MA klo 17.00-17.45 Ruusutorpan koulu 60,00 € *",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-039",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/tapvo_10714128_f486610c5031.html",
      "capture_sha256": "f486610c50316686d8a7d301b684e1924a248f2e9c68e39475a2ab2667697fb0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "NinjaGym 5-6 v (2020-2021) to klo 17.45-18.30 Toppelundin koulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6 v",
    "parent_child": "unknown",
    "venue_name": "Toppelundin koulu",
    "address": "Toppelundintie 15, 02170 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-27",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "NinjaGym 5-6 v to klo 17.45-18.30 Toppelundin koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10774540",
    "source_quote": "NinjaGym 5-6 v (2020-2021) to klo 17.45-18.30 Toppelundin koulu | 27.8.2026 17:45 - 10.12.2026 | NinjaGym 5-6 v to klo 17.45-18.30 Toppelundin koulu 115,00 €",
    "activity_id": "esp-2026-0043",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-27",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-040",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/tapvo_10774540_a85bc0b6cf04.html",
      "capture_sha256": "a85bc0b6cf04c0543be8280b53a50fe159ac8c2d9cfb9852e1c4bdd76a975e53",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Haukilahti",
    "district_basis": "geokoodattu osoite -> neighborhood 'Haukilahti' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Ninjagym 5-6 v (2020-2021) ke klo 18.00-18.45 Taavinkylän koulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6 v",
    "parent_child": "unknown",
    "venue_name": "Taavinkylän koulu",
    "address": "Taavilantie 19, 02180 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2026-12-02",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Ninjagym 5-6 v (2020-2021) ke klo 18.00-18.45 Taavinkylän koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10775594",
    "source_quote": "Ninjagym 5-6 v (2020-2021) ke klo 18.00-18.45 Taavinkylän koulu | 26.8.2026 18:00 - 2.12.2026 | Ninjagym 5-6 v (2020-2021) ke klo 18.00-18.45 Taavinkylän koulu 115,00 €",
    "activity_id": "esp-2026-0044",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-26",
    "season_end_date": "2026-12-02",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-041",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/tapvo_10775594_f0440225517d.html",
      "capture_sha256": "f0440225517d034de380dfcd2cc2aead0090d010e4e10233038ab6a46bb7fabf",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Mankkaa",
    "district_basis": "geokoodattu osoite -> neighborhood 'Mankkaa' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Perheliikunta 3-6v (2023-2020) SU klo 14.30-15.15 Mankkaan koulu",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3-6v",
    "parent_child": "unknown",
    "venue_name": "Mankkaan koulu",
    "address": "Mankkaansuo 8, 02180 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "14:30",
    "end_time": "15:30",
    "season": "syksy 2026",
    "start_date": "2026-08-30",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Perheliikunta 3-6v (2023-2020) SU klo 14.30-15.15 Mankkaan koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10714309",
    "source_quote": "Perheliikunta 3-6v (2023-2020) SU klo 14.30-15.15 Mankkaan koulu | 30.8.2026 14:30 - 13.12.2026 | Perheliikunta 3-6v (2023-2020) SU klo 14.30-15.15 Mankkaan koulu 115,00 €",
    "activity_id": "esp-2026-0045",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-30",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-042",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/tapvo_10714309_96a33cd6e2fd.html",
      "capture_sha256": "96a33cd6e2fdc346e3e0845c5c0526ffd84a375404216f2011376873bbad6669",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Mankkaa",
    "district_basis": "geokoodattu osoite -> neighborhood 'Mankkaa' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Ninjagym 3-4 v (2022-2023) ke 17.15-18.00 Taavinkylän koulu",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v",
    "parent_child": "unknown",
    "venue_name": "Taavinkylän koulu",
    "address": "Taavilantie 19, 02180 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2026-12-02",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Ninjagym 3-4 v (2022-2023) ke 17.15-18.00 Taavinkylän koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10775555",
    "source_quote": "Ninjagym 3-4 v (2022-2023) ke 17.15-18.00 Taavinkylän koulu | 26.8.2026 17:15 - 2.12.2026 | Ninjagym 3-4 v (2022-2023) ke 17.15-18.00 Taavinkylän koulu 115,00 €",
    "activity_id": "esp-2026-0046",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-26",
    "season_end_date": "2026-12-02",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_02.json",
      "staging_id": "batch_espoo_2026-09-23_02-043",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_02/tapvo_10775555_2b126fdd6472.html",
      "capture_sha256": "2b126fdd647270cfe01158d1e5775acaa8edcbe7303fab345ac5d34a1657110d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Mankkaa",
    "district_basis": "geokoodattu osoite -> neighborhood 'Mankkaa' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Uimakoulu 1, Espoonlahden Uimahalli",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Espoonlahden Uimahalli",
    "address": null,
    "district": "Espoonlahti",
    "weekday": "keskiviikko",
    "start_time": "17:05",
    "end_time": "17:35",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-16",
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kurssimaksu (myClub Hintatiedot), sisältää opetuksen, uimahallin sisäänpääsyn ja tapaturmavakuutuksen. Yhteistyössä Espoon kaupungin kanssa.",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://cetus.myclub.fi/flow/courses/11577771",
    "source_quote": "Lähtötasovaatimukset: Kurssi on tarkoitettu 4-6-vuotiaille lapsille, jotka ovat jo rohkeita vedessä... Kurssimaksu 91,00 €. Vaadittavat tuotteet: Lapsen Jäsenyys (alle 18v) 2026 10,00 €.",
    "activity_id": "esp-2026-0047",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 101.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://cetus.myclub.fi/flow/courses/11577771",
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lapsen Jäsenyys (alle 18v) 2026, myClubin Vaadittavat tuotteet -kohta."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-001",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/cetus_uk1_espoonlahti_1705_248c220277b8.html",
      "capture_sha256": "248c220277b81c7ef48e660c0d10dc4347cb9cf4979a5d501bcbd30e0f7bb542",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.43,
    "monthly_cost_basis": "91.0 € / course jaettuna 1.87 kuukaudelle (2026-10-21–2026-12-16, price_period_start) + membership 10 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Espoonlahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Uimakoulu 1, Espoonlahden Uimahalli",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Espoonlahden Uimahalli",
    "address": null,
    "district": "Espoonlahti",
    "weekday": "keskiviikko",
    "start_time": "18:35",
    "end_time": "19:05",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-16",
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kurssimaksu (myClub Hintatiedot), sisältää opetuksen, uimahallin sisäänpääsyn ja tapaturmavakuutuksen. Yhteistyössä Espoon kaupungin kanssa.",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://cetus.myclub.fi/flow/courses/11577889",
    "source_quote": "Kurssi on tarkoitettu 4-6-vuotiaille lapsille... Kurssimaksu 91,00 €. Vaadittavat tuotteet: Lapsen Jäsenyys (alle 18v) 2026 10,00 €.",
    "activity_id": "esp-2026-0048",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 101.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://cetus.myclub.fi/flow/courses/11577889",
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lapsen Jäsenyys (alle 18v) 2026, myClubin Vaadittavat tuotteet -kohta."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-002",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/cetus_uk1_espoonlahti_1835_4253ef2cef24.html",
      "capture_sha256": "4253ef2cef24bb722193225af5c7b7318fed587277d3b3ce092523d2c1947a74",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 49.43,
    "monthly_cost_basis": "91.0 € / course jaettuna 1.87 kuukaudelle (2026-10-21–2026-12-16, price_period_start) + membership 10 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Espoonlahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Uimakoulu 1, Matinkylän uimahalli",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Matinkylän uimahalli",
    "address": null,
    "district": "Matinkylä",
    "weekday": "torstai",
    "start_time": "17:05",
    "end_time": "17:35",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-17",
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kurssimaksu (myClub Hintatiedot), sisältää opetuksen, uimahallin sisäänpääsyn ja tapaturmavakuutuksen. Yhteistyössä Espoon kaupungin kanssa.",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://cetus.myclub.fi/flow/courses/11555839",
    "source_quote": "Kurssi on tarkoitettu 4-6-vuotiaille lapsille... Kurssimaksu 91,00 €. Vaadittavat tuotteet: Lapsen Jäsenyys (alle 18v) 2026 10,00 €.",
    "activity_id": "esp-2026-0049",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 101.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://cetus.myclub.fi/flow/courses/11555839",
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-17",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lapsen Jäsenyys (alle 18v) 2026, myClubin Vaadittavat tuotteet -kohta."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-003",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/cetus_uk1_matinkyla_408d8940baf2.html",
      "capture_sha256": "408d8940baf2c5bcd94915681ce442a55348c9ec8977712b9e743e8696d969ab",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 49.43,
    "monthly_cost_basis": "91.0 € / course jaettuna 1.87 kuukaudelle (2026-10-22–2026-12-17, price_period_start) + membership 10 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Matinkylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Uimakoulu 2, Espoonlahden Uimahalli",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5-8 vuotta täyttäneille ja sitä vanhemmille",
    "parent_child": "no",
    "venue_name": "Espoonlahden Uimahalli",
    "address": null,
    "district": "Espoonlahti",
    "weekday": "keskiviikko",
    "start_time": "16:00",
    "end_time": "16:35",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-16",
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kurssimaksu (myClub Hintatiedot), sisältää opetuksen, uimahallin sisäänpääsyn ja tapaturmavakuutuksen. Yhteistyössä Espoon kaupungin kanssa.",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://cetus.myclub.fi/flow/courses/11548488",
    "source_quote": "Kurssi on tarkoitettu 5-8 vuotta täyttäneille ja sitä vanhemmille lapsille. Kurssimaksu 91,00 €. Vaadittavat tuotteet: Lapsen Jäsenyys (alle 18v) 2026 10,00 €.",
    "activity_id": "esp-2026-0050",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 101.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://cetus.myclub.fi/flow/courses/11548488",
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lapsen Jäsenyys (alle 18v) 2026, myClubin Vaadittavat tuotteet -kohta."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäväli 5-8v osuu rajaukseen 5-6v osalta; 7-8-vuotiaat eivät kuulu rajaukseen mutta ryhmä on yksi kokonaisuus.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-004",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/cetus_uk2_espoonlahti_a85929efbce9.html",
      "capture_sha256": "a85929efbce9f6ad64c77f5c22ea0b1936825d69374da355a3591d5a47f5cd3e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 49.43,
    "monthly_cost_basis": "91.0 € / course jaettuna 1.87 kuukaudelle (2026-10-21–2026-12-16, price_period_start) + membership 10 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Espoonlahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Uimakoulu 2, Matinkylän uimahalli",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5-8-vuotiaille lapsille",
    "parent_child": "no",
    "venue_name": "Matinkylän uimahalli",
    "address": null,
    "district": "Matinkylä",
    "weekday": "torstai",
    "start_time": "16:30",
    "end_time": "17:05",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-17",
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kurssimaksu (myClub Hintatiedot), sisältää opetuksen, uimahallin sisäänpääsyn ja tapaturmavakuutuksen. Yhteistyössä Espoon kaupungin kanssa.",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://cetus.myclub.fi/flow/courses/11555610",
    "source_quote": "Kurssi on tarkoitettu 5-8-vuotiaille lapsille, joilla on jo uimisen perustaitoja... Kurssimaksu 91,00 €. Vaadittavat tuotteet: Lapsen Jäsenyys (alle 18v) 2026 10,00 €.",
    "activity_id": "esp-2026-0051",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 101.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://cetus.myclub.fi/flow/courses/11555610",
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-17",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lapsen Jäsenyys (alle 18v) 2026, myClubin Vaadittavat tuotteet -kohta."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäväli 5-8v osuu rajaukseen 5-6v osalta; 7-8-vuotiaat eivät kuulu rajaukseen mutta ryhmä on yksi kokonaisuus.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-005",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/cetus_uk2_matinkyla_8079bab706c6.html",
      "capture_sha256": "8079bab706c663de8916ee774d77efeca05c2270ad169f233ff736b126a16225",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 49.43,
    "monthly_cost_basis": "91.0 € / course jaettuna 1.87 kuukaudelle (2026-10-22–2026-12-17, price_period_start) + membership 10 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Matinkylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Alkeisuimakoulu, Espoonlahden Uimahalli",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Espoonlahden Uimahalli",
    "address": null,
    "district": "Espoonlahti",
    "weekday": "keskiviikko",
    "start_time": "16:35",
    "end_time": "17:05",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-16",
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kurssimaksu (myClub Hintatiedot), sisältää opetuksen, uimahallin sisäänpääsyn ja tapaturmavakuutuksen. Yhteistyössä Espoon kaupungin kanssa.",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://cetus.myclub.fi/flow/courses/11577726",
    "source_quote": "Kurssi on tarkoitettu 3-6-vuotiaille lapsille, jotka ovat jo rohkeita vedessä... Kurssimaksu 91,00 €. Vaadittavat tuotteet: Lapsen Jäsenyys (alle 18v) 2026 10,00 €.",
    "activity_id": "esp-2026-0052",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 101.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://cetus.myclub.fi/flow/courses/11577726",
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lapsen Jäsenyys (alle 18v) 2026, myClubin Vaadittavat tuotteet -kohta."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-006",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/cetus_alkeis_espoonlahti_1635_a239f07d0d32.html",
      "capture_sha256": "a239f07d0d32af45e687901c037545db40811c0899dce44429e1117e4d72be03",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 49.43,
    "monthly_cost_basis": "91.0 € / course jaettuna 1.87 kuukaudelle (2026-10-21–2026-12-16, price_period_start) + membership 10 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Espoonlahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Alkeisuimakoulu, Espoonlahden Uimahalli",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Espoonlahden Uimahalli",
    "address": null,
    "district": "Espoonlahti",
    "weekday": "keskiviikko",
    "start_time": "18:05",
    "end_time": "18:35",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-16",
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kurssimaksu (myClub Hintatiedot), sisältää opetuksen, uimahallin sisäänpääsyn ja tapaturmavakuutuksen. Yhteistyössä Espoon kaupungin kanssa.",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://cetus.myclub.fi/flow/courses/11577817",
    "source_quote": "Kurssi on tarkoitettu 3-6-vuotiaille lapsille, jotka ovat jo rohkeita vedessä... Kurssimaksu 91,00 €. Vaadittavat tuotteet: Lapsen Jäsenyys (alle 18v) 2026 10,00 €.",
    "activity_id": "esp-2026-0053",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 101.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://cetus.myclub.fi/flow/courses/11577817",
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lapsen Jäsenyys (alle 18v) 2026, myClubin Vaadittavat tuotteet -kohta."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-007",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/cetus_alkeis_espoonlahti_1805_da096c9d544f.html",
      "capture_sha256": "da096c9d544f8cb03e129e2cc328f1fcfc6567b228f5332608ca73e6723da27c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 49.43,
    "monthly_cost_basis": "91.0 € / course jaettuna 1.87 kuukaudelle (2026-10-21–2026-12-16, price_period_start) + membership 10 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Espoonlahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lapsi-vanhempi uimakoulu, Espoonlahden Uimahalli",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5-vuotiaille lapsille",
    "parent_child": "yes",
    "venue_name": "Espoonlahden Uimahalli",
    "address": null,
    "district": "Espoonlahti",
    "weekday": "keskiviikko",
    "start_time": "17:35",
    "end_time": "18:05",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-16",
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kurssimaksu (myClub Hintatiedot), sisältää opetuksen, uimahallin sisäänpääsyn ja tapaturmavakuutuksen. Yhteistyössä Espoon kaupungin kanssa.",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://cetus.myclub.fi/flow/courses/11577789",
    "source_quote": "Kurssi on suunnattu 3-5 vuotiaille lapsille. Uimakouluun osallistuu lapsen lisäksi toinen vanhemmista, tai muu huoltaja. Kurssimaksu 91,00 €. Vaadittavat tuotteet: Lapsen Jäsenyys (alle 18v) 2026 10,00 €.",
    "activity_id": "esp-2026-0054",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 101.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://cetus.myclub.fi/flow/courses/11577789",
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lapsen Jäsenyys (alle 18v) 2026, myClubin Vaadittavat tuotteet -kohta."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: price_covers-kentän avaimet korjattu skeeman mukaisiksi (children/adults -> children_count/adults_count).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-008",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/cetus_lapsivanh_espoonlahti_80e286fd44df.html",
      "capture_sha256": "80e286fd44dff7975d64cea47de30f2c62efb6036bb266808c96baa4e3cb9ee0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 49.43,
    "monthly_cost_basis": "91.0 € / course jaettuna 1.87 kuukaudelle (2026-10-21–2026-12-16, price_period_start) + membership 10 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Espoonlahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lapsi-vanhempi uimakoulu, Matinkylän uimahalli",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5-vuotiaille lapsille",
    "parent_child": "yes",
    "venue_name": "Matinkylän uimahalli",
    "address": null,
    "district": "Matinkylä",
    "weekday": "torstai",
    "start_time": "17:35",
    "end_time": "18:05",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-17",
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kurssimaksu (myClub Hintatiedot), sisältää opetuksen, uimahallin sisäänpääsyn ja tapaturmavakuutuksen. Yhteistyössä Espoon kaupungin kanssa.",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://cetus.myclub.fi/flow/courses/11556330",
    "source_quote": "Kurssi on suunnattu 3-5 vuotiaille lapsille. Uimakouluun osallistuu lapsen lisäksi toinen vanhemmista, tai muu huoltaja. Kurssimaksu 91,00 €. Vaadittavat tuotteet: Lapsen Jäsenyys (alle 18v) 2026 10,00 €.",
    "activity_id": "esp-2026-0055",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 101.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://cetus.myclub.fi/flow/courses/11556330",
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-17",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Lapsen Jäsenyys (alle 18v) 2026, myClubin Vaadittavat tuotteet -kohta."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: price_covers-kentän avaimet korjattu skeeman mukaisiksi (children/adults -> children_count/adults_count).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-009",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/cetus_lapsivanh_matinkyla_0950f25f59bc.html",
      "capture_sha256": "0950f25f59bcbc9006c9751875e2d4689a3d63d0b81352893bdcd5b5d1e7ec9b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 49.43,
    "monthly_cost_basis": "91.0 € / course jaettuna 1.87 kuukaudelle (2026-10-22–2026-12-17, price_period_start) + membership 10 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Matinkylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 3-4v (Lopetettu 4.9.26), Tanssikoulu DCA, Niittyportti 2",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Niittyportti 2",
    "address": "Niittyportti 4, 02200 Espoo",
    "district": "Niittykumpu",
    "weekday": "maanantai",
    "start_time": "16:15",
    "end_time": "16:45",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 205.0,
    "price_basis": "Kausimaksu, 30 min/viikko, koko syyskausi 17.8.-13.12.2026 (Tanssikoulu DCA hinnasto, Helsingin keskusta ja Espoon toimipisteet -hintaryhmä).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Niittyportti-.pdf",
    "source_quote": "16:15-16:45 Lastentanssi 3-4v. LF Lopetettu 4.9.26!",
    "activity_id": "esp-2026-0056",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 205.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "closed",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 205,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.-13.12.2026 alkava jakso)",
        "amount_eur": 181.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.-13.12.2026 alkava jakso)",
        "amount_eur": 157.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Ryhmä merkitty lukujärjestykseen 'Lopetettu 4.9.26!' - kurssi alkanut ja päättynyt kesken kauden, availability_status=closed. Espoo-QA 23.9.2026: end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään maanantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-016",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/dca_niittyportti_pdf_2ce6f6d53d7d.pdf",
      "capture_sha256": "2ce6f6d53d7d6d2fc632fa471e12f01f08183501c342cb37fe64f8a0dd4c367d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 52.43,
    "monthly_cost_basis": "205.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 4-5v, Tanssikoulu DCA, Niittyportti 2",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Niittyportti 2",
    "address": "Niittyportti 4, 02200 Espoo",
    "district": "Niittykumpu",
    "weekday": "maanantai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.-13.12.2026 (Tanssikoulu DCA hinnasto, Helsingin keskusta ja Espoon toimipisteet -hintaryhmä).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Niittyportti-.pdf",
    "source_quote": "16:45-17:30 Lastentanssi 4-5v. LF",
    "activity_id": "esp-2026-0057",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.-13.12.2026 alkava jakso)",
        "amount_eur": 244.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.-13.12.2026 alkava jakso)",
        "amount_eur": 212.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään maanantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-017",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/dca_niittyportti_pdf_2ce6f6d53d7d.pdf",
      "capture_sha256": "2ce6f6d53d7d6d2fc632fa471e12f01f08183501c342cb37fe64f8a0dd4c367d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Dance 6-7v, Tanssikoulu DCA, Niittyportti 2",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6-7v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Niittyportti 2",
    "address": "Niittyportti 4, 02200 Espoo",
    "district": "Niittykumpu",
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.-13.12.2026 (Tanssikoulu DCA hinnasto, Helsingin keskusta ja Espoon toimipisteet -hintaryhmä).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Niittyportti-.pdf",
    "source_quote": "17:30-18:15 Dance 6-7v. LF",
    "activity_id": "esp-2026-0058",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.-13.12.2026 alkava jakso)",
        "amount_eur": 244.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.-13.12.2026 alkava jakso)",
        "amount_eur": 212.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikähaarukka osuu rajaukseen vain alarajalla). Espoo-QA 23.9.2026: end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään maanantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-018",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/dca_niittyportti_pdf_2ce6f6d53d7d.pdf",
      "capture_sha256": "2ce6f6d53d7d6d2fc632fa471e12f01f08183501c342cb37fe64f8a0dd4c367d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi (1,5-3v) + aikuinen, Tanssikoulu DCA, Niittyportti 1",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1,5-3v. + aikuinen",
    "parent_child": "yes",
    "venue_name": "Tanssikoulu DCA, Niittyportti 1",
    "address": "Niittyportti 4, 02200 Espoo",
    "district": "Niittykumpu",
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.-13.12.2026 (Tanssikoulu DCA hinnasto, Helsingin keskusta ja Espoon toimipisteet -hintaryhmä).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Niittyportti-.pdf",
    "source_quote": "10:00-10:45 Lastentanssi (1,5-3v.) + aikuinen Noora O.",
    "activity_id": "esp-2026-0059",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.-13.12.2026 alkava jakso)",
        "amount_eur": 244.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.-13.12.2026 alkava jakso)",
        "amount_eur": 212.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: price_covers-kentän avaimet korjattu skeeman mukaisiksi (children/adults -> children_count/adults_count). Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään lauantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-019",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/dca_niittyportti_pdf_2ce6f6d53d7d.pdf",
      "capture_sha256": "2ce6f6d53d7d6d2fc632fa471e12f01f08183501c342cb37fe64f8a0dd4c367d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 3-4v, Tanssikoulu DCA, Niittyportti 1",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Niittyportti 1",
    "address": "Niittyportti 4, 02200 Espoo",
    "district": "Niittykumpu",
    "weekday": "lauantai",
    "start_time": "10:45",
    "end_time": "11:15",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 205.0,
    "price_basis": "Kausimaksu, 30 min/viikko, koko syyskausi 17.8.-13.12.2026 (Tanssikoulu DCA hinnasto, Helsingin keskusta ja Espoon toimipisteet -hintaryhmä).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Niittyportti-.pdf",
    "source_quote": "10:45-11:15 Lastentanssi 3-4v. Noora O",
    "activity_id": "esp-2026-0060",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 205.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 205,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.-13.12.2026 alkava jakso)",
        "amount_eur": 181.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.-13.12.2026 alkava jakso)",
        "amount_eur": 157.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään lauantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-020",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/dca_niittyportti_pdf_2ce6f6d53d7d.pdf",
      "capture_sha256": "2ce6f6d53d7d6d2fc632fa471e12f01f08183501c342cb37fe64f8a0dd4c367d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 52.43,
    "monthly_cost_basis": "205.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 4-5v, Tanssikoulu DCA, Niittyportti 1",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Niittyportti 1",
    "address": "Niittyportti 4, 02200 Espoo",
    "district": "Niittykumpu",
    "weekday": "lauantai",
    "start_time": "11:15",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.-13.12.2026 (Tanssikoulu DCA hinnasto, Helsingin keskusta ja Espoon toimipisteet -hintaryhmä).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Niittyportti-.pdf",
    "source_quote": "11:15-12:00 Lastentanssi 4-5v. Noora O",
    "activity_id": "esp-2026-0061",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.-13.12.2026 alkava jakso)",
        "amount_eur": 244.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.-13.12.2026 alkava jakso)",
        "amount_eur": 212.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään lauantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-021",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/dca_niittyportti_pdf_2ce6f6d53d7d.pdf",
      "capture_sha256": "2ce6f6d53d7d6d2fc632fa471e12f01f08183501c342cb37fe64f8a0dd4c367d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 3-4v, Tanssikoulu DCA, Niittyportti 2",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Niittyportti 2",
    "address": "Niittyportti 4, 02200 Espoo",
    "district": "Niittykumpu",
    "weekday": "lauantai",
    "start_time": "10:15",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 205.0,
    "price_basis": "Kausimaksu, 30 min/viikko, koko syyskausi 17.8.-13.12.2026 (Tanssikoulu DCA hinnasto, Helsingin keskusta ja Espoon toimipisteet -hintaryhmä).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Niittyportti-.pdf",
    "source_quote": "10:15-10:45 Lastentanssi 3-4v. VEP",
    "activity_id": "esp-2026-0062",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 205.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 205,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.-13.12.2026 alkava jakso)",
        "amount_eur": 181.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.-13.12.2026 alkava jakso)",
        "amount_eur": 157.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään lauantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-022",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/dca_niittyportti_pdf_2ce6f6d53d7d.pdf",
      "capture_sha256": "2ce6f6d53d7d6d2fc632fa471e12f01f08183501c342cb37fe64f8a0dd4c367d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 52.43,
    "monthly_cost_basis": "205.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 4-5v, Tanssikoulu DCA, Niittyportti 2",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Niittyportti 2",
    "address": "Niittyportti 4, 02200 Espoo",
    "district": "Niittykumpu",
    "weekday": "lauantai",
    "start_time": "10:45",
    "end_time": "11:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.-13.12.2026 (Tanssikoulu DCA hinnasto, Helsingin keskusta ja Espoon toimipisteet -hintaryhmä).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Niittyportti-.pdf",
    "source_quote": "10:45-11:30 Lastentanssi 4-5v. VEP",
    "activity_id": "esp-2026-0063",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.-13.12.2026 alkava jakso)",
        "amount_eur": 244.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.-13.12.2026 alkava jakso)",
        "amount_eur": 212.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään lauantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-023",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/dca_niittyportti_pdf_2ce6f6d53d7d.pdf",
      "capture_sha256": "2ce6f6d53d7d6d2fc632fa471e12f01f08183501c342cb37fe64f8a0dd4c367d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Lastentanssi 5-6v, Tanssikoulu DCA, Niittyportti 2",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Niittyportti 2",
    "address": "Niittyportti 4, 02200 Espoo",
    "district": "Niittykumpu",
    "weekday": "lauantai",
    "start_time": "11:30",
    "end_time": "12:15",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.-13.12.2026 (Tanssikoulu DCA hinnasto, Helsingin keskusta ja Espoon toimipisteet -hintaryhmä).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Niittyportti-.pdf",
    "source_quote": "11:30-12:15 Lastentanssi 5-6v. VEP / TÄYNNÄ",
    "activity_id": "esp-2026-0064",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.-13.12.2026 alkava jakso)",
        "amount_eur": 244.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.-13.12.2026 alkava jakso)",
        "amount_eur": 212.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään lauantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-024",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/dca_niittyportti_pdf_2ce6f6d53d7d.pdf",
      "capture_sha256": "2ce6f6d53d7d6d2fc632fa471e12f01f08183501c342cb37fe64f8a0dd4c367d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Dance pojat 5-6v, Tanssikoulu DCA, Niittyportti 3",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Niittyportti 3",
    "address": "Niittyportti 4, 02200 Espoo",
    "district": "Niittykumpu",
    "weekday": "lauantai",
    "start_time": "10:30",
    "end_time": "11:15",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.-13.12.2026 (Tanssikoulu DCA hinnasto, Helsingin keskusta ja Espoon toimipisteet -hintaryhmä).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Niittyportti-.pdf",
    "source_quote": "10:30-11:15 Dance pojat 5-6v. HEI",
    "activity_id": "esp-2026-0065",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.-13.12.2026 alkava jakso)",
        "amount_eur": 244.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.-13.12.2026 alkava jakso)",
        "amount_eur": 212.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään lauantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-025",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/dca_niittyportti_pdf_2ce6f6d53d7d.pdf",
      "capture_sha256": "2ce6f6d53d7d6d2fc632fa471e12f01f08183501c342cb37fe64f8a0dd4c367d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Tanssikoulu DCA",
    "group_name": "Dance 6-7v, Tanssikoulu DCA, Niittyportti 1",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6-7v.",
    "parent_child": "no",
    "venue_name": "Tanssikoulu DCA, Niittyportti 1",
    "address": "Niittyportti 4, 02200 Espoo",
    "district": "Niittykumpu",
    "weekday": "lauantai",
    "start_time": "12:00",
    "end_time": "12:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 277.0,
    "price_basis": "Kausimaksu, 45 min/viikko, koko syyskausi 17.8.-13.12.2026 (Tanssikoulu DCA hinnasto, Helsingin keskusta ja Espoon toimipisteet -hintaryhmä).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilutunti 10 € (kerran per ryhmä ja henkilö, avoimilla tunneilla joilla on tilaa).",
    "enrollment_status": "unknown",
    "source_url": "https://www.tanssikouludca.fi/wp-content/uploads/2026/09/14092026_DCA-Lukujarjestys-Niittyportti-.pdf",
    "source_quote": "12:00-12:45 Dance 6-7v. Noora O.",
    "activity_id": "esp-2026-0066",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 277.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tanssikouludca.fi/hinnasto/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 277,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "Myöhemmin liittyvä (7.9.-13.12.2026 alkava jakso)",
        "amount_eur": 244.0,
        "applies_if": "liittyy ryhmään 7.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      },
      {
        "label": "Myöhemmin liittyvä (21.9.-13.12.2026 alkava jakso)",
        "amount_eur": 212.0,
        "applies_if": "liittyy ryhmään 21.9.2026 tai myöhemmin alkaen (prorated)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Perhealennus: toinen samasta perheestä ilmoittautuva saa -15% kausihinnasta (DCA hinnasto). Kokeilutunti 10 € (kerran per ryhmä/henkilö).",
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikähaarukka osuu rajaukseen vain alarajalla). Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään lauantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-026",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/dca_niittyportti_pdf_2ce6f6d53d7d.pdf",
      "capture_sha256": "2ce6f6d53d7d6d2fc632fa471e12f01f08183501c342cb37fe64f8a0dd4c367d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 70.85,
    "monthly_cost_basis": "277.0 € / term jaettuna 3.91 kuukaudelle (2026-08-17–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Uimakoulu Pikku Joutsen",
    "group_name": "Aloittavat vauvauimarit, Pikku Joutsen Leppävaara, tiistai 16:00",
    "min_age": 0,
    "max_age": 2,
    "eligibility_text": "0-2 v",
    "parent_child": "yes",
    "venue_name": "Uimakoulu Pikku Joutsen, Leppävaara",
    "address": "Leppävaarankatu 12, 02600 Espoo",
    "district": "Leppävaara",
    "weekday": "tiistai",
    "start_time": "16:00",
    "end_time": "16:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kuukausihinta 91 €/kk, kerran viikossa 30 min, jatkuva kunnes irtisanotaan (Pikku Joutsen Espoo/Leppävaara hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.pikkujoutsen.fi/missa-ja-milloin/espoo.html",
    "source_quote": "Aloittavat vauvauimarit 0-2 vuotta Syyskuussa: Ti 16:00-16:30",
    "activity_id": "esp-2026-0067",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 91.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.pikkujoutsen.fi/tule-mukaan/hinta.html",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "monthly",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": "Sisarusalennus: toisen lapsen kuukausihinta 77,35 € (paitsi vauvauinnissa 0-2v, jossa alle kouluikäinen sisarus veloituksetta mukana).",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: price_covers-kentän avaimet korjattu skeeman mukaisiksi (children/adults -> children_count/adults_count).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-029",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/pikkujoutsen_espoo_fcbef46bdbe1.html",
      "capture_sha256": "fcbef46bdbe1432e41c172522dbadc43a81ded358decc54fcda8425865db336c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 91.0,
    "monthly_cost_basis": "91.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Leppävaara",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Uimakoulu Pikku Joutsen",
    "group_name": "Jatkavat vauvauimarit, Pikku Joutsen Leppävaara, keskiviikko 17:30",
    "min_age": 0,
    "max_age": 2,
    "eligibility_text": "0-2 v",
    "parent_child": "yes",
    "venue_name": "Uimakoulu Pikku Joutsen, Leppävaara",
    "address": "Leppävaarankatu 12, 02600 Espoo",
    "district": "Leppävaara",
    "weekday": "keskiviikko",
    "start_time": "17:30",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kuukausihinta 91 €/kk, kerran viikossa 30 min, jatkuva kunnes irtisanotaan (Pikku Joutsen Espoo/Leppävaara hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.pikkujoutsen.fi/missa-ja-milloin/espoo.html",
    "source_quote": "Jatkavat vauvauimarit 0-2 vuotta Syyskuussa: Ke 17:30-18:00",
    "activity_id": "esp-2026-0068",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 91.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.pikkujoutsen.fi/tule-mukaan/hinta.html",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "monthly",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": "Sisarusalennus: toisen lapsen kuukausihinta 77,35 € (paitsi vauvauinnissa 0-2v, jossa alle kouluikäinen sisarus veloituksetta mukana).",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: price_covers-kentän avaimet korjattu skeeman mukaisiksi (children/adults -> children_count/adults_count).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-030",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/pikkujoutsen_espoo_fcbef46bdbe1.html",
      "capture_sha256": "fcbef46bdbe1432e41c172522dbadc43a81ded358decc54fcda8425865db336c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 91.0,
    "monthly_cost_basis": "91.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Leppävaara",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Uimakoulu Pikku Joutsen",
    "group_name": "Aloittava uimakoulu (vanhempien kanssa), Pikku Joutsen Leppävaara, keskiviikko 09:00",
    "min_age": 2,
    "max_age": 7,
    "eligibility_text": "2-7 v, vanhempien kanssa",
    "parent_child": "yes",
    "venue_name": "Uimakoulu Pikku Joutsen, Leppävaara",
    "address": "Leppävaarankatu 12, 02600 Espoo",
    "district": "Leppävaara",
    "weekday": "keskiviikko",
    "start_time": "09:00",
    "end_time": "09:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kuukausihinta 91 €/kk, kerran viikossa 30 min, jatkuva kunnes irtisanotaan (Pikku Joutsen Espoo/Leppävaara hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.pikkujoutsen.fi/missa-ja-milloin/espoo.html",
    "source_quote": "Aloittavat uimakoulut 2-7 vuotta Syyskuussa: Ke 9:00-9:30 vanhempien kanssa",
    "activity_id": "esp-2026-0069",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 91.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.pikkujoutsen.fi/tule-mukaan/hinta.html",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "monthly",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": "Sisarusalennus: toisen lapsen kuukausihinta 77,35 € (paitsi vauvauinnissa 0-2v, jossa alle kouluikäinen sisarus veloituksetta mukana).",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: price_covers-kentän avaimet korjattu skeeman mukaisiksi (children/adults -> children_count/adults_count).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-031",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/pikkujoutsen_espoo_fcbef46bdbe1.html",
      "capture_sha256": "fcbef46bdbe1432e41c172522dbadc43a81ded358decc54fcda8425865db336c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 91.0,
    "monthly_cost_basis": "91.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Leppävaara",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Uimakoulu Pikku Joutsen",
    "group_name": "Aloittava uimakoulu (ilman vanhempia), Pikku Joutsen Leppävaara, lauantai 12:00",
    "min_age": 2,
    "max_age": 7,
    "eligibility_text": "2-7 v, ilman vanhempia",
    "parent_child": "no",
    "venue_name": "Uimakoulu Pikku Joutsen, Leppävaara",
    "address": "Leppävaarankatu 12, 02600 Espoo",
    "district": "Leppävaara",
    "weekday": "lauantai",
    "start_time": "12:00",
    "end_time": "12:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kuukausihinta 91 €/kk, kerran viikossa 30 min, jatkuva kunnes irtisanotaan (Pikku Joutsen Espoo/Leppävaara hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.pikkujoutsen.fi/missa-ja-milloin/espoo.html",
    "source_quote": "Aloittavat uimakoulut 2-7 vuotta Syyskuussa: La 12:00-12:30 ilman vanhempia",
    "activity_id": "esp-2026-0070",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 91.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.pikkujoutsen.fi/tule-mukaan/hinta.html",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "monthly",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Sisarusalennus: toisen lapsen kuukausihinta 77,35 € (paitsi vauvauinnissa 0-2v, jossa alle kouluikäinen sisarus veloituksetta mukana).",
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-032",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/pikkujoutsen_espoo_fcbef46bdbe1.html",
      "capture_sha256": "fcbef46bdbe1432e41c172522dbadc43a81ded358decc54fcda8425865db336c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 91.0,
    "monthly_cost_basis": "91.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Leppävaara",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Uimakoulu Pikku Joutsen",
    "group_name": "Jatkava uimakoulu (ilman vanhempia), Pikku Joutsen Leppävaara, sunnuntai 16:00",
    "min_age": 2,
    "max_age": 7,
    "eligibility_text": "2-7 v, ilman vanhempia",
    "parent_child": "no",
    "venue_name": "Uimakoulu Pikku Joutsen, Leppävaara",
    "address": "Leppävaarankatu 12, 02600 Espoo",
    "district": "Leppävaara",
    "weekday": "sunnuntai",
    "start_time": "16:00",
    "end_time": "16:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kuukausihinta 91 €/kk, kerran viikossa 30 min, jatkuva kunnes irtisanotaan (Pikku Joutsen Espoo/Leppävaara hinnasto).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.pikkujoutsen.fi/missa-ja-milloin/espoo.html",
    "source_quote": "Jatkavat uimakoulut 2-7 vuotta Syyskuussa: Su 16:00-16:30 ilman vanhempia",
    "activity_id": "esp-2026-0071",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 91.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.pikkujoutsen.fi/tule-mukaan/hinta.html",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "monthly",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Sisarusalennus: toisen lapsen kuukausihinta 77,35 € (paitsi vauvauinnissa 0-2v, jossa alle kouluikäinen sisarus veloituksetta mukana).",
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-033",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/pikkujoutsen_espoo_fcbef46bdbe1.html",
      "capture_sha256": "fcbef46bdbe1432e41c172522dbadc43a81ded358decc54fcda8425865db336c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 91.0,
    "monthly_cost_basis": "91.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Leppävaara",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Espoon Tanssiopisto",
    "group_name": "Lapsi/aikuinen 1-3v, Espoon Tanssiopisto, Piispanportti, Tanssisali 3",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3 v",
    "parent_child": "yes",
    "venue_name": "Espoon Tanssiopisto, Piispanportti, Tanssisali 3",
    "address": "Piispanportti 12 B, 02200 Espoo",
    "district": "Suurpelto",
    "weekday": "tiistai",
    "start_time": "16:15",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 200.0,
    "price_basis": "Lukukausimaksu 2026/2027, syyslukukausi 17.8.-20.12.2026 (Espoon Tanssiopisto lukukausimaksut).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontanssiopisto.fi/wp-content/uploads/2026/08/lukujarjestys_alkeis_2026_2027_v2_10082026.pdf",
    "source_quote": "16.15-17.00 L/A 1-3/a (KT), Tanssisali 3, Piispanportti, tiistai",
    "activity_id": "esp-2026-0072",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://espoontanssiopisto.fi/opetus/lukukausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 200,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": "Vapaaoppilaspaikkoja voi hakea, jos perheen vuositulot alle 34 000 €.",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: price_covers-kentän avaimet korjattu skeeman mukaisiksi (children/adults -> children_count/adults_count). Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään tiistai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-036",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/eto_alkeis_pdf_a82ee47609fe.pdf",
      "capture_sha256": "a82ee47609fe538885d68a665a317ab7080917132c0f32a4786ae7d4d4b97928",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 48.31,
    "monthly_cost_basis": "200.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Suurpelto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Espoon Tanssiopisto",
    "group_name": "Lastentanssi 3-4v, Espoon Tanssiopisto, Piispanportti, Tanssisali 3",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v (2023 syntyneet)",
    "parent_child": "no",
    "venue_name": "Espoon Tanssiopisto, Piispanportti, Tanssisali 3",
    "address": "Piispanportti 12 B, 02200 Espoo",
    "district": "Suurpelto",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 177.0,
    "price_basis": "Lukukausimaksu 2026/2027, syyslukukausi 17.8.-20.12.2026 (Espoon Tanssiopisto lukukausimaksut).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontanssiopisto.fi/wp-content/uploads/2026/08/lukujarjestys_alkeis_2026_2027_v2_10082026.pdf",
    "source_quote": "17.00-17.30 LT 3-4/a (KT), Tanssisali 3, Piispanportti, tiistai",
    "activity_id": "esp-2026-0073",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 177.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://espoontanssiopisto.fi/opetus/lukukausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 177,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Vapaaoppilaspaikkoja voi hakea, jos perheen vuositulot alle 34 000 €.",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään tiistai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-037",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/eto_alkeis_pdf_a82ee47609fe.pdf",
      "capture_sha256": "a82ee47609fe538885d68a665a317ab7080917132c0f32a4786ae7d4d4b97928",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 42.76,
    "monthly_cost_basis": "177.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Suurpelto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Espoon Tanssiopisto",
    "group_name": "Lastentanssi 5-6v, Espoon Tanssiopisto, Piispanportti, Tanssisali 3",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6 v (2021 syntyneet)",
    "parent_child": "no",
    "venue_name": "Espoon Tanssiopisto, Piispanportti, Tanssisali 3",
    "address": "Piispanportti 12 B, 02200 Espoo",
    "district": "Suurpelto",
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 200.0,
    "price_basis": "Lukukausimaksu 2026/2027, syyslukukausi 17.8.-20.12.2026 (Espoon Tanssiopisto lukukausimaksut).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontanssiopisto.fi/wp-content/uploads/2026/08/lukujarjestys_alkeis_2026_2027_v2_10082026.pdf",
    "source_quote": "17.30-18.15 LT 5-6/k (KT), Tanssisali 3, Piispanportti, tiistai",
    "activity_id": "esp-2026-0074",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://espoontanssiopisto.fi/opetus/lukukausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 200,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Vapaaoppilaspaikkoja voi hakea, jos perheen vuositulot alle 34 000 €.",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään tiistai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-038",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/eto_alkeis_pdf_a82ee47609fe.pdf",
      "capture_sha256": "a82ee47609fe538885d68a665a317ab7080917132c0f32a4786ae7d4d4b97928",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 48.31,
    "monthly_cost_basis": "200.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Suurpelto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Espoon Tanssiopisto",
    "group_name": "Lastentanssi 4-5v, Espoon Tanssiopisto, Piispanportti, Tanssisali 6",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5 v (2022 syntyneet)",
    "parent_child": "no",
    "venue_name": "Espoon Tanssiopisto, Piispanportti, Tanssisali 6",
    "address": "Piispanportti 12 B, 02200 Espoo",
    "district": "Suurpelto",
    "weekday": "torstai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 200.0,
    "price_basis": "Lukukausimaksu 2026/2027, syyslukukausi 17.8.-20.12.2026 (Espoon Tanssiopisto lukukausimaksut).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontanssiopisto.fi/wp-content/uploads/2026/08/lukujarjestys_alkeis_2026_2027_v2_10082026.pdf",
    "source_quote": "16.30-17.15 LT 4-5/a (MK), Tanssisali 6, Piispanportti, torstai",
    "activity_id": "esp-2026-0075",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://espoontanssiopisto.fi/opetus/lukukausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 200,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Vapaaoppilaspaikkoja voi hakea, jos perheen vuositulot alle 34 000 €.",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään torstai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-039",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/eto_alkeis_pdf_a82ee47609fe.pdf",
      "capture_sha256": "a82ee47609fe538885d68a665a317ab7080917132c0f32a4786ae7d4d4b97928",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 48.31,
    "monthly_cost_basis": "200.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Suurpelto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Espoon Tanssiopisto",
    "group_name": "Lastentanssi 5-6v, Espoon Tanssiopisto, Piispanportti, Tanssisali 6",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6 v (2021 syntyneet)",
    "parent_child": "no",
    "venue_name": "Espoon Tanssiopisto, Piispanportti, Tanssisali 6",
    "address": "Piispanportti 12 B, 02200 Espoo",
    "district": "Suurpelto",
    "weekday": "torstai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 200.0,
    "price_basis": "Lukukausimaksu 2026/2027, syyslukukausi 17.8.-20.12.2026 (Espoon Tanssiopisto lukukausimaksut).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontanssiopisto.fi/wp-content/uploads/2026/08/lukujarjestys_alkeis_2026_2027_v2_10082026.pdf",
    "source_quote": "17.15-18.00 LT 5-6/a (MK), Tanssisali 6, Piispanportti, torstai",
    "activity_id": "esp-2026-0076",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://espoontanssiopisto.fi/opetus/lukukausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 200,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Vapaaoppilaspaikkoja voi hakea, jos perheen vuositulot alle 34 000 €.",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään torstai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-040",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/eto_alkeis_pdf_a82ee47609fe.pdf",
      "capture_sha256": "a82ee47609fe538885d68a665a317ab7080917132c0f32a4786ae7d4d4b97928",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 48.31,
    "monthly_cost_basis": "200.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Suurpelto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Espoon Tanssiopisto",
    "group_name": "Esibaletti 6-7v, Espoon Tanssiopisto, Piispanportti, Tanssisali 6",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6-7 v (2020 syntyneet)",
    "parent_child": "no",
    "venue_name": "Espoon Tanssiopisto, Piispanportti, Tanssisali 6",
    "address": "Piispanportti 12 B, 02200 Espoo",
    "district": "Suurpelto",
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 213.0,
    "price_basis": "Lukukausimaksu 2026/2027, syyslukukausi 17.8.-20.12.2026 (Espoon Tanssiopisto lukukausimaksut).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontanssiopisto.fi/wp-content/uploads/2026/08/lukujarjestys_alkeis_2026_2027_v2_10082026.pdf",
    "source_quote": "18.00-19.00 EB 6-7/a (MK), Tanssisali 6, Piispanportti, torstai",
    "activity_id": "esp-2026-0077",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 213.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://espoontanssiopisto.fi/opetus/lukukausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 213,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Vapaaoppilaspaikkoja voi hakea, jos perheen vuositulot alle 34 000 €.",
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikähaarukka osuu rajaukseen vain alarajalla). Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään torstai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-041",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/eto_alkeis_pdf_a82ee47609fe.pdf",
      "capture_sha256": "a82ee47609fe538885d68a665a317ab7080917132c0f32a4786ae7d4d4b97928",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 51.45,
    "monthly_cost_basis": "213.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Suurpelto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Espoon Tanssiopisto",
    "group_name": "Lastentanssi 3-4v, Espoon Tanssiopisto, Piispanportti, Tanssisali 6",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v (2023 syntyneet)",
    "parent_child": "no",
    "venue_name": "Espoon Tanssiopisto, Piispanportti, Tanssisali 6",
    "address": "Piispanportti 12 B, 02200 Espoo",
    "district": "Suurpelto",
    "weekday": "lauantai",
    "start_time": "09:30",
    "end_time": "10:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 177.0,
    "price_basis": "Lukukausimaksu 2026/2027, syyslukukausi 17.8.-20.12.2026 (Espoon Tanssiopisto lukukausimaksut).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontanssiopisto.fi/wp-content/uploads/2026/08/lukujarjestys_alkeis_2026_2027_v2_10082026.pdf",
    "source_quote": "09.30-10.00 LT 3-4/c (MK), Tanssisali 6, Piispanportti, lauantai",
    "activity_id": "esp-2026-0078",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 177.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://espoontanssiopisto.fi/opetus/lukukausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 177,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Vapaaoppilaspaikkoja voi hakea, jos perheen vuositulot alle 34 000 €.",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään lauantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-042",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/eto_alkeis_pdf_a82ee47609fe.pdf",
      "capture_sha256": "a82ee47609fe538885d68a665a317ab7080917132c0f32a4786ae7d4d4b97928",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 42.76,
    "monthly_cost_basis": "177.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Suurpelto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Espoon Tanssiopisto",
    "group_name": "Lastentanssi 4-5v, Espoon Tanssiopisto, Piispanportti, Tanssisali 6",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5 v (2022 syntyneet)",
    "parent_child": "no",
    "venue_name": "Espoon Tanssiopisto, Piispanportti, Tanssisali 6",
    "address": "Piispanportti 12 B, 02200 Espoo",
    "district": "Suurpelto",
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 200.0,
    "price_basis": "Lukukausimaksu 2026/2027, syyslukukausi 17.8.-20.12.2026 (Espoon Tanssiopisto lukukausimaksut).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontanssiopisto.fi/wp-content/uploads/2026/08/lukujarjestys_alkeis_2026_2027_v2_10082026.pdf",
    "source_quote": "10.00-10.45 LT 4-5/c (MK), Tanssisali 6, Piispanportti, lauantai",
    "activity_id": "esp-2026-0079",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://espoontanssiopisto.fi/opetus/lukukausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 200,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Vapaaoppilaspaikkoja voi hakea, jos perheen vuositulot alle 34 000 €.",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään lauantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-043",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/eto_alkeis_pdf_a82ee47609fe.pdf",
      "capture_sha256": "a82ee47609fe538885d68a665a317ab7080917132c0f32a4786ae7d4d4b97928",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 48.31,
    "monthly_cost_basis": "200.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Suurpelto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Espoon Tanssiopisto",
    "group_name": "Lastentanssi 5-6v, Espoon Tanssiopisto, Piispanportti, Tanssisali 6",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6 v (2021 syntyneet)",
    "parent_child": "no",
    "venue_name": "Espoon Tanssiopisto, Piispanportti, Tanssisali 6",
    "address": "Piispanportti 12 B, 02200 Espoo",
    "district": "Suurpelto",
    "weekday": "lauantai",
    "start_time": "10:45",
    "end_time": "11:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 200.0,
    "price_basis": "Lukukausimaksu 2026/2027, syyslukukausi 17.8.-20.12.2026 (Espoon Tanssiopisto lukukausimaksut).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontanssiopisto.fi/wp-content/uploads/2026/08/lukujarjestys_alkeis_2026_2027_v2_10082026.pdf",
    "source_quote": "10.45-11.30 LT 5-6/c (MK), Tanssisali 6, Piispanportti, lauantai",
    "activity_id": "esp-2026-0080",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://espoontanssiopisto.fi/opetus/lukukausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 200,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Vapaaoppilaspaikkoja voi hakea, jos perheen vuositulot alle 34 000 €.",
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään lauantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-044",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/eto_alkeis_pdf_a82ee47609fe.pdf",
      "capture_sha256": "a82ee47609fe538885d68a665a317ab7080917132c0f32a4786ae7d4d4b97928",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 48.31,
    "monthly_cost_basis": "200.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Suurpelto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Espoon Tanssiopisto",
    "group_name": "Pojat 4-6v, Espoon Tanssiopisto, Kulttuurikeskus",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v",
    "parent_child": "no",
    "venue_name": "Espoon Tanssiopisto, Kulttuurikeskus",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:15",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 200.0,
    "price_basis": "Lukukausimaksu 2026/2027, syyslukukausi 17.8.-20.12.2026 (Espoon Tanssiopisto lukukausimaksut).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontanssiopisto.fi/wp-content/uploads/2026/08/lukujarjestys_alkeis_2026_2027_v2_10082026.pdf",
    "source_quote": "10.15-11.00 Pojat 4-6 (MO), Kulttuurikeskus, lauantai",
    "activity_id": "esp-2026-0081",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://espoontanssiopisto.fi/opetus/lukukausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 200,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Vapaaoppilaspaikkoja voi hakea, jos perheen vuositulot alle 34 000 €.",
    "unverified_fields": [
      "address"
    ],
    "verification_notes": "Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään lauantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-045",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/eto_alkeis_pdf_a82ee47609fe.pdf",
      "capture_sha256": "a82ee47609fe538885d68a665a317ab7080917132c0f32a4786ae7d4d4b97928",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 48.31,
    "monthly_cost_basis": "200.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tanssi",
    "provider": "Espoon Tanssiopisto",
    "group_name": "Lastentanssi 4-5v, Espoon Tanssiopisto, Saunalahti",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5 v",
    "parent_child": "no",
    "venue_name": "Espoon Tanssiopisto, Saunalahti",
    "address": null,
    "district": "Saunalahti",
    "weekday": "maanantai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 200.0,
    "price_basis": "Lukukausimaksu 2026/2027, syyslukukausi 17.8.-20.12.2026 (Espoon Tanssiopisto lukukausimaksut).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontanssiopisto.fi/wp-content/uploads/2026/08/lukujarjestys_alkeis_2026_2027_v2_10082026.pdf",
    "source_quote": "16.45-17.30 LT 4-5/e (JR), Saunalahti, maanantai",
    "activity_id": "esp-2026-0082",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://espoontanssiopisto.fi/opetus/lukukausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 200,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Vapaaoppilaspaikkoja voi hakea, jos perheen vuositulot alle 34 000 €.",
    "unverified_fields": [
      "address"
    ],
    "verification_notes": "Espoo-QA 23.9.2026: end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään maanantai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-046",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/eto_alkeis_pdf_a82ee47609fe.pdf",
      "capture_sha256": "a82ee47609fe538885d68a665a317ab7080917132c0f32a4786ae7d4d4b97928",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 48.31,
    "monthly_cost_basis": "200.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Saunalahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Espoon Tanssiopisto",
    "group_name": "Lapsi/aikuinen 1-3v, Espoon Tanssiopisto, Jalavapuisto",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3 v",
    "parent_child": "yes",
    "venue_name": "Espoon Tanssiopisto, Jalavapuisto",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 200.0,
    "price_basis": "Lukukausimaksu 2026/2027, syyslukukausi 17.8.-20.12.2026 (Espoon Tanssiopisto lukukausimaksut).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontanssiopisto.fi/wp-content/uploads/2026/08/lukujarjestys_alkeis_2026_2027_v2_10082026.pdf",
    "source_quote": "16.30-17.15 L/A 1-3/g (JR), Jalavapuisto, tiistai",
    "activity_id": "esp-2026-0083",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://espoontanssiopisto.fi/opetus/lukukausimaksut/",
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-12-20",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 200,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": "Vapaaoppilaspaikkoja voi hakea, jos perheen vuositulot alle 34 000 €.",
    "unverified_fields": [
      "address"
    ],
    "verification_notes": "Espoo-QA 23.9.2026: price_covers-kentän avaimet korjattu skeeman mukaisiksi (children/adults -> children_count/adults_count). Espoo-QA 23.9.2026: start_date, end_date nollattu (arvo oli lukukauden/kauden raja, ei täsmännyt ryhmän weekday-kenttään tiistai); kauden rajat säilyvät season_start_date/season_end_date-kentissä.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_04.json",
      "staging_id": "batch_espoo_2026-09-23_04-047",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_04/eto_alkeis_pdf_a82ee47609fe.pdf",
      "capture_sha256": "a82ee47609fe538885d68a665a317ab7080917132c0f32a4786ae7d4d4b97928",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 48.31,
    "monthly_cost_basis": "200.0 € / term jaettuna 4.14 kuukaudelle (2026-08-17–2026-12-20, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / MA 16.40-17.25 Tuulimäki pikkusali / Saara N ja Emilia M",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen pieni sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:40",
    "end_time": "17:25",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10674430",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / MA 16.40-17.25 Tuulimäki pikkusali / Saara N ja Emilia M | 17.8.2026 16:40 - 7.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0084",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-002",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10674430_b31e0380ac9a.html",
      "capture_sha256": "b31e0380ac9a8fbf638fcef5e3be3d79cfa6ff6f2748b70f31e9998982bc175b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / MA 16.45-17.30 Suomenoja / Aada P ja Sofia K",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Suomenojan sali",
    "address": "Niittyrinne 4, 02270 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10673833",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / MA 16.45-17.30 Suomenoja / Aada P ja Sofia K | 17.8.2026 16:45 - 7.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0085",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-003",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10673833_8ea3899cce07.html",
      "capture_sha256": "8ea3899cce077fb1412872ec09f43050aa9cb6ef95dfde9e4a23c3730c2d841b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Nöykkiö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Nöykkiö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027/ Voimistelukoulu 5-7 v. / MA 16.45-17.30 Kameleonten / Neea H ja Mari G",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-08-24",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10677488",
    "source_quote": "2026-2027/ Voimistelukoulu 5-7 v. / MA 16.45-17.30 Kameleonten / Neea H ja Mari G | 17.8.2026 16:45 - 7.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0086",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-004",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677488_9476ef6933c6.html",
      "capture_sha256": "9476ef6933c67126cb2dbbc9c1d42920caa0857de5a649947de0e789e4f840a4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Trampoliinikoulu 4-6 v. / MA 16.55-17.55 Kameleonten / Milaja R",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:55",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 261.0,
    "price_basis": "Lapset ja nuoret 60 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10677943",
    "source_quote": "2026-2027 / Trampoliinikoulu 4-6 v. / MA 16.55-17.55 Kameleonten / Milaja R | 17.8.2026 16:55 - 7.12.2026 | Lapset ja nuoret 60 min / vko 261,00 €",
    "activity_id": "esp-2026-0087",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 296.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 261,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-005",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677943_eaf07caf2c47.html",
      "capture_sha256": "eaf07caf2c47e1f6abb5f6430ee93d3f472425eaa2a924cb9ececbecf293276b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / MA 17.15-18.00 Vitikka / Elsa K ja Laura V",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-24",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10683163",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / MA 17.15-18.00 Vitikka / Elsa K ja Laura V | 17.8.2026 17:15 - 7.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0088",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-006",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10683163_8eb6c0382ca4.html",
      "capture_sha256": "8eb6c0382ca4daf0ddbb30a6681ac85c3f3afc7e12266721703977fc3ae73130",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / MA 17.30-18.15 Tuulimäki pikkusali / Saara N ja Emilia M",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen pieni sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10674431",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / MA 17.30-18.15 Tuulimäki pikkusali / Saara N ja Emilia M | 17.8.2026 17:30 - 7.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0089",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-007",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10674431_fbd0ecb53fd0.html",
      "capture_sha256": "fbd0ecb53fd0726cd42a0511cdb47af771284adc69c0106654fe06e19315a0ef",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / MA 17.30-18.15 Kameleonten / Johanna S ja Aino L",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10677491",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / MA 17.30-18.15 Kameleonten / Johanna S ja Aino L | 17.8.2026 17:30 - 7.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0090",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-008",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677491_ac4acfe6afe2.html",
      "capture_sha256": "ac4acfe6afe23f8a3ab6774ffbc56e542fce0dc6b283be01d9ec39f3d30a8161",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / TeamGym-koulu 5-7 v. / MA 18.00-18.45 Kameleonten / Noora S ja Aino L",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10680886",
    "source_quote": "2026-2027 / TeamGym-koulu 5-7 v. / MA 18.00-18.45 Kameleonten / Noora S ja Aino L | 17.8.2026 18:00 - 7.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0091",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-009",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10680886_281fed6ee551.html",
      "capture_sha256": "281fed6ee551a12fecc2c89d6fa9774345f2245f980b86568a6e9c21de9f7756",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / MA 18.00-18.45 Vitikka / Elsa K ja Polina L",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-08-24",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10683174",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / MA 18.00-18.45 Vitikka / Elsa K ja Polina L | 17.8.2026 18:00 - 7.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0092",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-010",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10683174_b1958c45f4cb.html",
      "capture_sha256": "b1958c45f4cb9d88706556c8cf3a4056ae09ff94b70cbf3a908968f871fcc4fe",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / MA 18.20-19.05 Tuulimäki pikkusali / Saara N ja Emilia M",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen pieni sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:20",
    "end_time": "19:05",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10674432",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / MA 18.20-19.05 Tuulimäki pikkusali / Saara N ja Emilia M | 17.8.2026 18:20 - 7.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0093",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-011",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10674432_14b26483c150.html",
      "capture_sha256": "14b26483c15061d91894497dbdb19855b2499d9a1c818e34326422f5b9fecced",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / TI 16.30-17.15 Kameleonten / Viivi S",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10677536",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / TI 16.30-17.15 Kameleonten / Viivi S | 18.8.2026 16:30 - 8.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0094",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-012",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677536_5bd98d33edf0.html",
      "capture_sha256": "5bd98d33edf0222e7d60d68c34b0585ff70ec2445afb4a3867d9fb2a2537adab",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Trampoliinikoulu 4-6 v / TI 16.30-17.30 Kameleonten / Siru S",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:30",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 261.0,
    "price_basis": "Lapset ja nuoret 60 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10678247",
    "source_quote": "2026-2027 / Trampoliinikoulu 4-6 v / TI 16.30-17.30 Kameleonten / Siru S | 18.8.2026 16:30 - 8.12.2026 | Lapset ja nuoret 60 min / vko 261,00 €",
    "activity_id": "esp-2026-0095",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 296.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 261,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-013",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10678247_c61d79bb1ba5.html",
      "capture_sha256": "c61d79bb1ba586fd1a2f95f25c6f2415823c3511c26f36796937018c98004d5c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / TI 16.40-17.25 Tuulimäki pikkusali / Abdul A ja Stefani V",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen pieni sali (Tapiola)",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:40",
    "end_time": "17:25",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10685747",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / TI 16.40-17.25 Tuulimäki pikkusali / Abdul A ja Stefani V | 18.8.2026 16:40 - 8.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0096",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-014",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10685747_a02be33b1ea7.html",
      "capture_sha256": "a02be33b1ea770351f6d8bed48f7b25c731669d803b8bb248fd8f3cecf206318",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / TI 16.45-17.30 Suomenoja / Enni K ja Jenna T",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Suomenojan sali",
    "address": "Niittyrinne 4, 02270 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10673837",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / TI 16.45-17.30 Suomenoja / Enni K ja Jenna T | 18.8.2026 16:45 - 8.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0097",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-015",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10673837_979329c92fc3.html",
      "capture_sha256": "979329c92fc394b6b0ee4657135a1549498643094ef3c8f20335a1324d0b09e0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Nöykkiö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Nöykkiö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / TI 17.00-17.45 Kameleonten / Lara L ja Minna M",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10677621",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / TI 17.00-17.45 Kameleonten / Lara L ja Minna M | 18.8.2026 17:00 - 8.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0098",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-016",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677621_64d9a8012445.html",
      "capture_sha256": "64d9a80124456a0a3a7c1b725b3cdce4c39e3147ac8258adc225b599d1549d26",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / TI 17.15-18.00 Vitikka / Daniela M",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10683193",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / TI 17.15-18.00 Vitikka / Daniela M | 18.8.2026 17:15 - 8.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0099",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-017",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10683193_87bf39c92e76.html",
      "capture_sha256": "87bf39c92e765bd90add946378a78155365c9899233dd12aab508fdb0cc28a27",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / TI 17.15-18.00 Vitikka / Julianna J",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10683198",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / TI 17.15-18.00 Vitikka / Julianna J | 18.8.2026 17:15 - 8.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0100",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-018",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10683198_eff37a9c4df9.html",
      "capture_sha256": "eff37a9c4df9b7b343b3d92d42ede783adbad0a9b3d89699e23624e6c4ffa9ae",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / TI 17.30-18.15 Kameleonten / Siru S ja Laura V",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10677627",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / TI 17.30-18.15 Kameleonten / Siru S ja Laura V | 18.8.2026 17:30 - 8.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0101",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-019",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677627_5c531344a814.html",
      "capture_sha256": "5c531344a814270dac61728738051569af1d20a82540ee9e60ff7dd98d425337",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / TI 17.30-18.15 Suomenoja / Iida M",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Suomenojan sali",
    "address": "Niittyrinne 4, 02270 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10685711",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / TI 17.30-18.15 Suomenoja / Iida M | 18.8.2026 17:30 - 8.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0102",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-020",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10685711_ff7d0cc4a4e8.html",
      "capture_sha256": "ff7d0cc4a4e8e3e4a1d7780950e63a403c5ea0df149b9f0de5fb1a6e594e364b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Nöykkiö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Nöykkiö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / TI 17.30-18.30 Tuulimäki pikkusali / Abdul A ja Stefani V",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen pieni sali (Tapiola)",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 261.0,
    "price_basis": "Lapset ja nuoret 60 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10685751",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / TI 17.30-18.30 Tuulimäki pikkusali / Abdul A ja Stefani V | 18.8.2026 17:30 - 8.12.2026 | Lapset ja nuoret 60 min / vko 261,00 €",
    "activity_id": "esp-2026-0103",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 296.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 261,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-021",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10685751_27be3355b994.html",
      "capture_sha256": "27be3355b994b9a668c943604cc6cacd7636a3ca724b8ac1ae8ac2aa7e977c0b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / TI 17.50-18.35 Kameleonten / Minna M ja Saaga R",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:50",
    "end_time": "18:35",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10677666",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / TI 17.50-18.35 Kameleonten / Minna M ja Saaga R | 18.8.2026 17:50 - 8.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0104",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-022",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677666_0300fc0c5724.html",
      "capture_sha256": "0300fc0c57242dfb30e0b5704a45d40dea87bacc3a01b227cf5864ce0bad6675",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Telinevoimistelu tytöt Taitoryhmä 5-7 v. / TI 18.00-19.00 ja TO 17.30-18.30 Vitikka / Emilia L ja Liina K",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 368.0,
    "price_basis": "Taitoryhmä 120 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10665066",
    "source_quote": "2026-2027 / Telinevoimistelu tytöt Taitoryhmä 5-7 v. / TI 18.00-19.00 ja TO 17.30-18.30 Vitikka / Emilia L ja Liina K | 18.8.2026 18:00 - 10.12.2026 | Taitoryhmä 120 min / vko 368,00 €",
    "activity_id": "esp-2026-0105",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 403.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-18",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 368,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-023",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10665066_457ac2ecf8eb.html",
      "capture_sha256": "457ac2ecf8ebad389c6c6e9384104cc5b719b037cdb212ef06cb3052db759b7c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 97.4,
    "monthly_cost_basis": "368.0 € / term jaettuna 3.78 kuukaudelle (2026-08-18–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / KE 16.30-17.15 Suomenoja / Aada P ja Ida M",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Suomenojan sali",
    "address": "Niittyrinne 4, 02270 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10673843",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / KE 16.30-17.15 Suomenoja / Aada P ja Ida M | 19.8.2026 16:30 - 16.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0106",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-024",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10673843_3b72e5d7957e.html",
      "capture_sha256": "3b72e5d7957e405fa6772195a58b9095f113230d4e5e86c6f04a056c79a55849",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Nöykkiö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Nöykkiö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / KE 16.40-17.25 Tuulimäki pikkusali / Iida V",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen pieni sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "16:40",
    "end_time": "17:25",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10674439",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / KE 16.40-17.25 Tuulimäki pikkusali / Iida V | 19.8.2026 16:40 - 9.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0107",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-025",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10674439_e7e124521abb.html",
      "capture_sha256": "e7e124521abb4dd7b7efabeb21c7cd5111634ed71a394640c693aac6ece0cde1",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / KE 17.15-18.00 Suomenoja / Aada P ja Ida M",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Suomenojan sali",
    "address": "Niittyrinne 4, 02270 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10673845",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / KE 17.15-18.00 Suomenoja / Aada P ja Ida M | 19.8.2026 17:15 - 16.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0108",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-026",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10673845_7aa41a4e0def.html",
      "capture_sha256": "7aa41a4e0deff79128aec9b6fd1f2dcb8a499b29b2f347e0e312b75ea3301ca8",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Nöykkiö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Nöykkiö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / KE 17.15-18.00 Kameleonten / Aino L ja Viivi S",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10677677",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / KE 17.15-18.00 Kameleonten / Aino L ja Viivi S | 19.8.2026 17:15 - 9.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0109",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-027",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677677_4be7930b928a.html",
      "capture_sha256": "4be7930b928aaf11012dc152788b5c3addd575365ec00268b10f068a18b53fe3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / KE 17.15-18.00 Vitikka / Inka M ja Polina L",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10683209",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / KE 17.15-18.00 Vitikka / Inka M ja Polina L | 19.8.2026 17:15 - 9.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0110",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-028",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10683209_a1e958e683ad.html",
      "capture_sha256": "a1e958e683add87a6bae37980d8d8282b03402cb79f99f0052916d63d6104fa3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / KE 17.30-18.15 Tuulimäki pikkusali / Iida V ja Lydia C",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen pieni sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10674440",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / KE 17.30-18.15 Tuulimäki pikkusali / Iida V ja Lydia C | 19.8.2026 17:30 - 9.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0111",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-029",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10674440_5f07d730e752.html",
      "capture_sha256": "5f07d730e752b0a7d0320b0219cda70149249f33a5c8d964deddf6363a6b000c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / KE 18.15-19.00 / Kameleonten / Viivi S ja Laura V",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:15",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10677684",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / KE 18.15-19.00 / Kameleonten / Viivi S ja Laura V | 19.8.2026 18:15 - 9.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0112",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-030",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677684_767da363a857.html",
      "capture_sha256": "767da363a85782a0e95896318d10f944a26e18da439587428b48ef935cc297ee",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / KE 18.20-19.05 Tuulimäki pikkusali / Iida V ja Lydia C",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen pieni sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:20",
    "end_time": "19:05",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10674441",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / KE 18.20-19.05 Tuulimäki pikkusali / Iida V ja Lydia C | 19.8.2026 18:20 - 9.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0113",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-031",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10674441_e1412bb1ceb8.html",
      "capture_sha256": "e1412bb1ceb83d9d29e78fe046c7a87c01e2f1840dba09e579a818cd49b79c4b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / KE 18.30-19.15 Kameleonten / Neea H ja Stefani V",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:30",
    "end_time": "19:15",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10677689",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / KE 18.30-19.15 Kameleonten / Neea H ja Stefani V | 19.8.2026 18:30 - 9.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0114",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-032",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677689_02fe4ae04077.html",
      "capture_sha256": "02fe4ae04077dac7b1004bbe6a05241a39d11b0a04ca3f1f1fd5a385dfdea7d3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / TO 16.40-17.25 Tuulimäki pikkusali / Iida V",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen pieni sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "16:40",
    "end_time": "17:25",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10674452",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / TO 16.40-17.25 Tuulimäki pikkusali / Iida V | 20.8.2026 16:40 - 10.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0115",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-033",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10674452_c853b9695b30.html",
      "capture_sha256": "c853b9695b30c58cdddda80ae02046239aa4c8e1e39e467a434900c1587259e7",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / TO 16.55-17.40 Kameleonten / Neea H ja Laura V",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "16:55",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10677701",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / TO 16.55-17.40 Kameleonten / Neea H ja Laura V | 20.8.2026 16:55 - 10.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0116",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-034",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677701_c48df371c5a6.html",
      "capture_sha256": "c48df371c5a6f3e73d95f20282c889d5f4f7dc8659fc8984cd540ad4ff9050e3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Trampoliinikoulu 4-6 v. / TO 16.55-17.55 Kameleonten / Ronja S",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "16:55",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 261.0,
    "price_basis": "Lapset ja nuoret 60 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10680766",
    "source_quote": "2026-2027 / Trampoliinikoulu 4-6 v. / TO 16.55-17.55 Kameleonten / Ronja S | 20.8.2026 16:55 - 10.12.2026 | Lapset ja nuoret 60 min / vko 261,00 €",
    "activity_id": "esp-2026-0117",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 296.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 261,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-035",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10680766_6057eab67e1c.html",
      "capture_sha256": "6057eab67e1c9e4bbf6a542b73570d86c32c72ee3fa3d6068ac437c395d92369",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Telinevoimistelu pojat Taitoryhmä 5-7 v. / TO 17.00-18.00 ja SU 13.00-14.00 Vitikka / Elli G ja Julianna J",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 368.0,
    "price_basis": "Taitoryhmä 120 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10665118",
    "source_quote": "2026-2027 / Telinevoimistelu pojat Taitoryhmä 5-7 v. / TO 17.00-18.00 ja SU 13.00-14.00 Vitikka / Elli G ja Julianna J | 20.8.2026 17:00 - 13.12.2026 | Taitoryhmä 120 min / vko 368,00 €",
    "activity_id": "esp-2026-0118",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 403.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-20",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 368,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-036",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10665118_b702b7463485.html",
      "capture_sha256": "b702b7463485f843bf893281101e3214d19df4c6f3d8c56eba5480286ed02612",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 96.56,
    "monthly_cost_basis": "368.0 € / term jaettuna 3.81 kuukaudelle (2026-08-20–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / TO 17.05-17.50 Vitikka / Daniela M",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:05",
    "end_time": "17:50",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10683212",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / TO 17.05-17.50 Vitikka / Daniela M | 20.8.2026 17:05 - 10.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0119",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-037",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10683212_79ee9833f69b.html",
      "capture_sha256": "79ee9833f69b7e3886446e4ce71dca8ec438ebdecf146279413b947e070ae01b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / TO 17.10-17.55 Vitikka / Moona K",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": "Vitikka 4, 02630 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:10",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10683216",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / TO 17.10-17.55 Vitikka / Moona K | 20.8.2026 17:10 - 10.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0120",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-038",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10683216_41d11e5a6801.html",
      "capture_sha256": "41d11e5a6801ba3b77a3d72085917b7b29ecb507ad76137c408a33f2d9e8abe3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / TO 17.45-18.30 Suomenoja / Ida M ja Yasmine H",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Suomenojan sali",
    "address": "Niittyrinne 4, 02270 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10673848",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / TO 17.45-18.30 Suomenoja / Ida M ja Yasmine H | 20.8.2026 17:45 - 10.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0121",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-039",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10673848_ff9b6a08f01e.html",
      "capture_sha256": "ff9b6a08f01e666eabb7e8b379670c6ae3dd8cdd93230cb052a86dfd92310459",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Nöykkiö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Nöykkiö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / TO 17.45-18.30 Kameleonten / Siru S ja Laura V",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10677708",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / TO 17.45-18.30 Kameleonten / Siru S ja Laura V | 20.8.2026 17:45 - 10.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0122",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-040",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677708_bf6d8e601f8b.html",
      "capture_sha256": "bf6d8e601f8bbd1d261281d898913af7aa948f637f08a3c059f418dc1b9fdc81",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / TO 17.55-18.40 Vitikka / Moona K ja Saaga R",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Vitikan sali harraste",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:55",
    "end_time": "18:40",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10683596",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / TO 17.55-18.40 Vitikka / Moona K ja Saaga R | 20.8.2026 17:55 - 10.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0123",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-041",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10683596_01724ca302b5.html",
      "capture_sha256": "01724ca302b5db388cb4634945bd7425088818dd393e47c6dcdd75f70133c9a2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / TO 18.00-18.45 Kameleonten / Ronja S ja Stefani V",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10677725",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / TO 18.00-18.45 Kameleonten / Ronja S ja Stefani V | 20.8.2026 18:00 - 10.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0124",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-042",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677725_fc86386cb898.html",
      "capture_sha256": "fc86386cb8980cdef0ee155a047f218839d8176e78af4648c1cdcd3bdf4075d6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / TO 18.20-19.05 Tuulimäki pikkusali / Iida V ja Jenna T",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen pieni sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:20",
    "end_time": "19:05",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10674453",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / TO 18.20-19.05 Tuulimäki pikkusali / Iida V ja Jenna T | 20.8.2026 18:20 - 10.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0125",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-043",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10674453_3640d1600523.html",
      "capture_sha256": "3640d16005239e762344f93308995c097c4a91d73e566b6ba0c76bd79d15c499",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Telinevoimistelu tytöt Taitoryhmä 5-7 v. / TO 18.30-19.30 ja SU 14.00-15.00 Tuulimäki / Taimi K ja Viivi K",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen iso sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 368.0,
    "price_basis": "Taitoryhmä 120 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10658295",
    "source_quote": "2026-2027 / Telinevoimistelu tytöt Taitoryhmä 5-7 v. / TO 18.30-19.30 ja SU 14.00-15.00 Tuulimäki / Taimi K ja Viivi K | 20.8.2026 18:30 - 13.12.2026 | Taitoryhmä 120 min / vko 368,00 €",
    "activity_id": "esp-2026-0126",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 403.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-20",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 368,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-044",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10658295_e07c5410da80.html",
      "capture_sha256": "e07c5410da806303087f9610042259edb7e0eed1e77c84190bba373dd6246a25",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 96.56,
    "monthly_cost_basis": "368.0 € / term jaettuna 3.81 kuukaudelle (2026-08-20–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / TO 18.30-19.15 Suomenoja / Ida M ja Yasmine H",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Suomenojan sali",
    "address": "Niittyrinne 4, 02270 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:30",
    "end_time": "19:15",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10673850",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / TO 18.30-19.15 Suomenoja / Ida M ja Yasmine H | 20.8.2026 18:30 - 10.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0127",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-045",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10673850_0dbabb1c7fca.html",
      "capture_sha256": "0dbabb1c7fca82bfc15727e43f55c32efd341ea45d38a4bb64a98081953915bd",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Nöykkiö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Nöykkiö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / TeamGym-koulu 5-7 v. / TO 18.30-19.15 Kameleonten / Noora S",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:30",
    "end_time": "19:15",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10817338",
    "source_quote": "2026-2027 / TeamGym-koulu 5-7 v. / TO 18.30-19.15 Kameleonten / Noora S | 20.8.2026 18:30 - 10.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0128",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-046",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10817338_853ffe23bb4d.html",
      "capture_sha256": "853ffe23bb4db167c40a4124fb70e6cf36550489e49a61516b03431298edb732",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Trampoliinikoulu 4-6 v. / LA 11.00-12.00 Kameleonten / Elsa K ja Mari G",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": "2026-09-26",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 261.0,
    "price_basis": "Lapset ja nuoret 60 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10680823",
    "source_quote": "2026-2027 / Trampoliinikoulu 4-6 v. / LA 11.00-12.00 Kameleonten / Elsa K ja Mari G | 22.8.2026 11:00 - 12.12.2026 | Lapset ja nuoret 60 min / vko 261,00 €",
    "activity_id": "esp-2026-0129",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 296.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 261,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-047",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10680823_22a5f0db2499.html",
      "capture_sha256": "22a5f0db24999c83ae6fb0d71ebbb7f9ec71912823124ec00c35538f352db882",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / LA 12.05-12.50 Kameleonten / Elsa K",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "lauantai",
    "start_time": "12:05",
    "end_time": "12:50",
    "season": "syksy 2026",
    "start_date": "2026-08-22",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10677731",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / LA 12.05-12.50 Kameleonten / Elsa K | 22.8.2026 12:05 - 12.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0130",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-048",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677731_569aa98efac3.html",
      "capture_sha256": "569aa98efac364b2bf1dbea3582259625e218f7ae42c9d9eac61f2a90b6a77b0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / SU 10.00-10.45 Tuulimäki pikkusali / Elias N ja Meeri B",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen pieni sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10762134",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / SU 10.00-10.45 Tuulimäki pikkusali / Elias N ja Meeri B | 23.8.2026 10:00 - 13.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0131",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-049",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10762134_0deae5c3b36d.html",
      "capture_sha256": "0deae5c3b36d3dd6e2b0f33dae36e7bd2eaa2c5a5e5ebab81e1db4a7d25f92d9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / SU 10.30-11.15 Kameleonten / Emilia L ja Abdul A",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "10:30",
    "end_time": "11:15",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10677774",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / SU 10.30-11.15 Kameleonten / Emilia L ja Abdul A | 23.8.2026 10:30 - 13.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0132",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-050",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677774_4446d87439aa.html",
      "capture_sha256": "4446d87439aa811c299b72e77a011800d4bc19a34e233609e978236d2efaea19",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / SU 11.20-12.05 Kameleonten / Emilia L ja Abdul A",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "11:20",
    "end_time": "12:05",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10677803",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / SU 11.20-12.05 Kameleonten / Emilia L ja Abdul A | 23.8.2026 11:20 - 13.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0133",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-051",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677803_b31157b7d89f.html",
      "capture_sha256": "b31157b7d89f16640a224a54ad17a719771fb91652fe1c2307a4f2ab40bf62b9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Trampoliinikoulu 4-6 v. / SU 12.30-13.30 Kameleonten / Anjelica S (ja Stella K)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "12:30",
    "end_time": "13:30",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 261.0,
    "price_basis": "Lapset ja nuoret 60 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10680828",
    "source_quote": "2026-2027 / Trampoliinikoulu 4-6 v. / SU 12.30-13.30 Kameleonten / Anjelica S (ja Stella K) | 23.8.2026 12:30 - 13.12.2026 | Lapset ja nuoret 60 min / vko 261,00 €",
    "activity_id": "esp-2026-0134",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 296.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 261,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-052",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10680828_ad463f4d8859.html",
      "capture_sha256": "ad463f4d885982ef159b996c54ae76fbf5412f8c603cbc3a8a7640468611d1f0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027/ Voimistelukoulu 5-7 v. / SU 13.30-14.15 Kameleonten / Anjelica S (ja Stella K)",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Kameleonten sali (Leppävaaran urheilupuisto)",
    "address": "Veräjäpellonkatu 17, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "13:30",
    "end_time": "14:15",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10677826",
    "source_quote": "2026-2027/ Voimistelukoulu 5-7 v. / SU 13.30-14.15 Kameleonten / Anjelica S (ja Stella K) | 23.8.2026 13:30 - 13.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0135",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-053",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10677826_5e0392705926.html",
      "capture_sha256": "5e03927059266fe65c647f6b1e118810c70b85b8ed278681357314352091510c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / SU 14.15-15.00 Suomenoja / Jessina K",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Suomenojan sali",
    "address": "Niittyrinne 4, 02270 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "14:15",
    "end_time": "15:00",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/10673851",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / SU 14.15-15.00 Suomenoja / Jessina K | 23.8.2026 14:15 - 13.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0136",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-054",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10673851_5b948e6c356e.html",
      "capture_sha256": "5b948e6c356eb1ca14e7b6c8b60e6666780df198f0300f17ba9d1d303ca392c3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Nöykkiö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Nöykkiö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 3-5 v. / SU 15.00-15.45 Tuulimäki pikkusali / Taimi K ja Viivi K",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 v.",
    "parent_child": "unknown",
    "venue_name": "Tuulimäen pieni sali (Tapiola)",
    "address": "Itätuulenkuja 9, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "15:00",
    "end_time": "15:45",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://estt.myclub.fi/flow/courses/10674454",
    "source_quote": "2026-2027 / Voimistelukoulu 3-5 v. / SU 15.00-15.45 Tuulimäki pikkusali / Taimi K ja Viivi K | 23.8.2026 15:00 - 13.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0137",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-055",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_10674454_b848278a985c.html",
      "capture_sha256": "b848278a985c2c34e08996b14c8ff41e38543c78c69d6012473204464d16c46a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Telinetaiturit ry",
    "group_name": "2026-2027 / Voimistelukoulu 5-7 v. / SU 15.00-15.45 Suomenoja / Jessina K",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 v.",
    "parent_child": "unknown",
    "venue_name": "Suomenojan sali",
    "address": "Niittyrinne 4, 02270 Espoo, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "15:00",
    "end_time": "15:45",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Lapset ja nuoret 45 min / vko",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://estt.myclub.fi/flow/courses/11250572",
    "source_quote": "2026-2027 / Voimistelukoulu 5-7 v. / SU 15.00-15.45 Suomenoja / Jessina K | 23.8.2026 15:00 - 13.12.2026 | Lapset ja nuoret 45 min / vko 199,00 €",
    "activity_id": "esp-2026-0138",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 234.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 1.8.2026-31.7.2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-056",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_estt_11250572_8ad00ab46c8c.html",
      "capture_sha256": "8ad00ab46c8c3b00c4ce38411ae4886d40c7507e21d0a8b43a74ec305d04d01b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Nöykkiö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Nöykkiö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Temppujumppa 4-6 v (2022-2020) ma klo 17.45-18.30 Ruusutorpan koulu",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v",
    "parent_child": "unknown",
    "venue_name": "Ruusutorpan koulu",
    "address": "Leppävaarankatu 24, 02600 Espoo, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-24",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Temppujumppa 4-6 v ma klo 17.45-18.30 Ruusutorpan koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10771648",
    "source_quote": "Temppujumppa 4-6 v (2022-2020) ma klo 17.45-18.30 Ruusutorpan koulu | 24.8.2026 17:45 - 7.12.2026 | Temppujumppa 4-6 v ma klo 17.45-18.30 Ruusutorpan koulu 115,00 €",
    "activity_id": "esp-2026-0139",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-24",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-057",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_tapiolanvoimistelijat_10771648_c808b03256e1.html",
      "capture_sha256": "c808b03256e12d1ccdd85f3f715b30358e30b9b9e88be69b199a5bf3c45e9066",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Satuvoimistelu 3-4 v ( 2022-2023) ti klo 17.00-17.45 Laajalahden koulu",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v",
    "parent_child": "unknown",
    "venue_name": "Laajalahden koulu",
    "address": "Elisenvaarankuja 9, 02140 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Satuvoimistelu 3-4 v ti klo 17.00-17.45 Laajalahden koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10771565",
    "source_quote": "Satuvoimistelu 3-4 v ( 2022-2023) ti klo 17.00-17.45 Laajalahden koulu | 25.8.2026 17:00 - 8.12.2026 | Satuvoimistelu 3-4 v ti klo 17.00-17.45 Laajalahden koulu 115,00 €",
    "activity_id": "esp-2026-0140",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-25",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-058",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_tapiolanvoimistelijat_10771565_d2a77ed6244a.html",
      "capture_sha256": "d2a77ed6244a6ea5863ffb432df7fda6ce8e98329fa9d23b7d023e57dbb331e6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Laajalahti",
    "district_basis": "geokoodattu osoite -> neighborhood 'Laajalahti' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Satuvoimistelu 4-5 v (2021-2022) ti klo 17.00-17.45 Mankkaanpuron koulu",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5 v",
    "parent_child": "unknown",
    "venue_name": "Mankkaanpuron koulu",
    "address": "Vanhan-Mankkaantie 17, 02180 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2026-12-01",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Satuvoimistelu 4-5 v (2022-2021) klo 17.00-17.45 Mankkaanpuron koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10771690",
    "source_quote": "Satuvoimistelu 4-5 v (2021-2022) ti klo 17.00-17.45 Mankkaanpuron koulu | 25.8.2026 17:00 - 1.12.2026 | Satuvoimistelu 4-5 v (2022-2021) klo 17.00-17.45 Mankkaanpuron koulu 115,00 €",
    "activity_id": "esp-2026-0141",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-25",
    "season_end_date": "2026-12-01",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-059",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_tapiolanvoimistelijat_10771690_676b32d61f91.html",
      "capture_sha256": "676b32d61f917e72dcccc44f4266015c4aab6f34044887ec6ee8d257dd3f4641",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Satuvoimistelu 3-4 v (2022-2023) ti klo 17.00-17.45 Toppelundin koulu",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v",
    "parent_child": "unknown",
    "venue_name": "Toppelundin koulu",
    "address": "Toppelundintie 15, 02170 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Satuvoimistelu 3-4 v (2022-2023) ti klo 17.00-17.45 Toppelundin koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10775603",
    "source_quote": "Satuvoimistelu 3-4 v (2022-2023) ti klo 17.00-17.45 Toppelundin koulu | 25.8.2026 17:00 - 8.12.2026 | Satuvoimistelu 3-4 v (2022-2023) ti klo 17.00-17.45 Toppelundin koulu 115,00 €",
    "activity_id": "esp-2026-0142",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-25",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-060",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_tapiolanvoimistelijat_10775603_2921e796228b.html",
      "capture_sha256": "2921e796228b076aae240a2708bfa1a6805ae9ca788780ad652f0dda6f77d0d6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Haukilahti",
    "district_basis": "geokoodattu osoite -> neighborhood 'Haukilahti' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Temppujumppa 5-6 v (2020-2021) ti klo 17.45-18.30 Laajalahden koulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6 v",
    "parent_child": "unknown",
    "venue_name": "Tapiolan Voimistelijat",
    "address": "Kappelikuja 6 B, 02200 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Temppujumppa 5-6 v (2021-2022) ti klo 17.45-18.30 Laajalahden koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10771605",
    "source_quote": "Temppujumppa 5-6 v (2020-2021) ti klo 17.45-18.30 Laajalahden koulu | 25.8.2026 17:45 - 8.12.2026 | Temppujumppa 5-6 v (2021-2022) ti klo 17.45-18.30 Laajalahden koulu 115,00 €",
    "activity_id": "esp-2026-0143",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-25",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-061",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_tapiolanvoimistelijat_10771605_f25a38cb5310.html",
      "capture_sha256": "f25a38cb53102937e0a1ab840434e4b6ff9b9daf3e0722dd61212f146d219dea",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Niittykumpu",
    "district_basis": "geokoodattu osoite -> sub_district 'Niittykumpu' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Temppujumppa 5-6 v (2020-2021) to klo 17.45-18.30 Mankkaanpuron koulu",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6 v",
    "parent_child": "unknown",
    "venue_name": "Mankkaanpuron koulu",
    "address": "Vanhan-Mankkaantie 17, 02180 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "11:30",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-08-27",
    "end_date": "2026-12-03",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Temppujumppa 5-6 v torstai klo 17.45-18.30 Mankkaanpuron koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10771398",
    "source_quote": "Temppujumppa 5-6 v (2020-2021) to klo 17.45-18.30 Mankkaanpuron koulu | 27.8.2026 11:30 - 3.12.2026 | Temppujumppa 5-6 v torstai klo 17.45-18.30 Mankkaanpuron koulu 115,00 €",
    "activity_id": "esp-2026-0144",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-27",
    "season_end_date": "2026-12-03",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-064",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_tapiolanvoimistelijat_10771398_9f23f5db5d90.html",
      "capture_sha256": "9f23f5db5d902204a65dcf2a1819401a03f5235085de659f49dd6a9a2905f26a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Satutanssi 5-6 v (2020-2021) to klo 17.00-18.00 Vindängens skola",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6 v",
    "parent_child": "unknown",
    "venue_name": "Vindängens skola",
    "address": "Tuulikuja 8 A, 02100 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-27",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 125.0,
    "price_basis": "Satutanssi torstai klo 17.00-18.00 Vindängens skola",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10771392",
    "source_quote": "Satutanssi 5-6 v (2020-2021) to klo 17.00-18.00 Vindängens skola | 27.8.2026 17:00 - 10.12.2026 | Satutanssi torstai klo 17.00-18.00 Vindängens skola 125,00 €",
    "activity_id": "esp-2026-0145",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 135.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-27",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 125,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-065",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_tapiolanvoimistelijat_10771392_67b0e27387a3.html",
      "capture_sha256": "67b0e27387a3a52f72909c474787d345a59a1d44b708f9afeb92d48ae27ca5d9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Temppujumppa 3-4 v (2022-2023) to klo 17.00-17.45 Mankkaanpuron koulu",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v",
    "parent_child": "unknown",
    "venue_name": "Tapiolan Voimistelijat",
    "address": "Kappelikuja 6 B, 02200 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-27",
    "end_date": "2026-12-03",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Temppujumppa 3-4 v. to klo 17.00-17.45 Mankkaanpuron koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10771418",
    "source_quote": "Temppujumppa 3-4 v (2022-2023) to klo 17.00-17.45 Mankkaanpuron koulu | 27.8.2026 17:00 - 3.12.2026 | Temppujumppa 3-4 v. to klo 17.00-17.45 Mankkaanpuron koulu 115,00 €",
    "activity_id": "esp-2026-0146",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-27",
    "season_end_date": "2026-12-03",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-066",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_tapiolanvoimistelijat_10771418_da876fef2166.html",
      "capture_sha256": "da876fef2166824390a10e2bcf1ceca715324921ae9f561a85c971411debe9c2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Niittykumpu",
    "district_basis": "geokoodattu osoite -> sub_district 'Niittykumpu' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Satuvoimistelu 3-4 v (2022-2023) to klo 17.00-17.45 Pohjois-Tapiolan koulu",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v",
    "parent_child": "unknown",
    "venue_name": "Pohjois-Tapiolan koulu",
    "address": "Sepontie 4, 02130 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-27",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Satuvoimistelu 3-4 v to klo 17.00-17.45 Pohjois-Tapiolan koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10771791",
    "source_quote": "Satuvoimistelu 3-4 v (2022-2023) to klo 17.00-17.45 Pohjois-Tapiolan koulu | 27.8.2026 17:00 - 10.12.2026 | Satuvoimistelu 3-4 v to klo 17.00-17.45 Pohjois-Tapiolan koulu 115,00 €",
    "activity_id": "esp-2026-0147",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-27",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-067",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_tapiolanvoimistelijat_10771791_05dd3a688b11.html",
      "capture_sha256": "05dd3a688b11a9759997a53d936d4ff2441e46139271d3aa02047558bef188d3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Pohjois-Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pohjois-Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Satuvoimistelu 3-4 v (2022-2023) pe klo 17.00-17.45 Postipuun koulu",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4 v",
    "parent_child": "unknown",
    "venue_name": "Postipuun koulu",
    "address": "Ruutikuja 2, 02650 Espoo, Suomi",
    "district": null,
    "weekday": "perjantai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-28",
    "end_date": "2026-12-11",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Satujumppa 3-4 v pe klo 17.00-17.45 Postipuun koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10771136",
    "source_quote": "Satuvoimistelu 3-4 v (2022-2023) pe klo 17.00-17.45 Postipuun koulu | 28.8.2026 17:00 - 11.12.2026 | Satujumppa 3-4 v pe klo 17.00-17.45 Postipuun koulu 115,00 €",
    "activity_id": "esp-2026-0148",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-28",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-068",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_tapiolanvoimistelijat_10771136_76137e9ff1ba.html",
      "capture_sha256": "76137e9ff1bae979d910687c1ba31235269fabe3cdc09cff10827c1aa84ada9f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Tapiolan Voimistelijat ry",
    "group_name": "Akrotemppuilu 6-7 v (2019-2020) ma klo 17.00-18.00 Mankkaan koulu",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6-7 v",
    "parent_child": "unknown",
    "venue_name": "Mankkaan koulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Akrotemppuilu 6-7 v (2019-2020) ma klo 17.00-18.00 Mankkaan koulu",
    "membership_fee_eur": 10.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://tapiolanvoimistelijat.myclub.fi/flow/courses/10777839",
    "source_quote": "Akrotemppuilu 6-7 v (2020-2019) ma klo 17.00-18.00 Mankkaan koulu | 31.8.2026 17:00 - 7.12.2026 | Akrotemppuilu 6-7 v (2019-2020) ma klo 17.00-18.00 Mankkaan koulu 115,00 €",
    "activity_id": "esp-2026-0149",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 125.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 115,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu lapset 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Espoo-QA 23.9.2026: group_name-kentän syntymävuosien järjestys korjattu (2020-2019 -> 2019-2020). myClubin sivun otsikko (.event-name-text) näyttää järjestyksen 2020-2019, mutta kaikki muut kohdat samalla sivulla (Hintatiedot, tapahtumalista) käyttävät järjestystä 2019-2020; tuoreena tarkistettu 23.9.2026, hinta/ikä/aika/jäsenmaksu täsmäävät.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-069",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_tapiolanvoimistelijat_10777839_8f74a11c84cf.html",
      "capture_sha256": "8f74a11c84cf2db36c05f678cdec4f7d424ef281fb1142849fb6ca5f63ea9bf7",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Alkeisuimakoulu",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Matinkylän uimahalli",
    "address": "Tynnyritie 6, 02230 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "16:00",
    "end_time": "16:30",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-17",
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11555455",
    "source_quote": "Lasten Alkeisuimakoulu | 22.10.2026 16:00 - 17.12.2026 | Kurssimaksu 91,00 €",
    "activity_id": "esp-2026-0150",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 101.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-17",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-070",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11555455_253724bbf92c.html",
      "capture_sha256": "253724bbf92cc9369bedd5cec59887187d958cb92f633fffba545578a17e487d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.59,
    "monthly_cost_basis": "91.0 € / course jaettuna 1.87 kuukaudelle (2026-10-22–2026-12-17, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Matinkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Matinkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Alkeisuimakoulu",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Matinkylän uimahalli",
    "address": "Tynnyritie 6, 02230 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:05",
    "end_time": "18:35",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-17",
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11556555",
    "source_quote": "Lasten Alkeisuimakoulu | 22.10.2026 18:05 - 17.12.2026 | Kurssimaksu 91,00 €",
    "activity_id": "esp-2026-0151",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 101.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-17",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-071",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11556555_7b64b1d4caf0.html",
      "capture_sha256": "7b64b1d4caf0481f1856dd54dcb2b6997982a84cc71c688e50bbc84308c54dfb",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.59,
    "monthly_cost_basis": "91.0 € / course jaettuna 1.87 kuukaudelle (2026-10-22–2026-12-17, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Matinkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Matinkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Alkeisuimakoulu",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Leppävaaran Uimahalli",
    "address": "Veräjäpellonkatu 15, 02650 Espoo",
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:30",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-10-26",
    "end_date": "2026-12-14",
    "sessions_count": null,
    "price_eur": 82.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11578565",
    "source_quote": "Lasten Alkeisuimakoulu | 26.10.2026 16:30 - 14.12.2026 | Kurssimaksu 82,00 €",
    "activity_id": "esp-2026-0152",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 92.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-26",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-10-26",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 82,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-072",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11578565_6d2e15137131.html",
      "capture_sha256": "6d2e151371315e35c7c426003510c3bba75f8360ebf75754e24ecaebb063e847",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.92,
    "monthly_cost_basis": "82.0 € / course jaettuna 1.64 kuukaudelle (2026-10-26–2026-12-14, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Alkeisuimakoulu",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Leppävaaran Uimahalli",
    "address": "Veräjäpellonkatu 15, 02650 Espoo",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:05",
    "end_time": "18:35",
    "season": "syksy 2026",
    "start_date": "2026-10-26",
    "end_date": "2026-12-14",
    "sessions_count": null,
    "price_eur": 82.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11578754",
    "source_quote": "Lasten Alkeisuimakoulu | 26.10.2026 18:05 - 14.12.2026 | Kurssimaksu 82,00 €",
    "activity_id": "esp-2026-0153",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 92.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-26",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-10-26",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 82,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-073",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11578754_bf08dcbb4180.html",
      "capture_sha256": "bf08dcbb4180f29c16f163604faff753839a4b0a5e57dd71b0fcbc9d96a2a813",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.92,
    "monthly_cost_basis": "82.0 € / course jaettuna 1.64 kuukaudelle (2026-10-26–2026-12-14, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Alkeisuimakoulu",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Leppävaaran Uimahalli",
    "address": "Veräjäpellonkatu 15, 02650 Espoo",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "16:00",
    "end_time": "16:30",
    "season": "syksy 2026",
    "start_date": "2026-10-28",
    "end_date": "2026-12-16",
    "sessions_count": null,
    "price_eur": 82.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11582709",
    "source_quote": "Lasten Alkeisuimakoulu | 28.10.2026 16:00 - 16.12.2026 | Kurssimaksu 82,00 €",
    "activity_id": "esp-2026-0154",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 92.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-28",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-10-28",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 82,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-074",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11582709_4b5f1b06b344.html",
      "capture_sha256": "4b5f1b06b344c76f53b3eeb1701beaaa5ad0aad3c472676acc08d9ed56c31213",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.92,
    "monthly_cost_basis": "82.0 € / course jaettuna 1.64 kuukaudelle (2026-10-28–2026-12-16, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Alkeisuimakoulu",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Leppävaaran Uimahalli",
    "address": "Veräjäpellonkatu 15, 02650 Espoo",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:05",
    "end_time": "18:35",
    "season": "syksy 2026",
    "start_date": "2026-10-28",
    "end_date": "2026-12-16",
    "sessions_count": null,
    "price_eur": 82.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11582905",
    "source_quote": "Lasten Alkeisuimakoulu | 28.10.2026 18:05 - 16.12.2026 | Kurssimaksu 82,00 €",
    "activity_id": "esp-2026-0155",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 92.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-28",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-10-28",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 82,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-075",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11582905_ee2787be7aa2.html",
      "capture_sha256": "ee2787be7aa2b5592eff76ca3167b0c934dbbf99983b6f071fbd613d72b1da6b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.92,
    "monthly_cost_basis": "82.0 € / course jaettuna 1.64 kuukaudelle (2026-10-28–2026-12-16, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Uimakoulu 1",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Matinkylän uimahalli",
    "address": "Tynnyritie 6, 02230 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:35",
    "end_time": "19:05",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-17",
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11556905",
    "source_quote": "Lasten Uimakoulu 1 | 22.10.2026 18:35 - 17.12.2026 | Kurssimaksu 91,00 €",
    "activity_id": "esp-2026-0156",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 101.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-17",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-076",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11556905_054c41e90112.html",
      "capture_sha256": "054c41e901125a5804c5c4e2a78105bb1d888b7530b30d8aeaf8cab10522b03b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.59,
    "monthly_cost_basis": "91.0 € / course jaettuna 1.87 kuukaudelle (2026-10-22–2026-12-17, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Matinkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Matinkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Uimakoulu 1",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Leppävaaran Uimahalli",
    "address": "Veräjäpellonkatu 15, 02650 Espoo",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-10-26",
    "end_date": "2026-12-14",
    "sessions_count": null,
    "price_eur": 82.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11578639",
    "source_quote": "Lasten Uimakoulu 1 | 26.10.2026 17:00 - 14.12.2026 | Kurssimaksu 82,00 €",
    "activity_id": "esp-2026-0157",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 92.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-26",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-10-26",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 82,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-077",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11578639_3770ead00df4.html",
      "capture_sha256": "3770ead00df400a34ca2a2f56bfdfb05e33772cbf2afcfdbc1da4e098d1fe918",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.92,
    "monthly_cost_basis": "82.0 € / course jaettuna 1.64 kuukaudelle (2026-10-26–2026-12-14, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Uimakoulu 1",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Leppävaaran Uimahalli",
    "address": "Veräjäpellonkatu 15, 02650 Espoo",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:35",
    "end_time": "19:05",
    "season": "syksy 2026",
    "start_date": "2026-10-26",
    "end_date": "2026-12-14",
    "sessions_count": null,
    "price_eur": 82.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11578779",
    "source_quote": "Lasten Uimakoulu 1 | 26.10.2026 18:35 - 14.12.2026 | Kurssimaksu 82,00 €",
    "activity_id": "esp-2026-0158",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 92.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-26",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-10-26",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 82,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-078",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11578779_d5d0fc29ccc1.html",
      "capture_sha256": "d5d0fc29ccc143d8bc1a9e6710c114368e57cfc1e7c4e9c82a84579315b50785",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.92,
    "monthly_cost_basis": "82.0 € / course jaettuna 1.64 kuukaudelle (2026-10-26–2026-12-14, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Uimakoulu 1",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Leppävaaran Uimahalli",
    "address": "Veräjäpellonkatu 15, 02650 Espoo",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-10-28",
    "end_date": "2026-12-16",
    "sessions_count": null,
    "price_eur": 82.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11582832",
    "source_quote": "Lasten Uimakoulu 1 | 28.10.2026 17:00 - 16.12.2026 | Kurssimaksu 82,00 €",
    "activity_id": "esp-2026-0159",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 92.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-28",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-10-28",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 82,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-079",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11582832_aff04b94c063.html",
      "capture_sha256": "aff04b94c06337717ea2215d63a5af5c43ed144468360b11bf9791e08d12f19f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.92,
    "monthly_cost_basis": "82.0 € / course jaettuna 1.64 kuukaudelle (2026-10-28–2026-12-16, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Uimakoulu 1",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4–6-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Leppävaaran Uimahalli",
    "address": "Veräjäpellonkatu 15, 02650 Espoo",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "19:10",
    "end_time": "19:40",
    "season": "syksy 2026",
    "start_date": "2026-10-28",
    "end_date": "2026-12-16",
    "sessions_count": null,
    "price_eur": 82.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11583067",
    "source_quote": "Lasten Uimakoulu 1 | 28.10.2026 19:10 - 16.12.2026 | Kurssimaksu 82,00 €",
    "activity_id": "esp-2026-0160",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 92.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-28",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-10-28",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 82,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-080",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11583067_f8d559fb95e8.html",
      "capture_sha256": "f8d559fb95e8756453c0be90d2befdc1139f79b81999e6776e05dc8ea29f534f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.92,
    "monthly_cost_basis": "82.0 € / course jaettuna 1.64 kuukaudelle (2026-10-28–2026-12-16, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Uimakoulu 2",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5–8-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Matinkylän uimahalli",
    "address": "Tynnyritie 6, 02230 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "19:05",
    "end_time": "19:40",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-17",
    "sessions_count": null,
    "price_eur": 91.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11556987",
    "source_quote": "Lasten Uimakoulu 2 | 22.10.2026 19:05 - 17.12.2026 | Kurssimaksu 91,00 €",
    "activity_id": "esp-2026-0161",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 101.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-22",
    "price_period_end": "2026-12-17",
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 91,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-081",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11556987_d33a113baa63.html",
      "capture_sha256": "d33a113baa6389937a4265647da65988f946057d0f6551426d37dcff7d440916",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 48.59,
    "monthly_cost_basis": "91.0 € / course jaettuna 1.87 kuukaudelle (2026-10-22–2026-12-17, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Matinkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Matinkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Uimakoulu 2",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5–8-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Leppävaaran Uimahalli",
    "address": "Veräjäpellonkatu 15, 02650 Espoo",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:05",
    "season": "syksy 2026",
    "start_date": "2026-10-26",
    "end_date": "2026-12-14",
    "sessions_count": null,
    "price_eur": 82.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11578681",
    "source_quote": "Lasten Uimakoulu 2 | 26.10.2026 17:30 - 14.12.2026 | Kurssimaksu 82,00 €",
    "activity_id": "esp-2026-0162",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 92.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-26",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-10-26",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 82,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-082",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11578681_70444dbfff81.html",
      "capture_sha256": "70444dbfff8146ddac2432322994a0e2c64ff4c217f57f6bb6edffd142d29466",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.92,
    "monthly_cost_basis": "82.0 € / course jaettuna 1.64 kuukaudelle (2026-10-26–2026-12-14, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Uimakoulu 2",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5–8-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Leppävaaran Uimahalli",
    "address": "Veräjäpellonkatu 15, 02650 Espoo",
    "district": null,
    "weekday": "maanantai",
    "start_time": "19:05",
    "end_time": "19:40",
    "season": "syksy 2026",
    "start_date": "2026-10-26",
    "end_date": "2026-12-14",
    "sessions_count": null,
    "price_eur": 82.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11578824",
    "source_quote": "Lasten Uimakoulu 2 | 26.10.2026 19:05 - 14.12.2026 | Kurssimaksu 82,00 €",
    "activity_id": "esp-2026-0163",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 92.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-26",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-10-26",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 82,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-083",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11578824_f255ba7f4496.html",
      "capture_sha256": "f255ba7f44964ae1c5c0e4b32e7147a621861c1c8b7dc03cc0c118342a61889e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.92,
    "monthly_cost_basis": "82.0 € / course jaettuna 1.64 kuukaudelle (2026-10-26–2026-12-14, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Uimakoulu 2",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5–8-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Leppävaaran Uimahalli",
    "address": "Veräjäpellonkatu 15, 02650 Espoo",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:30",
    "end_time": "18:05",
    "season": "syksy 2026",
    "start_date": "2026-10-28",
    "end_date": "2026-12-16",
    "sessions_count": null,
    "price_eur": 82.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11582883",
    "source_quote": "Lasten Uimakoulu 2 | 28.10.2026 17:30 - 16.12.2026 | Kurssimaksu 82,00 €",
    "activity_id": "esp-2026-0164",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 92.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-28",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-10-28",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 82,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-084",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11582883_f27ae438e895.html",
      "capture_sha256": "f27ae438e895fa1eb27a45744eae92ea030210f9db563e122a077c67d66ac08f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.92,
    "monthly_cost_basis": "82.0 € / course jaettuna 1.64 kuukaudelle (2026-10-28–2026-12-16, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lasten Uimakoulu 2",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5–8-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Leppävaaran Uimahalli",
    "address": "Veräjäpellonkatu 15, 02650 Espoo",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:35",
    "end_time": "19:10",
    "season": "syksy 2026",
    "start_date": "2026-10-28",
    "end_date": "2026-12-16",
    "sessions_count": null,
    "price_eur": 82.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11582974",
    "source_quote": "Lasten Uimakoulu 2 | 28.10.2026 18:35 - 16.12.2026 | Kurssimaksu 82,00 €",
    "activity_id": "esp-2026-0165",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 92.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-28",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-10-28",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 82,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-085",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11582974_541d521da4f5.html",
      "capture_sha256": "541d521da4f5f9c96f72edad7a5a09ef2bdcee7d6197be130465cfaf34f34621",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.92,
    "monthly_cost_basis": "82.0 € / course jaettuna 1.64 kuukaudelle (2026-10-28–2026-12-16, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lapsi-vanhempi uimakoulu",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Leppävaaran Uimahalli",
    "address": "Veräjäpellonkatu 15, 02650 Espoo",
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:00",
    "end_time": "16:30",
    "season": "syksy 2026",
    "start_date": "2026-10-26",
    "end_date": "2026-12-14",
    "sessions_count": null,
    "price_eur": 82.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11578508",
    "source_quote": "Lapsi-vanhempi uimakoulu | 26.10.2026 16:00 - 14.12.2026 | Kurssimaksu 82,00 €",
    "activity_id": "esp-2026-0166",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 92.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-26",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-10-26",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 82,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-086",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11578508_e328d3dca445.html",
      "capture_sha256": "e328d3dca44592c767d6c2443c131f1e6f6854188e97b8a2358cafffc6ae3de9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.92,
    "monthly_cost_basis": "82.0 € / course jaettuna 1.64 kuukaudelle (2026-10-26–2026-12-14, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Lapsi-vanhempi uimakoulu",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Leppävaaran Uimahalli",
    "address": "Veräjäpellonkatu 15, 02650 Espoo",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "16:30",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-10-28",
    "end_date": "2026-12-16",
    "sessions_count": null,
    "price_eur": 82.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/11582797",
    "source_quote": "Lapsi-vanhempi uimakoulu | 28.10.2026 16:30 - 16.12.2026 | Kurssimaksu 82,00 €",
    "activity_id": "esp-2026-0167",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 92.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-28",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-10-28",
    "season_end_date": "2026-12-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 82,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-087",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_11582797_c03feb650957.html",
      "capture_sha256": "c03feb650957d73110474f104de5ed5e86c0fb3c97202d0ab05db1f157543595",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 49.92,
    "monthly_cost_basis": "82.0 € / course jaettuna 1.64 kuukaudelle (2026-10-28–2026-12-16, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Sovellettu perheuinti 3-12v.",
    "min_age": 3,
    "max_age": 12,
    "eligibility_text": "3-12v.",
    "parent_child": "unknown",
    "venue_name": "Matinkylän uimahalli",
    "address": "Tynnyritie 6, 02230 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/10894166",
    "source_quote": "Sovellettu perheuinti 3-12v. | 3.9.2026 18:00 - 10.12.2026 | Kurssimaksu 50,00 €",
    "activity_id": "esp-2026-0168",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 60.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-088",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_10894166_3f74471cf7e0.html",
      "capture_sha256": "3f74471cf7e05d52da267163d1e42e73d60c259c454927a0831f55e457b88b95",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / course jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Matinkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Matinkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Cetus Espoo ry",
    "group_name": "Sovellettu perheuinti 3-12v.",
    "min_age": 3,
    "max_age": 12,
    "eligibility_text": "3-12v.",
    "parent_child": "unknown",
    "venue_name": "Matinkylän uimahalli",
    "address": "Tynnyritie 6, 02230 Espoo, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "19:00",
    "end_time": "19:45",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 50.0,
    "price_basis": "Kurssimaksu",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://cetus.myclub.fi/flow/courses/10894184",
    "source_quote": "Sovellettu perheuinti 3-12v. | 3.9.2026 19:00 - 10.12.2026 | Kurssimaksu 50,00 €",
    "activity_id": "esp-2026-0169",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 60.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 50,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "required_product",
        "amount_eur": 10,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Lapsen Jäsenyys (alle 18v) 2026"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_05.json",
      "staging_id": "batch_espoo_2026-09-23_05-089",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-23_05/myclub_cetus_10894184_9563df01987c.html",
      "capture_sha256": "9563df01987c7db5dd6ffae1ea12cc70e30d843db7c80f2a662315b7fa91e111",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 15.37,
    "monthly_cost_basis": "50.0 € / course jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Matinkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Matinkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Voimistelu- ja Liikuntayhdistys ESVOLI ry",
    "group_name": "Rytminen voimistelu 4-6 v. Karamalmi",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v.",
    "parent_child": "unknown",
    "venue_name": "Karamalmens skola",
    "address": "Karaniityntie 4, 02610 Espoo",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:10",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": "2026-08-24",
    "end_date": "2026-10-05",
    "sessions_count": null,
    "price_eur": 80.0,
    "price_basis": "Harjoitusmaksu 45 min",
    "membership_fee_eur": 50.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://esvoli.myclub.fi/flow/courses/10705800",
    "source_quote": "Rytminen voimistelu 4-6 v. Karamalmi | 24.8.2026 17:10 - 30.11.2026 | Harjoitusmaksu 45 min 80,00 €",
    "activity_id": "esp-2026-0170",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 130.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-24",
    "season_end_date": "2026-11-30",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 80,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-001",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/esvoli_10705800_c0bdaefcb656.html",
      "capture_sha256": "c0bdaefcb656d53d74121e7a9d0e32bd9c8f60c6f13b125b348f555c6dc2352e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Kilo",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kilo' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Voimistelu- ja Liikuntayhdistys ESVOLI ry",
    "group_name": "Rytminen voimistelu 4-6v. Ruusutorppa tiistai",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v.",
    "parent_child": "unknown",
    "venue_name": "Ruusutorpan koulu",
    "address": "Leppävaarankatu 24, 02600 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:50",
    "end_time": "18:35",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2026-12-01",
    "sessions_count": null,
    "price_eur": 80.0,
    "price_basis": "Harjoitusmaksu 45 min",
    "membership_fee_eur": 50.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://esvoli.myclub.fi/flow/courses/10709164",
    "source_quote": "Rytminen voimistelu 4-6v. Ruusutorppa tiistai | 25.8.2026 17:50 - 1.12.2026 | Harjoitusmaksu 45 min 80,00 €",
    "activity_id": "esp-2026-0171",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 130.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-25",
    "season_end_date": "2026-12-01",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 80,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-002",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/esvoli_10709164_e67f896e3bfc.html",
      "capture_sha256": "e67f896e3bfce96a8dca1e4c183516cb09db062d4c9f0d8428318ac24d2dd754",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Leppävaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Leppävaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Voimistelu- ja Liikuntayhdistys ESVOLI ry",
    "group_name": "Rytminen voimistelu 4-6v. Westend",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v.",
    "parent_child": "unknown",
    "venue_name": "Westendinpuiston koulu",
    "address": "Hiiralantie 6, 02160 Espoo, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2026-12-01",
    "sessions_count": null,
    "price_eur": 85.0,
    "price_basis": "Harjoitusmaksu 45 min",
    "membership_fee_eur": 50.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://esvoli.myclub.fi/flow/courses/10709078",
    "source_quote": "Rytminen voimistelu 4-6v. Westend | 25.8.2026 18:00 - 1.12.2026 | Harjoitusmaksu 45 min 85,00 €",
    "activity_id": "esp-2026-0172",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 135.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-25",
    "season_end_date": "2026-12-01",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 85,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-003",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/esvoli_10709078_a98e01f5ab68.html",
      "capture_sha256": "a98e01f5ab68bdf205750c50a6efde052462b99e53dde087d8ba371d507fb4da",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Westend",
    "district_basis": "geokoodattu osoite -> neighborhood 'Westend' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Voimistelu- ja Liikuntayhdistys ESVOLI ry",
    "group_name": "Rytminen voimistelu 4-6 v. Hansakallio",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v.",
    "parent_child": "unknown",
    "venue_name": "Hansakallion koulu",
    "address": "Hansakallio 4, 02780 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:05",
    "end_time": "18:50",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2026-12-02",
    "sessions_count": null,
    "price_eur": 80.0,
    "price_basis": "Harjoitusmaksu 45 min",
    "membership_fee_eur": 50.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://esvoli.myclub.fi/flow/courses/10705783",
    "source_quote": "Rytminen voimistelu 4-6 v. Hansakallio | 26.8.2026 18:05 - 2.12.2026 | Harjoitusmaksu 45 min 80,00 €",
    "activity_id": "esp-2026-0173",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 130.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-26",
    "season_end_date": "2026-12-02",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 80,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-004",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/esvoli_10705783_e3faba455531.html",
      "capture_sha256": "e3faba455531c3eda9dcafc466389f36df7060c76c85b57951af8b5b6b8a5a3c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Kauklahti",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kauklahti' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Voimistelu- ja Liikuntayhdistys ESVOLI ry",
    "group_name": "Rytminen voimistelu 5-7v. Jalavapuisto",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7v.",
    "parent_child": "unknown",
    "venue_name": "Jalavapuiston koulu",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": "18:05",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 85.0,
    "price_basis": "Harjoitusmaksu 45 min",
    "membership_fee_eur": 50.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://esvoli.myclub.fi/flow/courses/10705926",
    "source_quote": "Rytminen voimistelu 5-7v. Jalavapuisto | 26.8.2026 18:05 - 2.12.2026 | Harjoitusmaksu 45 min 85,00 €",
    "activity_id": "esp-2026-0174",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 135.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-26",
    "season_end_date": "2026-12-02",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 85,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Aikataulussa useita kellonaikoja/nimivariaatioita samalle ryhmälle (osa kerroista pidennetyllä kestolla tai peruutusmerkinnällä); viikonpäivää ja kertamäärää ei voitu yksiselitteisesti vahvistaa yhdeksi arvoksi, koko aikataulu evidence.extracted_values.schedule_sessions/schedule_other_events -kentissä (CLAUDE.md: useita aikoja -> yksi rivi).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-005",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/esvoli_10705926_bbade96a185f.html",
      "capture_sha256": "bbade96a185f23ea8fbe795662cc00eadc776799d4975de7c2f63a420232fff4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon Voimistelu- ja Liikuntayhdistys ESVOLI ry",
    "group_name": "Rytminen voimistelu 4-7v. Juvanpuisto",
    "min_age": 4,
    "max_age": 7,
    "eligibility_text": "4-7v.",
    "parent_child": "unknown",
    "venue_name": "Juvanpuiston koulu",
    "address": "Juvanpuro 2, 02920 Espoo, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:10",
    "end_time": "18:55",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2026-12-02",
    "sessions_count": null,
    "price_eur": 90.0,
    "price_basis": "Harjoitusmaksu 45 min",
    "membership_fee_eur": 50.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://esvoli.myclub.fi/flow/courses/10709124",
    "source_quote": "Rytminen voimistelu 4-7v. Juvanpuisto | 26.8.2026 18:10 - 2.12.2026 | Harjoitusmaksu 45 min 90,00 €",
    "activity_id": "esp-2026-0175",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 140.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-26",
    "season_end_date": "2026-12-02",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 90,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu 2026-2027"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-006",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/esvoli_10709124_2e2dc0675518.html",
      "capture_sha256": "2e2dc067551801c00b1c39b6c1489336a2c486be19dd93659e7f3766b2ecfe5a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Niipperi",
    "district_basis": "geokoodattu osoite -> neighborhood 'Niipperi' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura BounCe Espoo ry",
    "group_name": "Butterfly cheerleading alkeet (2020-2022) syksy 2026",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 vuotiaiden",
    "parent_child": "unknown",
    "venue_name": "Bouncen halli",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 185.0,
    "price_basis": "Harrasteryhmä, cheerleading 45min",
    "membership_fee_eur": 35.0,
    "other_required_fees": "SCL-harrastelisenssi (Suomen Cheerleadingliitto) pakollinen, hinta 15-50€ iän/vakuutuksen mukaan - ei tarkkaa summaa tälle ryhmälle.",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://bounce-espoo.myclub.fi/flow/courses/10687021",
    "source_quote": "Butterfly cheerleading alkeet (2020-2022) syksy 2026 | 15.8.2026 11:00 - 28.11.2026 | Harrasteryhmä, cheerleading 45min 185,00 €",
    "activity_id": "esp-2026-0176",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 220.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-15",
    "price_period_end": "2026-11-28",
    "season_start_date": "2026-08-15",
    "season_end_date": "2026-11-28",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 185,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu"
      },
      {
        "type": "license",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "15-50 €, hinta riippuu iästä ja vakuutuksesta",
        "note": "myClub-kuvausteksti: 'SCL:ltä hankittava harrastelisenssi 15-50€ (hinta riippuu iästä ja vakuutuksesta)'"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-008",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/bounce_10687021_9ccd84d5b46f.html",
      "capture_sha256": "9ccd84d5b46fa865ecea3e4df4404e813fa9ed2bd75ff2abe3e1aa5adc547690",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 53.12,
    "monthly_cost_basis": "185.0 € / term jaettuna 3.48 kuukaudelle (2026-08-15–2026-11-28, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura BounCe Espoo ry",
    "group_name": "Bluebell cheerleading alkeet (2020-2022) Syksy 2026",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 vuotiaiden",
    "parent_child": "unknown",
    "venue_name": "Bouncen halli",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "12:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 185.0,
    "price_basis": "Harrasteryhmä, cheerleading 45min",
    "membership_fee_eur": 35.0,
    "other_required_fees": "SCL-harrastelisenssi (Suomen Cheerleadingliitto) pakollinen, hinta 15-50€ iän/vakuutuksen mukaan - ei tarkkaa summaa tälle ryhmälle.",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://bounce-espoo.myclub.fi/flow/courses/10685811",
    "source_quote": "Bluebell cheerleading alkeet (2020-2022) Syksy 2026 | 15.8.2026 12:00 - 28.11.2026 | Harrasteryhmä, cheerleading 45min 185,00 €",
    "activity_id": "esp-2026-0177",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 220.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-15",
    "price_period_end": "2026-11-28",
    "season_start_date": "2026-08-15",
    "season_end_date": "2026-11-28",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 185,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu"
      },
      {
        "type": "license",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "15-50 €, hinta riippuu iästä ja vakuutuksesta",
        "note": "myClub-kuvausteksti: 'SCL:ltä hankittava harrastelisenssi 15-50€ (hinta riippuu iästä ja vakuutuksesta)'"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-009",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/bounce_10685811_d8aae1987a15.html",
      "capture_sha256": "d8aae1987a15c08e343be6740028bb9319d84c1944847e69f224c796516ff893",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 53.12,
    "monthly_cost_basis": "185.0 € / term jaettuna 3.48 kuukaudelle (2026-08-15–2026-11-28, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura BounCe Espoo ry",
    "group_name": "Minininjat 4-6v. (maanantai klo 17-17.45, syksy 2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v.",
    "parent_child": "unknown",
    "venue_name": "Bouncen halli",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 185.0,
    "price_basis": "Minininjat",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://bounce-espoo.myclub.fi/flow/courses/10685448",
    "source_quote": "Minininjat 4-6v. (maanantai klo 17-17.45, syksy 2026) | 17.8.2026 17:00 - 30.11.2026 | Minininjat 185,00 €",
    "activity_id": "esp-2026-0178",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 220.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-11-30",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-11-30",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 185,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-010",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/bounce_10685448_032770cc9410.html",
      "capture_sha256": "032770cc9410812d787ec5f9bcb6e6a6772a91f74404bc279b0b04932e2eea5d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 53.12,
    "monthly_cost_basis": "185.0 € / term jaettuna 3.48 kuukaudelle (2026-08-17–2026-11-30, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura BounCe Espoo ry",
    "group_name": "Minininjat 4-6v. (maanantai klo 18-18.45, syksy 2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v.",
    "parent_child": "unknown",
    "venue_name": "Bouncen halli",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 185.0,
    "price_basis": "Minininjat",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://bounce-espoo.myclub.fi/flow/courses/10685487",
    "source_quote": "Minininjat 4-6v. (maanantai klo 18-18.45, syksy 2026) | 17.8.2026 18:00 - 30.11.2026 | Minininjat 185,00 €",
    "activity_id": "esp-2026-0179",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 220.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-17",
    "price_period_end": "2026-11-30",
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-11-30",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 185,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-011",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/bounce_10685487_eea1857bfb2c.html",
      "capture_sha256": "eea1857bfb2c2e31ef22108ec252689a500db6fceffecec74a3502df2b107018",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 53.12,
    "monthly_cost_basis": "185.0 € / term jaettuna 3.48 kuukaudelle (2026-08-17–2026-11-30, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura BounCe Espoo ry",
    "group_name": "Minininjat 4-6v. (tiistai klo 17-17.45, syksy 2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v.",
    "parent_child": "unknown",
    "venue_name": "Bouncen halli",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 185.0,
    "price_basis": "Minininjat",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://bounce-espoo.myclub.fi/flow/courses/10685489",
    "source_quote": "Minininjat 4-6v. (tiistai klo 17-17.45, syksy 2026) | 18.8.2026 17:00 - 1.12.2026 | Minininjat 185,00 €",
    "activity_id": "esp-2026-0180",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 220.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-18",
    "price_period_end": "2026-12-01",
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-01",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 185,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-012",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/bounce_10685489_90d59ebadef2.html",
      "capture_sha256": "90d59ebadef27c44f0ce5ead8c323e247c52c4814dce5b5a40c5546454420d09",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 53.12,
    "monthly_cost_basis": "185.0 € / term jaettuna 3.48 kuukaudelle (2026-08-18–2026-12-01, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura BounCe Espoo ry",
    "group_name": "Trampoliinin alkeet 6-8v. (Tiistai, syksy 2026)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8v.",
    "parent_child": "unknown",
    "venue_name": "Bouncen halli",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 250.0,
    "price_basis": "Harrasteryhmä, trampoliini 60 min",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://bounce-espoo.myclub.fi/flow/courses/10685585",
    "source_quote": "Trampoliinin alkeet 6-8v. (Tiistai, syksy 2026) | 18.8.2026 18:00 - 1.12.2026 | Harrasteryhmä, trampoliini 60 min 250,00 €",
    "activity_id": "esp-2026-0181",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 285.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-18",
    "price_period_end": "2026-12-01",
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-01",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 250,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille (rajaus 21.9.2026): ryhmä on 6-8-vuotiaille, alaraja 6 v osuu 0-6-vuotiaisiin.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-013",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/bounce_10685585_5a303933efe7.html",
      "capture_sha256": "5a303933efe7f071a702a047e1c94f65158afe38d40a7cc387348c7d15152221",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 71.79,
    "monthly_cost_basis": "250.0 € / term jaettuna 3.48 kuukaudelle (2026-08-18–2026-12-01, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura BounCe Espoo ry",
    "group_name": "Trampoliinin alkeet 6-8v. (Keskiviikko, syksy 2026)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8v.",
    "parent_child": "unknown",
    "venue_name": "Bouncen halli",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 250.0,
    "price_basis": "Harrasteryhmä, trampoliini 60 min",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://bounce-espoo.myclub.fi/flow/courses/10685735",
    "source_quote": "Trampoliinin alkeet 6-8v. (Keskiviikko, syksy 2026) | 19.8.2026 17:00 - 2.12.2026 | Harrasteryhmä, trampoliini 60 min 250,00 €",
    "activity_id": "esp-2026-0182",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 285.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-02",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-02",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 250,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "sopii vain 6-vuotiaille (rajaus 21.9.2026): ryhmä on 6-8-vuotiaille, alaraja 6 v osuu 0-6-vuotiaisiin.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-014",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/bounce_10685735_225de0f34e08.html",
      "capture_sha256": "225de0f34e0885e3c4fe645552684251efa3cd256f4ff7d094392b6aa1081d42",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 71.79,
    "monthly_cost_basis": "250.0 € / term jaettuna 3.48 kuukaudelle (2026-08-19–2026-12-02, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura BounCe Espoo ry",
    "group_name": "Miniliikkari Tiistilä (keskiviikko, syksy 2026)",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2-4-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Tiistilän koulu",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:10",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 165.0,
    "price_basis": "Miniliikkari (koko kausi)",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://bounce-espoo.myclub.fi/flow/courses/10685860",
    "source_quote": "Miniliikkari Tiistilä (keskiviikko, syksy 2026) | 19.8.2026 17:10 - 2.12.2026 | Miniliikkari (koko kausi) 165,00 €",
    "activity_id": "esp-2026-0183",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-02",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-02",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 165,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-015",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/bounce_10685860_7508e74b65a0.html",
      "capture_sha256": "7508e74b65a0cf23b6d8024c127d89a735d106b2653765a8430c3941bb579deb",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 47.38,
    "monthly_cost_basis": "165.0 € / term jaettuna 3.48 kuukaudelle (2026-08-19–2026-12-02, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura BounCe Espoo ry",
    "group_name": "Temppukerho 3-6v Tiistilä (keskiviikko, syksy 2026)",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3-6v",
    "parent_child": "unknown",
    "venue_name": "Tiistilän koulu",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 165.0,
    "price_basis": "Temppukerho",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://bounce-espoo.myclub.fi/flow/courses/10685873",
    "source_quote": "Temppukerho 3-6v Tiistilä (keskiviikko, syksy 2026) | 19.8.2026 18:00 - 2.12.2026 | Temppukerho 165,00 €",
    "activity_id": "esp-2026-0184",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-19",
    "price_period_end": "2026-12-02",
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-02",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 165,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-016",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/bounce_10685873_803e8b500580.html",
      "capture_sha256": "803e8b5005808c5067af5ddc16cbc7b1e31a32577f160c4327dd916092a46a92",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 47.38,
    "monthly_cost_basis": "165.0 € / term jaettuna 3.48 kuukaudelle (2026-08-19–2026-12-02, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura BounCe Espoo ry",
    "group_name": "Temppukerho 3-6v Jousenkaari (keskiviikko, syksy 2026)",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3-6v",
    "parent_child": "unknown",
    "venue_name": "Jousenkaaren koulu",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:10",
    "end_time": "18:55",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 165.0,
    "price_basis": "Temppukerho",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://bounce-espoo.myclub.fi/flow/courses/10685877",
    "source_quote": "Temppukerho 3-6v Jousenkaari (keskiviikko, syksy 2026) | 2.9.2026 18:10 - 2.12.2026 | Temppukerho 165,00 €",
    "activity_id": "esp-2026-0185",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-02",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-02",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 165,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-017",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/bounce_10685877_47d38380a2ab.html",
      "capture_sha256": "47d38380a2ab9f5c0d386d933f52d95d8ea6df5758057517dc213e461a6d48a1",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 54.59,
    "monthly_cost_basis": "165.0 € / term jaettuna 3.02 kuukaudelle (2026-09-02–2026-12-02, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimisteluseura BounCe Espoo ry",
    "group_name": "Miniliikkari 2 kurssi (Lauantaina, 3.10. - 28.11.2026)",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2-4-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Bouncen halli",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-10-03",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 75.0,
    "price_basis": "Miniliikkari kurssi",
    "membership_fee_eur": 35.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://bounce-espoo.myclub.fi/flow/courses/11562064",
    "source_quote": "Miniliikkari 2 kurssi (Lauantaina, 3.10. - 28.11.2026) | 3.10.2026 10:00 - 28.11.2026 | Miniliikkari kurssi 75,00 €",
    "activity_id": "esp-2026-0186",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 110.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-03",
    "season_end_date": "2026-11-28",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 75,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': Jäsenmaksu"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-018",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/bounce_11562064_46914d97bf56.html",
      "capture_sha256": "46914d97bf56a2806d01e06fd16a1ecf7fe6dc54241196d6a802d5fa0a0c755e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Esbo Idrottsförening rf (Esbo IF)",
    "group_name": "Temppukoulu 4-7 v.",
    "min_age": 4,
    "max_age": 7,
    "eligibility_text": "4-7 vuotiaille",
    "parent_child": "no",
    "venue_name": "Kirkkojärven koulun liikuntasali",
    "address": "Kotikyläntie 6 A, 02770 Espoo",
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026-kevät 2027",
    "start_date": "2026-09-29",
    "end_date": "2027-04-27",
    "sessions_count": null,
    "price_eur": 230.0,
    "price_basis": "Temppukoulu (LinkedEvents-tarjous)",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://esboif.fi/fi/voimistelu/temppukoulu/",
    "source_quote": "Temppukoulu on vauhdikas ja leikkisä parkourin ja telinevoimistelun innoittama ryhmä, joka on tarkoitettu 4-7 vuotiaille. ... | 230 EUR + jäsenmaksu 20 EUR",
    "activity_id": "esp-2026-0187",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 250.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://api.espoo.fi/events/v1/event/espooevents:agqd24xkt4/",
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-29",
    "season_end_date": "2027-04-27",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 230,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "Espoon tapahtumarajapinta: '230 EUR + jäsenmaksu 20 EUR'"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "sessions_count"
    ],
    "verification_notes": "Kuvaus (esboif.fi ja Espoon tapahtumarajapinta) ilmoittaa yhden 4-7-vuotiaiden ryhmän, mutta PikkuHarrastus-hakemisto listaa saman toiminnan kahtena ikäjaksona (4-5v ja 6-7v); aikataulun osatapahtuma 29.9.2026 kestää 17:10-19:00 Suomen aikaa (2h), mikä viittaa kahteen peräkkäiseen ikäryhmäkohtaiseen vuoroon samassa tilassa. Koska lähde ei erottele kellonaikoja ikäryhmittäin, yksi rivi koko 4-7v-kokonaisuudelle, weekday/start_time/end_time jätetty null:ksi (CLAUDE.md: useita aikoja/paikkoja -> yksi rivi, epäselvät kentät null). (a3) 24.9.2026: api.espoo.fi hyväksytty OFFICIAL_SYSTEM_DOMAINS-listalla.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_06.json",
      "staging_id": "batch_espoo_2026-09-23_06-021",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_06/esboif_page_a42921fefe25.html",
      "capture_sha256": "a42921fefe2522c200f939516caaabee3b4051e59c3c5b04db87c988fda1be56",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Espoon Keskus",
    "district_basis": "geokoodattu osoite -> neighborhood 'Espoon Keskus' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "luistelu",
    "provider": "Espoon Taitoluisteluklubi (ETK)",
    "group_name": "Tenavat (maanantai) Syksy 2026",
    "min_age": 0,
    "max_age": 6,
    "eligibility_text": "alle kouluikäiset lapset",
    "parent_child": "no",
    "venue_name": "Ilmatar Areena, kenttä 3",
    "address": "Matinkartanontie 9-11, 02230 Espoo",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:10",
    "end_time": "18:50",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-14",
    "sessions_count": null,
    "price_eur": 110.0,
    "price_basis": "Kausimaksu Tenavat syksy 2026 (myClub Hintatiedot).",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://etk.myclub.fi/flow/courses/10712469",
    "source_quote": "Tenaviin ovat tervetulleita niin aloittelijat kuin aikaisemmin luistelleet alle kouluikäiset lapset. Aika: ma 31.8.-14.12.2026 klo 18.10-18.50. Paikka: Ilmatar Areena, kenttä 3, Matinkylä. Hinta: Luistelukoulun kausimaksu (syyskausi): 110 €. ETK:n kauden 2026-2027 jäsenmaksu: 40 €.",
    "activity_id": "esp-2026-0188",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 150.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://etk.myclub.fi/flow/courses/10712469",
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-14",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 110,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "ETK jäsenmaksu 2026-2027 (myClub Vaadittavat tuotteet), voimassa 1.4.-31.3."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_07.json",
      "staging_id": "batch_espoo_2026-09-23_07-001",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 34.92,
    "monthly_cost_basis": "110.0 € / term jaettuna 3.48 kuukaudelle (2026-08-31–2026-12-14, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Matinkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Matinkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "luistelu",
    "provider": "Espoon Taitoluisteluklubi (ETK)",
    "group_name": "Safiirit (4-6 vuotiaat) syksy 2026",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4–6 -vuotiaille lapsille",
    "parent_child": "no",
    "venue_name": "Matinkylän harjoitusjäähalli, kenttä 4",
    "address": "Matinkartanontie 3, 02230 Espoo",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:40",
    "end_time": "11:20",
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": "2026-12-19",
    "sessions_count": null,
    "price_eur": 0.0,
    "price_basis": "Tämä luistelukurssi on maksuton (OKM-rahoitteinen alkeisryhmä).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://etk.myclub.fi/flow/courses/10713264",
    "source_quote": "Safiirit (4-6 vuotiaat) on Espoon Taitoluisteluklubin (ETK) monikulttuurinen alkeisryhmä 4–6 -vuotiaille lapsille. Harjoitukset pidetään Matinkylän harjoitusjäähallissa lauantaisin klo 10.40-11.20. Syyskausi: 5.9-19.12.2026. Tämä luistelukurssi on maksuton.",
    "activity_id": "esp-2026-0189",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 0.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://etk.myclub.fi/flow/courses/10713264",
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-19",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_07.json",
      "staging_id": "batch_espoo_2026-09-23_07-002",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 0.0,
    "monthly_cost_basis": "0.0 € / term jaettuna 3.48 kuukaudelle (2026-09-05–2026-12-19, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Matinkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Matinkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Tapiolan Honka ry",
    "group_name": "Liikkari Westend 6-8v (2018-2020 syntyneet) - kausi 2026-2027",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8v (2018-2020 syntyneet)",
    "parent_child": "no",
    "venue_name": "Westendinpuiston koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "18:30",
    "end_time": "19:15",
    "season": "kausi 2026-2027",
    "start_date": "2026-08-27",
    "end_date": "2027-05-06",
    "sessions_count": null,
    "price_eur": 180.0,
    "price_basis": "180 euroa syksy (27.8.-10.12.), 180 euroa kevät (7.1.-6.5.) - Hintatiedot-rivillä näkyy toistaiseksi vain syksyn 180,00 €, koska kevään lasku ei ole vielä auennut.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kahden viikon maksuton kokeilujakso.",
    "enrollment_status": "unknown",
    "source_url": "https://tapiolanhonka.myclub.fi/flow/courses/11261956",
    "source_quote": "Liikuntaleikkikoulu eli liikkari on 3-8 -vuotiaille lapsille tarkoitettu liikuntaryhmä... 6-8v (2018-2020 syntyneet): Torstaisin klo 18:30-19:15, Westendinpuiston koulu. Liikkariin ilmoittaudutaan mukaan koko kaudeksi (27.8.2026-6.5.2027)... Hintatiedot 180,00 €.",
    "activity_id": "esp-2026-0190",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 180.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://tapiolanhonka.myclub.fi/flow/courses/11261956",
    "billing_period": "term",
    "price_period_start": "2026-08-27",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-27",
    "season_end_date": "2027-05-06",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 180,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "kevätkausi (7.1.-6.5.), jos jatkaa koko kauden",
        "amount_eur": 180.0,
        "applies_if": "ilmoittautuminen jatkuu kevääseen (koko kausi 27.8.2026-6.5.2027 laskutetaan kahdessa 180 €:n erässä)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sopii vain 6-vuotiaille (ikäväli 6-8v, rajaus 0-6 v). Espoo-QA 23.9.2026: korjattu billing_period full_season -> term ja price_period/known_min_total_eur, koska myClub-kurssisivun oma kuvausteksti (sama kuin batch_03:n 3-4v/5-6v-riveillä) sanoo eksplisiittisesti \"180 euroa syksy (27.8.-10.12.), 180 euroa kevät (7.1.-6.5.)\" - alkuperäinen rivi luki vain yksittäisen Hintatiedot-rivin (180 € syksy, koska kevään lasku ei ole vielä auennut) ja tulkitsi sen virheellisesti kertamaksuksi koko kaudesta. Ei todellista ristiriitaa seuran oman sivun (batch_03) kanssa - molemmat lähteet samaa mieltä 180 €/lukukausi, 360 €/vuosi. Tarkistettu tuoreena Claude Browserilla 23.9.2026.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_07.json",
      "staging_id": "batch_espoo_2026-09-23_07-003",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 51.69,
    "monthly_cost_basis": "180.0 € / term jaettuna 3.48 kuukaudelle (2026-08-27–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "jalkapallo",
    "provider": "Esbo Bollklubb (EBK)",
    "group_name": "Perhefutis talvi 2026",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "vuosina 2022-2024 -syntyneille lapsille ja heidän vanhemmilleen",
    "parent_child": "yes",
    "venue_name": "Tuomarilan koulun liikuntasali",
    "address": "Puistotie 13, 02760 Espoo",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "15:00",
    "end_time": "16:00",
    "season": "talvi 2026",
    "start_date": "2026-11-01",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 30.0,
    "price_basis": "Hinta: 30 € (myClub Hintatiedot).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://ebk.myclub.fi/flow/courses/11566089",
    "source_quote": "Perhefutis on tarkoitettu vuosina 2022-2024 -syntyneille lapsille ja heidän vanhemmilleen. Aika: sunnuntaisin klo 15-16 ajalla 1.11.2026-13.12.2026. Paikka: Tuomarilan koulun liikuntasali, Puistotie 13. Hinta: 30 €.",
    "activity_id": "esp-2026-0191",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 30.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://ebk.myclub.fi/flow/courses/11566089",
    "billing_period": "course",
    "price_period_start": "2026-11-01",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-11-01",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Perhefutis on lapsen ja vanhemman yhteinen harrastus; sivu ei kerro erikseen kattaako 30 € hinta aikuisen (price_covers.verified=false).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_07.json",
      "staging_id": "batch_espoo_2026-09-23_07-006",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 21.24,
    "monthly_cost_basis": "30.0 € / course jaettuna 1.41 kuukaudelle (2026-11-01–2026-12-13, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Espoon Keskus",
    "district_basis": "geokoodattu osoite -> neighborhood 'Espoon Keskus' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "jalkapallo",
    "provider": "Esbo Bollklubb (EBK)",
    "group_name": "Jalkapallokoulu talvi 2026-2027",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "vuonna 2021-2023 -syntyneille lapsille",
    "parent_child": "no",
    "venue_name": "Tuomarilan koulun liikuntasali",
    "address": "Puistotie 13, 02760 Espoo",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "16:00",
    "end_time": "17:00",
    "season": "talvi 2026-2027",
    "start_date": "2026-11-01",
    "end_date": "2027-04-04",
    "sessions_count": null,
    "price_eur": 100.0,
    "price_basis": "Hinta: 100 €, sisältää EBK-paidan ja vakuutuksen (myClub Hintatiedot).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Mukaan: liikuntavarusteet, juomapullo ja jalkapallo (koko 3).",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://ebk.myclub.fi/flow/courses/11566130",
    "source_quote": "Jalkapallokoulu on tarkoitettu vuonna 2021-2023 -syntyneille lapsille. Aika: sunnuntaisin klo 16-17 ajalla 1.11.2026-4.4.2027. Paikka: Tuomarilan koulun liikuntasali, Puistotie 13. Hinta: 100 €, sisältää EBK-paidan ja vakuutuksen.",
    "activity_id": "esp-2026-0192",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 100.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://ebk.myclub.fi/flow/courses/11566130",
    "billing_period": "course",
    "price_period_start": "2026-11-01",
    "price_period_end": "2027-04-04",
    "season_start_date": "2026-11-01",
    "season_end_date": "2027-04-04",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_07.json",
      "staging_id": "batch_espoo_2026-09-23_07-007",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 19.64,
    "monthly_cost_basis": "100.0 € / course jaettuna 5.09 kuukaudelle (2026-11-01–2027-04-04, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Espoon Keskus",
    "district_basis": "geokoodattu osoite -> neighborhood 'Espoon Keskus' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tennis",
    "provider": "Grani Tennis ry",
    "group_name": "Perhetennis 1. kurssi (3-6-vuotiaille)",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3–6-vuotiaille lapsille, osallistutaan yhdessä oman aikuisen kanssa",
    "parent_child": "yes",
    "venue_name": "Targa arena",
    "address": "Ullanmäentie 21, 02750 Espoo",
    "district": null,
    "weekday": "lauantai",
    "start_time": "15:00",
    "end_time": "16:00",
    "season": "kausi 2026-2027",
    "start_date": "2026-09-12",
    "end_date": "2026-10-10",
    "sessions_count": null,
    "price_eur": 115.0,
    "price_basis": "Kauden 2026-2027 kurssit viitenä eri lauantaina klo 15-16, hinta 115 €.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://granitennis.fi/fi/juniorit/perhetennis/",
    "source_quote": "Perhetenniskurssit ovat 3-6-vuotiaille lapsille ja kurssille osallistutaan aina yhdessä jonkun oman aikuisen kanssa... Kauden 2026-2027 kurssit viitenä eri lauantaina klo 15-16, hinta 115 €: Perhetennis 1. kurssi 3–6-vuotiaille 12.9.–10.10.2026...",
    "activity_id": "esp-2026-0193",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 115.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://granitennis.fi/fi/juniorit/perhetennis/",
    "billing_period": "course",
    "price_period_start": "2026-09-12",
    "price_period_end": "2026-10-10",
    "season_start_date": "2026-09-12",
    "season_end_date": "2026-10-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ensimmäinen neljästä kauden 2026-2027 kurssista (12.9.-10.10.2026); muut kurssit 24.10.-21.11.2026, 9.1.-6.2.2027, 6.3.-3.4.2027 samalla hinnalla/ikärajalla, ei kerätty erillisinä riveinä tässä erässä. sessions_count=5 perustuu sivun mainintaan 'viitenä eri lauantaina', ei eksplisiittiseen päivälistaan -> approximate. Espoo-QA korjaus 24.9.2026: sessions_count nollattu (vain sivun sanamuotoon 'viitenä eri lauantaina' perustuva arvio, ei eksplisiittistä päivälistaa) - ei arvata kertamäärää (sääntö 1).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_07.json",
      "staging_id": "batch_espoo_2026-09-23_07-009",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 120.7,
    "monthly_cost_basis": "115.0 € / course jaettuna 0.95 kuukaudelle (2026-09-12–2026-10-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Sepänkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Sepänkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "taekwondo",
    "provider": "Espoon ITF Taekwon-Do ry",
    "group_name": "Nappulawondo",
    "min_age": 4,
    "max_age": 8,
    "eligibility_text": "Lapsi 4-8v",
    "parent_child": "no",
    "venue_name": "Tuomarilan koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:15",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 100.0,
    "price_basis": "Hinta Lapsi 4-8v 100 €.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.espoontaekwondo.fi/",
    "source_quote": "Nappulawondo. Taekwon-Do lapsille järjestetään kerran viikossa torstaisin Tuomarilan koululla. Syksyn 2026 nappulawondo torstaisin kello 17.15-18.15. Aloitus torstaina 20.8.2026. Hinta Lapsi 4-8v 100 €.",
    "activity_id": "esp-2026-0194",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 100.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.espoontaekwondo.fi/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date"
    ],
    "verification_notes": "Ei mainintaa erillisestä liittolisenssistä tällä sivulla; sivu ei kerro kauden päättymispäivää eksplisiittisesti, joten end_date jätetty tyhjäksi.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_07.json",
      "staging_id": "batch_espoo_2026-09-23_07-010",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "koripallo",
    "provider": "Espoo Basket Team (EBT)",
    "group_name": "Pallokerho (2022-2023)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "vuosina 2022-23 syntyneille tytöille ja pojille",
    "parent_child": "no",
    "venue_name": "Nauriskasken koulu",
    "address": "Kaskihaka 5, Espoo",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "11:00",
    "season": "kausi 2026-2027",
    "start_date": "2026-08-29",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 380.0,
    "price_basis": "Season Price €380 for the full season (myClub Pallokerho-kurssi).",
    "membership_fee_eur": 60.0,
    "other_required_fees": null,
    "equipment_notes": "Jokainen pallokerholainen saa oman koripallon sekä Pikkususi-tuotteen.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://ebt.fi/joukkueet/",
    "source_quote": "EBT:n Pallokerho on tarkoitettu vuosina 2022-23 syntyneille tytöille ja pojille... Pallokerho aloittaa kauden 2026-2027 osalta lauantaina 29.8. Harjoitukset silloin Nauriskasken koululla (Kaskihaka 5, Espoo) klo 10:00-11:00. [myClub: Season Price €380 for the full season, Membership Fee €60]",
    "activity_id": "esp-2026-0195",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 440.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://ebt.myclub.fi/flow/events/9575622",
    "billing_period": "full_season",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 380,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 60,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "EBT:n jäsenmaksu 60 €/vuosi, laskutetaan kauden ensimmäisen toimintamaksulaskun yhteydessä."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_07.json",
      "staging_id": "batch_espoo_2026-09-23_07-011",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Latokaski",
    "district_basis": "geokoodattu osoite -> neighborhood 'Latokaski' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Folkhälsan (vauvauinti Espoo)",
    "group_name": "Vauvauinti, Matinkylän uimahalli, ti klo 15.30",
    "min_age": 0,
    "max_age": 2,
    "eligibility_text": "Vauvauinti: 3 kk–2 v (uinti päättyy, kun lapsi täyttää 2 vuotta)",
    "parent_child": "yes",
    "venue_name": "Matinkylän uimahalli",
    "address": "Tynnyritie 6, 02230 Espoo",
    "district": null,
    "weekday": "tiistai",
    "start_time": "15:30",
    "end_time": "16:00",
    "season": "jatkuva (kausi 2026)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 24.0,
    "price_basis": "Uinti 1 lapsi + 2 aikuista 24,00 €/kerta; laskutus kuukausittain toteutuneiden kertojen mukaan.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.folkhalsan.fi/fi/kurssit/vauvauinti-matinkylan-uimahalli-ti-klo-15.30",
    "source_quote": "Vauvauinti: 3 kk–2 v (uinti päättyy, kun lapsi täyttää 2 vuotta). Uinti 1 lapsi + 2 aikuista 24,00 €/kerta. Vauvauinti maksetaan kuukausittain, kuukausihinta vaihtelee sen mukaan, kuinka monta kertaa kuussa vauvauintia järjestetään. Ilmoittaudu varasijalle.",
    "activity_id": "esp-2026-0196",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 24.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.folkhalsan.fi/fi/kurssit/vauvauinti-matinkylan-uimahalli-ti-klo-15.30",
    "billing_period": "session",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 2,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Toiminta on jatkuvaa (ei kiinteää alku-/loppupäivää), voi liittyä kesken kauden. Sisarusuinti (27 €/kerta) ja perheuinti yli 1-vuotiaille (21 €/kerta) ovat erillisiä hintavaihtoehtoja/ryhmiä, ei kerätty tässä rivissä.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_07.json",
      "staging_id": "batch_espoo_2026-09-23_07-012",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa session ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Matinkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Matinkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "koripallo",
    "provider": "Leppävaaran Pyrintö (LePy)",
    "group_name": "Perhekoris",
    "min_age": 2,
    "max_age": 6,
    "eligibility_text": "2 - 6-vuotiaille tytöille ja pojille sekä heidän vanhemmilleen",
    "parent_child": "yes",
    "venue_name": "Lintulaakson koulu",
    "address": "Linnuntie 13, 02660 Espoo",
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:00",
    "end_time": "10:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 170.0,
    "price_basis": "Kausimaksu on 170 € / syyskausi ja 170 € / kevätkausi erikseen.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.leppavaaranpyrinto.fi/joukkueet/perhekoris/",
    "source_quote": "Perhekoripalloryhmät on tarkoitettu 2 - 6-vuotiaille tytöille ja pojille sekä heidän vanhemmilleen... Perhekoris kokoontuu lauantaisin Lintulaakson koululla klo 9.00-10.00. Kausimaksu on 170 e / syyskausi ja 170 e / kevätkausi. Hinta sisältää aina lapsen ja vanhemman. Jokaisesta lapsesta joutuu maksamaan oman maksun.",
    "activity_id": "esp-2026-0197",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.leppavaaranpyrinto.fi/joukkueet/perhekoris/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Maksu peritään jokaiselta osallistuvalta lapselta erikseen; alle 2-vuotiaan voi ottaa mukaan maksutta. Kausi 2026-2027 syys- ja kevätkausi hinnoiteltu erikseen (170 € kumpikin), tämä rivi kuvaa syyskauden.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-23",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_07.json",
      "staging_id": "batch_espoo_2026-09-23_07-013",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Lintuvaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Lintuvaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2023 (13)",
    "min_age": 3,
    "max_age": 3,
    "eligibility_text": "synt. 2023",
    "parent_child": "unknown",
    "venue_name": "Eestinkallion koulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2023 (13) | maanantai klo 17:00-17:45 | Eestinkallion koulu",
    "activity_id": "esp-2026-0198",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 150.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2023,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-001",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2023 (14)",
    "min_age": 3,
    "max_age": 3,
    "eligibility_text": "synt. 2023",
    "parent_child": "unknown",
    "venue_name": "Jousenkaaren koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:50",
    "end_time": "18:35",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2023 (14) | torstai klo 17:50-18:35 | Jousenkaaren koulu",
    "activity_id": "esp-2026-0199",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 150.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2023,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-002",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2022 (16)",
    "min_age": 4,
    "max_age": 4,
    "eligibility_text": "synt. 2022",
    "parent_child": "unknown",
    "venue_name": "Kuitinmäen peruskoulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2022 (16) | maanantai klo 17:00-17:45 | Kuitinmäen peruskoulu",
    "activity_id": "esp-2026-0200",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 150.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-003",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2022 (17)",
    "min_age": 4,
    "max_age": 4,
    "eligibility_text": "synt. 2022",
    "parent_child": "unknown",
    "venue_name": "Soukan koulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2022 (17) | maanantai klo 17:00-17:45 | Soukan koulu",
    "activity_id": "esp-2026-0201",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 150.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-004",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2022 (18)",
    "min_age": 4,
    "max_age": 4,
    "eligibility_text": "synt. 2022",
    "parent_child": "unknown",
    "venue_name": "Niittykummun koulu",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2022 (18) | keskiviikko klo 17:00-17:45 | Niittykummun koulu",
    "activity_id": "esp-2026-0202",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 150.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-005",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2022 (19)",
    "min_age": 4,
    "max_age": 4,
    "eligibility_text": "synt. 2022",
    "parent_child": "unknown",
    "venue_name": "Vanttilan koulu",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2022 (19) | keskiviikko klo 18:00-18:45 | Vanttilan koulu",
    "activity_id": "esp-2026-0203",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 150.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-006",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2022 (20)",
    "min_age": 4,
    "max_age": 4,
    "eligibility_text": "synt. 2022",
    "parent_child": "unknown",
    "venue_name": "Sunan koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2022 (20) | torstai klo 17:00-17:45 | Sunan koulu",
    "activity_id": "esp-2026-0204",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 150.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-007",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2020-2021 (22)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "synt. 2020-2021",
    "parent_child": "unknown",
    "venue_name": "Kuitinmäen peruskoulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2020-2021 (22) | maanantai klo 17:00-17:55 | Kuitinmäen peruskoulu",
    "activity_id": "esp-2026-0205",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 165.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-008",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2020-2021 (23)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "synt. 2020-2021",
    "parent_child": "unknown",
    "venue_name": "Tuomarilan koulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2020-2021 (23) | maanantai klo 17:00-17:55 | Tuomarilan koulu",
    "activity_id": "esp-2026-0206",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 165.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-009",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2020-2021 (24)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "synt. 2020-2021",
    "parent_child": "unknown",
    "venue_name": "Kaitaan koulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:55",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2020-2021 (24) | maanantai klo 18:00-18:55 | Kaitaan koulu",
    "activity_id": "esp-2026-0207",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 165.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-010",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2020-2021 (25)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "synt. 2020-2021",
    "parent_child": "unknown",
    "venue_name": "Soukan koulu",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:55",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2020-2021 (25) | tiistai klo 18:00-18:55 | Soukan koulu",
    "activity_id": "esp-2026-0208",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 165.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-011",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2020-2021 (26)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "synt. 2020-2021",
    "parent_child": "unknown",
    "venue_name": "Päivänkehrän koulu",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:55",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2020-2021 (26) | tiistai klo 18:00-18:55 | Päivänkehrän koulu",
    "activity_id": "esp-2026-0209",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 165.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-012",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2020-2021 (27)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "synt. 2020-2021",
    "parent_child": "unknown",
    "venue_name": "Nauriskasken koulu",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2020-2021 (27) | keskiviikko klo 17:00-None | Nauriskasken koulu",
    "activity_id": "esp-2026-0210",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 165.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status",
      "end_time"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). PDF:n aikamerkintä tallä rivillä oli 'Keskiviikko klo 17-15.55' (ilmeinen tekstinpoiminnan/palstan vika); end_time jatettu null:ksi, muut 2020-2021-ryhmät kestävät kaikki 55 min. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-013",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2020-2021 (28)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "synt. 2020-2021",
    "parent_child": "unknown",
    "venue_name": "Niittykummun koulu",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "18:55",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2020-2021 (28) | keskiviikko klo 18:00-18:55 | Niittykummun koulu",
    "activity_id": "esp-2026-0211",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 165.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-014",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2020-2021 (29)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "synt. 2020-2021",
    "parent_child": "unknown",
    "venue_name": "Tiistilän koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "16:30",
    "end_time": "17:25",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2020-2021 (29) | torstai klo 16:30-17:25 | Tiistilän koulu",
    "activity_id": "esp-2026-0212",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 165.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-015",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2020-2021 (30)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "synt. 2020-2021",
    "parent_child": "unknown",
    "venue_name": "Vanttilan koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2020-2021 (30) | torstai klo 17:00-17:55 | Vanttilan koulu",
    "activity_id": "esp-2026-0213",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 165.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-016",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Voimistelukoulu 2020-2021 (31)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "synt. 2020-2021",
    "parent_child": "unknown",
    "venue_name": "Jousenkaaren koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:50",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Voimistelukoulu 2020-2021 (31) | torstai klo 17:50-18:45 | Jousenkaaren koulu",
    "activity_id": "esp-2026-0214",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 165.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-017",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Temppukoulu 2022-2023 (85)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "synt. 2022-2023",
    "parent_child": "unknown",
    "venue_name": "Kuitinmäen peruskoulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Temppukoulu 2022-2023 (85) | maanantai klo 18:00-18:45 | Kuitinmäen peruskoulu",
    "activity_id": "esp-2026-0215",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 150.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-018",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Temppukoulu 2022-2023 (87)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "synt. 2022-2023",
    "parent_child": "unknown",
    "venue_name": "Karamzinin koulu",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Temppukoulu 2022-2023 (87) | tiistai klo 17:00-17:45 | Karamzinin koulu",
    "activity_id": "esp-2026-0216",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 150.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-019",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Temppukoulu 2022-2023 (89)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "synt. 2022-2023",
    "parent_child": "unknown",
    "venue_name": "Eestinkallion koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Temppukoulu 2022-2023 (89) | torstai klo 17:00-17:45 | Eestinkallion koulu",
    "activity_id": "esp-2026-0217",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 150.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-020",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Temppukoulu 2020-2021 (86)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "synt. 2020-2021",
    "parent_child": "unknown",
    "venue_name": "Tuomarilan koulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Temppukoulu 2020-2021 (86) | maanantai klo 17:00-17:55 | Tuomarilan koulu",
    "activity_id": "esp-2026-0218",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 165.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-021",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Temppukoulu 2020-2021 (88)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "synt. 2020-2021",
    "parent_child": "unknown",
    "venue_name": "Sunan koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 150.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Temppukoulu 2020-2021 (88) | torstai klo 17:00-17:55 | Sunan koulu",
    "activity_id": "esp-2026-0219",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 165.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 150,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-022",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Asteroidit 2021 (52)",
    "min_age": 5,
    "max_age": 5,
    "eligibility_text": "synt. 2021",
    "parent_child": "unknown",
    "venue_name": "Haukilahden koulu (ma 17-17:55) / Päivänkehrän koulu (to 17-17:55)",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 270.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Asteroidit 2021 (52) | None klo None-None | Haukilahden koulu (ma 17-17:55) / Päivänkehrän koulu (to 17-17:55)",
    "activity_id": "esp-2026-0220",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 285.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2021,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 270,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status",
      "weekday",
      "start_time",
      "end_time"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Kaksi harjoitusta viikossa (ma+to, 2x55min); päivät/paikat eri, joten weekday/start_time/end_time null. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-023",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Jupiterit 2020 (53)",
    "min_age": 6,
    "max_age": 6,
    "eligibility_text": "synt. 2020",
    "parent_child": "unknown",
    "venue_name": "Haukilahden koulu (ma 18-18:55) / Friisilän koulu (to 17-18:25)",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 320.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Jupiterit 2020 (53) | None klo None-None | Haukilahden koulu (ma 18-18:55) / Friisilän koulu (to 17-18:25)",
    "activity_id": "esp-2026-0221",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 335.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2020,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 320,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status",
      "weekday",
      "start_time",
      "end_time"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Sopii vain 6-vuotiaille (rajaus 21.9.2026): ikahaarukan alaraja 6 osuu 0-6-vuotiaisiin. Kaksi harjoitusta viikossa (ma 55min + to 85min = 140min/vko -> 320e); päivät/paikat/kestot eri, joten weekday/start_time/end_time null. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-024",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Gammat 2021 (68)",
    "min_age": 5,
    "max_age": 5,
    "eligibility_text": "synt. 2021",
    "parent_child": "unknown",
    "venue_name": "Friisilän koulu (ti 17-17:55) / Tiistilän koulu (pe 17-17:55)",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 270.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Gammat 2021 (68) | None klo None-None | Friisilän koulu (ti 17-17:55) / Tiistilän koulu (pe 17-17:55)",
    "activity_id": "esp-2026-0222",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 285.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2021,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 270,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status",
      "weekday",
      "start_time",
      "end_time"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Kaksi harjoitusta viikossa (ti+pe, 2x55min); päivät/paikat eri, joten weekday/start_time/end_time null. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-025",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Beetat 2020 (69)",
    "min_age": 6,
    "max_age": 6,
    "eligibility_text": "synt. 2020",
    "parent_child": "unknown",
    "venue_name": "Friisilän koulu (ma 17-17:55) / Tiistilän koulu (to 17:30-18:55)",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 320.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Beetat 2020 (69) | None klo None-None | Friisilän koulu (ma 17-17:55) / Tiistilän koulu (to 17:30-18:55)",
    "activity_id": "esp-2026-0223",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 335.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2020,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 320,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status",
      "weekday",
      "start_time",
      "end_time"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Sopii vain 6-vuotiaille (rajaus 21.9.2026): ikahaarukan alaraja 6 osuu 0-6-vuotiaisiin. Kaksi harjoitusta viikossa (ma 55min + to 85min = 140min/vko -> 320e); päivät/paikat/kestot eri, joten weekday/start_time/end_time null. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-026",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Supernovat, Level 2 (75)",
    "min_age": null,
    "max_age": null,
    "eligibility_text": null,
    "parent_child": "unknown",
    "venue_name": "Friisilän koulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "19:25",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 80.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Supernovat, Level 2 (75) | maanantai klo 18:00-19:25 | Friisilän koulu",
    "activity_id": "esp-2026-0224",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 95.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 80,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Erityisryhma (Special Olympics -tyyppinen rytminen voimistelu), ei ikärajaa PDF:ssa/hinnastossa; mukana CLAUDE.md:n soveltava-säännön perusteella, comparison_eligible=false. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-027",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Supernovat, Level 1 (76)",
    "min_age": null,
    "max_age": null,
    "eligibility_text": null,
    "parent_child": "unknown",
    "venue_name": "Tiistilän koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:30",
    "end_time": "18:55",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 80.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Supernovat, Level 1 (76) | torstai klo 17:30-18:55 | Tiistilän koulu",
    "activity_id": "esp-2026-0225",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 95.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 80,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Erityisryhma (Special Olympics -tyyppinen rytminen voimistelu), ei ikärajaa PDF:ssa/hinnastossa; mukana CLAUDE.md:n soveltava-säännön perusteella, comparison_eligible=false. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-028",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Soveltava perhevoimistelu (74)",
    "min_age": null,
    "max_age": null,
    "eligibility_text": null,
    "parent_child": "yes",
    "venue_name": "Soukan koulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausiohjelma, syyskausi 2026",
    "membership_fee_eur": 15.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/1YXvGLVG1w1plUVuYUN5CjW70Iz5wYpai/view?usp=sharing",
    "source_quote": "Soveltava perhevoimistelu (74) | maanantai klo 17:00-17:45 | Soukan koulu",
    "activity_id": "esp-2026-0226",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 55.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 15,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Soveltava perhevoimistelu, hinta 40e/osallistuja (hinnat-ja-maksutavat-sivu); PDF:n kausiohjelman kategoriaotsikko 'SOVELTAVA VOIMISTELU 80e/ryhmä/kausi' koskee ilmeisesti Supernovat-ryhmiä, ei tätä perheryhmää - ristiriita kirjattu (sääntö 8: käyttöön tarkempi/ajantasaisempi hinnat-sivu). Ei ikärajaa, ei price_covers-vahvistusta (ei sanota 'per pari'). (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-029",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_voimistelukoulut_6b40beb3a86e.pdf",
      "capture_sha256": "6b40beb3a86e46083864b1630e87a9787b946779b7a1c3147c2ed4550cf7c5fc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Taaperojumppa 2024-2025 (01)",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "synt. 2024-2025",
    "parent_child": "yes",
    "venue_name": "Kuitinmäen yläkoulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Perheliikunta 130e/pari/kausi",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/10Od1gn0hXidFAP-qzjXndfLEaBAyOD3k/view?usp=sharing",
    "source_quote": "Taaperojumppa 2024-2025 (01) | maanantai klo 16:30-17:15 | Kuitinmäen yläkoulu",
    "activity_id": "esp-2026-0227",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2024,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Perheliikuntaryhmä (lapsi+aikuinen-pari); OVOn jasenmaksusaanto: perheliikuntaryhmissä sekä lapsi että aikuinen maksavat jäsenmaksun (lapsi 15e + aikuinen 25e = 40e), kirjattu yhtenä membership-summana. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-030",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_perhe_cheertanssi_623b01c437d2.pdf",
      "capture_sha256": "623b01c437d2b9ffd519171bb2b053d2cd9a2e9f47d426663aee2f1633c6c241",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Perhevoimistelu 1-6-vuotiaat (02)",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Kaitaan koulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Perheliikunta 130e/pari/kausi",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/10Od1gn0hXidFAP-qzjXndfLEaBAyOD3k/view?usp=sharing",
    "source_quote": "Perhevoimistelu 1-6-vuotiaat (02) | maanantai klo 17:00-17:45 | Kaitaan koulu",
    "activity_id": "esp-2026-0228",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Perheliikuntaryhmä (lapsi+aikuinen-pari); OVOn jasenmaksusaanto: perheliikuntaryhmissä sekä lapsi että aikuinen maksavat jäsenmaksun (lapsi 15e + aikuinen 25e = 40e), kirjattu yhtenä membership-summana. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-031",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_perhe_cheertanssi_623b01c437d2.pdf",
      "capture_sha256": "623b01c437d2b9ffd519171bb2b053d2cd9a2e9f47d426663aee2f1633c6c241",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Taaperojumppa 2024-2025 (03)",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "synt. 2024-2025",
    "parent_child": "yes",
    "venue_name": "Lintuvaaran koulu",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Perheliikunta 130e/pari/kausi",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/10Od1gn0hXidFAP-qzjXndfLEaBAyOD3k/view?usp=sharing",
    "source_quote": "Taaperojumppa 2024-2025 (03) | tiistai klo 17:00-17:45 | Lintuvaaran koulu",
    "activity_id": "esp-2026-0229",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2024,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Perheliikuntaryhmä (lapsi+aikuinen-pari); OVOn jasenmaksusaanto: perheliikuntaryhmissä sekä lapsi että aikuinen maksavat jäsenmaksun (lapsi 15e + aikuinen 25e = 40e), kirjattu yhtenä membership-summana. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-032",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_perhe_cheertanssi_623b01c437d2.pdf",
      "capture_sha256": "623b01c437d2b9ffd519171bb2b053d2cd9a2e9f47d426663aee2f1633c6c241",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Taaperojumppa 2024-2025 (04)",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "synt. 2024-2025",
    "parent_child": "yes",
    "venue_name": "Päivänkehrän koulu",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Perheliikunta 130e/pari/kausi",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/10Od1gn0hXidFAP-qzjXndfLEaBAyOD3k/view?usp=sharing",
    "source_quote": "Taaperojumppa 2024-2025 (04) | tiistai klo 17:00-17:45 | Päivänkehrän koulu",
    "activity_id": "esp-2026-0230",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2024,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Perheliikuntaryhmä (lapsi+aikuinen-pari); OVOn jasenmaksusaanto: perheliikuntaryhmissä sekä lapsi että aikuinen maksavat jäsenmaksun (lapsi 15e + aikuinen 25e = 40e), kirjattu yhtenä membership-summana. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-033",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_perhe_cheertanssi_623b01c437d2.pdf",
      "capture_sha256": "623b01c437d2b9ffd519171bb2b053d2cd9a2e9f47d426663aee2f1633c6c241",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Perhevoimistelu 2022-2023 (05)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "synt. 2022-2023",
    "parent_child": "yes",
    "venue_name": "Lintuvaaran koulu",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Perheliikunta 130e/pari/kausi",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/10Od1gn0hXidFAP-qzjXndfLEaBAyOD3k/view?usp=sharing",
    "source_quote": "Perhevoimistelu 2022-2023 (05) | tiistai klo 18:00-18:45 | Lintuvaaran koulu",
    "activity_id": "esp-2026-0231",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Perheliikuntaryhmä (lapsi+aikuinen-pari); OVOn jasenmaksusaanto: perheliikuntaryhmissä sekä lapsi että aikuinen maksavat jäsenmaksun (lapsi 15e + aikuinen 25e = 40e), kirjattu yhtenä membership-summana. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-034",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_perhe_cheertanssi_623b01c437d2.pdf",
      "capture_sha256": "623b01c437d2b9ffd519171bb2b053d2cd9a2e9f47d426663aee2f1633c6c241",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Perhevoimistelu 2022-2023 (06)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "synt. 2022-2023",
    "parent_child": "yes",
    "venue_name": "Soukan koulu",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Perheliikunta 130e/pari/kausi",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/10Od1gn0hXidFAP-qzjXndfLEaBAyOD3k/view?usp=sharing",
    "source_quote": "Perhevoimistelu 2022-2023 (06) | tiistai klo 17:00-17:45 | Soukan koulu",
    "activity_id": "esp-2026-0232",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Perheliikuntaryhmä (lapsi+aikuinen-pari); OVOn jasenmaksusaanto: perheliikuntaryhmissä sekä lapsi että aikuinen maksavat jäsenmaksun (lapsi 15e + aikuinen 25e = 40e), kirjattu yhtenä membership-summana. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-035",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_perhe_cheertanssi_623b01c437d2.pdf",
      "capture_sha256": "623b01c437d2b9ffd519171bb2b053d2cd9a2e9f47d426663aee2f1633c6c241",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Taaperojumppa 2024-2025 (07)",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "synt. 2024-2025",
    "parent_child": "yes",
    "venue_name": "Niittykummun koulu",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Perheliikunta 130e/pari/kausi",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/10Od1gn0hXidFAP-qzjXndfLEaBAyOD3k/view?usp=sharing",
    "source_quote": "Taaperojumppa 2024-2025 (07) | keskiviikko klo 17:00-17:45 | Niittykummun koulu",
    "activity_id": "esp-2026-0233",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2024,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Perheliikuntaryhmä (lapsi+aikuinen-pari); OVOn jasenmaksusaanto: perheliikuntaryhmissä sekä lapsi että aikuinen maksavat jäsenmaksun (lapsi 15e + aikuinen 25e = 40e), kirjattu yhtenä membership-summana. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-036",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_perhe_cheertanssi_623b01c437d2.pdf",
      "capture_sha256": "623b01c437d2b9ffd519171bb2b053d2cd9a2e9f47d426663aee2f1633c6c241",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Perhevoimistelu 2022-2023 (08)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "synt. 2022-2023",
    "parent_child": "yes",
    "venue_name": "Vanttilan koulu",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Perheliikunta 130e/pari/kausi",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/10Od1gn0hXidFAP-qzjXndfLEaBAyOD3k/view?usp=sharing",
    "source_quote": "Perhevoimistelu 2022-2023 (08) | keskiviikko klo 17:00-17:45 | Vanttilan koulu",
    "activity_id": "esp-2026-0234",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Perheliikuntaryhmä (lapsi+aikuinen-pari); OVOn jasenmaksusaanto: perheliikuntaryhmissä sekä lapsi että aikuinen maksavat jäsenmaksun (lapsi 15e + aikuinen 25e = 40e), kirjattu yhtenä membership-summana. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-037",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_perhe_cheertanssi_623b01c437d2.pdf",
      "capture_sha256": "623b01c437d2b9ffd519171bb2b053d2cd9a2e9f47d426663aee2f1633c6c241",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Taaperojumppa 2024-2025 (09)",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "synt. 2024-2025",
    "parent_child": "yes",
    "venue_name": "Jousenkaaren koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Perheliikunta 130e/pari/kausi",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/10Od1gn0hXidFAP-qzjXndfLEaBAyOD3k/view?usp=sharing",
    "source_quote": "Taaperojumppa 2024-2025 (09) | torstai klo 17:00-17:45 | Jousenkaaren koulu",
    "activity_id": "esp-2026-0235",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2024,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Perheliikuntaryhmä (lapsi+aikuinen-pari); OVOn jasenmaksusaanto: perheliikuntaryhmissä sekä lapsi että aikuinen maksavat jäsenmaksun (lapsi 15e + aikuinen 25e = 40e), kirjattu yhtenä membership-summana. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-038",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_perhe_cheertanssi_623b01c437d2.pdf",
      "capture_sha256": "623b01c437d2b9ffd519171bb2b053d2cd9a2e9f47d426663aee2f1633c6c241",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Taaperojumppa 2024-2025 (10)",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "synt. 2024-2025",
    "parent_child": "yes",
    "venue_name": "Eestinkallion koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:50",
    "end_time": "18:35",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Perheliikunta 130e/pari/kausi",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/10Od1gn0hXidFAP-qzjXndfLEaBAyOD3k/view?usp=sharing",
    "source_quote": "Taaperojumppa 2024-2025 (10) | torstai klo 17:50-18:35 | Eestinkallion koulu",
    "activity_id": "esp-2026-0236",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2024,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Perheliikuntaryhmä (lapsi+aikuinen-pari); OVOn jasenmaksusaanto: perheliikuntaryhmissä sekä lapsi että aikuinen maksavat jäsenmaksun (lapsi 15e + aikuinen 25e = 40e), kirjattu yhtenä membership-summana. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-039",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_perhe_cheertanssi_623b01c437d2.pdf",
      "capture_sha256": "623b01c437d2b9ffd519171bb2b053d2cd9a2e9f47d426663aee2f1633c6c241",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Olarin Voimistelijat ry",
    "group_name": "Taaperojumppa 2024-2025 (11)",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "synt. 2024-2025",
    "parent_child": "yes",
    "venue_name": "Matinlahden koulu",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "09:30",
    "end_time": "10:15",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Perheliikunta 130e/pari/kausi",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://drive.google.com/file/d/10Od1gn0hXidFAP-qzjXndfLEaBAyOD3k/view?usp=sharing",
    "source_quote": "Taaperojumppa 2024-2025 (11) | lauantai klo 09:30-10:15 | Matinlahden koulu",
    "activity_id": "esp-2026-0237",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.olarinvoimistelijat.fi/harrasteryhmat/ohjeita/hinnat-ja-maksutavat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2024,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "OVO jäsenmaksu 2026 (alle 15v 15e / yli 15v 25e); peritaan kevään kausimaksun yhteydessä tai uuden jasenen ensi-ilmoittautumisessa"
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "start_date",
      "end_date",
      "season_start_date",
      "season_end_date",
      "sessions_count",
      "availability_status"
    ],
    "verification_notes": "Kausiohjelma-PDF (Google Drive, seuran oma julkaisu, linkitetty osoitteesta https://www.olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/) ei ilmoita tarkkoja kalenteripäivämääriä eikä ryhmäkohtaista kertamäärää; syyskauden 2026 alku-/loppupäivä ei löytynyt luotettavasti paivitetysta lähteestä (syyskauden-ilmoittautuminen-sivu koski syksya 2025), joten start_date/end_date/season_start_date/season_end_date/sessions_count = null. Hinta ja ikäryhmä varmistettu PDF:sta + hinnat-ja-maksutavat-sivulta (yhtäpitävät). Perheliikuntaryhmä (lapsi+aikuinen-pari); OVOn jasenmaksusaanto: perheliikuntaryhmissä sekä lapsi että aikuinen maksavat jäsenmaksun (lapsi 15e + aikuinen 25e = 40e), kirjattu yhtenä membership-summana. (a3) 24.9.2026: drive.google.com-lähde hyväksytty, linking_page lisätty evidenssiin (tarkistettu olarinvoimistelijat.fi/harrasteryhmat/hae-harrasteryhmia/).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-040",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/olarin_kausiohjelma_perhe_cheertanssi_623b01c437d2.pdf",
      "capture_sha256": "623b01c437d2b9ffd519171bb2b053d2cd9a2e9f47d426663aee2f1633c6c241",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Jamkids Musiikkikoulu",
    "group_name": "Jumppamuskari 3-4v (Lintuvaara, Lintuvaaran koulu)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Lintuvaaran koulu",
    "address": "Lintuparvenpuisto 5, 02660 Espoo",
    "district": null,
    "weekday": "perjantai",
    "start_time": "17:20",
    "end_time": "18:10",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Jumppamuskari, syksy 2026 hinnasto",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://jamkids.fi/opetuspiste/espoo/lintuvaara-lintuvaaran-koulu/",
    "source_quote": "Perjantai 17:20-18:10 jumppamuskari, Ikävuodet: 3, 4, Opettaja: Rina Januzi",
    "activity_id": "esp-2026-0238",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://jamkids.fi/ilmoittautuminen/hinnat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Jumppamuskari: liikunta on tunnin keskeinen sisältö musiikin ohella ('soitetaan, lauletaan, liikutaan, temppuillaan, lorutellaan ja leikitään'; valineina mm. pallot, vanteet, hernepussit) - CLAUDE.md:n keruuohjeen mukaisesti luokiteltu temppujumppa-lajiksi. Hinta syksyn 2026-2027 hinnastosta (jamkids.fi/ilmoittautuminen/hinnat/); ryhmän omalla lukujarjestyssivulla ei mainittu täynnä-merkintää.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-041",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/jamkids_lintuvaara.html",
      "capture_sha256": "c0412ff4347f2323c7d93381e8cd7134a6a18c4bc8b53e6e5034198ee6874dca",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Lintuvaara",
    "district_basis": "geokoodattu osoite -> neighborhood 'Lintuvaara' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Jamkids Musiikkikoulu",
    "group_name": "Jumppamuskari 1-2v (Saunalahti, Saunalahden koulu)",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "1-2-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Saunalahden koulu",
    "address": "Brinkinmäentie 1, 02330 Espoo",
    "district": null,
    "weekday": "perjantai",
    "start_time": "16:45",
    "end_time": "17:25",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Jumppamuskari, syksy 2026 hinnasto",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://jamkids.fi/opetuspiste/espoo/saunalahti-saunalahden-koulu/",
    "source_quote": "Perjantai 16:45-17:25 jumppamuskari, Ikävuodet: 1, 2, Opettaja: Inka Lepistö",
    "activity_id": "esp-2026-0239",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 135.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://jamkids.fi/ilmoittautuminen/hinnat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Jumppamuskari: liikunta on tunnin keskeinen sisältö musiikin ohella ('soitetaan, lauletaan, liikutaan, temppuillaan, lorutellaan ja leikitään'; valineina mm. pallot, vanteet, hernepussit) - CLAUDE.md:n keruuohjeen mukaisesti luokiteltu temppujumppa-lajiksi. Hinta syksyn 2026-2027 hinnastosta (jamkids.fi/ilmoittautuminen/hinnat/); ryhmän omalla lukujarjestyssivulla ei mainittu täynnä-merkintää.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-042",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/jamkids_saunalahti.html",
      "capture_sha256": "ddff625dca913039d0b3dd2f43caa6e1e5b7767ad0889d07d03775a4ddfe4705",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Saunalahti",
    "district_basis": "geokoodattu osoite -> neighborhood 'Saunalahti' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Jamkids Musiikkikoulu",
    "group_name": "Jumppamuskari 3-4v (Saunalahti, Saunalahden koulu)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Saunalahden koulu",
    "address": "Brinkinmäentie 1, 02330 Espoo",
    "district": null,
    "weekday": "perjantai",
    "start_time": "17:35",
    "end_time": "18:25",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 160.0,
    "price_basis": "Jumppamuskari, syksy 2026 hinnasto",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://jamkids.fi/opetuspiste/espoo/saunalahti-saunalahden-koulu/",
    "source_quote": "Perjantai 17:35-18:25 TÄYNNÄ jumppamuskari, Ikävuodet: 3, 4, Opettaja: Inka Lepistö",
    "activity_id": "esp-2026-0240",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://jamkids.fi/ilmoittautuminen/hinnat/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 160,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Jumppamuskari: liikunta on tunnin keskeinen sisältö musiikin ohella ('soitetaan, lauletaan, liikutaan, temppuillaan, lorutellaan ja leikitään'; valineina mm. pallot, vanteet, hernepussit) - CLAUDE.md:n keruuohjeen mukaisesti luokiteltu temppujumppa-lajiksi. Hinta syksyn 2026-2027 hinnastosta (jamkids.fi/ilmoittautuminen/hinnat/); ryhmän omalla lukujarjestyssivulla oli merkintä TÄYNNÄ.",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-043",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/jamkids_saunalahti.html",
      "capture_sha256": "ddff625dca913039d0b3dd2f43caa6e1e5b7767ad0889d07d03775a4ddfe4705",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Saunalahti",
    "district_basis": "geokoodattu osoite -> neighborhood 'Saunalahti' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia (Espoo)",
    "group_name": "Parkour 4-6v. - Perjantai",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Espoon Parkour Akatemia ja Sirkuskoulu",
    "address": "Vesikuja 4 B, Olarinluoma, Espoo",
    "district": null,
    "weekday": "perjantai",
    "start_time": "16:00",
    "end_time": "16:45",
    "season": "syksy 2026",
    "start_date": "2026-08-21",
    "end_date": "2026-12-11",
    "sessions_count": 16,
    "price_eur": 245.0,
    "price_basis": "45 min: 245e / Perheet 45min: 265e, 60min: 285e (syyskausi 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department:18 subject:115 category:28",
    "source_quote": "Parkour 4-6v. - Perjantai klo 16-16:45, EspviiNap1/04, Syyskausi 21.8.-11.12.2026 (16 kertaa), 245,00 €, Ilmoittaudu jonoon",
    "activity_id": "esp-2026-0241",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://parkourakatemia.fi/espoo/ilmoittautuminen/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-21",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://uusi.pilvikanava.fi/parkourakatemia/",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Parkour -> voimistelu (CLAUDE.md lajisääntö).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-045",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/parkour_pilvikanava_alle_kouluikaiset.txt",
      "capture_sha256": "eeaebfdc7c193bc816ef082741f79486d02ee507d8f3e969d88658efff7c8fd5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 65.99,
    "monthly_cost_basis": "245.0 € / term jaettuna 3.71 kuukaudelle (2026-08-21–2026-12-11, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "geokoodattu osoite -> sub_district 'Niittykumpu' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia (Espoo)",
    "group_name": "Parkour 4-6v. - Tiistai",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Espoon Parkour Akatemia ja Sirkuskoulu",
    "address": "Vesikuja 4 B, Olarinluoma, Espoo",
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": 16,
    "price_eur": 245.0,
    "price_basis": "45 min: 245e / Perheet 45min: 265e, 60min: 285e (syyskausi 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department:18 subject:115 category:28",
    "source_quote": "Parkour 4-6v. - Tiistai klo 16.30-17.15, EspviiNap1/02, Syyskausi 18.8.-8.12.2026 (16 kertaa), 245,00 €, Ilmoittaudu jonoon",
    "activity_id": "esp-2026-0242",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://parkourakatemia.fi/espoo/ilmoittautuminen/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://uusi.pilvikanava.fi/parkourakatemia/",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Parkour -> voimistelu (CLAUDE.md lajisääntö).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-046",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/parkour_pilvikanava_alle_kouluikaiset.txt",
      "capture_sha256": "eeaebfdc7c193bc816ef082741f79486d02ee507d8f3e969d88658efff7c8fd5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 65.99,
    "monthly_cost_basis": "245.0 € / term jaettuna 3.71 kuukaudelle (2026-08-18–2026-12-08, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "geokoodattu osoite -> sub_district 'Niittykumpu' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia (Espoo)",
    "group_name": "Parkour 4-6v. - Torstai",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Espoon Parkour Akatemia ja Sirkuskoulu",
    "address": "Vesikuja 4 B, Olarinluoma, Espoo",
    "district": null,
    "weekday": "torstai",
    "start_time": "16:15",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-10",
    "sessions_count": 16,
    "price_eur": 245.0,
    "price_basis": "45 min: 245e / Perheet 45min: 265e, 60min: 285e (syyskausi 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department:18 subject:115 category:28",
    "source_quote": "Parkour 4-6v. - Torstai klo 16:15-17:00, EspviiNap1/03, Syyskausi 20.8.-10.12.2026 (16 kertaa), 245,00 €, 2 paikkaa vapaana",
    "activity_id": "esp-2026-0243",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://parkourakatemia.fi/espoo/ilmoittautuminen/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://uusi.pilvikanava.fi/parkourakatemia/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Parkour -> voimistelu (CLAUDE.md lajisääntö).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-047",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/parkour_pilvikanava_alle_kouluikaiset.txt",
      "capture_sha256": "eeaebfdc7c193bc816ef082741f79486d02ee507d8f3e969d88658efff7c8fd5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 65.99,
    "monthly_cost_basis": "245.0 € / term jaettuna 3.71 kuukaudelle (2026-08-20–2026-12-10, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "geokoodattu osoite -> sub_district 'Niittykumpu' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia (Espoo)",
    "group_name": "Parkour 5-6v. - Maanantai",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Espoon Parkour Akatemia ja Sirkuskoulu",
    "address": "Vesikuja 4 B, Olarinluoma, Espoo",
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": 16,
    "price_eur": 245.0,
    "price_basis": "45 min: 245e / Perheet 45min: 265e, 60min: 285e (syyskausi 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department:18 subject:115 category:28",
    "source_quote": "Parkour 5-6v. - Maanantai klo 16.30-17.15, EspviiNap1/01, Syyskausi 17.8.-7.12.2026 (16 kertaa), 245,00 €, Ilmoittaudu jonoon",
    "activity_id": "esp-2026-0244",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://parkourakatemia.fi/espoo/ilmoittautuminen/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://uusi.pilvikanava.fi/parkourakatemia/",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Parkour -> voimistelu (CLAUDE.md lajisääntö).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-048",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/parkour_pilvikanava_alle_kouluikaiset.txt",
      "capture_sha256": "eeaebfdc7c193bc816ef082741f79486d02ee507d8f3e969d88658efff7c8fd5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 65.99,
    "monthly_cost_basis": "245.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "geokoodattu osoite -> sub_district 'Niittykumpu' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia (Espoo)",
    "group_name": "Pomppusankarit 3-4v - Maanantai",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Espoon Parkour Akatemia ja Sirkuskoulu",
    "address": "Vesikuja 4 B, Olarinluoma, Espoo",
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:15",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": "2026-12-07",
    "sessions_count": 16,
    "price_eur": 245.0,
    "price_basis": "45 min: 245e / Perheet 45min: 265e, 60min: 285e (syyskausi 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department:18 subject:115 category:28",
    "source_quote": "Pomppusankarit 3-4v - Maanantai klo 16:15-17:00, EspviiNap1/06, Syyskausi 17.8.-7.12.2026 (16 kertaa), 245,00 €, 2 paikkaa vapaana",
    "activity_id": "esp-2026-0245",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://parkourakatemia.fi/espoo/ilmoittautuminen/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://uusi.pilvikanava.fi/parkourakatemia/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Pomppusankarit (trampoliini-tyyppinen alkeisryhmä) -> voimistelu (CLAUDE.md: trampoliini -> voimistelu).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-049",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/parkour_pilvikanava_alle_kouluikaiset.txt",
      "capture_sha256": "eeaebfdc7c193bc816ef082741f79486d02ee507d8f3e969d88658efff7c8fd5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 65.99,
    "monthly_cost_basis": "245.0 € / term jaettuna 3.71 kuukaudelle (2026-08-17–2026-12-07, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "geokoodattu osoite -> sub_district 'Niittykumpu' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia (Espoo)",
    "group_name": "Sirkus 4-6v. - Sunnuntai",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Espoon Parkour Akatemia ja Sirkuskoulu",
    "address": "Vesikuja 4 B, Olarinluoma, Espoo",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "10:05",
    "end_time": "10:50",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-20",
    "sessions_count": 16,
    "price_eur": 245.0,
    "price_basis": "45 min: 245e / Perheet 45min: 265e, 60min: 285e (syyskausi 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department:18 subject:115 category:28",
    "source_quote": "Sirkus 4-6v. - Sunnuntai klo 10:05-10:50, EspviiNap1/05, Syyskausi 23.8.-20.12.2026 (16 kertaa), 245,00 €, Ilmoittaudu jonoon",
    "activity_id": "esp-2026-0246",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://parkourakatemia.fi/espoo/ilmoittautuminen/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://uusi.pilvikanava.fi/parkourakatemia/",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 245,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sirkus ei ole omana lajina rajauksen lajilistalla; luokiteltu voimisteluksi samalla periaatteella kuin parkour/ninja/trampoliini (CLAUDE.md lajisääntö).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-050",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/parkour_pilvikanava_alle_kouluikaiset.txt",
      "capture_sha256": "eeaebfdc7c193bc816ef082741f79486d02ee507d8f3e969d88658efff7c8fd5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 62.14,
    "monthly_cost_basis": "245.0 € / term jaettuna 3.94 kuukaudelle (2026-08-23–2026-12-20, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "geokoodattu osoite -> sub_district 'Niittykumpu' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia (Espoo)",
    "group_name": "Perheryhmä (3-6v lapsi + aikuinen) - Sunnuntai",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3-6-vuotiaat lapsi + aikuinen",
    "parent_child": "yes",
    "venue_name": "Espoon Parkour Akatemia ja Sirkuskoulu",
    "address": "Vesikuja 4 B, Olarinluoma, Espoo",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "10:55",
    "end_time": "11:40",
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-20",
    "sessions_count": 16,
    "price_eur": 265.0,
    "price_basis": "45 min: 245e / Perheet 45min: 265e, 60min: 285e (syyskausi 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department:18 subject:115 category:29",
    "source_quote": "Perheryhmä (3-6v lapsi + aikuinen) - Sunnuntai klo 10:55-11:40, EspviiPer1/06, Syyskausi 23.8.-20.12.2026 (16 kertaa), 265,00 €, Ilmoittaudu jonoon",
    "activity_id": "esp-2026-0247",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 265.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://parkourakatemia.fi/espoo/ilmoittautuminen/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-23",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://uusi.pilvikanava.fi/parkourakatemia/",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 265,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-051",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/parkour_pilvikanava_perheet.txt",
      "capture_sha256": "5d46bed66248257b35db1979034f99d877aaf551c6a92d8560502d590fcebdf6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 67.22,
    "monthly_cost_basis": "265.0 € / term jaettuna 3.94 kuukaudelle (2026-08-23–2026-12-20, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "geokoodattu osoite -> sub_district 'Niittykumpu' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia (Espoo)",
    "group_name": "Perheryhmä (3-6v lapsi + aikuinen) - Tiistai 16:45",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3-6-vuotiaat lapsi + aikuinen",
    "parent_child": "yes",
    "venue_name": "Espoon Parkour Akatemia ja Sirkuskoulu",
    "address": "Vesikuja 4 B, Olarinluoma, Espoo",
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": 16,
    "price_eur": 265.0,
    "price_basis": "45 min: 245e / Perheet 45min: 265e, 60min: 285e (syyskausi 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department:18 subject:115 category:29",
    "source_quote": "Perheryhmä (3-6v lapsi + aikuinen) - Tiistai klo 16:45-17:30, EspviiPer1/04, Syyskausi 18.8.-8.12.2026 (16 kertaa), 265,00 €, Ilmoittaudu jonoon",
    "activity_id": "esp-2026-0248",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 265.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://parkourakatemia.fi/espoo/ilmoittautuminen/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://uusi.pilvikanava.fi/parkourakatemia/",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 265,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-052",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/parkour_pilvikanava_perheet.txt",
      "capture_sha256": "5d46bed66248257b35db1979034f99d877aaf551c6a92d8560502d590fcebdf6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 71.38,
    "monthly_cost_basis": "265.0 € / term jaettuna 3.71 kuukaudelle (2026-08-18–2026-12-08, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "geokoodattu osoite -> sub_district 'Niittykumpu' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia (Espoo)",
    "group_name": "Perheryhmä (3-6v lapsi + aikuinen) - Tiistai 17:30",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3-6-vuotiaat lapsi + aikuinen",
    "parent_child": "yes",
    "venue_name": "Espoon Parkour Akatemia ja Sirkuskoulu",
    "address": "Vesikuja 4 B, Olarinluoma, Espoo",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-18",
    "end_date": "2026-12-08",
    "sessions_count": 16,
    "price_eur": 265.0,
    "price_basis": "45 min: 245e / Perheet 45min: 265e, 60min: 285e (syyskausi 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department:18 subject:115 category:29",
    "source_quote": "Perheryhmä (3-6v lapsi + aikuinen) - Tiistai klo 17:30-18:15, EspviiPer1/05, Syyskausi 18.8.-8.12.2026 (16 kertaa), 265,00 €, Ilmoittaudu jonoon",
    "activity_id": "esp-2026-0249",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 265.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://parkourakatemia.fi/espoo/ilmoittautuminen/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-18",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://uusi.pilvikanava.fi/parkourakatemia/",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 265,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-053",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/parkour_pilvikanava_perheet.txt",
      "capture_sha256": "5d46bed66248257b35db1979034f99d877aaf551c6a92d8560502d590fcebdf6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 71.38,
    "monthly_cost_basis": "265.0 € / term jaettuna 3.71 kuukaudelle (2026-08-18–2026-12-08, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "geokoodattu osoite -> sub_district 'Niittykumpu' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia (Espoo)",
    "group_name": "Perheryhmä (4-8v lapsi + aikuinen) - Lauantai 10",
    "min_age": 4,
    "max_age": 8,
    "eligibility_text": "4-8-vuotiaat lapsi + aikuinen",
    "parent_child": "yes",
    "venue_name": "Espoon Parkour Akatemia ja Sirkuskoulu",
    "address": "Vesikuja 4 B, Olarinluoma, Espoo",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "11:00",
    "season": "syksy 2026",
    "start_date": "2026-08-22",
    "end_date": "2026-12-19",
    "sessions_count": 16,
    "price_eur": 285.0,
    "price_basis": "45 min: 245e / Perheet 45min: 265e, 60min: 285e (syyskausi 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department:18 subject:115 category:29",
    "source_quote": "Perheryhmä (4-8v lapsi + aikuinen) - Lauantai klo 10.00-11.00, EspviiPer1/01, Syyskausi 22.8.-19.12.2026 (16 kertaa), 285,00 €, Yksi paikka vapaana",
    "activity_id": "esp-2026-0250",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 285.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://parkourakatemia.fi/espoo/ilmoittautuminen/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://uusi.pilvikanava.fi/parkourakatemia/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 285,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-054",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/parkour_pilvikanava_perheet.txt",
      "capture_sha256": "5d46bed66248257b35db1979034f99d877aaf551c6a92d8560502d590fcebdf6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 72.29,
    "monthly_cost_basis": "285.0 € / term jaettuna 3.94 kuukaudelle (2026-08-22–2026-12-19, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "geokoodattu osoite -> sub_district 'Niittykumpu' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia (Espoo)",
    "group_name": "Perheryhmä (4-8v lapsi + aikuinen) - Lauantai 11",
    "min_age": 4,
    "max_age": 8,
    "eligibility_text": "4-8-vuotiaat lapsi + aikuinen",
    "parent_child": "yes",
    "venue_name": "Espoon Parkour Akatemia ja Sirkuskoulu",
    "address": "Vesikuja 4 B, Olarinluoma, Espoo",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": "2026-08-22",
    "end_date": "2026-12-19",
    "sessions_count": 16,
    "price_eur": 285.0,
    "price_basis": "45 min: 245e / Perheet 45min: 265e, 60min: 285e (syyskausi 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department:18 subject:115 category:29",
    "source_quote": "Perheryhmä (4-8v lapsi + aikuinen) - Lauantai klo 11.00-12.00, EspviiPer1/02, Syyskausi 22.8.-19.12.2026 (16 kertaa), 285,00 €, 7 paikkaa vapaana",
    "activity_id": "esp-2026-0251",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 285.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://parkourakatemia.fi/espoo/ilmoittautuminen/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://uusi.pilvikanava.fi/parkourakatemia/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 285,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-055",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/parkour_pilvikanava_perheet.txt",
      "capture_sha256": "5d46bed66248257b35db1979034f99d877aaf551c6a92d8560502d590fcebdf6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 72.29,
    "monthly_cost_basis": "285.0 € / term jaettuna 3.94 kuukaudelle (2026-08-22–2026-12-19, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "geokoodattu osoite -> sub_district 'Niittykumpu' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Parkour Akatemia (Espoo)",
    "group_name": "Perheryhmä (5-8v lapsi + aikuinen) - Perjantai",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5-8-vuotiaat lapsi + aikuinen",
    "parent_child": "yes",
    "venue_name": "Espoon Parkour Akatemia ja Sirkuskoulu",
    "address": "Vesikuja 4 B, Olarinluoma, Espoo",
    "district": null,
    "weekday": "perjantai",
    "start_time": "16:45",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-21",
    "end_date": "2026-12-11",
    "sessions_count": 16,
    "price_eur": 285.0,
    "price_basis": "45 min: 245e / Perheet 45min: 265e, 60min: 285e (syyskausi 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://uusi.pilvikanava.fi/parkourakatemia/fi/?q=department:18 subject:115 category:29",
    "source_quote": "Perheryhmä (5-8v lapsi + aikuinen) - Perjantai klo 16:45-17:45, EspviiPer1/03, Syyskausi 21.8.-11.12.2026 (16 kertaa), 285,00 €, Ilmoittaudu jonoon",
    "activity_id": "esp-2026-0252",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 285.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://parkourakatemia.fi/espoo/ilmoittautuminen/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-21",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://uusi.pilvikanava.fi/parkourakatemia/",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 285,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": {
      "verified": true,
      "children_count": 1,
      "adults_count": 1
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-056",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/parkour_pilvikanava_perheet.txt",
      "capture_sha256": "5d46bed66248257b35db1979034f99d877aaf551c6a92d8560502d590fcebdf6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 76.77,
    "monthly_cost_basis": "285.0 € / term jaettuna 3.71 kuukaudelle (2026-08-21–2026-12-11, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Niittykumpu",
    "district_basis": "geokoodattu osoite -> sub_district 'Niittykumpu' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Gymnastics Academy Finland Ry",
    "group_name": "Rubiinit - Voimistelukoulu (4-7v)",
    "min_age": 4,
    "max_age": 7,
    "eligibility_text": "4-7-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Esport Arena / Esport Center (GATC)",
    "address": "Koivu-Mankkaan tie 3, 02200 Espoo",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kuukausimaksu (ryhmän omalta sivulta, Harjoitusajat & maksut)",
    "membership_fee_eur": 25.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://gymnasticsacademy.fi/voimistelukoulu/",
    "source_quote": "TIISTAI 17:30-18:30, KUUKAUSIMAKSU 40€/kk, JÄSENMAKSU 25€/kausi; 'Ryhmä on tarkoitettu 4-7 vuotiaille lapsille.'",
    "activity_id": "esp-2026-0253",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 65.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://gymnasticsacademy.fi/voimistelukoulu/",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 25,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "GAF jäsenmaksu, kausittainen (syksy 2026/vuosi 2027)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kuukausimaksu ryhmän omalta sivulta (lähempänä Suomisport-ilmoittautumista) käytetty ensisijaisena; HUOM: yleinen hinnasto-sivu (gymnasticsacademy.fi/hinnasto/) ilmoittaa ryhmän nimellä 'Rubiinit / Esivalmennus 4-7v kevät/syksy (kausimaksu) 180€/150€' - ikä täsmää mutta hinnoittelumalli (kausimaksu vs kuukausimaksu) ja summa poikkeavat omasta ryhmäsivusta; kirjattu ristiriitana (sääntö 8: tarkempi/ilmoittautumista lähempänä oleva ryhmäsivu voittaa). Espoo-QA korjaus 24.9.2026: availability_status palautettu unknown-tilaan (lähteessä ei eksplisiittistä saatavuusnäyttöä).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-057",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/gaf_voimistelukoulu.html",
      "capture_sha256": "058f09f18d5d18324c58d1ae891a92308789daa038d79a549624aee471d84fea",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 42.08,
    "monthly_cost_basis": "40.0 €/kk + membership 25 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Gymnastics Academy Finland Ry",
    "group_name": "Safiirit - Joukkuevoimistelun harrasteryhmä (5-7v)",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Esport Arena / Esport Center (GATC)",
    "address": "Koivu-Mankkaan tie 3, 02200 Espoo",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:30",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 60.0,
    "price_basis": "Kuukausimaksu (ryhmän omalta sivulta, Harjoitusajat & maksut)",
    "membership_fee_eur": 25.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://gymnasticsacademy.fi/safiirit/",
    "source_quote": "TORSTAI 17:30-19, Safiirit kuukausimaksu 60€/kk, Jäsenmaksu 1x/vuosi 25€/kausi; 'Joukkuevoimistelun harrasteryhmä 5-7 vuotiaille lapsille.'",
    "activity_id": "esp-2026-0254",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 85.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://gymnasticsacademy.fi/safiirit/",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 60,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 25,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "GAF jäsenmaksu, kausittainen (syksy 2026/vuosi 2027)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kuukausimaksu ryhmän omalta sivulta (lähempänä Suomisport-ilmoittautumista) käytetty ensisijaisena; Espoo-QA korjaus 24.9.2026: availability_status palautettu unknown-tilaan (lähteessä ei eksplisiittistä saatavuusnäyttöä).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-058",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/gaf_safiirit.html",
      "capture_sha256": "0de67fe24d2ed75e3f2357e929a56f2c611e59fb4b7a9faddbf5df1ccedb0b0c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 62.08,
    "monthly_cost_basis": "60.0 €/kk + membership 25 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Gymnastics Academy Finland Ry",
    "group_name": "Ninja-akatemia (6-10v)",
    "min_age": 6,
    "max_age": 10,
    "eligibility_text": "6-10-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Esport Arena / Esport Center (GATC)",
    "address": "Koivu-Mankkaan tie 3, 02200 Espoo",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 60.0,
    "price_basis": "Kuukausimaksu (ryhmän omalta sivulta, Harjoitusajat & maksut)",
    "membership_fee_eur": 25.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://gymnasticsacademy.fi/ninja-akatemia/",
    "source_quote": "Keskiviikko 16:30-17:15, Kuukausimaksu 60€, Jäsenmaksu (kausittainen, kevät-/syyskausi) 25€; 'KENELLE? 6-10-vuotiaille tytöille ja pojille'",
    "activity_id": "esp-2026-0255",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 85.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://gymnasticsacademy.fi/ninja-akatemia/",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 60,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 25,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "GAF jäsenmaksu, kausittainen (syksy 2026/vuosi 2027)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kuukausimaksu ryhmän omalta sivulta (lähempänä Suomisport-ilmoittautumista) käytetty ensisijaisena; Sopii vain 6-vuotiaille (rajaus 21.9.2026): alaraja 6 osuu 0-6-vuotiaisiin. Espoo-QA korjaus 24.9.2026: availability_status palautettu unknown-tilaan (lähteessä ei eksplisiittistä saatavuusnäyttöä).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-059",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/gaf_ninja_akatemia.html",
      "capture_sha256": "834e5ee82c8f7ab6c559ee14644f7337883cce378727338af06f0538f745fd07",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 62.08,
    "monthly_cost_basis": "60.0 €/kk + membership 25 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon sirkus- ja teatterikoulu Esko",
    "group_name": "Sirkusteatteritenavat 5-6v (Monikko)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Monikko, Veräjäpellonkatu 2-4, ovi C1",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:15",
    "end_time": "18:15",
    "season": "syyslukukausi 2026",
    "start_date": "2026-08-17",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "Sirkusteatteritenavat, opetusta 60 min/viikko - 210e (lukukausimaksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.esko.fi/opetus-ja-tuntikuvaukset",
    "source_quote": "Sirkusteatteritenavat 5-6v (Monikko) | maanantai klo 17:15-18:15 | Monikko, Veräjäpellonkatu 2-4, ovi C1",
    "activity_id": "esp-2026-0256",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 210.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.esko.fi/info",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää Lähi-Tapiolan tapaturmavakuutuksen"
      }
    ],
    "price_options": [
      {
        "label": "Perhealennus saman perheen seuraavasta jäsenestä",
        "amount_eur": 160.0,
        "applies_if": "saman perheen seuraava/toinen jäsen",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sirkusteatteritenavat: ei omaa lajiluokkaa rajauksen lajilistalla, luokiteltu voimisteluksi (vrt. Sirkus Keikaus -provider). Ei sekoiteta päiväkotivierailuryhmiin ('Sirkusteatteritenavat/päiväkoti'), jotka jätetty pois (ei avointa ilmoittautumista). Espoo-QA korjaus 24.9.2026: start_date/end_date nollattu, kun ei täsmännyt weekday-kenttään; kauden rajat season_start_date/season_end_date-kentissä. availability_status palautettu unknown-tilaan (lähteessä ei eksplisiittistä saatavuusnäyttöä).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-062",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/esko_lukujarjestys_2026-2027.pdf",
      "capture_sha256": "807d04381435872ca0bdc8582a9cfd4527c8e55d6e8864705d796f24197ed504",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 54.17,
    "monthly_cost_basis": "210.0 € / term jaettuna 3.88 kuukaudelle (2026-08-17–2026-12-12, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon sirkus- ja teatterikoulu Esko",
    "group_name": "Sirkusteatteritenavat 5-6v (Kilonpuiston koulu)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kilonpuiston koulu, auditorio, Kilonpuisto 5",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:30",
    "end_time": "17:30",
    "season": "syyslukukausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "Sirkusteatteritenavat, opetusta 60 min/viikko - 210e (lukukausimaksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.esko.fi/opetus-ja-tuntikuvaukset",
    "source_quote": "Sirkusteatteritenavat 5-6v (Kilonpuiston koulu) | tiistai klo 16:30-17:30 | Kilonpuiston koulu, auditorio, Kilonpuisto 5",
    "activity_id": "esp-2026-0257",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 210.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.esko.fi/info",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää Lähi-Tapiolan tapaturmavakuutuksen"
      }
    ],
    "price_options": [
      {
        "label": "Perhealennus saman perheen seuraavasta jäsenestä",
        "amount_eur": 160.0,
        "applies_if": "saman perheen seuraava/toinen jäsen",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sirkusteatteritenavat: ei omaa lajiluokkaa rajauksen lajilistalla, luokiteltu voimisteluksi. Espoo-QA korjaus 24.9.2026: start_date/end_date nollattu, kun ei täsmännyt weekday-kenttään; kauden rajat season_start_date/season_end_date-kentissä. availability_status palautettu unknown-tilaan (lähteessä ei eksplisiittistä saatavuusnäyttöä).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-063",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/esko_lukujarjestys_2026-2027.pdf",
      "capture_sha256": "807d04381435872ca0bdc8582a9cfd4527c8e55d6e8864705d796f24197ed504",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 54.17,
    "monthly_cost_basis": "210.0 € / term jaettuna 3.88 kuukaudelle (2026-08-17–2026-12-12, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Espoon sirkus- ja teatterikoulu Esko",
    "group_name": "Sirkusteatteritenavat 5-6v (Kivimiehen monitoimisali)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kivimiehen monitoimisali, Lämpömiehenkuja 2, Otaniemi",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "16:30",
    "end_time": "17:30",
    "season": "syyslukukausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 210.0,
    "price_basis": "Sirkusteatteritenavat, opetusta 60 min/viikko - 210e (lukukausimaksu)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.esko.fi/opetus-ja-tuntikuvaukset",
    "source_quote": "Sirkusteatteritenavat 5-6v (Kivimiehen monitoimisali) | torstai klo 16:30-17:30 | Kivimiehen monitoimisali, Lämpömiehenkuja 2, Otaniemi",
    "activity_id": "esp-2026-0258",
    "city": "Espoo",
    "checked_at": "2026-09-23",
    "known_min_total_eur": 210.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.esko.fi/info",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-23",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 210,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää Lähi-Tapiolan tapaturmavakuutuksen"
      }
    ],
    "price_options": [
      {
        "label": "Perhealennus saman perheen seuraavasta jäsenestä",
        "amount_eur": 160.0,
        "applies_if": "saman perheen seuraava/toinen jäsen",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sirkusteatteritenavat: ei omaa lajiluokkaa rajauksen lajilistalla, luokiteltu voimisteluksi. Erottuu samassa salissa klo 14.30-15.30 järjestettävästä 'Sirkusteatteritenavat/päiväkoti' -päiväkotivierailusta, joka ei ole avoin ilmoittautumisryhmä. Espoo-QA korjaus 24.9.2026: start_date/end_date nollattu, kun ei täsmännyt weekday-kenttään; kauden rajat season_start_date/season_end_date-kentissä. availability_status palautettu unknown-tilaan (lähteessä ei eksplisiittistä saatavuusnäyttöä).",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-23_08.json",
      "staging_id": "batch_espoo_2026-09-23_08-064",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_08/esko_lukujarjestys_2026-2027.pdf",
      "capture_sha256": "807d04381435872ca0bdc8582a9cfd4527c8e55d6e8864705d796f24197ed504",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 54.17,
    "monthly_cost_basis": "210.0 € / term jaettuna 3.88 kuukaudelle (2026-08-17–2026-12-12, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Espoon Tapiot",
    "group_name": "Kauklahden liikkari Delfiinit 2024-2023-syntyneet (aikuisen kanssa)",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2023-2024-syntyneet",
    "parent_child": "yes",
    "venue_name": "Kylätalo Palttina",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syyskausi 2026 (31.8.2026-30.11.2026)",
    "start_date": "2026-08-31",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Syksyn 2026 liikkarimaksu 135 € + jäsenmaksu 24 € + lisenssi 8 €.",
    "membership_fee_eur": 24,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontapiot.fi/kauklahden-liikkari/",
    "source_quote": "Kauklahden liikkari Syyskausi 2026 Kausi 31.8.2026-30.11.2026 ... Harjoituspaikka Kylätalo Palttina ... Ryhmät Delfiinit 2024-2023-syntyneet (aikuisen kanssa) Maanantai 17:15-18:00 Hait 2022-2021-syntyneet Maanantai 18:05-18:50 Hinta 135 € + jäsenmaksu 24€ + lisenssi 8€",
    "activity_id": "esp-2026-0259",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 167.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2023,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Liikkarin syyskauden 2026 maksu 135 €."
      },
      {
        "type": "membership",
        "amount_eur": 24,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Espoon Tapioiden jäsenmaksu vuodelle 2026."
      },
      {
        "type": "license",
        "amount_eur": 8,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Ryhmälisenssi (T/P7-sarjalaiset ja nuoremmat), sisältää tapaturmavakuutuksen, ei kilpailulupaa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_10.json",
      "staging_id": "batch_espoo_2026-09-24_10-001",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Espoon Tapiot",
    "group_name": "Kauklahden liikkari Hait 2022-2021-syntyneet",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2021-2022-syntyneet",
    "parent_child": "no",
    "venue_name": "Kylätalo Palttina",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:05",
    "end_time": "18:50",
    "season": "syyskausi 2026 (31.8.2026-30.11.2026)",
    "start_date": "2026-08-31",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Syksyn 2026 liikkarimaksu 135 € + jäsenmaksu 24 € + lisenssi 8 €.",
    "membership_fee_eur": 24,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontapiot.fi/kauklahden-liikkari/",
    "source_quote": "Kauklahden liikkari Syyskausi 2026 Kausi 31.8.2026-30.11.2026 ... Harjoituspaikka Kylätalo Palttina ... Ryhmät Delfiinit 2024-2023-syntyneet (aikuisen kanssa) Maanantai 17:15-18:00 Hait 2022-2021-syntyneet Maanantai 18:05-18:50 Hinta 135 € + jäsenmaksu 24€ + lisenssi 8€",
    "activity_id": "esp-2026-0260",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 167.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2021,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Liikkarin syyskauden 2026 maksu 135 €."
      },
      {
        "type": "membership",
        "amount_eur": 24,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Espoon Tapioiden jäsenmaksu vuodelle 2026."
      },
      {
        "type": "license",
        "amount_eur": 8,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Ryhmälisenssi (T/P7-sarjalaiset ja nuoremmat), sisältää tapaturmavakuutuksen, ei kilpailulupaa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_10.json",
      "staging_id": "batch_espoo_2026-09-24_10-002",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Espoon Tapiot",
    "group_name": "Mäkkylän liikkari Sitruunaperhoset 2024-2023-syntyneet (aikuisen kanssa)",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2023-2024-syntyneet",
    "parent_child": "yes",
    "venue_name": "Postipuun koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syyskausi 2026 (3.9.2026-10.12.2026)",
    "start_date": "2026-09-03",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Syksyn 2026 liikkarimaksu 135 € + jäsenmaksu 24 € + lisenssi 8 €.",
    "membership_fee_eur": 24,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontapiot.fi/makkyla-liikkari/",
    "source_quote": "Mäkkylän liikkari Syyskausi 2026 Kausi 3.9.2026-10.12.2026 ... Harjoituspaikka Postipuun koulu ... Ryhmät Sitruunaperhoset 2024-2023-syntyneet (aikuisen kanssa) Torstai 17.00 – 17:45 Ritariperhoset 2023-syntyneet (aikuisen kanssa) Torstai 17:50 – 18:35 Nokkosperhoset 2022-syntyneet Torstai 18:40-19:25 Hinta 135 € + jäsenmaksu 24 € + lisenssi 8 €",
    "activity_id": "esp-2026-0261",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 167.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2023,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Liikkarin syyskauden 2026 maksu 135 €."
      },
      {
        "type": "membership",
        "amount_eur": 24,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Espoon Tapioiden jäsenmaksu vuodelle 2026."
      },
      {
        "type": "license",
        "amount_eur": 8,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Ryhmälisenssi (T/P7-sarjalaiset ja nuoremmat), sisältää tapaturmavakuutuksen, ei kilpailulupaa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_10.json",
      "staging_id": "batch_espoo_2026-09-24_10-003",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Espoon Tapiot",
    "group_name": "Mäkkylän liikkari Ritariperhoset 2023-syntyneet (aikuisen kanssa)",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2023-syntyneet",
    "parent_child": "yes",
    "venue_name": "Postipuun koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:50",
    "end_time": "18:35",
    "season": "syyskausi 2026 (3.9.2026-10.12.2026)",
    "start_date": "2026-09-03",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Syksyn 2026 liikkarimaksu 135 € + jäsenmaksu 24 € + lisenssi 8 €.",
    "membership_fee_eur": 24,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontapiot.fi/makkyla-liikkari/",
    "source_quote": "Mäkkylän liikkari Syyskausi 2026 Kausi 3.9.2026-10.12.2026 ... Harjoituspaikka Postipuun koulu ... Ryhmät Sitruunaperhoset 2024-2023-syntyneet (aikuisen kanssa) Torstai 17.00 – 17:45 Ritariperhoset 2023-syntyneet (aikuisen kanssa) Torstai 17:50 – 18:35 Nokkosperhoset 2022-syntyneet Torstai 18:40-19:25 Hinta 135 € + jäsenmaksu 24 € + lisenssi 8 €",
    "activity_id": "esp-2026-0262",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 167.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2023,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Liikkarin syyskauden 2026 maksu 135 €."
      },
      {
        "type": "membership",
        "amount_eur": 24,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Espoon Tapioiden jäsenmaksu vuodelle 2026."
      },
      {
        "type": "license",
        "amount_eur": 8,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Ryhmälisenssi (T/P7-sarjalaiset ja nuoremmat), sisältää tapaturmavakuutuksen, ei kilpailulupaa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_10.json",
      "staging_id": "batch_espoo_2026-09-24_10-004",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Espoon Tapiot",
    "group_name": "Mäkkylän liikkari Nokkosperhoset 2022-syntyneet",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-syntyneet",
    "parent_child": "no",
    "venue_name": "Postipuun koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "18:40",
    "end_time": "19:25",
    "season": "syyskausi 2026 (3.9.2026-10.12.2026)",
    "start_date": "2026-09-03",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Syksyn 2026 liikkarimaksu 135 € + jäsenmaksu 24 € + lisenssi 8 €.",
    "membership_fee_eur": 24,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontapiot.fi/makkyla-liikkari/",
    "source_quote": "Mäkkylän liikkari Syyskausi 2026 Kausi 3.9.2026-10.12.2026 ... Harjoituspaikka Postipuun koulu ... Ryhmät Sitruunaperhoset 2024-2023-syntyneet (aikuisen kanssa) Torstai 17.00 – 17:45 Ritariperhoset 2023-syntyneet (aikuisen kanssa) Torstai 17:50 – 18:35 Nokkosperhoset 2022-syntyneet Torstai 18:40-19:25 Hinta 135 € + jäsenmaksu 24 € + lisenssi 8 €",
    "activity_id": "esp-2026-0263",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 167.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Liikkarin syyskauden 2026 maksu 135 €."
      },
      {
        "type": "membership",
        "amount_eur": 24,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Espoon Tapioiden jäsenmaksu vuodelle 2026."
      },
      {
        "type": "license",
        "amount_eur": 8,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Ryhmälisenssi (T/P7-sarjalaiset ja nuoremmat), sisältää tapaturmavakuutuksen, ei kilpailulupaa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_10.json",
      "staging_id": "batch_espoo_2026-09-24_10-005",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Espoon Tapiot",
    "group_name": "Saunalahden liikkari Kirput 2024-2023-syntyneet (aikuisen kanssa)",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2023-2024-syntyneet",
    "parent_child": "yes",
    "venue_name": "Saunalahden koulu, tanssisali",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syyskausi 2026 (1.9.2026-1.12.2026)",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Syksyn 2026 liikkarimaksu 135 € + jäsenmaksu 24 € + lisenssi 8 €.",
    "membership_fee_eur": 24,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontapiot.fi/saunalahden-liikkari/",
    "source_quote": "Saunalahden liikkari Syyskausi 2026 Kausi 1.9.2026-1.12.2026 ... Harjoituspaikka Saunalahden koulu, tanssisali ... Ryhmät Kirput 2024-2023-syntyneet (aikuisen kanssa) Tiistai 17:00-17:45 Leppäkertut 2023-syntyneet (aikuisen kanssa) Tiistai 17:50-18:40 Kovakuoriaiset 2022-syntyneet Tiistai 18:45-19:35 Hinta 135 € + jäsenmaksu 24€ + lisenssi 8€",
    "activity_id": "esp-2026-0264",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 167.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2023,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Liikkarin syyskauden 2026 maksu 135 €."
      },
      {
        "type": "membership",
        "amount_eur": 24,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Espoon Tapioiden jäsenmaksu vuodelle 2026."
      },
      {
        "type": "license",
        "amount_eur": 8,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Ryhmälisenssi (T/P7-sarjalaiset ja nuoremmat), sisältää tapaturmavakuutuksen, ei kilpailulupaa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_10.json",
      "staging_id": "batch_espoo_2026-09-24_10-006",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Espoon Tapiot",
    "group_name": "Saunalahden liikkari Leppäkertut 2023-syntyneet (aikuisen kanssa)",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2023-syntyneet",
    "parent_child": "yes",
    "venue_name": "Saunalahden koulu, tanssisali",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:50",
    "end_time": "18:40",
    "season": "syyskausi 2026 (1.9.2026-1.12.2026)",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Syksyn 2026 liikkarimaksu 135 € + jäsenmaksu 24 € + lisenssi 8 €.",
    "membership_fee_eur": 24,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontapiot.fi/saunalahden-liikkari/",
    "source_quote": "Saunalahden liikkari Syyskausi 2026 Kausi 1.9.2026-1.12.2026 ... Harjoituspaikka Saunalahden koulu, tanssisali ... Ryhmät Kirput 2024-2023-syntyneet (aikuisen kanssa) Tiistai 17:00-17:45 Leppäkertut 2023-syntyneet (aikuisen kanssa) Tiistai 17:50-18:40 Kovakuoriaiset 2022-syntyneet Tiistai 18:45-19:35 Hinta 135 € + jäsenmaksu 24€ + lisenssi 8€",
    "activity_id": "esp-2026-0265",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 167.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2023,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Liikkarin syyskauden 2026 maksu 135 €."
      },
      {
        "type": "membership",
        "amount_eur": 24,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Espoon Tapioiden jäsenmaksu vuodelle 2026."
      },
      {
        "type": "license",
        "amount_eur": 8,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Ryhmälisenssi (T/P7-sarjalaiset ja nuoremmat), sisältää tapaturmavakuutuksen, ei kilpailulupaa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_10.json",
      "staging_id": "batch_espoo_2026-09-24_10-007",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Espoon Tapiot",
    "group_name": "Saunalahden liikkari Kovakuoriaiset 2022-syntyneet",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-syntyneet",
    "parent_child": "no",
    "venue_name": "Saunalahden koulu, tanssisali",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:45",
    "end_time": "19:35",
    "season": "syyskausi 2026 (1.9.2026-1.12.2026)",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Syksyn 2026 liikkarimaksu 135 € + jäsenmaksu 24 € + lisenssi 8 €.",
    "membership_fee_eur": 24,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontapiot.fi/saunalahden-liikkari/",
    "source_quote": "Saunalahden liikkari Syyskausi 2026 Kausi 1.9.2026-1.12.2026 ... Harjoituspaikka Saunalahden koulu, tanssisali ... Ryhmät Kirput 2024-2023-syntyneet (aikuisen kanssa) Tiistai 17:00-17:45 Leppäkertut 2023-syntyneet (aikuisen kanssa) Tiistai 17:50-18:40 Kovakuoriaiset 2022-syntyneet Tiistai 18:45-19:35 Hinta 135 € + jäsenmaksu 24€ + lisenssi 8€",
    "activity_id": "esp-2026-0266",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 167.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Liikkarin syyskauden 2026 maksu 135 €."
      },
      {
        "type": "membership",
        "amount_eur": 24,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Espoon Tapioiden jäsenmaksu vuodelle 2026."
      },
      {
        "type": "license",
        "amount_eur": 8,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Ryhmälisenssi (T/P7-sarjalaiset ja nuoremmat), sisältää tapaturmavakuutuksen, ei kilpailulupaa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_10.json",
      "staging_id": "batch_espoo_2026-09-24_10-008",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Espoon Tapiot",
    "group_name": "Kameleontenin urheilukoulu Kuonokkaat 2022-2021-syntyneet hallikausi 2026-2027",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-2021-syntyneet (4-5 v)",
    "parent_child": "no",
    "venue_name": "Kameleonten",
    "address": null,
    "district": "Leppävaara",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "hallikausi tiistai 2026-2027 (15.9.2026-20.4.2027)",
    "start_date": "2026-09-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 270.0,
    "price_basis": "Hinta 1h/1 kerta viikossa: 270 € + jäsenmaksu 24 € + lisenssi 8 €.",
    "membership_fee_eur": 24,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontapiot.fi/kameleontenin_yleisurheilukoulu/",
    "source_quote": "Hinta 1h / 1 kerta viikossa: 270 € + jäsenmaksu 24 € + lisenssimaksu Hinta 1h / 2 kertaa viikossa: 485 € + jäsenmaksu 24 € + lisenssimaksu",
    "activity_id": "esp-2026-0267",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 302.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "full_season",
    "price_period_start": "2026-09-15",
    "price_period_end": "2027-04-20",
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2021,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 270,
        "mandatory": true,
        "included": true,
        "recurrence": "full_season",
        "applies_if": null,
        "note": "1h/1 kerta viikossa hallikaudella 2026-2027."
      },
      {
        "type": "membership",
        "amount_eur": 24,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Espoon Tapioiden jäsenmaksu vuodelle 2026."
      },
      {
        "type": "license",
        "amount_eur": 8,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Ryhmälisenssi (T/P7-sarjalaiset ja nuoremmat)."
      }
    ],
    "price_options": [
      {
        "label": "2 kertaa viikossa",
        "amount_eur": 485.0,
        "applies_if": "2 harjoitusta viikossa 1x:n sijaan",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja 4-5 v (2022-2021-syntyneet) - alaraja 4 <= 6, kuuluu 0-6 v:n rajaukseen.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_10.json",
      "staging_id": "batch_espoo_2026-09-24_10-009",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 40.36,
    "monthly_cost_basis": "270.0 € / full_season jaettuna 7.16 kuukaudelle (2026-09-15–2027-04-20, price_period_start) + membership 24 €/v ÷ 12 + license 8 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Leppävaara",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Espoon Tapiot",
    "group_name": "Kameleontenin urheilukoulu Hyppyjänikset 2021-syntyneet hallikausi 2026-2027",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2021-syntyneet (5 v)",
    "parent_child": "no",
    "venue_name": "Kameleonten",
    "address": null,
    "district": "Leppävaara",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "hallikausi tiistai 2026-2027 (15.9.2026-20.4.2027)",
    "start_date": "2026-09-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 270.0,
    "price_basis": "Hinta 1h/1 kerta viikossa: 270 € + jäsenmaksu 24 € + lisenssi 8 €.",
    "membership_fee_eur": 24,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontapiot.fi/kameleontenin_yleisurheilukoulu/",
    "source_quote": "Hinta 1h / 1 kerta viikossa: 270 € + jäsenmaksu 24 € + lisenssimaksu Hinta 1h / 2 kertaa viikossa: 485 € + jäsenmaksu 24 € + lisenssimaksu",
    "activity_id": "esp-2026-0268",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 302.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "full_season",
    "price_period_start": "2026-09-15",
    "price_period_end": "2027-04-20",
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2021,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 270,
        "mandatory": true,
        "included": true,
        "recurrence": "full_season",
        "applies_if": null,
        "note": "1h/1 kerta viikossa hallikaudella 2026-2027."
      },
      {
        "type": "membership",
        "amount_eur": 24,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Espoon Tapioiden jäsenmaksu vuodelle 2026."
      },
      {
        "type": "license",
        "amount_eur": 8,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Ryhmälisenssi (T/P7-sarjalaiset ja nuoremmat)."
      }
    ],
    "price_options": [
      {
        "label": "2 kertaa viikossa",
        "amount_eur": 485.0,
        "applies_if": "2 harjoitusta viikossa 1x:n sijaan",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja 5 v (2021-syntyneet) - alaraja 5 <= 6, kuuluu 0-6 v:n rajaukseen.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_10.json",
      "staging_id": "batch_espoo_2026-09-24_10-010",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 40.36,
    "monthly_cost_basis": "270.0 € / full_season jaettuna 7.16 kuukaudelle (2026-09-15–2027-04-20, price_period_start) + membership 24 €/v ÷ 12 + license 8 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Leppävaara",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Espoon Tapiot",
    "group_name": "Kameleontenin urheilukoulu Makit 2020-syntyneet hallikausi 2026-2027",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-syntyneet (6 v)",
    "parent_child": "no",
    "venue_name": "Kameleonten",
    "address": null,
    "district": "Leppävaara",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "hallikausi tiistai 2026-2027 (15.9.2026-20.4.2027)",
    "start_date": "2026-09-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 270.0,
    "price_basis": "Hinta 1h/1 kerta viikossa: 270 € + jäsenmaksu 24 € + lisenssi 8 €.",
    "membership_fee_eur": 24,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://espoontapiot.fi/kameleontenin_yleisurheilukoulu/",
    "source_quote": "Hinta 1h / 1 kerta viikossa: 270 € + jäsenmaksu 24 € + lisenssimaksu Hinta 1h / 2 kertaa viikossa: 485 € + jäsenmaksu 24 € + lisenssimaksu",
    "activity_id": "esp-2026-0269",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 302.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "full_season",
    "price_period_start": "2026-09-15",
    "price_period_end": "2027-04-20",
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2020,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 270,
        "mandatory": true,
        "included": true,
        "recurrence": "full_season",
        "applies_if": null,
        "note": "1h/1 kerta viikossa hallikaudella 2026-2027."
      },
      {
        "type": "membership",
        "amount_eur": 24,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Espoon Tapioiden jäsenmaksu vuodelle 2026."
      },
      {
        "type": "license",
        "amount_eur": 8,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Ryhmälisenssi (T/P7-sarjalaiset ja nuoremmat)."
      }
    ],
    "price_options": [
      {
        "label": "2 kertaa viikossa",
        "amount_eur": 485.0,
        "applies_if": "2 harjoitusta viikossa 1x:n sijaan",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja 6 v (2020-syntyneet) - sopii vain 6-vuotiaille (alaraja tasan 6).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_10.json",
      "staging_id": "batch_espoo_2026-09-24_10-011",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 40.36,
    "monthly_cost_basis": "270.0 € / full_season jaettuna 7.16 kuukaudelle (2026-09-15–2027-04-20, price_period_start) + membership 24 €/v ÷ 12 + license 8 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Leppävaara",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "salibandy",
    "provider": "Esport Oilers",
    "group_name": "Perhesähly 2-4v (usea harjoituspaikka Espoossa)",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "Perhesähly on suunnattu 2-4-vuotiaille pojille ja tytöille yhdessä oman huoltajan kanssa",
    "parent_child": "yes",
    "venue_name": null,
    "address": "Koivu-Mankkaan tie 5, 02200 Espoo (seuran toimisto)",
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syyskausi 2026",
    "start_date": "2026-08-24",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 90.0,
    "price_basis": "Syyskauden 2026 (24.8.-29.11.) toimintamaksu 90€. Koko vuoden hinta 200€ (syyskausi 90€ + kevätkausi 110€, 11.1.-25.4.2027).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Lapselle ja huoltajalle salibandymaila, sisäpelikengät tai tossut, juomapullo. Suojalaseja suositellaan mutta eivät pakollisia tässä iässä.",
    "trial_info": "Kahden viikon (kaksi seuraavaa kertaa) maksuton kokeilujakso; jos lapsi ei jatka, laskua ei lähde.",
    "enrollment_status": "unknown",
    "source_url": "https://oilers.fi/harrastetoiminta/perhesahly-2-4-vuotiaat/",
    "source_quote": "Minkä ikäisille perhesähly on tarkoitettu? Perhesähly on suunnattu 2-4-vuotiaille pojille ja tytöille yhdessä oman huoltajan kanssa. ... Toimintakausi ja hinta Syyskausi 24.8.-29.11.2026 | Kevätkausi 11.1.-25.4.2027 ... Hinta: 200 € / vuosi Syyskausi: 90 € Kevätkausi: 110 € Hinta sisältää ohjauksen, kerhopaidan, vakuutuksen sekä seuran jäsenyyden. ... Miten ilmoittaudutaan? Ilmoittautuminen tapahtuu Suomisport-palvelussa.",
    "activity_id": "esp-2026-0270",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 90.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://oilers.fi/harrastetoiminta/perhesahly-2-4-vuotiaat/",
    "billing_period": "term",
    "price_period_start": "2026-08-24",
    "price_period_end": "2026-11-29",
    "season_start_date": "2026-08-24",
    "season_end_date": "2026-11-29",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 90,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen, kerhopaidan, vakuutuksen sekä seuran jäsenyyden. Kevätkauden 2027 maksu 110€ on erillinen."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "district",
      "venue_name",
      "weekday",
      "start_time",
      "end_time",
      "end_date",
      "sessions_count"
    ],
    "verification_notes": "Useita rinnakkaisia vuoroja/paikkoja samalla hinnalla/iällä eri puolilla Espoota: Tapiola (Pohjois-Tapiolan yhtenäiskoulu ke, Esport Arena to, Tapiolan urheiluhalli/Auroran koulu la), Suur-Leppävaara (Lintuvaaran koulu to), Suur-Espoonlahti (Hansakallion koulu ma, Storängens skola ti, Nöykkiön koulu la), Pohjois-Espoo (Auroran koulu la) - yksi rivi rajaussäännön 3 mukaisesti. Ilmoittautuminen Suomisport-palvelussa (ei myClub); Suomisport ei ole vielä hyväksytty ilmoittautumisjärjestelmä-domainiksi CLAUDE.md:n listalla, joten lähteenä käytetty seuran omaa virallista sivua (oilers.fi), jolla on sananmukainen hinta/aikataulu/ikä. Availability_status=unknown, koska ryhmäkohtaista täyttöastetta ei näytetä seuran sivulla eikä Suomisportin ryhmäkohtaisia sivuja avattu.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_11.json",
      "staging_id": "batch_espoo_2026-09-24_11-001",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-24_11/oilers_perhesahly-2-4-vuotiaat.html",
      "capture_sha256": "910baab3562c6dc3e1ffd31c1137baf88c7db5c89231f2b884523519e603c90c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 27.95,
    "monthly_cost_basis": "90.0 € / term jaettuna 3.22 kuukaudelle (2026-08-24–2026-11-29, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "salibandy",
    "provider": "Esport Oilers",
    "group_name": "Salibandykoulu Viskarit 5v (2021 syntyneet) (usea harjoituspaikka Espoossa)",
    "min_age": 5,
    "max_age": 5,
    "eligibility_text": "Viskarit on 5-vuotiaille (2021 syntyneet)",
    "parent_child": "no",
    "venue_name": null,
    "address": "Koivu-Mankkaan tie 5, 02200 Espoo (seuran toimisto)",
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syyskausi 2026",
    "start_date": "2026-08-24",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Syyskauden 2026 (24.8.-29.11.) toimintamaksu 130€. Koko vuoden hinta 290€ (syyskausi 130€ + kevätkausi 160€, 11.1.-25.4.2027).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Maila, suojalasit, sisäpelikengät, liikuntavaatteet ja juomapullo. Maila ja suojalasit saa tarvittaessa lainaan ensimmäisillä kerroilla.",
    "trial_info": "Kahden viikon (kaksi seuraavaa kertaa) veloitukseton kokeilujakso; jos lapsi ei jatka, laskua ei lähde.",
    "enrollment_status": "unknown",
    "source_url": "https://oilers.fi/harrastetoiminta/salibandykoulu-viskarit-5v/",
    "source_quote": "Viskarit on 5-vuotiaille (2021 syntyneet) ja Eskarit 6-vuotiaille (2020 syntyneet). Salibandykoulu on ensiaskel kohti ikäkausijoukkueita ja harrasteryhmiä. ... Toimintakausi ja hinta Syyskausi: 24.8.-29.11.2026 Kevätkausi: 11.1.-25.4.2027 ... Hinta: 290 € / vuosi Syyskausi 130 € + kevätkausi 160 €. ... Hinta sisältää ohjauksen, kerhopaidan, vakuutuksen, seuran jäsenyyden sekä syys- ja kevätkauden päättävän turnauksen.",
    "activity_id": "esp-2026-0271",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 130.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://oilers.fi/harrastetoiminta/salibandykoulu-viskarit-5v/",
    "billing_period": "term",
    "price_period_start": "2026-08-24",
    "price_period_end": "2026-11-29",
    "season_start_date": "2026-08-24",
    "season_end_date": "2026-11-29",
    "birth_year_min": 2021,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen, kerhopaidan, vakuutuksen, seuran jäsenyyden sekä syys- ja kevätkauden päättävän turnauksen. Kevätkauden 2027 maksu 160€ on erillinen. Kahteen salibandykouluryhmään ilmoittautuvalle lapselle toinen ryhmä puoleen hintaan (ei laskettu tähän)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "district",
      "venue_name",
      "weekday",
      "start_time",
      "end_time",
      "end_date",
      "sessions_count"
    ],
    "verification_notes": "Useita rinnakkaisia vuoroja/paikkoja samalla hinnalla/iällä eri puolilla Espoota: Tapiola (Pohjois-Tapiolan yhtenäiskoulu ke, Esport Arena to, Tapiolan urheiluhalli/Auroran koulu la), Suur-Leppävaara (Lintuvaaran koulu to), Suur-Espoonlahti (Hansakallion koulu ma, Storängens skola ti, Nöykkiön koulu la), Pohjois-Espoo (Auroran koulu la) (osa vuoroista yhdistetty viskari+eskari-ryhmänä) - yksi rivi rajaussäännön 3 mukaisesti. Ilmoittautuminen Suomisport-palvelussa (ei myClub); Suomisport ei ole vielä hyväksytty ilmoittautumisjärjestelmä-domainiksi, joten lähteenä käytetty seuran omaa virallista sivua (oilers.fi). Availability_status=unknown.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_11.json",
      "staging_id": "batch_espoo_2026-09-24_11-002",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-24_11/oilers_salibandykoulu-viskarit-5v.html",
      "capture_sha256": "86a54ede37aa21781101c126324ca5da88bbfc38dbc2e7baa354be7b875b8d2e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 40.38,
    "monthly_cost_basis": "130.0 € / term jaettuna 3.22 kuukaudelle (2026-08-24–2026-11-29, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "salibandy",
    "provider": "Esport Oilers",
    "group_name": "Salibandykoulu Eskarit 6v (2020 syntyneet) (usea harjoituspaikka Espoossa)",
    "min_age": 6,
    "max_age": 6,
    "eligibility_text": "Eskarit 6-vuotiaille (2020 syntyneet)",
    "parent_child": "no",
    "venue_name": null,
    "address": "Koivu-Mankkaan tie 5, 02200 Espoo (seuran toimisto)",
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syyskausi 2026",
    "start_date": "2026-08-24",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 130.0,
    "price_basis": "Syyskauden 2026 (24.8.-29.11.) toimintamaksu 130€. Koko vuoden hinta 290€ (syyskausi 130€ + kevätkausi 160€, 11.1.-25.4.2027).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Maila, suojalasit, sisäpelikengät, liikuntavaatteet ja juomapullo. Maila ja suojalasit saa tarvittaessa lainaan ensimmäisillä kerroilla.",
    "trial_info": "Kahden viikon (kaksi seuraavaa kertaa) veloitukseton kokeilujakso; jos lapsi ei jatka, laskua ei lähde.",
    "enrollment_status": "unknown",
    "source_url": "https://oilers.fi/harrastetoiminta/salibandykoulu-eskarit-6-v/",
    "source_quote": "Viskarit on 5-vuotiaille (2021 syntyneet) ja Eskarit 6-vuotiaille (2020 syntyneet). Salibandykoulu on ensiaskel kohti ikäkausijoukkueita ja harrasteryhmiä. ... Toimintakausi ja hinta Syyskausi: 24.8.-29.11.2026 Kevätkausi: 11.1.-25.4.2027 ... Hinta: 290 € / vuosi Syyskausi 130 € + kevätkausi 160 €. ... Hinta sisältää ohjauksen, kerhopaidan, vakuutuksen, seuran jäsenyyden sekä syys- ja kevätkauden päättävän turnauksen.",
    "activity_id": "esp-2026-0272",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 130.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://oilers.fi/harrastetoiminta/salibandykoulu-eskarit-6-v/",
    "billing_period": "term",
    "price_period_start": "2026-08-24",
    "price_period_end": "2026-11-29",
    "season_start_date": "2026-08-24",
    "season_end_date": "2026-11-29",
    "birth_year_min": 2020,
    "birth_year_max": 2020,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 130,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen, kerhopaidan, vakuutuksen, seuran jäsenyyden sekä syys- ja kevätkauden päättävän turnauksen. Kevätkauden 2027 maksu 160€ on erillinen. Kahteen salibandykouluryhmään ilmoittautuvalle lapselle toinen ryhmä puoleen hintaan (ei laskettu tähän)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "district",
      "venue_name",
      "weekday",
      "start_time",
      "end_time",
      "end_date",
      "sessions_count"
    ],
    "verification_notes": "Useita rinnakkaisia vuoroja/paikkoja samalla hinnalla/iällä eri puolilla Espoota: Tapiola (Pohjois-Tapiolan yhtenäiskoulu ke, Esport Arena to, Tapiolan urheiluhalli/Auroran koulu la), Suur-Leppävaara (Lintuvaaran koulu to), Suur-Espoonlahti (Hansakallion koulu ma, Storängens skola ti, Nöykkiön koulu la), Pohjois-Espoo (Auroran koulu la) (osa vuoroista yhdistetty viskari+eskari-ryhmänä) - yksi rivi rajaussäännön 3 mukaisesti. Ilmoittautuminen Suomisport-palvelussa (ei myClub); Suomisport ei ole vielä hyväksytty ilmoittautumisjärjestelmä-domainiksi, joten lähteenä käytetty seuran omaa virallista sivua (oilers.fi). Availability_status=unknown.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_11.json",
      "staging_id": "batch_espoo_2026-09-24_11-003",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-24_11/oilers_salibandykoulu-eskarit-6-v.html",
      "capture_sha256": "a5ac77334f0b73e64f96c0e91ba428c6da06d1e4b89234a6dba9403fba834114",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 40.38,
    "monthly_cost_basis": "130.0 € / term jaettuna 3.22 kuukaudelle (2026-08-24–2026-11-29, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Tapiola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tapiola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "ratsastus",
    "provider": "Espoonlahden ratsastuskoulu Oy",
    "group_name": "Minijatkokurssi (5-10v, jo minikursseja käyneille)",
    "min_age": 5,
    "max_age": 10,
    "eligibility_text": "Tarkoitettu jo aiemmin minikursseja käyneille 5-10v lapsille, jotka vielä esim. ikänsä puolesta eivät pääse ponialkeiskursseille.",
    "parent_child": "no",
    "venue_name": "Espoonlahden ratsastuskoulu",
    "address": "Espoonlahdentie 14, 02360 Espoo",
    "district": "Espoonlahti",
    "weekday": "maanantai",
    "start_time": "15:30",
    "end_time": "16:00",
    "season": "syksy 2026",
    "start_date": "2026-09-28",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 200.0,
    "price_basis": "Minijatkokurssi 200 €, kesto 5 x 30 min (viisi viikkoa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Ei edellytä omia ratsastusvarusteita, kypärän saa lainata ratsastuskoululta.",
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.espoonlahdenratsastuskoulu.com/kurssi-tunnit",
    "source_quote": "MINIJATKOKURSSIT Hinta 200,- ... 3) Maanantai 15.30-16 alkaa 28.9 1 paikka Tarkoitettu jo aiemmin minikursseja käyneille 5-10v lapsille, jotka vielä esim ikänsä puolesta eivät pääse ponialkeiskursseille. Kesto 5x 30min, eli kurssiaika viisi viikkoa.",
    "activity_id": "esp-2026-0273",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 200.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.espoonlahdenratsastuskoulu.com/kurssi-tunnit",
    "billing_period": "course",
    "price_period_start": "2026-09-28",
    "price_period_end": null,
    "season_start_date": "2026-09-28",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 200,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sivulla ilmoitettu 28.9. alkavalle ryhmälle eksplisiittisesti '1 paikka' (23.9.2026 tarkistushetkellä), muut samankaltaiset kurssit merkitty TÄYNNÄ eikä niitä ole otettu mukaan. Loppupäivämäärää ei ilmoiteta erikseen (5 viikon kurssi alkaen 28.9., päättymispäivä ei sanamukaisesti sivulla, siksi end_date=null).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_12.json",
      "staging_id": "batch_espoo_2026-09-24_12-001",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-24_12/espoonlahti_kurssit_65594fed1ee1.html",
      "capture_sha256": "65594fed1ee18e5e047506adf230cb8aaa27c805a275dc46fbb3978ab6bce634",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Espoonlahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "salibandy",
    "provider": "Westend Indians (Heimo)",
    "group_name": "Heimon Salibandykoulu Aloittajat - Westend / Haukilahti (2020-2022 synt.)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "2020-2022 syntyneet lapset (n. 4-6-vuotiaat 2026)",
    "parent_child": "no",
    "venue_name": "Westendinpuiston koulu / Otahalli",
    "address": "Westend-Haukilahti ja Otaniemi, Espoo",
    "district": "Westend-Haukilahti",
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "kausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 275.0,
    "price_basis": "Kauden kokonaishinta 275 e, laskutetaan kahdessa erässä (n. 34 e/kk).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Kokeilukerroille lainamaila saatavilla; kokeilun jälkeen tuotepaketti (maila + Heimopaita) sisältyy hintaan.",
    "trial_info": "Kaksi maksutonta kokeilukertaa; mukaan tulee ilmoittautua etukäteen.",
    "enrollment_status": "unknown",
    "source_url": "https://westendindians.fi/blog/loyda-joukkueesi/salibandykoulu-westendhaukilahti-2019-2021/",
    "source_quote": "HEIMON SALIBANDYKOULU ALOITTAJAT – Tule Mukaan! 2020-2022 syntyneille ... Maanantaisin kello 17:30-18:30 Westendinpuiston koululla. Keskiviikkoisin 17:00-18:00 Otahalli ... keväälle 29.4. saakka ... KAUSIMAKSU – 2026-2027 • Kauden kokonaishinta 275 € laskutetaan kahdessa erässä (n. 34 euroa/ kk)",
    "activity_id": "esp-2026-0274",
    "city": "Espoo",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 275.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://westendindians.fi/blog/loyda-joukkueesi/salibandykoulu-westendhaukilahti-2019-2021/",
    "billing_period": "full_season",
    "price_period_start": "2026-08-17",
    "price_period_end": "2027-04-29",
    "season_start_date": "2026-08-17",
    "season_end_date": "2027-04-29",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 275,
        "mandatory": true,
        "included": true,
        "recurrence": "per season (2 erässä)",
        "applies_if": null,
        "note": "Kauden kokonaishinta, laskutetaan kahdessa erässä (n. 34 e/kk)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ryhmä kokoontuu kahdesti viikossa kahdessa paikassa: maanantaisin klo 17.30-18.30 Westendinpuiston koululla ja keskiviikkoisin klo 17.00-18.00 Otahallilla, Otaniemessä (molemmat sisältyvät samaan kausimaksuun, siksi weekday/start_time/end_time jätetty tyhjäksi). Kausi alkaa elokuun viikolla 34 ja jatkuu 29.4.2027 saakka lukuun ottamatta koulujen lomia. Muita samanhintaisia Aloittajat-ryhmiä (Suomenoja, Leppävaara, Tapiola) ei kerätty tähän erään (erakoko). Tämä ratkaisee data/espoo/staging/batch_espoo_2026-09-24_11.json:n deferred-merkinnän 'Westend Indians - lasten salibandy'. Ääkköskorjaus 24.9.2026: aiempi source_excerpt/source_quote oli kirjoitettu ilman ääkkösiä (myös paikallinen tekstitallenne); ote haettu uudelleen tuoreesta lähteestä ja palautettu sananmukaiseksi, uusi raakatallenne evidence.capture-kentässä.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/espoo/staging/batch_espoo_2026-09-24_13.json",
      "staging_id": "batch_espoo_2026-09-24_13-001",
      "decision": "candidate_clear",
      "capture_path": "data/espoo/evidence_local/batch_espoo_2026-09-24_13/westend_indians_aloittajat_6d52527b6957.html",
      "capture_sha256": "6d52527b695777fcb61f0aecef8b3209925173ce23f722acea72fb6d09e16db5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 32.7,
    "monthly_cost_basis": "275.0 € / full_season jaettuna 8.41 kuukaudelle (2026-08-17–2027-04-29, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Westend-Haukilahti",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Helsingin Kisa-Veikot (HKV)",
    "group_name": "Liikkari (s. 2022-2023), Hertsikan ala-aste",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Liikuntaleikkikoulu on tarkoitettu syksyllä 2026 ensisijaisesti 2022-2023 syntyneille lapsille.",
    "parent_child": "unknown",
    "venue_name": "Hertsikan ala-aste",
    "address": null,
    "district": "Herttoniemi",
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syyskausi 2026 (viikko 37-50, syyslomaviikolla 42 tauko)",
    "start_date": "2026-09-08",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 140.0,
    "price_basis": "Syksyn 2026 toimintamaksu, sisältää 13-14 harjoituskertaa.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Lenkkarit, joustavat liikuntaan sopivat vaatteet, juomapullo.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.hkv.fi/liikkari",
    "source_quote": "Liikkari (s. 2022-2023) klo 17.30-18.15 Ryhmässä on tilaa ... Syksyn toimintamaksu on 140 euroa, sisältäen 13-14 harjoituskertaa.",
    "activity_id": "hel-2026-0654",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 140.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-08",
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "approximate",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "sessions_count"
    ],
    "verification_notes": "Sivu ilmoittaa ryhmäkohtaisesti \"Ryhmässä on tilaa\", mutta yleinen ilmoittautumisaika on sivun mukaan päättynyt (\"Ilmoittautumisaika on päättynyt. Jäljellä olevia vapaita paikkoja voi tiedustella sähköpostitse\") - ei siis suoraa itsepalveluostoa, availability_status jätetty unknown-tilaan ristiriitaisen viestin vuoksi.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_40.json",
      "staging_id": "batch_2026-09-24_40-001",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Helsingin Kisa-Veikot (HKV)",
    "group_name": "Liikkari (s. 2022-2023), Olympiastadion Ryhmä 1",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Liikuntaleikkikoulu on tarkoitettu syksyllä 2026 ensisijaisesti 2022-2023 syntyneille lapsille.",
    "parent_child": "unknown",
    "venue_name": "Olympiastadion",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syyskausi 2026 (viikko 37-50, syyslomaviikolla 42 tauko)",
    "start_date": "2026-09-10",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 140.0,
    "price_basis": "Syksyn 2026 toimintamaksu, sisältää 13-14 harjoituskertaa.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Lenkkarit, joustavat liikuntaan sopivat vaatteet, juomapullo.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.hkv.fi/liikkari",
    "source_quote": "Torstai: Olympiastadion: Ryhmä 1: Liikkari (s. 2022-2023) klo 17.15-18.00 Ryhmässä on tilaa",
    "activity_id": "hel-2026-0655",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 140.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-08",
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "approximate",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "sessions_count"
    ],
    "verification_notes": "Sivu ilmoittaa ryhmäkohtaisesti \"Ryhmässä on tilaa\", mutta yleinen ilmoittautumisaika on sivun mukaan päättynyt (\"Ilmoittautumisaika on päättynyt. Jäljellä olevia vapaita paikkoja voi tiedustella sähköpostitse\") - ei siis suoraa itsepalveluostoa, availability_status jätetty unknown-tilaan ristiriitaisen viestin vuoksi.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_40.json",
      "staging_id": "batch_2026-09-24_40-002",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Helsingin Kisa-Veikot (HKV)",
    "group_name": "Liikkari (s. 2022-2023), Olympiastadion Ryhmä 2",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "Liikuntaleikkikoulu on tarkoitettu syksyllä 2026 ensisijaisesti 2022-2023 syntyneille lapsille.",
    "parent_child": "unknown",
    "venue_name": "Olympiastadion",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syyskausi 2026 (viikko 37-50, syyslomaviikolla 42 tauko)",
    "start_date": "2026-09-10",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 140.0,
    "price_basis": "Syksyn 2026 toimintamaksu, sisältää 13-14 harjoituskertaa.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Lenkkarit, joustavat liikuntaan sopivat vaatteet, juomapullo.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.hkv.fi/liikkari",
    "source_quote": "Ryhmä 2: Liikkari (s. 2022-2023) klo 17.15-18.00 Täynnä Ilmoittaudu jonoon",
    "activity_id": "hel-2026-0656",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 140.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-08",
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "approximate",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "sessions_count"
    ],
    "verification_notes": "Ryhmä täynnä, mutta jonoon voi ilmoittautua (\"Täynnä, Ilmoittaudu jonoon\").",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_40.json",
      "staging_id": "batch_2026-09-24_40-003",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Pakilan Visa ry",
    "group_name": "Yleisurheilukoulu 6-8-vuotiaat (eskari-2.lk), syksy 2026",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8-vuotiaat (eskari - 2.lk)",
    "parent_child": "no",
    "venue_name": "Pakilan ala-aste",
    "address": "Halkosuontie 88, Helsinki",
    "district": "Pakila",
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syyskausi 2026",
    "start_date": "2026-09-10",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 110.0,
    "price_basis": "Hinta syyskaudelta 110 € (+ 20 € seuran jäsenmaksu).",
    "membership_fee_eur": 20,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.pakilanvisa.fi/yleisurheilu/yleisurheilukoulu/",
    "source_quote": "YLEISURHEILUKOULUN SYYSKAUSI 2026 ... Ryhmät: * 6-8-vuotiaat (eskari - 2.lk) torstaisin klo 18.00-19.00 Pakilan koululla Halkosuontie 88 Syyskausi alkaa 10.9. ja päättyy 10.12.2026 (EI: syyslomalla vk 42) ... Hinta syyskaudelta: 110 € ( + 20 € seuran jäsenmaksu)",
    "activity_id": "hel-2026-0657",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 130.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-10",
    "price_period_end": "2026-12-10",
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 110,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": "Yleisurheilukoulun syyskauden 2026 maksu 110 €."
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Seuran jäsenmaksu, ei tarvitse maksaa uudelleen jos osallistunut jo tänä vuonna muuhun Visan toimintaan."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja 6-8 v, ei ulotu alle 6-vuotiaisiin - \"sopii vain 6-vuotiaille\" tyyppinen raja (alaraja tasan 6 v). MyClub-upotus (groups/835/event_embeds/2650) näyttää \"Jonossa 7\".",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_40.json",
      "staging_id": "batch_2026-09-24_40-004",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 38.06,
    "monthly_cost_basis": "110.0 € / term jaettuna 3.02 kuukaudelle (2026-09-10–2026-12-10, price_period_start) + membership 20 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Pakila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "salibandy",
    "provider": "EräViikingit ry",
    "group_name": "Perhesähly 2-4v (Tapanilan Mosahalli)",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2-3 vuotiaille lapsille (myös 4-vuotiaalle, jos lapsi ei ole valmis salibandykouluun itsenäisesti) ja vanhemmalle",
    "parent_child": "yes",
    "venue_name": "Tapanilan Urheilukeskus, Mosahalli",
    "address": "Erätie 3, 00730 Helsinki",
    "district": "Tapanila",
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syyskausi 2026",
    "start_date": "2026-08-31",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 135.0,
    "price_basis": "Syyskauden 2026 (syys-joulukuu) toimintamaksu Mosahallin ryhmissä 135€ yhdessä maksuerässä (tai 2 erässä 70€+70€). Kevätkauden 2027 maksu 175€ on erillinen, ei tässä hinnassa.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Lapselle ja aikuiselle salibandy/sählymaila, juomapullo, sisäliikuntaan sopivat kengät tai tossut. Suojalaseja suositellaan mutta ei vaadita tässä iässä.",
    "trial_info": "Kahden viikon / kahden kerran maksuton kokeilujakso ennen laskutusta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.eraviikingit.fi/perhesahly/",
    "source_quote": "Perhesähly on tarkoitettu 2-3 vuotiaille lapsille (myös 4-vuotiaalle, jos lapsi ei ole valmis salibandykouluun itsenäisesti) ja vanhemmalle. ... Tapanilan Urheilukeskus Mosahalli, Erätie 3, 00730 Helsinki Maanantai klo 17.45-18.30 alakenttä, syyskausi alkaen 31.8.2026 Lauantai klo 10.15-11.00 alakenttä, syyskausi alkaen 5.9.2026 Lauantai klo 11.05-11.50 alakenttä, syyskausi alkaen 5.9.2026 ... Mosahallin ryhmät yhdessä maksuerässä 135€ ... Hinta sisältää yhden lapsen ja aikuisen osallistumisen syyskauden tunneille, lapsen vakuutuksen, pallot, liivit ja muut harjoitusvälineet ja laadukkaan ohjauksen tunneilla. ... Maksu ei sisällä vakuutusta aikuiselle.",
    "activity_id": "hel-2026-0658",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 135.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.eraviikingit.fi/perhesahly/",
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": null,
    "season_start_date": "2026-08-31",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 135,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää syyskauden harjoitustunnit, ohjauksen, pallot, liivit ja muut harjoitusvälineet, vakuutuksen sekä seuran jäsenyyden (EräViikingit ry). Kevätkauden 2027 hinta ilmoitetaan sivulla erikseen, ei sisälly tähän riviin. Maksu ei sisällä vakuutusta aikuiselle."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "end_date",
      "season_end_date"
    ],
    "verification_notes": "Kolme rinnakkaista vuoroa samalla hinnalla/iällä Mosahallissa (ma 17.45-18.30, la 10.15-11.00, la 11.05-11.50) - yksi rivi rajaussäännön 3 mukaisesti (useita aikoja samassa ryhmässä). Ilmoittautuminen myClub-järjestelmän kautta (linkki sivulla); ryhmäkohtaista täyttöastetta ei ole tarkistettu myClubista erikseen, joten availability_status=unknown. Kausi jatkuu keväälle 2027 automaattisesti, ellei perua.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_41.json",
      "staging_id": "batch_2026-09-24_41-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-24_41/eraviikingit_perhesahly.html",
      "capture_sha256": "d4f224ca422f5eb344e1427a5e6ba5b966ca908ea268503ca355dcba4f81cfe7",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "salibandy",
    "provider": "EräViikingit ry",
    "group_name": "Perhesähly 2-4v (Vuosaari / Myllypuro)",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "2-3 vuotiaille lapsille (myös 4-vuotiaalle, jos lapsi ei ole valmis salibandykouluun itsenäisesti) ja vanhemmalle",
    "parent_child": "yes",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syyskausi 2026",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 120.0,
    "price_basis": "Syyskauden 2026 toimintamaksu Vuosaaren ja Myllypuron ryhmissä 120€ yhdessä maksuerässä (tai 2 erässä 62,50€+62,50€). Kevätkauden 2027 maksu 155€ on erillinen.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Lapselle ja aikuiselle salibandy/sählymaila, juomapullo, sisäliikuntaan sopivat kengät tai tossut.",
    "trial_info": "Kahden viikon / kahden kerran maksuton kokeilujakso ennen laskutusta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.eraviikingit.fi/perhesahly/",
    "source_quote": "Vuosaari: Puistopolun peruskoulu, Punakiventie 4, 00980 Helsinki Sunnuntai klo 17.00-17.40, syyskausi alkaen 6.9.2026 ... Arena Center Myllypuro, Alakiventie 2, 00920 Helsinki Tiistai klo 17.00-17.40 kenttä 2, syyskausi alkaen 1.9.2026 ... Vuosaaren ja Myllypuron ryhmät yhdessä maksuerässä 120€ ... Hinta sisältää yhden lapsen ja aikuisen osallistumisen syyskauden tunneille, lapsen vakuutuksen, pallot, liivit ja muut harjoitusvälineet ja laadukkaan ohjauksen tunneilla.",
    "activity_id": "hel-2026-0659",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 120.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.eraviikingit.fi/perhesahly/",
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": null,
    "season_start_date": "2026-09-01",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 120,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää syyskauden harjoitustunnit, ohjauksen, pallot, liivit ja muut harjoitusvälineet, vakuutuksen sekä seuran jäsenyyden (EräViikingit ry). Kevätkauden 2027 hinta ilmoitetaan sivulla erikseen, ei sisälly tähän riviin. Maksu ei sisällä vakuutusta aikuiselle."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "district",
      "venue_name",
      "address",
      "weekday",
      "start_time",
      "end_time",
      "end_date",
      "season_end_date"
    ],
    "verification_notes": "Kaksi paikkaa samalla hinnalla/iällä: Vuosaari (Puistopolun peruskoulu, Punakiventie 4, su 17.00-17.40, alkaen 6.9.2026) ja Arena Center Myllypuro (Alakiventie 2, ti 17.00-17.40, alkaen 1.9.2026) - yksi rivi rajaussäännön 3 mukaisesti (useita paikkoja/aikoja samassa ryhmässä). Availability_status=unknown, koska ryhmäkohtaista täyttöastetta ei tarkistettu myClubista.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_41.json",
      "staging_id": "batch_2026-09-24_41-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-24_41/eraviikingit_perhesahly.html",
      "capture_sha256": "d4f224ca422f5eb344e1427a5e6ba5b966ca908ea268503ca355dcba4f81cfe7",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "salibandy",
    "provider": "EräViikingit ry",
    "group_name": "Salibandykoulu 2020-2021 (5-6v), Tapanila/Mosahalli",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "2020-2021 (5-6 v.)",
    "parent_child": "no",
    "venue_name": "Tapanilan Urheilukeskus, Mosahalli",
    "address": "Erätie 3, 00730 Helsinki",
    "district": "Tapanila",
    "weekday": null,
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syyskausi 2026",
    "start_date": "2026-08-31",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 155.5,
    "price_basis": "Mosahallin 45 min ryhmien syyskauden 2026 maksu 155,50€ yhdessä erässä (tai 2 erässä 80,50€+80,50€). Kevätkauden 2027 maksu 199,50€ erillinen.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Salibandy/sählymaila, juomapullo, sisäliikuntakengät ja -vaatteet, suojalasit.",
    "trial_info": "Mahdollisuus kokeilla veloituksetta 1-2 kertaa ennen laskutuksen sitovuutta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "source_quote": "Maanantai 17.00-17.45 ala(2) 2020-2021 (5-6 v.) 31.8. / Keskiviikko 17.00-17.45 ylä(1) 2020-2021 (5-6 v.) 2.9. ... Mosahallin ja Arena Center Myllypuron ryhmät (nämä ryhmät ovat salibandykentällä): 60 min ryhmät: 175,50€ ... 45 min ryhmät: 155,50€ ... Maksu sisältää syyskauden harjoitustunnit, ohjauksen, pallot, liivit ja muut harjoitusvälineet, vakuutuksen, seuran jäsenyyden sekä syksyllä järjestettävän salibandykoulujen välisen syystapahtuman.",
    "activity_id": "hel-2026-0660",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 155.5,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": null,
    "season_start_date": "2026-08-31",
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 155.5,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen, pallot, liivit, harjoitusvälineet, vakuutuksen, seuran jäsenyyden ja syystapahtuman."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "weekday",
      "end_date",
      "season_end_date",
      "sessions_count"
    ],
    "verification_notes": "Kaksi rinnakkaista vuoroa samalla nimellä/iällä/hinnalla Mosahallissa (ma 17.00-17.45 alkaen 31.8. ja ke 17.00-17.45 alkaen 2.9.) - yksi rivi rajaussäännön 3 mukaisesti. Availability_status=unknown, myClub-ryhmäkohtaista täyttöastetta ei tarkistettu.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_41.json",
      "staging_id": "batch_2026-09-24_41-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-24_41/eraviikingit_salibandykoulut.html",
      "capture_sha256": "2b9f7d113c6a0c5cc468a28e1f023cd5542ce06484b67978012fad415fff5a80",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "salibandy",
    "provider": "EräViikingit ry",
    "group_name": "Salibandykoulu 2021 (5v), Tapanila/Mosahalli",
    "min_age": 5,
    "max_age": 5,
    "eligibility_text": "2021 (5 v.)",
    "parent_child": "no",
    "venue_name": "Tapanilan Urheilukeskus, Mosahalli",
    "address": "Erätie 3, 00730 Helsinki",
    "district": "Tapanila",
    "weekday": "lauantai",
    "start_time": "09:30",
    "end_time": "10:15",
    "season": "syyskausi 2026",
    "start_date": "2026-09-05",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 155.5,
    "price_basis": "Mosahallin 45 min ryhmien syyskauden 2026 maksu 155,50€ yhdessä erässä (tai 2 erässä 80,50€+80,50€). Kevätkauden 2027 maksu 199,50€ erillinen.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Salibandy/sählymaila, juomapullo, sisäliikuntakengät ja -vaatteet, suojalasit.",
    "trial_info": "Mahdollisuus kokeilla veloituksetta 1-2 kertaa ennen laskutuksen sitovuutta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "source_quote": "Lauantai 9.30-10.15 ylä(1) 2021 (5 v.) 5.9. ... Mosahallin ja Arena Center Myllypuron ryhmät (nämä ryhmät ovat salibandykentällä): 60 min ryhmät: 175,50€ ... 45 min ryhmät: 155,50€ ... Maksu sisältää syyskauden harjoitustunnit, ohjauksen, pallot, liivit ja muut harjoitusvälineet, vakuutuksen, seuran jäsenyyden sekä syksyllä järjestettävän salibandykoulujen välisen syystapahtuman.",
    "activity_id": "hel-2026-0661",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 155.5,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": null,
    "season_start_date": "2026-09-05",
    "season_end_date": null,
    "birth_year_min": 2021,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 155.5,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen, pallot, liivit, harjoitusvälineet, vakuutuksen, seuran jäsenyyden ja syystapahtuman."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "season_end_date",
      "sessions_count"
    ],
    "verification_notes": "Availability_status=unknown, myClub-ryhmäkohtaista täyttöastetta ei tarkistettu.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_41.json",
      "staging_id": "batch_2026-09-24_41-004",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-24_41/eraviikingit_salibandykoulut.html",
      "capture_sha256": "2b9f7d113c6a0c5cc468a28e1f023cd5542ce06484b67978012fad415fff5a80",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "salibandy",
    "provider": "EräViikingit ry",
    "group_name": "Salibandykoulu 2022 (4v), Tapanila/Mosahalli",
    "min_age": 4,
    "max_age": 4,
    "eligibility_text": "2022 (4 v.)",
    "parent_child": "no",
    "venue_name": "Tapanilan Urheilukeskus, Mosahalli",
    "address": "Erätie 3, 00730 Helsinki",
    "district": "Tapanila",
    "weekday": "lauantai",
    "start_time": "09:30",
    "end_time": "10:15",
    "season": "syyskausi 2026",
    "start_date": "2026-09-05",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 155.5,
    "price_basis": "Mosahallin 45 min ryhmien syyskauden 2026 maksu 155,50€ yhdessä erässä (tai 2 erässä 80,50€+80,50€). Kevätkauden 2027 maksu 199,50€ erillinen.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Salibandy/sählymaila, juomapullo, sisäliikuntakengät ja -vaatteet, suojalasit.",
    "trial_info": "Mahdollisuus kokeilla veloituksetta 1-2 kertaa ennen laskutuksen sitovuutta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "source_quote": "Lauantai 9.30-10.15 ala(2) 2022 (4 v.) 5.9. ... Mosahallin ja Arena Center Myllypuron ryhmät (nämä ryhmät ovat salibandykentällä): 60 min ryhmät: 175,50€ ... 45 min ryhmät: 155,50€ ... Maksu sisältää syyskauden harjoitustunnit, ohjauksen, pallot, liivit ja muut harjoitusvälineet, vakuutuksen, seuran jäsenyyden sekä syksyllä järjestettävän salibandykoulujen välisen syystapahtuman.",
    "activity_id": "hel-2026-0662",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 155.5,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": null,
    "season_start_date": "2026-09-05",
    "season_end_date": null,
    "birth_year_min": 2022,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 155.5,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen, pallot, liivit, harjoitusvälineet, vakuutuksen, seuran jäsenyyden ja syystapahtuman."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "season_end_date",
      "sessions_count"
    ],
    "verification_notes": "Availability_status=unknown, myClub-ryhmäkohtaista täyttöastetta ei tarkistettu.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_41.json",
      "staging_id": "batch_2026-09-24_41-005",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-24_41/eraviikingit_salibandykoulut.html",
      "capture_sha256": "2b9f7d113c6a0c5cc468a28e1f023cd5542ce06484b67978012fad415fff5a80",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Tapanila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "salibandy",
    "provider": "EräViikingit ry",
    "group_name": "Salibandykoulu 2019-2021 (5-7v), Myllypuro",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "2019-2021 (5-7 v.)",
    "parent_child": "no",
    "venue_name": "Arena Center Myllypuro, kenttä 2",
    "address": "Alakiventie 2, 00920 Helsinki",
    "district": "Myllypuro",
    "weekday": "keskiviikko",
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "syyskausi 2026",
    "start_date": "2026-09-02",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 175.5,
    "price_basis": "Myllypuron 60 min ryhmien syyskauden 2026 maksu 175,50€ yhdessä erässä (tai 2 erässä 90,50€+90,50€). Kevätkauden 2027 maksu 215,50€ erillinen.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Salibandy/sählymaila, juomapullo, sisäliikuntakengät ja -vaatteet, suojalasit.",
    "trial_info": "Mahdollisuus kokeilla veloituksetta 1-2 kertaa ennen laskutuksen sitovuutta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "source_quote": "Keskiviikko 17.30-18.30 Kenttä 2 2019-2021 (5-7 v.) 2.9. ... Mosahallin ja Arena Center Myllypuron ryhmät (nämä ryhmät ovat salibandykentällä): 60 min ryhmät: 175,50€ ... 45 min ryhmät: 155,50€ ... Maksu sisältää syyskauden harjoitustunnit, ohjauksen, pallot, liivit ja muut harjoitusvälineet, vakuutuksen, seuran jäsenyyden sekä syksyllä järjestettävän salibandykoulujen välisen syystapahtuman.",
    "activity_id": "hel-2026-0663",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 175.5,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": null,
    "season_start_date": "2026-09-02",
    "season_end_date": null,
    "birth_year_min": 2019,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 175.5,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen, pallot, liivit, harjoitusvälineet, vakuutuksen, seuran jäsenyyden ja syystapahtuman."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "season_end_date",
      "sessions_count"
    ],
    "verification_notes": "Ikäväli 5-7v, alaraja 5 osuu 0-6v rajaukseen. Availability_status=unknown, myClub-ryhmäkohtaista täyttöastetta ei tarkistettu.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_41.json",
      "staging_id": "batch_2026-09-24_41-006",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-24_41/eraviikingit_salibandykoulut.html",
      "capture_sha256": "2b9f7d113c6a0c5cc468a28e1f023cd5542ce06484b67978012fad415fff5a80",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "salibandy",
    "provider": "EräViikingit ry",
    "group_name": "Salibandykoulu 2020-2021 (5-6v), Herttoniemi",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "2020-2021 (5-6 v.)",
    "parent_child": "no",
    "venue_name": "Hertsikan ala-aste",
    "address": "Ahmatie 1, 00800 Helsinki",
    "district": "Herttoniemi",
    "weekday": "torstai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syyskausi 2026",
    "start_date": "2026-09-03",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 142.5,
    "price_basis": "Koulujen liikuntasalien 45 min ryhmien syyskauden 2026 maksu 142,50€ yhdessä erässä (tai 2 erässä 74€+74€). Kevätkauden 2027 maksu 180,50€ erillinen.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Salibandy/sählymaila, juomapullo, sisäliikuntakengät ja -vaatteet, suojalasit.",
    "trial_info": "Mahdollisuus kokeilla veloituksetta 1-2 kertaa ennen laskutuksen sitovuutta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "source_quote": "Torstai 17.30-18.15 2020-2021 (5-6 v.) 3.9. ... Koulujen liikuntasaleissa harjoittelevat ryhmät: 60 min ryhmät: 154€ ... 45 min ryhmät: 142,50€ ... Maksu sisältää syyskauden harjoitustunnit, ohjauksen, pallot, liivit ja muut harjoitusvälineet, vakuutuksen, seuran jäsenyyden sekä syksyllä järjestettävän salibandykoulujen välisen syystapahtuman.",
    "activity_id": "hel-2026-0664",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 142.5,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": null,
    "season_start_date": "2026-09-03",
    "season_end_date": null,
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 142.5,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen, pallot, liivit, harjoitusvälineet, vakuutuksen, seuran jäsenyyden ja syystapahtuman."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "season_end_date",
      "sessions_count"
    ],
    "verification_notes": "Availability_status=unknown, myClub-ryhmäkohtaista täyttöastetta ei tarkistettu.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_41.json",
      "staging_id": "batch_2026-09-24_41-007",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-24_41/eraviikingit_salibandykoulut.html",
      "capture_sha256": "2b9f7d113c6a0c5cc468a28e1f023cd5542ce06484b67978012fad415fff5a80",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Herttoniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "salibandy",
    "provider": "EräViikingit ry",
    "group_name": "Salibandykoulu 2021-2022 (4-5v), Käpylä",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "2021-2022 (4-5 v.)",
    "parent_child": "no",
    "venue_name": "Käpylän peruskoulu (yläsali/juhlasali)",
    "address": "Mäkelänkatu 89, 00610 Helsinki",
    "district": "Käpylä",
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syyskausi 2026",
    "start_date": "2026-09-02",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 142.5,
    "price_basis": "Koulujen liikuntasalien 45 min ryhmien syyskauden 2026 maksu 142,50€ yhdessä erässä (tai 2 erässä 74€+74€). Kevätkauden 2027 maksu 180,50€ erillinen.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Salibandy/sählymaila, juomapullo, sisäliikuntakengät ja -vaatteet, suojalasit.",
    "trial_info": "Mahdollisuus kokeilla veloituksetta 1-2 kertaa ennen laskutuksen sitovuutta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "source_quote": "Keskiviikko 18.00-18.45 2021-2022 (4-5 v.) 2.9. ... Koulujen liikuntasaleissa harjoittelevat ryhmät: 60 min ryhmät: 154€ ... 45 min ryhmät: 142,50€ ... Maksu sisältää syyskauden harjoitustunnit, ohjauksen, pallot, liivit ja muut harjoitusvälineet, vakuutuksen, seuran jäsenyyden sekä syksyllä järjestettävän salibandykoulujen välisen syystapahtuman.",
    "activity_id": "hel-2026-0665",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 142.5,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": null,
    "season_start_date": "2026-09-02",
    "season_end_date": null,
    "birth_year_min": 2021,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 142.5,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen, pallot, liivit, harjoitusvälineet, vakuutuksen, seuran jäsenyyden ja syystapahtuman."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "season_end_date",
      "sessions_count"
    ],
    "verification_notes": "Availability_status=unknown, myClub-ryhmäkohtaista täyttöastetta ei tarkistettu.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_41.json",
      "staging_id": "batch_2026-09-24_41-008",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-24_41/eraviikingit_salibandykoulut.html",
      "capture_sha256": "2b9f7d113c6a0c5cc468a28e1f023cd5542ce06484b67978012fad415fff5a80",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Käpylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "salibandy",
    "provider": "EräViikingit ry",
    "group_name": "Salibandykoulu 2019-2021 (5-7v), Haaga",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "2019-2021 (5-7 v.)",
    "parent_child": "no",
    "venue_name": "Haagan yläaste",
    "address": "Vanha Viertotie 23, 00350 Helsinki",
    "district": "Haaga",
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syyskausi 2026",
    "start_date": "2026-08-31",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 142.5,
    "price_basis": "Koulujen liikuntasalien 45 min ryhmien syyskauden 2026 maksu 142,50€ yhdessä erässä (tai 2 erässä 74€+74€). Kevätkauden 2027 maksu 180,50€ erillinen.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Salibandy/sählymaila, juomapullo, sisäliikuntakengät ja -vaatteet, suojalasit.",
    "trial_info": "Mahdollisuus kokeilla veloituksetta 1-2 kertaa ennen laskutuksen sitovuutta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "source_quote": "Maanantai 17.30-18.15 2019-2021 (5-7 v.) 31.8. ... Koulujen liikuntasaleissa harjoittelevat ryhmät: 60 min ryhmät: 154€ ... 45 min ryhmät: 142,50€ ... Maksu sisältää syyskauden harjoitustunnit, ohjauksen, pallot, liivit ja muut harjoitusvälineet, vakuutuksen, seuran jäsenyyden sekä syksyllä järjestettävän salibandykoulujen välisen syystapahtuman.",
    "activity_id": "hel-2026-0666",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 142.5,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": null,
    "season_start_date": "2026-08-31",
    "season_end_date": null,
    "birth_year_min": 2019,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 142.5,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen, pallot, liivit, harjoitusvälineet, vakuutuksen, seuran jäsenyyden ja syystapahtuman."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "season_end_date",
      "sessions_count"
    ],
    "verification_notes": "Ikäväli 5-7v, alaraja 5 osuu 0-6v rajaukseen. Availability_status=unknown.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_41.json",
      "staging_id": "batch_2026-09-24_41-009",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-24_41/eraviikingit_salibandykoulut.html",
      "capture_sha256": "2b9f7d113c6a0c5cc468a28e1f023cd5542ce06484b67978012fad415fff5a80",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Haaga",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "salibandy",
    "provider": "EräViikingit ry",
    "group_name": "Salibandykoulu 2021-2022 (4-5v), Vuosaari",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "2021-2022 (4-5 v.)",
    "parent_child": "no",
    "venue_name": "Puistopolun peruskoulu",
    "address": "Punakiventie 4, 00980 Helsinki",
    "district": "Vuosaari",
    "weekday": "sunnuntai",
    "start_time": "16:00",
    "end_time": "16:45",
    "season": "syyskausi 2026",
    "start_date": "2026-09-06",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 142.5,
    "price_basis": "Koulujen liikuntasalien 45 min ryhmien syyskauden 2026 maksu 142,50€ yhdessä erässä (tai 2 erässä 74€+74€). Kevätkauden 2027 maksu 180,50€ erillinen.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Salibandy/sählymaila, juomapullo, sisäliikuntakengät ja -vaatteet, suojalasit.",
    "trial_info": "Mahdollisuus kokeilla veloituksetta 1-2 kertaa ennen laskutuksen sitovuutta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "source_quote": "Sunnuntai 16.00-16.45 2021-2022 (4-5 v.) 6.9 ... Koulujen liikuntasaleissa harjoittelevat ryhmät: 60 min ryhmät: 154€ ... 45 min ryhmät: 142,50€ ... Maksu sisältää syyskauden harjoitustunnit, ohjauksen, pallot, liivit ja muut harjoitusvälineet, vakuutuksen, seuran jäsenyyden sekä syksyllä järjestettävän salibandykoulujen välisen syystapahtuman.",
    "activity_id": "hel-2026-0667",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 142.5,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.eraviikingit.fi/salibandykoulut/",
    "billing_period": "term",
    "price_period_start": "2026-09-06",
    "price_period_end": null,
    "season_start_date": "2026-09-06",
    "season_end_date": null,
    "birth_year_min": 2021,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 142.5,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää ohjauksen, pallot, liivit, harjoitusvälineet, vakuutuksen, seuran jäsenyyden ja syystapahtuman."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "season_end_date",
      "sessions_count"
    ],
    "verification_notes": "Availability_status=unknown, myClub-ryhmäkohtaista täyttöastetta ei tarkistettu.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_41.json",
      "staging_id": "batch_2026-09-24_41-010",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-24_41/eraviikingit_salibandykoulut.html",
      "capture_sha256": "2b9f7d113c6a0c5cc468a28e1f023cd5542ce06484b67978012fad415fff5a80",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Vuosaari",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "ratsastus",
    "provider": "Ratsastuskeskus Viikki Oy",
    "group_name": "Nappulatunnit (talutusratsastus, 3-7v)",
    "min_age": 3,
    "max_age": 7,
    "eligibility_text": "Nappulatunnit ovat puolen tunnin mittaisia talutusratsastuksia 3-7-vuotiaille lapsille.",
    "parent_child": "yes",
    "venue_name": "Viikin Ponikoulu",
    "address": "Ilmolanraitti 17, 00790 Helsinki",
    "district": "Viikki",
    "weekday": "sunnuntai",
    "start_time": "15:00",
    "end_time": "15:30",
    "season": "jatkuva toiminta, ei sidottu yksittäiseen kauteen (syyskausi 2026 / kevätkausi 2026 hinnastossa)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 31.0,
    "price_basis": "Nappulatunti 30min, hinta kortin mukaan: 10 kerran kortti 310 € (10 x 31 €) tai 5 kerran kortti 155 € (5 x 31 €); irtotunti/tutustumistunti 35 €.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.ratsastuskeskusviikki.fi/hinnasto/",
    "source_quote": "Nappulatunti 30min,10 kerran kortti 310 € (10 x 31€) Nappulatunti 30min,5 kerran kortti 155 € (5 x 31€) ... Tutustumistunnit/irtotunnit vakiotunneille: ... Nappulatunnit 35 €",
    "activity_id": "hel-2026-0668",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 31.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.ratsastuskeskusviikki.fi/hinnasto/",
    "billing_period": "session",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 31,
        "mandatory": true,
        "included": true,
        "recurrence": "per_session",
        "applies_if": null,
        "note": "10 kerran kortin hinta jaettuna kerroilla; sama hinta 5 kerran kortilla."
      }
    ],
    "price_options": [
      {
        "label": "Tutustumis-/irtotunti (ei korttia)",
        "amount_eur": 35.0,
        "applies_if": "Yksittäinen tutustumistunti ilman 5 tai 10 kerran korttia.",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Nappulatunnit järjestetään toistaiseksi sunnuntaisin klo 15-15.30 (ei kausisidottua kertamäärää, ostetaan 5 tai 10 kerran kortteina). Hinta sama kevät- ja syyskauden hinnastossa. Ratsastuskeskus Viikki käyttää Hopoti-tuntivarausjärjestelmää ajanvaraukseen, mutta hinta luetaan tallin omalta viralliselta hinnastosivulta (ei Hopotista), joten hyväksytty järjestäjän oma domain.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_42.json",
      "staging_id": "batch_2026-09-24_42-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-24_42/viikki_hinnasto_ac7969912fbd.html",
      "capture_sha256": "ac7969912fbd36e3dfc8e7e1c5742f99a4d3201efe7ced22067d72c45235b901",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa session ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Viikki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "ratsastus",
    "provider": "Ratsastuskeskus Viikki Oy",
    "group_name": "Miniponitunnit (6-9v)",
    "min_age": 6,
    "max_age": 9,
    "eligibility_text": "Miniponitunnit on suunnattu noin 6-9-vuotiaille lapsille, joilla ei tarvitse olla aikaisempaa kokemusta ratsastuksesta tai poneista.",
    "parent_child": "yes",
    "venue_name": "Viikin Ponikoulu",
    "address": "Ilmolanraitti 17, 00790 Helsinki",
    "district": "Viikki",
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "jatkuva toiminta, ei sidottu yksittäiseen kauteen (syyskausi 2026 / kevätkausi 2026 hinnastossa)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 42.5,
    "price_basis": "Miniponitunnit 60min, 10 kerran kortti 425 € (10 x 42,5 €); irtotunti/tutustumistunti 50 €.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.ratsastuskeskusviikki.fi/hinnasto/",
    "source_quote": "Miniponitunnit 60min, 10 kerran kortti 425 € (10 x 42,5 €) ... Tutustumistunnit/irtotunnit vakiotunneille: ... Miniponitunnit 50 €",
    "activity_id": "hel-2026-0669",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 42.5,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.ratsastuskeskusviikki.fi/hinnasto/",
    "billing_period": "session",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 42.5,
        "mandatory": true,
        "included": true,
        "recurrence": "per_session",
        "applies_if": null,
        "note": "10 kerran kortin hinta jaettuna kerroilla."
      }
    ],
    "price_options": [
      {
        "label": "Tutustumis-/irtotunti (ei korttia)",
        "amount_eur": 50.0,
        "applies_if": "Yksittäinen tutustumistunti ilman 10 kerran korttia.",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count",
      "weekday",
      "start_time",
      "end_time"
    ],
    "verification_notes": "Ikäraja 6-9v osuu rajaukseen vain 6-vuotiaiden osalta (sopii vain 6-vuotiaille rajaussäännön mukaisesti). Viikonpäivää/kellonaikaa ei ilmoitettu hinnasto- tai tasokuvaussivulla erikseen Miniponitunneille.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_42.json",
      "staging_id": "batch_2026-09-24_42-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-24_42/viikki_hinnasto_ac7969912fbd.html",
      "capture_sha256": "ac7969912fbd36e3dfc8e7e1c5742f99a4d3201efe7ced22067d72c45235b901",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa session ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Viikki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "salibandy",
    "provider": "Hawks Helsinki",
    "group_name": "Perhesähly Myllypuro (3-4v, lapsi + aikuinen)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaat, ryhmän ikärajaus ohjeellinen; 1 lapsi + 1 aikuinen",
    "parent_child": "yes",
    "venue_name": "Arena Center Myllypuro (Haukkakenttä)",
    "address": "Alakiventie 2, Helsinki",
    "district": "Myllypuro",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syyskausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 159.0,
    "price_basis": "Perhesähly, 1 lapsi + 1 aikuinen, syyskausi 2026: 159 e.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Lapselta sisäpelivarusteet (t-paita, shortsit/verkkarit, sisäpelikengät, juomapullo); aikuiselta lisäksi oma salibandymaila. Mailoja/suojalaseja saa tarvittaessa lainaksi.",
    "trial_info": "Kokeilukerrat maksuttomia.",
    "enrollment_status": "unknown",
    "source_url": "https://www.hawks.fi/perhesahly",
    "source_quote": "Perhesähly 3-4 -vuotiaille Harrasta yhdessä lapsesi kanssa ... Hinta (1 lapsi + 1 aikuinen) 159 € /syyskausi 2026 2,5€ hallinnon palvelumaksu 20€ jäsenmaksu (vain syksyllä tai keväällä) ... PERHESÄHLY MYLLYPURO Arena Center Myllypuro (Alakiventie 2, Helsinki) torstaisin klo 17.00 – 17.45, Haukkakenttä Ryhmäkoko max. 12 lasta ... Huom! Ilmoittautuminen koskee koko kautta 2026-2027.",
    "activity_id": "hel-2026-0670",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 181.5,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.hawks.fi/perhesahly",
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-22",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-22",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 159,
        "mandatory": true,
        "included": true,
        "recurrence": "per season",
        "applies_if": null,
        "note": "Perhesählyn osallistumismaksu (1 lapsi + 1 aikuinen), syyskausi 2026."
      },
      {
        "type": "other",
        "amount_eur": 2.5,
        "mandatory": true,
        "included": false,
        "recurrence": "per season",
        "applies_if": null,
        "note": "Hallinnon palvelumaksu."
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "kerran kaudessa (syksyllä tai keväällä)",
        "applies_if": null,
        "note": "Seuran jäsenmaksu, veloitetaan kerran vuodessa."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kolme rinnakkaista Perhesähly-ryhmää (Myllypuro, Ruskeasuo, Kaarela) samalla hinnalla ja kellonajalla (17.00-17.45) eri viikonpäivinä/halleissa; tähän riviin valittu Myllypuron ryhmä, kaksi muuta deferred (erakoko). Ryhmäkoko max. 12 lasta. Ilmoittautuminen koskee koko kautta 2026-2027 (myös kevätkausi 2027, 159 e), jota ei kirjattu tähän riviin (eri billing_period-jakso). Ääkköskorjaus 24.9.2026: aiempi source_excerpt/source_quote oli kirjoitettu ilman ääkkösiä (myös paikallinen tekstitallenne); ote haettu uudelleen tuoreesta lähteestä ja palautettu sananmukaiseksi, uusi raakatallenne evidence.capture-kentässä.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_43.json",
      "staging_id": "batch_2026-09-24_43-001",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-24_43/hawks_perhesahly_04db42832120.html",
      "capture_sha256": "04db42832120712810530e97991d7d028fbb5ccd2dd7cf3ba0ce344ce425bb69",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 42.83,
    "monthly_cost_basis": "159.0 € / term jaettuna 3.71 kuukaudelle (2026-09-01–2026-12-22, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "salibandy",
    "provider": "Hawks Helsinki",
    "group_name": "Salibandykoulu 5-6v Myllypuro, Ryhmä 1 (tiistai)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Arena Center Myllypuro (Haukkakenttä)",
    "address": "Alakiventie 2, Helsinki",
    "district": "Myllypuro",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syyskausi 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 199.0,
    "price_basis": "Salibandykoulu 5-6v, syyskausi 2026: 199 e.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Sisäpelivarusteet (t-paita, shortsit/verkkarit, sisäpelikengät, juomapullo); mailoja/suojalaseja saa tarvittaessa lainaksi.",
    "trial_info": "Kokeilukerrat maksuttomia.",
    "enrollment_status": "unknown",
    "source_url": "https://www.hawks.fi/salibandykoulu",
    "source_quote": "Hinta 199 € /syyskausi 2026 2,50€ palvelumaksu 20€ jäsenmaksu (1 krt/v) ... SALIBANDYKOULUT MYLLYPURO Arena Center Myllypuro (Alakiventie 2, Helsinki) 5-6 -VUOTIAAT Ryhmä 1: tiistaisin klo 17-18, Haukkakenttä",
    "activity_id": "hel-2026-0671",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 221.5,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.hawks.fi/salibandykoulu",
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-22",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-22",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 199,
        "mandatory": true,
        "included": true,
        "recurrence": "per season",
        "applies_if": null,
        "note": "Salibandykoulun osallistumismaksu, syyskausi 2026."
      },
      {
        "type": "other",
        "amount_eur": 2.5,
        "mandatory": true,
        "included": false,
        "recurrence": "per season",
        "applies_if": null,
        "note": "Hallinnon palvelumaksu."
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "kerran kaudessa (syksyllä tai keväällä)",
        "applies_if": null,
        "note": "Seuran jäsenmaksu, veloitetaan kerran vuodessa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Salibandykoulun 5-6v-ryhmiä järjestetään myös Hakaniemessä, Kaarelassa ja Ruskeasuolla samalla hinnalla; tähän erään valittu Myllypuron Ryhmä 1 (tiistai), Myllypuron Ryhmä 2 (torstai) ja muut sijainnit deferred (erakoko). 7-9-vuotiaiden rinnakkaisryhmät eivät kuulu 0-6v-rajaukseen. Ääkköskorjaus 24.9.2026: aiempi source_excerpt/source_quote oli kirjoitettu ilman ääkkösiä (myös paikallinen tekstitallenne); ote haettu uudelleen tuoreesta lähteestä ja palautettu sananmukaiseksi, uusi raakatallenne evidence.capture-kentässä.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_43.json",
      "staging_id": "batch_2026-09-24_43-002",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-24_43/hawks_salibandykoulu_643147423448.html",
      "capture_sha256": "64314742344854c3ba3bcacc1a9ab669d9e819cbff78a2dcaa13b4139fba61b0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 53.6,
    "monthly_cost_basis": "199.0 € / term jaettuna 3.71 kuukaudelle (2026-09-01–2026-12-22, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Myllypuro",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "salibandy",
    "provider": "M-Team",
    "group_name": "STADIUM SBK Pasila (5-8v)",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "Ikäluokat: 5-8v",
    "parent_child": "no",
    "venue_name": "Pasilan peruskoulu",
    "address": "Tulistimenkatu 2, 00520 Helsinki",
    "district": "Pasila",
    "weekday": "tiistai",
    "start_time": "16:15",
    "end_time": "17:00",
    "season": "kausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 49.0,
    "price_basis": "49 e/kk kuukausilaskutuksella, tauolla koulujen loma-aikoina.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Sisäliikuntavaatteet ja sisäkengät riittävät tutustumiskerralle; mailoja/suojalaseja lainaksi ohjaajalta.",
    "trial_info": "Tutustumiskäynti ilmainen, ei sido maksuihin eikä vaadi ennakkoilmoittautumista.",
    "enrollment_status": "unknown",
    "source_url": "https://m-team.myclub.fi/flow/events/10976409",
    "source_quote": "STADIUM SBK Pasila 5-8v. Pasilan peruskoulu, 26-27 tiistaisin klo 16.15-17.00 ... Ikäluokat: 5-8v ... Hinta Jäsenmaksu 50 € / kausi, sekä 49 € / kk kuukausilaskutuksella. Salibandykoulu on tauolla koulujen loma-aikoina.",
    "activity_id": "hel-2026-0672",
    "city": "Helsinki",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 99.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://m-team.myclub.fi/flow/events/10976409",
    "billing_period": "month",
    "price_period_start": "2026-09-01",
    "price_period_end": "2027-05-25",
    "season_start_date": "2026-09-01",
    "season_end_date": "2027-05-25",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 49,
        "mandatory": true,
        "included": true,
        "recurrence": "per month",
        "applies_if": null,
        "note": "Kuukausilaskutettava harjoitusmaksu."
      },
      {
        "type": "membership",
        "amount_eur": 50,
        "mandatory": true,
        "included": false,
        "recurrence": "per season",
        "applies_if": null,
        "note": "SBK harrastejäsenmaksu, kerran kaudessa."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Samanikäisiä (5-8v) STADIUM SBK -ryhmiä järjestetään myös Taivallahdessa ja Haagassa samalla hinnalla; tähän erään valittu Pasilan ryhmä, muut deferred (erakoko). m-team.fi:n oma harraste-sivu oli vanhentunut (viittasi syksyyn 2025); ajantasainen tieto luettu m-team.myclub.fi:n tapahtumasivulta (myClub, hyväksytty järjestelmä). Ääkköskorjaus 24.9.2026: aiempi source_excerpt/source_quote oli kirjoitettu ilman ääkkösiä (myös paikallinen tekstitallenne); ote haettu uudelleen tuoreesta lähteestä ja palautettu sananmukaiseksi, uusi raakatallenne evidence.capture-kentässä.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/staging/batch_2026-09-24_43.json",
      "staging_id": "batch_2026-09-24_43-003",
      "decision": "candidate_clear",
      "capture_path": "data/staging/evidence_local/batch_2026-09-24_43/mteam_stadium_sbk_pasila_861f9b664f73.html",
      "capture_sha256": "861f9b664f73647db9a318722f1344a27255bfdd887d56e75382e7b397a1de3e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 49.0,
    "monthly_cost_basis": "49.0 €/kk",
    "monthly_cost_complete": false,
    "district_derived": "Pasila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Uinti Vantaa ry (Vanders)",
    "group_name": "Vauvauinti (3-12kk), Myyrmäki, la klo 8.00-8.30 (15.8.-19.12.2026, ei 14.11.)",
    "min_age": 0,
    "max_age": 1,
    "eligibility_text": "3-12 kk",
    "parent_child": "unknown",
    "venue_name": "Myyrmäen uimahalli",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "08:00",
    "end_time": "08:30",
    "season": "syksy 2026",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 378.0,
    "price_basis": "Koko kauden hinta (18 kertaa)",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vanders.myclub.fi/flow/courses/10846250",
    "source_quote": "Vauvauinti (3-12kk), Myyrmäki, la klo 8.00-8.30 (15.8.-19.12.2026, ei 14.11.) | 15.8.2026 08:00 - 19.12.2026 | Vauvauinti ennakkomaksu 100,00 € ... Koko kauden hinta on 378€ (+ 5 € jäsenmaksu/vuosi).",
    "activity_id": "van-2026-0001",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 383.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-15",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 378,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Koko kauden hinta 378 € (richtext); ilmoittautuessa maksetaan 100 € varausmaksu, loppu laskutetaan kuukausittain."
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsenyys"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 1, 2, 6 kattavat Vantaa-QA 24.9.2026: aktiviteettimaksu oli kirjattu 100 € (myClubin varausmaksu), vaikka price_eur=378 € (kurssikuvaus \"Koko kauden hinta on 378€ (+ 5 € jäsenmaksu/vuosi)\"); korjattu fee_components 378 €, known_min_total_eur 105 -> 383 €, price_per_session_eur 5,83 -> 21,28 €. Vantaa-QA 24.9.2026: billing_period=course ei ole epävarma - kurssikuvaus sanoo \"Kurssin hinta on ...\" ja sivulla on kurssin päivät (linjaus 2); poistettu uncertain_fields-listalta.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-001",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vanders_10846250_a254b3051462.html",
      "capture_sha256": "a254b30514624d886ee00f221c0896db3bc8432a40ad29733c7c779fa386f0e3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 91.01,
    "monthly_cost_basis": "378.0 € / course jaettuna 4.17 kuukaudelle (2026-08-15–2026-12-19, season_start_date) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "uinti",
    "provider": "Uinti Vantaa ry (Vanders)",
    "group_name": "Perheuimakoulu (3-6-v) Martinlaakso, La klo 14.45-15.30 (22.8.-19.12.2026, ei 31.10 ja 5.12)",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3-6-v",
    "parent_child": "unknown",
    "venue_name": "Martinlaakson uimahalli",
    "address": "Martinlaaksonkuja 2, 01620 Vantaa, Finland",
    "district": null,
    "weekday": "lauantai",
    "start_time": "14:45",
    "end_time": "15:30",
    "season": "syksy 2026",
    "start_date": "2026-08-22",
    "end_date": "2026-12-19",
    "sessions_count": null,
    "price_eur": 213.0,
    "price_basis": "Kurssin hinta (16 kertaa)",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vanders.myclub.fi/flow/courses/11362699",
    "source_quote": "Perheuimakoulu (3-6-v) Martinlaakso, La klo 14.45-15.30 (22.8.-19.12.2026, ei 31.10 ja 5.12) | 22.8.2026 14:45 - 19.12.2026 | Perheuimakoulu ennakkomaksu 100,00 € ... Kurssin hinta on 213€ (+5€ jäsenmaksu/vuosi).",
    "activity_id": "van-2026-0002",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 218.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-22",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 213,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kurssin hinta 213 € (richtext); ilmoittautuessa 100 € varausmaksu, loppuhinta 113 € laskutetaan erikseen."
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsenyys"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 1, 2, 6 kattavat Vantaa-QA 24.9.2026: aktiviteettimaksu oli kirjattu 100 € (varausmaksu), vaikka price_eur=213 € (\"Kurssin hinta on 213€ (+5€ jäsenmaksu/vuosi)\"); korjattu fee_components 213 €, known_min_total_eur 105 -> 218 €. Vantaa-QA 24.9.2026: billing_period=course ei ole epävarma - kurssikuvaus sanoo \"Kurssin hinta on ...\" ja sivulla on kurssin päivät (linjaus 2); poistettu uncertain_fields-listalta.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-002",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vanders_11362699_6c7e7bbfcfcf.html",
      "capture_sha256": "6c7e7bbfcfcfe3abcb1d5d51532b7537fe9e6e9df8a49951d44f98e3e5325df2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 54.44,
    "monthly_cost_basis": "213.0 € / course jaettuna 3.94 kuukaudelle (2026-08-22–2026-12-19, season_start_date) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Martinlaakso",
    "district_basis": "geokoodattu osoite -> neighborhood 'Martinlaakso' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Uinti Vantaa ry (Vanders)",
    "group_name": "Alkeiskurssi (4-6 v), Ti klo. 16.15-17.15, Martinlaakson uimahalli (20.10.-8.12.2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v",
    "parent_child": "unknown",
    "venue_name": "Martinlaakson uimahalli",
    "address": "Martinlaaksonkuja 2, 01620 Vantaa, Finland",
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:15",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 70.0,
    "price_basis": "Lasten arkikurssit ti/to 8krt",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vanders.myclub.fi/flow/courses/11566726",
    "source_quote": "Alkeiskurssi (4-6 v), Ti klo. 16.15-17.15, Martinlaakson uimahalli (20.10.-8.12.2026) | 20.10.2026 16:15 - 8.12.2026 | Lasten arkikurssit ti/to 8krt 70,00 €",
    "activity_id": "van-2026-0003",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": 9.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vanders.myclub.fi/flow/courses/11566726",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsenyys"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 1, 2 kattavat Vantaa-QA 24.9.2026: billing_period=course ei ole epävarma - kurssikuvaus sanoo \"Kurssin hinta on ...\" ja sivulla on kurssin päivät (linjaus 2); poistettu uncertain_fields-listalta. Vantaa-QA 24.9.2026: availability open -> unknown ja purchasable_now false: ilmoittautuminen avautuu vasta 6.10.2026 (\"Paikkoja jäljellä\" ei vielä tarkoita avointa ilmoittautumista).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-003",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vanders_11566726_1e72629befec.html",
      "capture_sha256": "1e72629befecef49f388a9a89bc2c580d01042b4d8f330786cc171d38490455d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.03,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, season_start_date) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Martinlaakso",
    "district_basis": "geokoodattu osoite -> neighborhood 'Martinlaakso' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Uinti Vantaa ry (Vanders)",
    "group_name": "Alkeiskurssi (4-6v), Ti klo. 17.45-18.45, Martinlaakson uimahalli (20.10.-8.12.2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v",
    "parent_child": "unknown",
    "venue_name": "Martinlaakson uimahalli",
    "address": "Martinlaaksonkuja 2, 01620 Vantaa, Finland",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:45",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 70.0,
    "price_basis": "Lasten arkikurssit ti/to 8krt",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vanders.myclub.fi/flow/courses/11566866",
    "source_quote": "Alkeiskurssi (4-6v), Ti klo. 17.45-18.45, Martinlaakson uimahalli (20.10.-8.12.2026) | 20.10.2026 17:45 - 8.12.2026 | Lasten arkikurssit ti/to 8krt 70,00 €",
    "activity_id": "van-2026-0004",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": 9.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vanders.myclub.fi/flow/courses/11566866",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsenyys"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 1, 2 kattavat Vantaa-QA 24.9.2026: billing_period=course ei ole epävarma - kurssikuvaus sanoo \"Kurssin hinta on ...\" ja sivulla on kurssin päivät (linjaus 2); poistettu uncertain_fields-listalta. Vantaa-QA 24.9.2026: availability open -> unknown ja purchasable_now false: ilmoittautuminen avautuu vasta 6.10.2026 (\"Paikkoja jäljellä\" ei vielä tarkoita avointa ilmoittautumista).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-004",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vanders_11566866_4a8ae132341f.html",
      "capture_sha256": "4a8ae132341fe6f6d29abf0da2f28ec79c3763bdcbf4adc11e6967152034a23d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.03,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, season_start_date) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Martinlaakso",
    "district_basis": "geokoodattu osoite -> neighborhood 'Martinlaakso' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Uinti Vantaa ry (Vanders)",
    "group_name": "Alkeiskurssi (4-6v), Ti klo. 18.45-19.45, Martinlaakson uimahalli (20.10.-8.12.2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v",
    "parent_child": "unknown",
    "venue_name": "Martinlaakson uimahalli",
    "address": "Martinlaaksonkuja 2, 01620 Vantaa, Finland",
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:45",
    "end_time": "19:45",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 70.0,
    "price_basis": "Lasten arkikurssit ti/to 8krt",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vanders.myclub.fi/flow/courses/11566902",
    "source_quote": "Alkeiskurssi (4-6v), Ti klo. 18.45-19.45, Martinlaakson uimahalli (20.10.-8.12.2026) | 20.10.2026 18:45 - 8.12.2026 | Lasten arkikurssit ti/to 8krt 70,00 €",
    "activity_id": "van-2026-0005",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": 9.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vanders.myclub.fi/flow/courses/11566902",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsenyys"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 1, 2 kattavat Vantaa-QA 24.9.2026: billing_period=course ei ole epävarma - kurssikuvaus sanoo \"Kurssin hinta on ...\" ja sivulla on kurssin päivät (linjaus 2); poistettu uncertain_fields-listalta. Vantaa-QA 24.9.2026: availability open -> unknown ja purchasable_now false: ilmoittautuminen avautuu vasta 6.10.2026 (\"Paikkoja jäljellä\" ei vielä tarkoita avointa ilmoittautumista).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-005",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vanders_11566902_c8595597903f.html",
      "capture_sha256": "c8595597903f71928d24b6fd85306922c170c421466fea3c677ffdcd275d99e6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.03,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, season_start_date) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Martinlaakso",
    "district_basis": "geokoodattu osoite -> neighborhood 'Martinlaakso' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Uinti Vantaa ry (Vanders)",
    "group_name": "Uimakoulu 1 (4-6), Ti klo 16.45-17.45, Martinlaakson uimahalli (20.10.-8.12.2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6",
    "parent_child": "unknown",
    "venue_name": "Martinlaakson uimahalli",
    "address": "Martinlaaksonkuja 2, 01620 Vantaa, Finland",
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:45",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 70.0,
    "price_basis": "Lasten arkikurssit ti/to 8krt",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vanders.myclub.fi/flow/courses/11566794",
    "source_quote": "Uimakoulu 1 (4-6), Ti klo 16.45-17.45, Martinlaakson uimahalli (20.10.-8.12.2026) | 20.10.2026 16:45 - 8.12.2026 | Lasten arkikurssit ti/to 8krt 70,00 €",
    "activity_id": "van-2026-0006",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": 9.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vanders.myclub.fi/flow/courses/11566794",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsenyys"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 1, 2 kattavat Vantaa-QA 24.9.2026: billing_period=course ei ole epävarma - kurssikuvaus sanoo \"Kurssin hinta on ...\" ja sivulla on kurssin päivät (linjaus 2); poistettu uncertain_fields-listalta. Vantaa-QA 24.9.2026: availability open -> unknown ja purchasable_now false: ilmoittautuminen avautuu vasta 6.10.2026 (\"Paikkoja jäljellä\" ei vielä tarkoita avointa ilmoittautumista).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-006",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vanders_11566794_e644b685d10f.html",
      "capture_sha256": "e644b685d10f72c76b6d6d0a1a16fcd8d8a407a2dd2614c197803a9ffea5e073",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.03,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, season_start_date) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Martinlaakso",
    "district_basis": "geokoodattu osoite -> neighborhood 'Martinlaakso' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Uinti Vantaa ry (Vanders)",
    "group_name": "Uimakoulu 1 (4-6), Ti klo 17.15-18.15, Martinlaakson uimahalli (20.10.-8.12.2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6",
    "parent_child": "unknown",
    "venue_name": "Martinlaakson uimahalli",
    "address": "Martinlaaksonkuja 2, 01620 Vantaa, Finland",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 70.0,
    "price_basis": "Lasten arkikurssit ti/to 8krt",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vanders.myclub.fi/flow/courses/11566700",
    "source_quote": "Uimakoulu 1 (4-6), Ti klo 17.15-18.15, Martinlaakson uimahalli (20.10.-8.12.2026) | 20.10.2026 17:15 - 8.12.2026 | Lasten arkikurssit ti/to 8krt 70,00 €",
    "activity_id": "van-2026-0007",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": 9.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vanders.myclub.fi/flow/courses/11566700",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsenyys"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 1, 2 kattavat Vantaa-QA 24.9.2026: billing_period=course ei ole epävarma - kurssikuvaus sanoo \"Kurssin hinta on ...\" ja sivulla on kurssin päivät (linjaus 2); poistettu uncertain_fields-listalta. Vantaa-QA 24.9.2026: availability open -> unknown ja purchasable_now false: ilmoittautuminen avautuu vasta 6.10.2026 (\"Paikkoja jäljellä\" ei vielä tarkoita avointa ilmoittautumista).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-007",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vanders_11566700_7a07d60a4086.html",
      "capture_sha256": "7a07d60a4086b9dc6ec7b4bd90e8dcf17f9d122f18bb27d96b8332324eadcd20",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.03,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, season_start_date) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Martinlaakso",
    "district_basis": "geokoodattu osoite -> neighborhood 'Martinlaakso' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Uinti Vantaa ry (Vanders)",
    "group_name": "Uimakoulu 1 (4-6), Ti klo 18.15-19.15, Martinlaakson uimahalli (20.10.-8.12.2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6",
    "parent_child": "unknown",
    "venue_name": "Martinlaakson uimahalli",
    "address": "Martinlaaksonkuja 2, 01620 Vantaa, Finland",
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:15",
    "end_time": "19:15",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 70.0,
    "price_basis": "Lasten arkikurssit ti/to 8krt",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vanders.myclub.fi/flow/courses/11566997",
    "source_quote": "Uimakoulu 1 (4-6), Ti klo 18.15-19.15, Martinlaakson uimahalli (20.10.-8.12.2026) | 20.10.2026 18:15 - 8.12.2026 | Lasten arkikurssit ti/to 8krt 70,00 €",
    "activity_id": "van-2026-0008",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": 9.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vanders.myclub.fi/flow/courses/11566997",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsenyys"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 1, 2 kattavat Vantaa-QA 24.9.2026: billing_period=course ei ole epävarma - kurssikuvaus sanoo \"Kurssin hinta on ...\" ja sivulla on kurssin päivät (linjaus 2); poistettu uncertain_fields-listalta. Vantaa-QA 24.9.2026: availability open -> unknown ja purchasable_now false: ilmoittautuminen avautuu vasta 6.10.2026 (\"Paikkoja jäljellä\" ei vielä tarkoita avointa ilmoittautumista).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-008",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vanders_11566997_e85ebcbafb9d.html",
      "capture_sha256": "e85ebcbafb9d68cf22ddc2f0c84e46668d63debc2eeb2b7b01e9e0b20b91ff05",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.03,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, season_start_date) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Martinlaakso",
    "district_basis": "geokoodattu osoite -> neighborhood 'Martinlaakso' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Uinti Vantaa ry (Vanders)",
    "group_name": "Uimakoulu 1 (4-6), To klo 18.15-19.15, Myyrmäen uimahalli (22.10.-10.12.2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6",
    "parent_child": "unknown",
    "venue_name": "Myyrmäen uimahalli",
    "address": "Myyrmäenraitti 4, 01600 Vantaa, Finland",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:15",
    "end_time": "19:15",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-10",
    "sessions_count": 8,
    "price_eur": 70.0,
    "price_basis": "Lasten arkikurssit ti/to 8krt",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vanders.myclub.fi/flow/courses/11491620",
    "source_quote": "Uimakoulu 1 (4-6), To klo 18.15-19.15, Myyrmäen uimahalli (22.10.-10.12.2026) | 22.10.2026 18:15 - 10.12.2026 | Lasten arkikurssit ti/to 8krt 70,00 €",
    "activity_id": "van-2026-0009",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": 9.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vanders.myclub.fi/flow/courses/11491620",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsenyys"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 1, 2 kattavat Vantaa-QA 24.9.2026: billing_period=course ei ole epävarma - kurssikuvaus sanoo \"Kurssin hinta on ...\" ja sivulla on kurssin päivät (linjaus 2); poistettu uncertain_fields-listalta. Vantaa-QA 24.9.2026: availability open -> unknown ja purchasable_now false: ilmoittautuminen avautuu vasta 8.10.2026 (\"Paikkoja jäljellä\" ei vielä tarkoita avointa ilmoittautumista).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-009",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vanders_11491620_d48b2308d05a.html",
      "capture_sha256": "d48b2308d05a550116e27ee4b44d77e9bce21db4bdbc1afaf441e65edfa3a2d8",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.03,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.64 kuukaudelle (2026-10-22–2026-12-10, season_start_date) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myyrmäki",
    "district_basis": "geokoodattu osoite -> neighborhood 'Myyrmäki' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Uinti Vantaa ry (Vanders)",
    "group_name": "Uimakoulu 2 (4-6 v), Ti klo 15.45-16.45, Martinlaakson uimahalli (20.10.-8.12.2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v",
    "parent_child": "unknown",
    "venue_name": "Martinlaakson uimahalli",
    "address": "Martinlaaksonkuja 2, 01620 Vantaa, Finland",
    "district": null,
    "weekday": "tiistai",
    "start_time": "15:45",
    "end_time": "16:45",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 70.0,
    "price_basis": "Lasten arkikurssit ti/to 8krt",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vanders.myclub.fi/flow/courses/11534797",
    "source_quote": "Uimakoulu 2 (4-6 v), Ti klo 15.45-16.45, Martinlaakson uimahalli (20.10.-8.12.2026) | 20.10.2026 15:45 - 8.12.2026 | Lasten arkikurssit ti/to 8krt 70,00 €",
    "activity_id": "van-2026-0010",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": 9.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vanders.myclub.fi/flow/courses/11534797",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsenyys"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 1, 2 kattavat Vantaa-QA 24.9.2026: billing_period=course ei ole epävarma - kurssikuvaus sanoo \"Kurssin hinta on ...\" ja sivulla on kurssin päivät (linjaus 2); poistettu uncertain_fields-listalta. Vantaa-QA 24.9.2026: availability open -> unknown ja purchasable_now false: ilmoittautuminen avautuu vasta 6.10.2026 (\"Paikkoja jäljellä\" ei vielä tarkoita avointa ilmoittautumista).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-010",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vanders_11534797_1026e5618d2f.html",
      "capture_sha256": "1026e5618d2f8cfb67260bb272703e40b4f20a7a6f3ef5568ec6c58bdde036d3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.03,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, season_start_date) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Martinlaakso",
    "district_basis": "geokoodattu osoite -> neighborhood 'Martinlaakso' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Uinti Vantaa ry (Vanders)",
    "group_name": "Uimakoulu 2 (4-6v), To klo 16.15-17.15, Myyrmäen uimahalli (22.10.-10.12.2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v",
    "parent_child": "unknown",
    "venue_name": "Myyrmäen uimahalli",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "16:15",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": null,
    "sessions_count": 8,
    "price_eur": 70.0,
    "price_basis": "Lasten arkikurssit ti/to 8krt",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vanders.myclub.fi/flow/courses/11491605",
    "source_quote": "Uimakoulu 2 (4-6v), To klo 16.15-17.15, Myyrmäen uimahalli (22.10.-10.12.2026) | 22.10.2026 16:15 - 10.12.2026 | Lasten arkikurssit ti/to 8krt 70,00 €",
    "activity_id": "van-2026-0011",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": 9.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vanders.myclub.fi/flow/courses/11491605",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsenyys"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 1, 2 kattavat Vantaa-QA 24.9.2026: billing_period=course ei ole epävarma - kurssikuvaus sanoo \"Kurssin hinta on ...\" ja sivulla on kurssin päivät (linjaus 2); poistettu uncertain_fields-listalta. Vantaa-QA 24.9.2026: availability open -> unknown ja purchasable_now false: ilmoittautuminen avautuu vasta 8.10.2026 (\"Paikkoja jäljellä\" ei vielä tarkoita avointa ilmoittautumista).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-011",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vanders_11491605_8547be4c2665.html",
      "capture_sha256": "8547be4c26651f7c11cd5c928d0f90d43aa20457dbcb411779ed37783f5502b7",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.03,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.64 kuukaudelle (2026-10-22–2026-12-10, season_start_date) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "uinti",
    "provider": "Uinti Vantaa ry (Vanders)",
    "group_name": "Uimakoulu 3 (4-6), To klo 17.15-18.15, Myyrmäen uimahalli (22.10.-10.12.2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6",
    "parent_child": "unknown",
    "venue_name": "Myyrmäen uimahalli",
    "address": "Myyrmäenraitti 4, 01600 Vantaa, Finland",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:15",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-10-22",
    "end_date": "2026-12-10",
    "sessions_count": 8,
    "price_eur": 70.0,
    "price_basis": "Lasten arkikurssit ti/to 8krt",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vanders.myclub.fi/flow/courses/11491612",
    "source_quote": "Uimakoulu 3 (4-6), To klo 17.15-18.15, Myyrmäen uimahalli (22.10.-10.12.2026) | 22.10.2026 17:15 - 10.12.2026 | Lasten arkikurssit ti/to 8krt 70,00 €",
    "activity_id": "van-2026-0012",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": 9.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-22",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vanders.myclub.fi/flow/courses/11491612",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsenyys"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 1, 2 kattavat Vantaa-QA 24.9.2026: billing_period=course ei ole epävarma - kurssikuvaus sanoo \"Kurssin hinta on ...\" ja sivulla on kurssin päivät (linjaus 2); poistettu uncertain_fields-listalta. Vantaa-QA 24.9.2026: availability open -> unknown ja purchasable_now false: ilmoittautuminen avautuu vasta 8.10.2026 (\"Paikkoja jäljellä\" ei vielä tarkoita avointa ilmoittautumista).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-012",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vanders_11491612_b8c540f2ad80.html",
      "capture_sha256": "b8c540f2ad808d59540a4d2ce298f6a92c04e2aea3b7bd835f4c0809be110dfb",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.03,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.64 kuukaudelle (2026-10-22–2026-12-10, season_start_date) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Myyrmäki",
    "district_basis": "geokoodattu osoite -> neighborhood 'Myyrmäki' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Uinti Vantaa ry (Vanders)",
    "group_name": "MiniGaattoriralli, Martinlaakso, La klo 13.40-14.30 (17.10.-19.12.2026, ei 31.10 ja 5.12.)",
    "min_age": 5,
    "max_age": 9,
    "eligibility_text": "5-9-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Martinlaakson uimahalli",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "13:40",
    "end_time": "14:30",
    "season": "syksy 2026",
    "start_date": "2026-10-17",
    "end_date": "2026-12-19",
    "sessions_count": 8,
    "price_eur": 105.0,
    "price_basis": "MiniGaattoriralli (8krt)",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vanders.myclub.fi/flow/courses/11478623",
    "source_quote": "MiniGaattoriralli, Martinlaakso, La klo 13.40-14.30 (17.10.-19.12.2026, ei 31.10 ja 5.12.) | 8.10.2026 20:00 - 24.10.2026 | MiniGaattoriralli (8krt) 105,00 €",
    "activity_id": "van-2026-0013",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 110.0,
    "price_per_session_eur": 13.75,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-17",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vanders.myclub.fi/flow/courses/11478623",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 105,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsenyys"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 1, 2 kattavat Vantaa-QA 24.9.2026: start_time 20:00 ja season 8.10.-24.10.2026 oli luettu ilmoittautumisen avautumisajasta (\"Ilmoittautuminen alkaa 8.10.2026 20:00\"); korjattu kurssin nimen mukaan \"La klo 13.40-14.30 (17.10.-19.12.2026, ei 31.10 ja 5.12.)\". Vantaa-QA 24.9.2026: billing_period=course ei ole epävarma - kurssikuvaus sanoo \"Kurssin hinta on ...\" ja sivulla on kurssin päivät (linjaus 2); poistettu uncertain_fields-listalta. Vantaa-QA 24.9.2026: availability open -> unknown ja purchasable_now false: ilmoittautuminen avautuu vasta 8.10.2026 (\"Paikkoja jäljellä\" ei vielä tarkoita avointa ilmoittautumista).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-013",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vanders_11478623_07ffe3688969.html",
      "capture_sha256": "07ffe36889695083be1a1bd121389ac5d3bfbc079c3bf7e1c54abb46f5596ec6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 50.35,
    "monthly_cost_basis": "105.0 € / course jaettuna 2.10 kuukaudelle (2026-10-17–2026-12-19, season_start_date) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "uinti",
    "provider": "Simmis Wanda ry",
    "group_name": "Alkeiskurssi",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v",
    "parent_child": "unknown",
    "venue_name": "Tikkurilan uimahalli",
    "address": "Läntinen Valkoisenlähteentie 50, 01300 Vantaa",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "16:15",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 70.0,
    "price_basis": "Vantaan uimakoulut - kurssimaksu",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://simmiswanda.myclub.fi/flow/courses/11490740",
    "source_quote": "Alkeiskurssi | 21.10.2026 16:15 - 9.12.2026 | Vantaan uimakoulut - kurssimaksu 70,00 €",
    "activity_id": "van-2026-0014",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsen"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-014",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_simmiswanda_11490740_f2f2628a32e2.html",
      "capture_sha256": "f2f2628a32e2ccc3c2d68392c8200f9562842dd5c0802fb391c45229aa7f4afb",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 43.03,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Viertola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Viertola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Simmis Wanda ry",
    "group_name": "Uimakoulu 1",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v",
    "parent_child": "unknown",
    "venue_name": "Tikkurilan uimahalli",
    "address": "Läntinen Valkoisenlähteentie 50, 01300 Vantaa",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "16:45",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 70.0,
    "price_basis": "Vantaan uimakoulut - kurssimaksu",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://simmiswanda.myclub.fi/flow/courses/11490741",
    "source_quote": "Uimakoulu 1 | 21.10.2026 16:45 - 9.12.2026 | Vantaan uimakoulut - kurssimaksu 70,00 €",
    "activity_id": "van-2026-0015",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsen"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-015",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_simmiswanda_11490741_d7e984ee9da0.html",
      "capture_sha256": "d7e984ee9da04ea907546b4fea3b6274460c846b32ff7d575cb07b68440bbdd5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 43.03,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Viertola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Viertola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Simmis Wanda ry",
    "group_name": "Uimakoulu 2",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v",
    "parent_child": "unknown",
    "venue_name": "Tikkurilan uimahalli",
    "address": "Läntinen Valkoisenlähteentie 50, 01300 Vantaa",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 70.0,
    "price_basis": "Vantaan uimakoulut - kurssimaksu",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://simmiswanda.myclub.fi/flow/courses/11490742",
    "source_quote": "Uimakoulu 2 | 21.10.2026 17:15 - 9.12.2026 | Vantaan uimakoulut - kurssimaksu 70,00 €",
    "activity_id": "van-2026-0016",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsen"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-016",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_simmiswanda_11490742_8bf796511943.html",
      "capture_sha256": "8bf7965119430f5e21ce9fdbabd70f6b26a6b1dcacdc39e89848413ed4a7a587",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 43.03,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Viertola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Viertola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Simmis Wanda ry",
    "group_name": "Uimakoulu 3",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v",
    "parent_child": "unknown",
    "venue_name": "Tikkurilan uimahalli",
    "address": "Läntinen Valkoisenlähteentie 50, 01300 Vantaa",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-10-21",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 70.0,
    "price_basis": "Vantaan uimakoulut - kurssimaksu",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://simmiswanda.myclub.fi/flow/courses/11490743",
    "source_quote": "Uimakoulu 3 | 21.10.2026 17:45 - 9.12.2026 | Vantaan uimakoulut - kurssimaksu 70,00 €",
    "activity_id": "van-2026-0017",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-21",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-10-21",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsen"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-017",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_simmiswanda_11490743_e1126b9374e1.html",
      "capture_sha256": "e1126b9374e1ae12bb82fe71001f6336d7206a164effc4657ffe73fd4c4341b9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 43.03,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.64 kuukaudelle (2026-10-21–2026-12-09, price_period_start) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Viertola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Viertola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Simmis Wanda ry",
    "group_name": "Syysloman Alkeiskurssi",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v",
    "parent_child": "unknown",
    "venue_name": "Tikkurilan uimahalli",
    "address": "Läntinen Valkoisenlähteentie 50, 01300 Vantaa",
    "district": null,
    "weekday": null,
    "start_time": "15:30",
    "end_time": "16:30",
    "season": "syksy 2026",
    "start_date": "2026-10-12",
    "end_date": "2026-10-16",
    "sessions_count": null,
    "price_eur": 44.0,
    "price_basis": "Vantaan uimakoulut - kurssimaksu",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://simmiswanda.myclub.fi/flow/courses/11607079",
    "source_quote": "Syysloman Alkeiskurssi | 12.10.2026 15:30 - 16.10.2026 | Vantaan uimakoulut - kurssimaksu 44,00 €",
    "activity_id": "van-2026-0018",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 49.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-12",
    "price_period_end": "2026-10-16",
    "season_start_date": "2026-10-12",
    "season_end_date": "2026-10-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 44,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsen"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 3 kattavat",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-018",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_simmiswanda_11607079_50ec29102f0d.html",
      "capture_sha256": "50ec29102f0d8a75dade97b3e3e8415dbf975b1eabbfd4529b705556b99b9fa2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 268.27,
    "monthly_cost_basis": "44.0 € / course jaettuna 0.16 kuukaudelle (2026-10-12–2026-10-16, price_period_start) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Viertola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Viertola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Simmis Wanda ry",
    "group_name": "Syysloman Uimakoulu 1",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v",
    "parent_child": "unknown",
    "venue_name": "Tikkurilan uimahalli",
    "address": "Läntinen Valkoisenlähteentie 50, 01300 Vantaa",
    "district": null,
    "weekday": null,
    "start_time": "16:00",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-10-12",
    "end_date": "2026-10-16",
    "sessions_count": null,
    "price_eur": 44.0,
    "price_basis": "Vantaan uimakoulut - kurssimaksu",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://simmiswanda.myclub.fi/flow/courses/11607080",
    "source_quote": "Syysloman Uimakoulu 1 | 12.10.2026 16:00 - 16.10.2026 | Vantaan uimakoulut - kurssimaksu 44,00 €",
    "activity_id": "van-2026-0019",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 49.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-12",
    "price_period_end": "2026-10-16",
    "season_start_date": "2026-10-12",
    "season_end_date": "2026-10-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 44,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsen"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 3 kattavat",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-019",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_simmiswanda_11607080_f337963152a6.html",
      "capture_sha256": "f337963152a6984fb4b68033b3eaa5780bc0e565fa2ec486c4f13ec685cfdc0b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 268.27,
    "monthly_cost_basis": "44.0 € / course jaettuna 0.16 kuukaudelle (2026-10-12–2026-10-16, price_period_start) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Viertola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Viertola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Simmis Wanda ry",
    "group_name": "Syysloman Uimakoulu 2",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v",
    "parent_child": "unknown",
    "venue_name": "Tikkurilan uimahalli",
    "address": "Läntinen Valkoisenlähteentie 50, 01300 Vantaa",
    "district": null,
    "weekday": null,
    "start_time": "16:30",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-10-12",
    "end_date": "2026-10-16",
    "sessions_count": null,
    "price_eur": 44.0,
    "price_basis": "Vantaan uimakoulut - kurssimaksu",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://simmiswanda.myclub.fi/flow/courses/11607081",
    "source_quote": "Syysloman Uimakoulu 2 | 12.10.2026 16:30 - 16.10.2026 | Vantaan uimakoulut - kurssimaksu 44,00 €",
    "activity_id": "van-2026-0020",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 49.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-10-12",
    "price_period_end": "2026-10-16",
    "season_start_date": "2026-10-12",
    "season_end_date": "2026-10-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 44,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsen"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ei review-syytä: tarkistusjonon linjaus(et) 3 kattavat",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-020",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_simmiswanda_11607081_ddc00c178cb1.html",
      "capture_sha256": "ddc00c178cb15af6e60453c5b81fef05ffd19b9620afe009250d0759b2e69e6f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 268.27,
    "monthly_cost_basis": "44.0 € / course jaettuna 0.16 kuukaudelle (2026-10-12–2026-10-16, price_period_start) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Viertola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Viertola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Vantaa Diving ry",
    "group_name": "Uimahypyt: Maxit 4-6-vuotiaat, torstaisin klo 17.45-19.00, Tikkurilan uimahalli",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Tikkurilan uimahalli",
    "address": "Läntinen Valkoisenlähteentie 50, 01300 Vantaa, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:45",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-13",
    "end_date": "2027-05-13",
    "sessions_count": null,
    "price_eur": 269.0,
    "price_basis": "Maksut 1 krt/vko: syyskausi 269 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vantaadiving.myclub.fi/flow/courses/10909329",
    "source_quote": "Maxit 4-6-vuotiaat, torstaisin klo 17.45-19.00, Tikkurilan uimahalli | 13.8.2026 17:45 - 13.5.2027 | Jäsenmaksu kausi 2026-2027 30,00 €",
    "activity_id": "van-2026-0021",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 299.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-13",
    "season_end_date": "2027-05-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 269,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Hintatiedot': Jäsenmaksu kausi 2026-2027 30,00 €"
      }
    ],
    "price_options": [
      {
        "label": "2 kertaa viikossa (to + la)",
        "amount_eur": 458.0,
        "applies_if": "harjoittelee kaksi kertaa viikossa (to 17.45 JA la 15.15-16.30) yhden kerran (to) sijaan; valitaan ilmoittautumisen yhteydessä",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kausi jatkuu automaattisesti kevätkaudelle 2027 (269 €/kausi lisää), ellei ilmoittautumista peruta 1.12.2026 mennessä. Ensisijainen harjoitusaika torstaisin klo 17.45-19.00; valinnainen toinen harjoituskerta lauantaisin klo 15.15-16.30 (sama ryhmä, https://vantaadiving.myclub.fi/flow/courses/10909619). Laji: uimahypyt (tallennettu sport=uinti CLAUDE.md:n 23.9.2026 päätöksen (b) mukaisesti, 'uimahypyt -> uinti'; alkuperäinen laji ryhmän nimessä ja tässä huomautuksessa). Ei review-syytä: tarkistusjonon linjaus(et) 3, 4, 6 kattavat Vantaa-QA 24.9.2026: jäsenmaksu 30 € on myClubin Hintatiedoissa (\"Jäsenmaksu kausi 2026-2027 30,00 €\") ja kuvauksessa (\"kauden 2026–2027 jäsenmaksu 30 €\"); membership_fee_eur null -> 30 €, ei enää epävarma (summa oli jo fee_components-listalla).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-021",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vantaadiving_10909329_823c92943be2.html",
      "capture_sha256": "823c92943be2ccd57ccb19df106442e8d50e94a8242e8a897380da9170e56700",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 32.38,
    "monthly_cost_basis": "269.0 € / term jaettuna 9.00 kuukaudelle (2026-08-13–2027-05-13, season_start_date) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Viertola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Viertola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Vantaa Diving ry",
    "group_name": "Uimahypyt: Minit 4-6-vuotiaat, lauantaisin klo 16.30-17.45 Tikkurilan uimahalli",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Tikkurilan uimahalli",
    "address": "Läntinen Valkoisenlähteentie 50, 01300 Vantaa, Suomi",
    "district": null,
    "weekday": "lauantai",
    "start_time": "16:30",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-15",
    "end_date": "2027-05-08",
    "sessions_count": null,
    "price_eur": 269.0,
    "price_basis": "Maksut 1 krt/vko: syyskausi 269 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://vantaadiving.myclub.fi/flow/courses/10908268",
    "source_quote": "Minit 4-6-vuotiaat, lauantaisin klo 16.30-17.45 Tikkurilan uimahalli | 15.8.2026 16:30 - 8.5.2027 | Jäsenmaksu kausi 2026-2027 30,00 €",
    "activity_id": "van-2026-0022",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 299.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-15",
    "season_end_date": "2027-05-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 269,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Hintatiedot': Jäsenmaksu kausi 2026-2027 30,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kausi jatkuu automaattisesti kevätkaudelle 2027 (269 €/kausi lisää), ellei ilmoittautumista peruta 1.12.2026 mennessä. Laji: uimahypyt (tallennettu sport=uinti CLAUDE.md:n 23.9.2026 päätöksen (b) mukaisesti, 'uimahypyt -> uinti'; alkuperäinen laji ryhmän nimessä ja tässä huomautuksessa). Ei review-syytä: tarkistusjonon linjaus(et) 4, 6 kattavat Vantaa-QA 24.9.2026: jäsenmaksu 30 € on myClubin Hintatiedoissa (\"Jäsenmaksu kausi 2026-2027 30,00 €\") ja kuvauksessa (\"kauden 2026–2027 jäsenmaksu 30 €\"); membership_fee_eur null -> 30 €, ei enää epävarma (summa oli jo fee_components-listalla).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-022",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vantaadiving_10908268_2c83d4e17d92.html",
      "capture_sha256": "2c83d4e17d92d470888c2c921c97769f50b471cde46301f6b8fb7ee3ce106bba",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 33.17,
    "monthly_cost_basis": "269.0 € / term jaettuna 8.77 kuukaudelle (2026-08-15–2027-05-08, season_start_date) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Viertola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Viertola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Vantaa Diving ry",
    "group_name": "Uimahypyt: Minit 4-6-vuotiaat, maanantaisin klo 16.45-18.00, Tikkurilan uimahalli",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaat",
    "parent_child": "unknown",
    "venue_name": "Tikkurilan uimahalli",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-17",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 269.0,
    "price_basis": "Maksut 1 krt/vko: syyskausi 269 €",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vantaadiving.myclub.fi/flow/courses/10908068",
    "source_quote": "Minit 4-6-vuotiaat, maanantaisin klo 16.45-18.00, Tikkurilan uimahalli | 17.8.2026 17:00 - 10.5.2027 | Jäsenmaksu kausi 2026-2027 30,00 €",
    "activity_id": "van-2026-0023",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 299.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-17",
    "season_end_date": "2027-05-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 269,
        "mandatory": true,
        "included": true,
        "recurrence": "term",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Hintatiedot': Jäsenmaksu kausi 2026-2027 30,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kausi jatkuu automaattisesti kevätkaudelle 2027 (269 €/kausi lisää), ellei ilmoittautumista peruta 1.12.2026 mennessä. Laji: uimahypyt (tallennettu sport=uinti CLAUDE.md:n 23.9.2026 päätöksen (b) mukaisesti, 'uimahypyt -> uinti'; alkuperäinen laji ryhmän nimessä ja tässä huomautuksessa). Ei review-syytä: tarkistusjonon linjaus(et) 1, 4, 6 kattavat Vantaa-QA 24.9.2026: jäsenmaksu 30 € on myClubin Hintatiedoissa (\"Jäsenmaksu kausi 2026-2027 30,00 €\") ja kuvauksessa (\"kauden 2026–2027 jäsenmaksu 30 €\"); membership_fee_eur null -> 30 €, ei enää epävarma (summa oli jo fee_components-listalla). Kurssin nimi sanoo \"maanantaisin klo 16.45-18.00\", mutta saman sivun aikataulurivit \"17:00 - 18:15\"; aika aikataulusta (ristiriita samalla ilmoittautumissivulla, tarkistettava).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-023",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/myclub_vantaadiving_10908068_55443f7b5c18.html",
      "capture_sha256": "55443f7b5c1831dfa61e8839bc0c833336d9b4ffd3c8bdf903a3a02eb13bf9f6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 33.17,
    "monthly_cost_basis": "269.0 € / term jaettuna 8.77 kuukaudelle (2026-08-17–2027-05-10, season_start_date) + membership 30 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "uinti",
    "provider": "Flamingo Spa Vesipuisto (SUB Yhtiöt)",
    "group_name": "Pikku Flamingot",
    "min_age": 4,
    "max_age": null,
    "eligibility_text": "täyttäneet 4 vuotta, ei yläikärajaa ilmoitettu",
    "parent_child": "unknown",
    "venue_name": "Flamingo Spa Vesipuisto",
    "address": "Tasetie 8, 01510 Vantaa",
    "district": "Tikkurila",
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "tuntematon",
    "start_date": null,
    "end_date": null,
    "sessions_count": 6,
    "price_eur": 129.0,
    "price_basis": "Kurssin hinta (verkkokauppa)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "closed",
    "source_url": "https://www.flamingospa.fi/product/pikku-flamingot/",
    "source_quote": "Pikku Flamingot | 129,00 € | kuusi kertaa | 'Seuraavat kurssit tulevat myyntiin ...'",
    "activity_id": "van-2026-0024",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 21.5,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.flamingospa.fi/product/pikku-flamingot/",
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.flamingospa.fi/product/pikku-flamingot/",
    "availability_status": "closed",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 129,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "start_date",
      "end_date"
    ],
    "verification_notes": "Verkkokauppa: asiakas valitsee itse aloituspäivän ja kellonajan kalenterista useista vaihtoehdoista (esim. ma 17.40, ti 16.30/18.30, ke 18.30, to 17.05, la 10.05, su 15.00); yksi rivi, viikonpäivä/kellonaika/päivämäärät jätetty tyhjiksi koska ne eivät ole ryhmäkohtaisia vaan valitaan varauksen yhteydessä.  Ei review-syytä: tarkistusjonon linjaus(et) 3 kattavat",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-024",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/flamingospa_13013_e55ac2a23149.html",
      "capture_sha256": "e55ac2a231494e82819a124ef923e72acdd7c6cf7b38e0f9eb4d99a2c34c0b5d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Tikkurila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Flamingo Spa Vesipuisto (SUB Yhtiöt)",
    "group_name": "Uimakoulu: Taso 1",
    "min_age": 5,
    "max_age": null,
    "eligibility_text": "täyttäneet 5 vuotta, ei yläikärajaa ilmoitettu",
    "parent_child": "unknown",
    "venue_name": "Flamingo Spa Vesipuisto",
    "address": "Tasetie 8, 01510 Vantaa",
    "district": "Tikkurila",
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "tuntematon",
    "start_date": null,
    "end_date": null,
    "sessions_count": 6,
    "price_eur": 129.0,
    "price_basis": "Kurssin hinta (verkkokauppa)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "closed",
    "source_url": "https://www.flamingospa.fi/product/uimakoulu-1/",
    "source_quote": "Uimakoulu: Taso 1 | 129,00 € | kuusi kertaa | 'Seuraavat kurssit tulevat myyntiin ...'",
    "activity_id": "van-2026-0025",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 21.5,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.flamingospa.fi/product/uimakoulu-1/",
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.flamingospa.fi/product/uimakoulu-1/",
    "availability_status": "closed",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 129,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "start_date",
      "end_date"
    ],
    "verification_notes": "Verkkokauppa: asiakas valitsee itse aloituspäivän ja kellonajan kalenterista useista vaihtoehdoista (esim. ma 17.40, ti 16.30/18.30, ke 18.30, to 17.05, la 10.05, su 15.00); yksi rivi, viikonpäivä/kellonaika/päivämäärät jätetty tyhjiksi koska ne eivät ole ryhmäkohtaisia vaan valitaan varauksen yhteydessä.  Ei review-syytä: tarkistusjonon linjaus(et) 3 kattavat",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-025",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/flamingospa_13095_b9d2cc6ce226.html",
      "capture_sha256": "b9d2cc6ce22682483d0ee3ce527c44ca963ee9b3f126239bd051b7bde910da98",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Tikkurila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Flamingo Spa Vesipuisto (SUB Yhtiöt)",
    "group_name": "Uimakoulu: Taso 3",
    "min_age": 6,
    "max_age": null,
    "eligibility_text": "täyttäneet 6 vuotta, ei yläikärajaa ilmoitettu",
    "parent_child": "unknown",
    "venue_name": "Flamingo Spa Vesipuisto",
    "address": "Tasetie 8, 01510 Vantaa",
    "district": "Tikkurila",
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "tuntematon",
    "start_date": null,
    "end_date": null,
    "sessions_count": 6,
    "price_eur": 129.0,
    "price_basis": "Kurssin hinta (verkkokauppa)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "closed",
    "source_url": "https://www.flamingospa.fi/product/uimakoulu-3/",
    "source_quote": "Uimakoulu: Taso 3 | 129,00 € | kuusi kertaa | 'Seuraavat kurssit tulevat myyntiin ...'",
    "activity_id": "van-2026-0026",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 129.0,
    "price_per_session_eur": 21.5,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.flamingospa.fi/product/uimakoulu-3/",
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://www.flamingospa.fi/product/uimakoulu-3/",
    "availability_status": "closed",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 129,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "start_date",
      "end_date"
    ],
    "verification_notes": "Verkkokauppa: asiakas valitsee itse aloituspäivän ja kellonajan kalenterista useista vaihtoehdoista (esim. ma 17.40, ti 16.30/18.30, ke 18.30, to 17.05, la 10.05, su 15.00); yksi rivi, viikonpäivä/kellonaika/päivämäärät jätetty tyhjiksi koska ne eivät ole ryhmäkohtaisia vaan valitaan varauksen yhteydessä. Sopii vain 6-vuotiaille rajauksen (0-6 v) sisällä; yläikärajaa ei ilmoitettu. Ei review-syytä: tarkistusjonon linjaus(et) 3 kattavat",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_01.json",
      "staging_id": "batch_vantaa_2026-09-24_01-026",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_01/flamingospa_25141_ccdb10844473.html",
      "capture_sha256": "ccdb108444731ac9fc731e49146a8d93a3183cb7ef2a716651a685bb8c5a1ce6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Tikkurila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "Tanssillinen voimistelu Pegasus (2018-2020-syntyneet)",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2018-2020-syntyneet",
    "parent_child": "unknown",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2027-05-09",
    "sessions_count": null,
    "price_eur": 260.0,
    "price_basis": "1,5x/vko lasku yhdessä erässä (1A) alk. 260,00 € tai neljässä erässä 65 €/kk",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10724386",
    "source_quote": "Tanssillinen voimistelu Pegasus (2018-2020-syntyneet) | 23.8.2026 17:30 - 9.5.2027",
    "activity_id": "van-2026-0027",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 280.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "unknown",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-23",
    "season_end_date": "2027-05-09",
    "birth_year_min": 2018,
    "birth_year_max": 2020,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 260,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [
      {
        "label": "Neljässä erässä",
        "amount_eur": 65.0,
        "applies_if": "1,5x/vko lasku neljässä erässä 65€/kk (1A)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: price_eur oli 65 € (yksi neljästä erästä) - kokonaismaksu on 260 € (4 x 65 €); korjattu 260 €, erämaksu price_options-alkioksi. Laskutusjakso ei selviä (sivun aikaväli 23.8.2026-9.5.2027), billing_period=unknown.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-001",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10724386_d52a9cdda1a7.html",
      "capture_sha256": "d52a9cdda1a74ed494b883424928e9907f0ba74817d5e28034fbbb4614ed77e1",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa unknown ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "AKROTEMPPUILU (2020-2021-syntyneet) MA 17:00-17:45 179€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021-syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Temppis (Vetokuja 1B)",
    "address": "Vetokuja 1 B, 01610 Vantaa",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-24",
    "end_date": "2027-05-03",
    "sessions_count": null,
    "price_eur": 179.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Temppisryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10676339",
    "source_quote": "AKROTEMPPUILU (2020-2021-syntyneet) MA 17:00-17:45 179€ | 24.8.2026 17:00 - 3.5.2027",
    "activity_id": "van-2026-0028",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 199.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-24",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-24",
    "season_end_date": "2027-05-03",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 179,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 30 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 6.63 -> 13.27; price_period 2026-08-24..2026-12-07 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-002",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10676339_1c4ed8ba8cc3.html",
      "capture_sha256": "1c4ed8ba8cc3c728f87066684aed9d94f645361cac70fb0a6d9bfadc9dbecb01",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 51.4,
    "monthly_cost_basis": "179.0 € / term jaettuna 3.48 kuukaudelle (2026-08-24–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "KIPINÄVOIMISTELU (2021-2022-syntyneet) MA 17:00-17:45 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2021-2022-syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Tanssisali (Vetokuja 1E)",
    "address": "Vetokuja 1E, 01610 Vantaa",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-24",
    "end_date": "2027-05-03",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Tanssisaliryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10677942",
    "source_quote": "KIPINÄVOIMISTELU (2021-2022-syntyneet) MA 17:00-17:45 149€ | 24.8.2026 17:00 - 3.5.2027",
    "activity_id": "van-2026-0029",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-24",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-24",
    "season_end_date": "2027-05-03",
    "birth_year_min": 2021,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 30 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.63 -> 11.27; price_period 2026-08-24..2026-12-07 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-003",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10677942_29b2c764188e.html",
      "capture_sha256": "29b2c764188e02147a974a91376652d55c3148492c7aed88e8a99a2eaf878349",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-24–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "NAPEROAKRO (2022-2023-syntyneet) MA 17:45-18:30 179€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-2023-syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Temppis (Vetokuja 1B)",
    "address": "Vetokuja 1 B, 01610 Vantaa",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-24",
    "end_date": "2027-05-03",
    "sessions_count": null,
    "price_eur": 179.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Temppisryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10676381",
    "source_quote": "NAPEROAKRO (2022-2023-syntyneet) MA 17:45-18:30 179€ | 24.8.2026 17:45 - 3.5.2027",
    "activity_id": "van-2026-0030",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 199.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-24",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-24",
    "season_end_date": "2027-05-03",
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 179,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 30 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 6.63 -> 13.27; price_period 2026-08-24..2026-12-07 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-004",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10676381_05c915ebcd4d.html",
      "capture_sha256": "05c915ebcd4d2bc8859ed952f85a39345f60d2d9ee8d22fb1f0fd8a56c75adc4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 51.4,
    "monthly_cost_basis": "179.0 € / term jaettuna 3.48 kuukaudelle (2026-08-24–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "KIPINÄVOIMISTELU (2022-2023-syntyneet) MA 17:45-18:30 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-2023-syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Tanssisali (Vetokuja 1E)",
    "address": "Vetokuja 1E, 01610 Vantaa",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-24",
    "end_date": "2027-05-03",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Tanssisaliryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10677875",
    "source_quote": "KIPINÄVOIMISTELU (2022-2023-syntyneet) MA 17:45-18:30 149€ | 24.8.2026 17:45 - 3.5.2027",
    "activity_id": "van-2026-0031",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-24",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-24",
    "season_end_date": "2027-05-03",
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 30 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.63 -> 11.27; price_period 2026-08-24..2026-12-07 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-005",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10677875_4a289186927e.html",
      "capture_sha256": "4a289186927ed21e85fc7186f839f3402dbb3a4501592625597405263ad00eb4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-24–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "AKRO&AIRTRACK (2019-2021-syntyneet) MA 18:00-18:45 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2019-2021-syntyneet",
    "parent_child": "unknown",
    "venue_name": "Rajatorpan koulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-08-24",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - kouluryhmä",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://vvs.myclub.fi/flow/courses/10681181",
    "source_quote": "AKRO&AIRTRACK (2019-2021-syntyneet) MA 18:00-18:45 149€ | 24.8.2026 18:00 - 3.5.2027",
    "activity_id": "van-2026-0032",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-24",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-24",
    "season_end_date": "2027-05-03",
    "birth_year_min": 2019,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: price_period 2026-08-24..2026-12-07 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-006",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10681181_fe3082512372.html",
      "capture_sha256": "fe3082512372210ef096427d750b7e6e4355b26a82da3f356f99ccfa11e48784",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-24–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "KIPINÄVOIMISTELU (2020-2021-syntyneet) MA 18:30-19:15 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021-syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Tanssisali (Vetokuja 1E)",
    "address": "Vetokuja 1E, 01610 Vantaa",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:30",
    "end_time": "19:15",
    "season": "syksy 2026",
    "start_date": "2026-08-24",
    "end_date": "2027-05-03",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Tanssisaliryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10677991",
    "source_quote": "KIPINÄVOIMISTELU (2020-2021-syntyneet) MA 18:30-19:15 149€ | 24.8.2026 18:30 - 3.5.2027",
    "activity_id": "van-2026-0033",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-24",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-24",
    "season_end_date": "2027-05-03",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 30 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.63 -> 11.27; price_period 2026-08-24..2026-12-07 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-007",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10677991_a09adc184682.html",
      "capture_sha256": "a09adc1846824f1ca3bda183e4d650c03bc55fb58951be456ae8fe10633acf76",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-24–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "TELINEVOIMISTELU (2020-2021-syntyneet) TI 17:15-18:00 189€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021-syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Temppis (Vetokuja 1B)",
    "address": "Vetokuja 1 B, 01610 Vantaa",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2027-05-04",
    "sessions_count": null,
    "price_eur": 189.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Temppisryhmä: telinevoimistelu 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://vvs.myclub.fi/flow/courses/10675213",
    "source_quote": "TELINEVOIMISTELU (2020-2021-syntyneet) TI 17:15-18:00 189€ | 25.8.2026 17:15 - 4.5.2027",
    "activity_id": "van-2026-0034",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 209.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-25",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-08-25",
    "season_end_date": "2027-05-04",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 189,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 6.74 -> 13.93; price_period 2026-08-25..2026-12-08 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-008",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10675213_3f87429a0afc.html",
      "capture_sha256": "3f87429a0afc2fcccd4ca9eaf6ff9914138d4fce8a84b91fa585afbe4df8b86e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 54.27,
    "monthly_cost_basis": "189.0 € / term jaettuna 3.48 kuukaudelle (2026-08-25–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "AKROTEMPPUILU (2020-2022-syntyneet) TI 17:15-18:00 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2022-syntyneet",
    "parent_child": "unknown",
    "venue_name": "Tammistonrannan päiväkoti",
    "address": "Säteritilankatu 8, 01520 Vantaa, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2027-05-04",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - kouluryhmä",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://vvs.myclub.fi/flow/courses/10680878",
    "source_quote": "AKROTEMPPUILU (2020-2022-syntyneet) TI 17:15-18:00 149€ | 25.8.2026 17:15 - 4.5.2027",
    "activity_id": "van-2026-0035",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-25",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-08-25",
    "season_end_date": "2027-05-04",
    "birth_year_min": 2020,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.45 -> 11.27; price_period 2026-08-25..2026-12-08 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-009",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10680878_b260be907c69.html",
      "capture_sha256": "b260be907c69b5ab1de93df7f665e640fdd5b65a86705f1d8bc560288a104c57",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-25–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tammisto",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tammisto' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "AKROTEMPPUILU (2019-2020-syntyneet) TI 17:30-18:15 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2019-2020-syntyneet",
    "parent_child": "unknown",
    "venue_name": "Ylästön koulun liikuntasali",
    "address": "Ollaksentie 29, 01690 Vantaa",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2027-05-04",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - kouluryhmä",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://vvs.myclub.fi/flow/courses/10681273",
    "source_quote": "AKROTEMPPUILU (2019-2020-syntyneet) TI 17:30-18:15 149€ | 25.8.2026 17:30 - 4.5.2027",
    "activity_id": "van-2026-0036",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-25",
    "price_period_end": "2026-12-01",
    "season_start_date": "2026-08-25",
    "season_end_date": "2027-05-04",
    "birth_year_min": 2019,
    "birth_year_max": 2020,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 30 -> 14 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.63 -> 12.07; price_period 2026-08-25..2026-12-01 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-010",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10681273_2280fbe1f200.html",
      "capture_sha256": "2280fbe1f20027091a4798883943a2449696783c6b74285d03305f2c8b853f0a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 45.81,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.25 kuukaudelle (2026-08-25–2026-12-01, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Ylästö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Ylästö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "KIPINÄVOIMISTELU (2021-2023-syntyneet) TI 18:00-18:45 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2021-2023-syntyneet",
    "parent_child": "unknown",
    "venue_name": "Tammistonrannan päiväkoti",
    "address": "Säteritilankatu 8, 01520 Vantaa, Suomi",
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2027-05-04",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - kouluryhmä",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10678579",
    "source_quote": "KIPINÄVOIMISTELU (2021-2023-syntyneet) TI 18:00-18:45 149€ | 25.8.2026 18:00 - 4.5.2027",
    "activity_id": "van-2026-0037",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-25",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-08-25",
    "season_end_date": "2027-05-04",
    "birth_year_min": 2021,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.45 -> 11.27; price_period 2026-08-25..2026-12-08 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-011",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10678579_b3956b1df0c1.html",
      "capture_sha256": "b3956b1df0c1694d509f5742b0e44ed302b44548df39117194e0f8e2754ac105",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-25–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Tammisto",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tammisto' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "PERHELIIKUNTA (2024 ja aiemmin syntyneet) TI 18:15-19:00 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024 ja aiemmin syntyneet",
    "parent_child": "unknown",
    "venue_name": "Ylästön koulun liikuntasali",
    "address": "Ollaksentie 29, 01690 Vantaa",
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:15",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2027-05-04",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - kouluryhmä",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10674809",
    "source_quote": "PERHELIIKUNTA (2024 ja aiemmin syntyneet) TI 18:15-19:00 149€ | 25.8.2026 18:15 - 4.5.2027 | Perheliikunnan aikuisen jäsenmaksu 20,00 €",
    "activity_id": "van-2026-0038",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 189.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-25",
    "price_period_end": "2026-12-01",
    "season_start_date": "2026-08-25",
    "season_end_date": "2027-05-04",
    "birth_year_min": null,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "osallistuva aikuinen (ellei jo VVS:n jäsen 2025-2026, jolloin -20 €)",
        "note": "myClub 'Hintatiedot': Perheliikunnan aikuisen jäsenmaksu 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Perheliikuntaan osallistuu lapsen kanssa myös toinen aikuinen 20,00 €; Perheliikuntaan osallistuva aikuinen on jo VVS jäsen 2025-2026 -20,00 €; Sisarusalennus saman perheen toiselle tähän perheliikuntaryhmään osallistuvalle lapselle -30,00 €",
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: lisätty pakollinen aikuisen jäsenmaksu 20 € (myClub Hintatiedot: \"Perheliikunnan aikuisen jäsenmaksu 20,00 €\"; valinnaiset: toinen aikuinen +20 €, sisarusalennus -30 €), known_min_total_eur +20 €; sessions_count 30 -> 14 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.63 -> 13.5; price_period 2026-08-25..2026-12-01 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-012",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10674809_351d9eb01658.html",
      "capture_sha256": "351d9eb01658adb310386597079b57817af8dc51c8662c257772a52b346f2981",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 47.48,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.25 kuukaudelle (2026-08-25–2026-12-01, price_period_start) + membership 20 €/v ÷ 12",
    "monthly_cost_complete": false,
    "district_derived": "Ylästö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Ylästö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "AKROTEMPPUILU 2019-2021 syntyneet) TI 18:45-19:30 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2019-2021 syntyneet",
    "parent_child": "unknown",
    "venue_name": "Tammistonrannan päiväkoti",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "18:45",
    "end_time": "19:30",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - kouluryhmä",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10680885",
    "source_quote": "AKROTEMPPUILU 2019-2021 syntyneet) TI 18:45-19:30 149€ | 25.8.2026 18:45 - 4.5.2027",
    "activity_id": "van-2026-0039",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-25",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-08-25",
    "season_end_date": "2027-05-04",
    "birth_year_min": 2019,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: price_period 2026-08-25..2026-12-08 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-013",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10680885_6ac91918a30f.html",
      "capture_sha256": "6ac91918a30f6413a641c01ae55979c49f67ca01f10225ccc037db2d84fc9d7e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-25–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "TELINETEMPPUILU (2021-2023-syntyneet) KE 17:00-17:45 179€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2021-2023-syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Temppis (Vetokuja 1B)",
    "address": "Vetokuja 1 B, 01610 Vantaa",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2027-05-05",
    "sessions_count": null,
    "price_eur": 179.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Temppisryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10676647",
    "source_quote": "TELINETEMPPUILU (2021-2023-syntyneet) KE 17:00-17:45 179€ | 26.8.2026 17:00 - 5.5.2027",
    "activity_id": "van-2026-0040",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 199.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-26",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-26",
    "season_end_date": "2027-05-05",
    "birth_year_min": 2021,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 179,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 6.42 -> 13.27; price_period 2026-08-26..2026-12-09 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-014",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10676647_de5ac3b784d3.html",
      "capture_sha256": "de5ac3b784d37a7554e6cf22ac92049b1e3c5843ee772d6ea6d11ca2e997ede0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 51.4,
    "monthly_cost_basis": "179.0 € / term jaettuna 3.48 kuukaudelle (2026-08-26–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "AKROTEMPPUILU (2020-2022-syntyneet) KE 17:00-17:45 179€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2022-syntyneet",
    "parent_child": "unknown",
    "venue_name": "Hämeenkylän liikuntahalli",
    "address": "Varistontie 3",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2027-05-05",
    "sessions_count": null,
    "price_eur": 179.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Hämeenkylän liikuntahallin ryhmä",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10680977",
    "source_quote": "AKROTEMPPUILU (2020-2022-syntyneet) KE 17:00-17:45 179€ | 26.8.2026 17:00 - 5.5.2027",
    "activity_id": "van-2026-0041",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 199.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-26",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-26",
    "season_end_date": "2027-05-05",
    "birth_year_min": 2020,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 179,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 6.42 -> 13.27; price_period 2026-08-26..2026-12-09 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-015",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10680977_e064788eb315.html",
      "capture_sha256": "e064788eb315e6860780c0d7843365f6ce8047494e0c83e9c475d0de8145e07a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 51.4,
    "monthly_cost_basis": "179.0 € / term jaettuna 3.48 kuukaudelle (2026-08-26–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Varisto",
    "district_basis": "geokoodattu osoite -> neighborhood 'Varisto' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "KIPINÄVOIMISTELU (2020-2023-syntyneet) KE 17:15-18:00 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2023-syntyneet",
    "parent_child": "unknown",
    "venue_name": "Aurinkokiven koulu",
    "address": "Aurinkokivenkuja 1, 01700 Vantaa, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2027-05-05",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - kouluryhmä",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10678813",
    "source_quote": "KIPINÄVOIMISTELU (2020-2023-syntyneet) KE 17:15-18:00 149€ | 26.8.2026 17:15 - 5.5.2027",
    "activity_id": "van-2026-0042",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-26",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-26",
    "season_end_date": "2027-05-05",
    "birth_year_min": 2020,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.45 -> 11.27; price_period 2026-08-26..2026-12-09 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-016",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10678813_821c372c9611.html",
      "capture_sha256": "821c372c9611f72b8d505247140acf7c7daeffa10f0063ef921f48f8b53416c2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-26–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kivistö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kivistö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "PERHETEMPPUILU (2024 ja aiemmin syntyneet) KE 17:45-18:30 179€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2024 ja aiemmin syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Temppis (Vetokuja 1B)",
    "address": "Vetokuja 1 B, 01610 Vantaa",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2027-05-05",
    "sessions_count": null,
    "price_eur": 179.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Temppisryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://vvs.myclub.fi/flow/courses/10674643",
    "source_quote": "PERHETEMPPUILU (2024 ja aiemmin syntyneet) KE 17:45-18:30 179€ | 26.8.2026 17:45 - 5.5.2027 | Perheliikunnan aikuisen jäsenmaksu 20,00 €",
    "activity_id": "van-2026-0043",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 219.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-26",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-26",
    "season_end_date": "2027-05-05",
    "birth_year_min": null,
    "birth_year_max": 2024,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 179,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "osallistuva aikuinen (ellei jo VVS:n jäsen 2025-2026, jolloin -20 €)",
        "note": "myClub 'Hintatiedot': Perheliikunnan aikuisen jäsenmaksu 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Perheliikuntaan osallistuu lapsen kanssa myös toinen aikuinen 20,00 €; Perheliikuntaan osallistuva aikuinen on jo VVS jäsen 2025-2026 -20,00 €; Sisarusalennus saman perheen toiselle tähän perheliikuntaryhmään osallistuvalle lapselle -30,00 €",
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: lisätty pakollinen aikuisen jäsenmaksu 20 € (myClub Hintatiedot: \"Perheliikunnan aikuisen jäsenmaksu 20,00 €\"; valinnaiset: toinen aikuinen +20 €, sisarusalennus -30 €), known_min_total_eur +20 €; sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 6.42 -> 14.6; price_period 2026-08-26..2026-12-09 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-017",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10674643_7836a8196a24.html",
      "capture_sha256": "7836a8196a24ca2e79db8efa15f7f22182d565717303748afbfb3023b63e808e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.07,
    "monthly_cost_basis": "179.0 € / term jaettuna 3.48 kuukaudelle (2026-08-26–2026-12-09, price_period_start) + membership 20 €/v ÷ 12",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "SIRKUS (2020-2021-syntyneet) KE 17:45-18:30 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021-syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Tanssisali (Vetokuja 1E)",
    "address": "Vetokuja 1E, 01610 Vantaa",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2027-05-05",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Tanssisaliryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10677625",
    "source_quote": "SIRKUS (2020-2021-syntyneet) KE 17:45-18:30 149€ | 26.8.2026 17:45 - 5.5.2027",
    "activity_id": "van-2026-0044",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-26",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-26",
    "season_end_date": "2027-05-05",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.45 -> 11.27; price_period 2026-08-26..2026-12-09 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-018",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10677625_6e6acd60a7d8.html",
      "capture_sha256": "6e6acd60a7d8ef2c0fb861038e8958a54334adf4817b51771be40ff0ba02e06e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-26–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "PERHETEMPPUILU (2023 ja aiemmin syntyneet) KE 18:00-18:45 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2023 ja aiemmin syntyneet",
    "parent_child": "unknown",
    "venue_name": "Aurinkokiven koulu",
    "address": "Aurinkokivenkuja 1, 01700 Vantaa, Suomi",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2027-05-05",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - kouluryhmä",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10674856",
    "source_quote": "PERHETEMPPUILU (2023 ja aiemmin syntyneet) KE 18:00-18:45 149€ | 26.8.2026 18:00 - 5.5.2027 | Perheliikunnan aikuisen jäsenmaksu 20,00 €",
    "activity_id": "van-2026-0045",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 189.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-26",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-26",
    "season_end_date": "2027-05-05",
    "birth_year_min": null,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "osallistuva aikuinen (ellei jo VVS:n jäsen 2025-2026, jolloin -20 €)",
        "note": "myClub 'Hintatiedot': Perheliikunnan aikuisen jäsenmaksu 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Perheliikuntaan osallistuu lapsen kanssa myös toinen aikuinen 20,00 €; Perheliikuntaan osallistuva aikuinen on jo VVS jäsen 2025-2026 -20,00 €; Sisarusalennus saman perheen toiselle tähän perheliikuntaryhmään osallistuvalle lapselle -30,00 €",
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: lisätty pakollinen aikuisen jäsenmaksu 20 € (myClub Hintatiedot: \"Perheliikunnan aikuisen jäsenmaksu 20,00 €\"; valinnaiset: toinen aikuinen +20 €, sisarusalennus -30 €), known_min_total_eur +20 €; sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.45 -> 12.6; price_period 2026-08-26..2026-12-09 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-019",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10674856_ceb3c18e412a.html",
      "capture_sha256": "ceb3c18e412a8c0701d5ffdaf42bd9ae62b6e35720e572fdff7a96a73a7fe245",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 44.45,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-26–2026-12-09, price_period_start) + membership 20 €/v ÷ 12",
    "monthly_cost_complete": false,
    "district_derived": "Kivistö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kivistö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "PERHETEMPPUILU (2023 ja aiemmin syntyneet) KE 18:30-19:15 179€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2023 ja aiemmin syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Temppis (Vetokuja 1B)",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:30",
    "end_time": "19:15",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 179.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Temppisryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10674722",
    "source_quote": "PERHETEMPPUILU (2023 ja aiemmin syntyneet) KE 18:30-19:15 179€ | 26.8.2026 18:30 - 5.5.2027 | Perheliikunnan aikuisen jäsenmaksu 20,00 €",
    "activity_id": "van-2026-0046",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 219.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-26",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-26",
    "season_end_date": "2027-05-05",
    "birth_year_min": null,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 179,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "osallistuva aikuinen (ellei jo VVS:n jäsen 2025-2026, jolloin -20 €)",
        "note": "myClub 'Hintatiedot': Perheliikunnan aikuisen jäsenmaksu 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Perheliikuntaan osallistuu lapsen kanssa myös toinen aikuinen 20,00 €; Perheliikuntaan osallistuva aikuinen on jo VVS jäsen 2025-2026 -20,00 €; Sisarusalennus saman perheen toiselle tähän perheliikuntaryhmään osallistuvalle lapselle -30,00 €",
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: lisätty pakollinen aikuisen jäsenmaksu 20 € (myClub Hintatiedot: \"Perheliikunnan aikuisen jäsenmaksu 20,00 €\"; valinnaiset: toinen aikuinen +20 €, sisarusalennus -30 €), known_min_total_eur +20 €; price_period 2026-08-26..2026-12-09 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-020",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10674722_4e39b7ddd3ca.html",
      "capture_sha256": "4e39b7ddd3cae14460165156e817592766e464b80ae41791b01db572b595819e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 53.07,
    "monthly_cost_basis": "179.0 € / term jaettuna 3.48 kuukaudelle (2026-08-26–2026-12-09, price_period_start) + membership 20 €/v ÷ 12",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "TELINETEMPPUILU (2021-2022-syntyneet) TO 17:00-17:45 179€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2021-2022-syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Temppis (Vetokuja 1B)",
    "address": "Vetokuja 1 B, 01610 Vantaa",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-27",
    "end_date": "2027-05-06",
    "sessions_count": null,
    "price_eur": 179.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Temppisryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10676724",
    "source_quote": "TELINETEMPPUILU (2021-2022-syntyneet) TO 17:00-17:45 179€ | 27.8.2026 17:00 - 6.5.2027",
    "activity_id": "van-2026-0047",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 199.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-27",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-27",
    "season_end_date": "2027-05-06",
    "birth_year_min": 2021,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 179,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 6.42 -> 13.27; price_period 2026-08-27..2026-12-10 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-021",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10676724_b0324df126c0.html",
      "capture_sha256": "b0324df126c0e0e901b1dfe02ac676f6450100e21c2f8f5f68dcaa665b35abf4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 51.4,
    "monthly_cost_basis": "179.0 € / term jaettuna 3.48 kuukaudelle (2026-08-27–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "Joukkuevoimistelun esivalmennusryhmä Kipinä (2019-2021-syntyneet) TO 17:00-17:45 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2019-2021-syntyneet",
    "parent_child": "unknown",
    "venue_name": "Rajatorpan koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-27",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - kouluryhmä",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10678700",
    "source_quote": "Joukkuevoimistelun esivalmennusryhmä Kipinä (2019-2021-syntyneet) TO 17:00-17:45 149€ | 27.8.2026 17:00 - 6.5.2027",
    "activity_id": "van-2026-0048",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-27",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-27",
    "season_end_date": "2027-05-06",
    "birth_year_min": 2019,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: price_period 2026-08-27..2026-12-10 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-022",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10678700_f149d1558d4a.html",
      "capture_sha256": "f149d1558d4ad78fe4ecc1251795c83f80a9fa62ff6b030310e305690dd2162f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-27–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "KIPINÄVOIMISTELU (2022-2023-syntyneet) TO 17:15-18:00 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-2023-syntyneet",
    "parent_child": "unknown",
    "venue_name": "Rajatorpan koulu",
    "address": "Vapaalanpolku 13, 01650 Vantaa",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-27",
    "end_date": "2027-05-06",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - kouluryhmä",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10678772",
    "source_quote": "KIPINÄVOIMISTELU (2022-2023-syntyneet) TO 17:15-18:00 149€ | 27.8.2026 17:15 - 6.5.2027",
    "activity_id": "van-2026-0049",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-27",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-27",
    "season_end_date": "2027-05-06",
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.45 -> 11.27; price_period 2026-08-27..2026-12-10 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-023",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10678772_43b58e6bbf70.html",
      "capture_sha256": "43b58e6bbf70f163fc93d5a8aea4039ec34ad396ee88c1f301a50aad1527d706",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-27–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Vapaala",
    "district_basis": "geokoodattu osoite -> neighborhood 'Vapaala' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "KIPINÄVOIMISTELU (2022-2023-syntyneet) TO 17:40-18:25 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-2023-syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Temppis, yläsali",
    "address": "Vetokuja 1 B, 01610 Vantaa",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:40",
    "end_time": "18:25",
    "season": "syksy 2026",
    "start_date": "2026-08-27",
    "end_date": "2027-05-06",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Tanssisaliryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10677729",
    "source_quote": "KIPINÄVOIMISTELU (2022-2023-syntyneet) TO 17:40-18:25 149€ | 27.8.2026 17:40 - 6.5.2027",
    "activity_id": "van-2026-0050",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-27",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-27",
    "season_end_date": "2027-05-06",
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.45 -> 11.27; price_period 2026-08-27..2026-12-10 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-024",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10677729_b60a6925eb8d.html",
      "capture_sha256": "b60a6925eb8d41feca6fc280eae66fbb1c71bf20fe993caf17ecd4a2cc5570f6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-27–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "TELINETEMPPUILU (2019-2020-syntyneet) TO 17:45-18:30 179€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2019-2020-syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Temppis (Vetokuja 1B)",
    "address": "Vetokuja 1 B, 01610 Vantaa",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-27",
    "end_date": "2027-05-06",
    "sessions_count": null,
    "price_eur": 179.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Temppisryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://vvs.myclub.fi/flow/courses/10676829",
    "source_quote": "TELINETEMPPUILU (2019-2020-syntyneet) TO 17:45-18:30 179€ | 27.8.2026 17:45 - 6.5.2027",
    "activity_id": "van-2026-0051",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 199.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-27",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-08-27",
    "season_end_date": "2027-05-06",
    "birth_year_min": 2019,
    "birth_year_max": 2020,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 179,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 6.42 -> 13.27; price_period 2026-08-27..2026-12-10 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-025",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10676829_4799c02fa36e.html",
      "capture_sha256": "4799c02fa36e2b57552e49745346d94cba84f74958923fbf556146117fd9c347",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 51.4,
    "monthly_cost_basis": "179.0 € / term jaettuna 3.48 kuukaudelle (2026-08-27–2026-12-10, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "NAPEROPARKOUR (2021-2023-syntyneet) PE 17:00-17:45 179€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2021-2023-syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Temppis (Vetokuja 1B)",
    "address": "Vetokuja 1 B, 01610 Vantaa",
    "district": null,
    "weekday": "perjantai",
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-28",
    "end_date": "2027-05-07",
    "sessions_count": null,
    "price_eur": 179.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Temppisryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10677096",
    "source_quote": "NAPEROPARKOUR (2021-2023-syntyneet) PE 17:00-17:45 179€ | 28.8.2026 17:00 - 7.5.2027",
    "activity_id": "van-2026-0052",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 199.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-28",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-08-28",
    "season_end_date": "2027-05-07",
    "birth_year_min": 2021,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 179,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 29 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 6.86 -> 13.27; price_period 2026-08-28..2026-12-11 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-026",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10677096_b051a719b9d4.html",
      "capture_sha256": "b051a719b9d483036a4b22d684dcb9e27f08c65e1eb3514aaee150451c54faf2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 51.4,
    "monthly_cost_basis": "179.0 € / term jaettuna 3.48 kuukaudelle (2026-08-28–2026-12-11, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "PARKOUR (2020-2021-syntyneet) PE 17:45-18:30 179€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021-syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Temppis (Vetokuja 1B)",
    "address": "Vetokuja 1 B, 01610 Vantaa",
    "district": null,
    "weekday": "perjantai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-10-23",
    "end_date": "2027-04-23",
    "sessions_count": null,
    "price_eur": 179.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Temppisryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10677206",
    "source_quote": "PARKOUR (2020-2021-syntyneet) PE 17:45-18:30 179€ | 28.8.2026 17:30 - 7.5.2027",
    "activity_id": "van-2026-0053",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 199.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-10-23",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-08-28",
    "season_end_date": "2027-05-07",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 179,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 21 -> 14 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 9.48 -> 14.21; price_period 2026-10-23..2026-12-11 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-027",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10677206_bc05e993a6cf.html",
      "capture_sha256": "bc05e993a6cfc4f6d35d2c90c10e35028bcc48249bdf1dc38be6fc3716043a2e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 108.97,
    "monthly_cost_basis": "179.0 € / term jaettuna 1.64 kuukaudelle (2026-10-23–2026-12-11, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "PERHETEMPPUILU (2025 ja aiemmin syntyneet) SU 10:00-10:45 179€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2025 ja aiemmin syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Temppis (Vetokuja 1B)",
    "address": "Vetokuja 1 B, 01610 Vantaa",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": "2026-08-30",
    "end_date": "2027-05-09",
    "sessions_count": null,
    "price_eur": 179.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Temppisryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10674764",
    "source_quote": "PERHETEMPPUILU (2025 ja aiemmin syntyneet) SU 10:00-10:45 179€ | 30.8.2026 10:00 - 9.5.2027 | Perheliikunnan aikuisen jäsenmaksu 20,00 €",
    "activity_id": "van-2026-0054",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 219.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-30",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-30",
    "season_end_date": "2027-05-09",
    "birth_year_min": null,
    "birth_year_max": 2025,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 179,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": "osallistuva aikuinen (ellei jo VVS:n jäsen 2025-2026, jolloin -20 €)",
        "note": "myClub 'Hintatiedot': Perheliikunnan aikuisen jäsenmaksu 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Perheliikuntaan osallistuu lapsen kanssa myös toinen aikuinen 20,00 €; Perheliikuntaan osallistuva aikuinen on jo VVS jäsen 2025-2026 -20,00 €; Sisarusalennus saman perheen toiselle tähän perheliikuntaryhmään osallistuvalle lapselle -30,00 €",
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: lisätty pakollinen aikuisen jäsenmaksu 20 € (myClub Hintatiedot: \"Perheliikunnan aikuisen jäsenmaksu 20,00 €\"; valinnaiset: toinen aikuinen +20 €, sisarusalennus -30 €), known_min_total_eur +20 €; sessions_count 29 -> 14 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 6.86 -> 15.64; price_period 2026-08-30..2026-12-13 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-028",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10674764_25967505c259.html",
      "capture_sha256": "25967505c2591b143cb049998aef3132150a4efa8d182720c2946c8ea3b73f3e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 53.07,
    "monthly_cost_basis": "179.0 € / term jaettuna 3.48 kuukaudelle (2026-08-30–2026-12-13, price_period_start) + membership 20 €/v ÷ 12",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "TELINETEMPPUILU (2020-2022-syntyneet) SU 10:45-11:30 179€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2022-syntyneet",
    "parent_child": "unknown",
    "venue_name": "VVS Temppis (Vetokuja 1B)",
    "address": "Vetokuja 1 B, 01610 Vantaa",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "10:45",
    "end_time": "11:30",
    "season": "syksy 2026",
    "start_date": "2026-08-30",
    "end_date": "2027-05-09",
    "sessions_count": null,
    "price_eur": 179.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Temppisryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10677389",
    "source_quote": "TELINETEMPPUILU (2020-2022-syntyneet) SU 10:45-11:30 179€ | 30.8.2026 10:45 - 9.5.2027",
    "activity_id": "van-2026-0055",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 199.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-30",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-30",
    "season_end_date": "2027-05-09",
    "birth_year_min": 2020,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 179,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 29 -> 14 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 6.86 -> 14.21; price_period 2026-08-30..2026-12-13 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-029",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10677389_4e150eb28bb6.html",
      "capture_sha256": "4e150eb28bb6aac9250e783973c3abe6c031b6e233b25cf002e5e58754829b9b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 51.4,
    "monthly_cost_basis": "179.0 € / term jaettuna 3.48 kuukaudelle (2026-08-30–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "SUPERTEMPPUILU (2021 ja aiemmin syntyneet) SU 17:30-18:15 179€",
    "min_age": 5,
    "max_age": 10,
    "eligibility_text": "5-10-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "VVS Temppis (Vetokuja 1B)",
    "address": "Vetokuja 1 B, 01610 Vantaa",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-30",
    "end_date": "2027-05-09",
    "sessions_count": null,
    "price_eur": 179.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Temppisryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://vvs.myclub.fi/flow/courses/10677438",
    "source_quote": "SUPERTEMPPUILU (2021 ja aiemmin syntyneet) SU 17:30-18:15 179€ | 30.8.2026 17:30 - 9.5.2027",
    "activity_id": "van-2026-0056",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 199.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-30",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-30",
    "season_end_date": "2027-05-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 179,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 29 -> 14 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 6.86 -> 14.21; price_period 2026-08-30..2026-12-13 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-030",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10677438_72f1c762330b.html",
      "capture_sha256": "72f1c762330b23943164bcef210d4665dc91eeedb36e39d5da355a1e31fe3c01",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 51.4,
    "monthly_cost_basis": "179.0 € / term jaettuna 3.48 kuukaudelle (2026-08-30–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "SUPERTEMPPUILU (2021 ja aiemmin syntyneet) SU 18:15-19:00 179€",
    "min_age": 5,
    "max_age": 10,
    "eligibility_text": "5-10-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "VVS Temppis (Vetokuja 1B)",
    "address": null,
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "18:15",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-30",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 179.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Temppisryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10677490",
    "source_quote": "SUPERTEMPPUILU (2021 ja aiemmin syntyneet) SU 18:15-19:00 179€ | 30.8.2026 18:15 - 9.5.2027",
    "activity_id": "van-2026-0057",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 199.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-30",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-30",
    "season_end_date": "2027-05-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 179,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: price_period 2026-08-30..2026-12-13 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-031",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10677490_0cfd28a55293.html",
      "capture_sha256": "0cfd28a55293c8a529f8f5d410354b999d7e8a909d131bd34d51712a25165aef",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 51.4,
    "monthly_cost_basis": "179.0 € / term jaettuna 3.48 kuukaudelle (2026-08-30–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "TELINETEMPPUILU (2020-2022-syntyneet) TO 17:15-18:00 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2022-syntyneet",
    "parent_child": "unknown",
    "venue_name": "Aurinkokiven koulu",
    "address": "Aurinkokivenkuja 1, 01700 Vantaa, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2027-05-06",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - kouluryhmä",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10681478",
    "source_quote": "TELINETEMPPUILU (2020-2022-syntyneet) TO 17:15-18:00 149€ | 3.9.2026 17:15 - 6.5.2027",
    "activity_id": "van-2026-0058",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-17",
    "season_start_date": "2026-09-03",
    "season_end_date": "2027-05-06",
    "birth_year_min": 2020,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta (Toimintamaksu), koska sivulla ei ole erillistä Hintatiedot-listaa; jäsenmaksu samasta listasta. Vantaa-QA 24.9.2026: sessions_count 29 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.83 -> 11.27; price_period 2026-09-03..2026-12-17 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-032",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10681478_c326ffe5ff38.html",
      "capture_sha256": "c326ffe5ff38d4a488a3ef4e1baa0ac54988f7c2d1fc19b2a27e692e98323cd3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-09-03–2026-12-17, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kivistö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kivistö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "JOUKKUEVOIMISTELU Picat A (2020-2021-syntyneet) 1x/vko",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021-syntyneet",
    "parent_child": "unknown",
    "venue_name": null,
    "address": null,
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "12:00",
    "end_time": "13:00",
    "season": "syksy 2026",
    "start_date": "2026-08-30",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 200.0,
    "price_basis": "1x/vko lasku yhdessä erässä (1A) alk. 200,00 € tai neljässä erässä 50 €/kk; syksy 2026 (30.8.-11.12.2026)",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10731131",
    "source_quote": "JOUKKUEVOIMISTELU Picat A (2020-2021-syntyneet) 1x/vko | 30.8.2026 12:00 - 11.12.2026 | Pukuvuokra syksy 2026 25,00 € *",
    "activity_id": "van-2026-0059",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 245.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-30",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-08-30",
    "season_end_date": "2026-12-11",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 200,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 1x/vko lasku neljässä erässä 50€/kk (1A), tai 1x/vko lasku yhdessä erässä (1A) alk. 200,00 €"
      },
      {
        "type": "other",
        "amount_eur": 25,
        "mandatory": true,
        "included": false,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "myClub 'Hintatiedot': Pukuvuokra syksy 2026 25,00 €"
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [
      {
        "label": "Neljässä erässä",
        "amount_eur": 50.0,
        "applies_if": "1x/vko lasku neljässä erässä 50€/kk (1A)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: price_eur oli 25 € (pukuvuokra) - varsinainen toimintamaksu on 200 € (1 erä) / 4 x 50 €/kk; korjattu price_eur 200 €, pukuvuokra 25 € ja jäsenmaksu 20 € erillisinä pakollisina. Aikataulun harjoitukset ovat kaikki sunnuntaisin klo 12-13 (lisäksi syyslomatapahtuma ja juhlanäytös, ei harjoituksia) -> weekday=sunnuntai.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-033",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_vvs_10731131_7436ca29700c.html",
      "capture_sha256": "7436ca29700c0274372e37b1bd5b2b67d9bd24d0c609a3eff6d1e753be911da4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 67.52,
    "monthly_cost_basis": "225.0 € / term jaettuna 3.42 kuukaudelle (2026-08-30–2026-12-11, price_period_start) + membership 20 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Voimistelu 2022-2023 synt. Korso",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-2023 synt.",
    "parent_child": "no",
    "venue_name": "Korson koulu 2",
    "address": null,
    "district": "Korso",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 120.0,
    "price_basis": "Harrastemaksu syksy 2026 45min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10793606",
    "source_quote": "Voimistelu 2022-2023 synt. Korso | 31.8.2026 17:00 - 13.12.2026 | Harrastemaksu syksy 2026 45min alk. 120,00 €",
    "activity_id": "van-2026-0060",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 120,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (120 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-034",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10793606_a349c172a8d4.html",
      "capture_sha256": "a349c172a8d45d3db99307bbc3490f53e507d392afbdcb248c9f4eb8e56ba75d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 38.12,
    "monthly_cost_basis": "120.0 € / term jaettuna 3.45 kuukaudelle (2026-08-31–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Korso",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Voimistelu 2020-2021 synt. Korso",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021 synt.",
    "parent_child": "no",
    "venue_name": "Korson koulu 2",
    "address": null,
    "district": "Korso",
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 132.0,
    "price_basis": "Harrastemaksu syksy 2026 60min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10792956",
    "source_quote": "Voimistelu 2020-2021 synt. Korso | 31.8.2026 18:00 - 13.12.2026 | Harrastemaksu syksy 2026 60min alk. 132,00 €",
    "activity_id": "van-2026-0061",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 172.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 132,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (132 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-035",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10792956_00a268b2f850.html",
      "capture_sha256": "00a268b2f8504fa41f574ad280f3f1b024090da172b5e79eea2f91c12efb09fb",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 41.6,
    "monthly_cost_basis": "132.0 € / term jaettuna 3.45 kuukaudelle (2026-08-31–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Korso",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Voimistelu 2022-2023 synt. Viertola",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-2023 synt.",
    "parent_child": "no",
    "venue_name": "Viertolan koulu, Jokirannan toimipiste",
    "address": null,
    "district": "Viertola",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 120.0,
    "price_basis": "Harrastemaksu syksy 2026 45min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10793679",
    "source_quote": "Voimistelu 2022-2023 synt. Viertola | 1.9.2026 17:00 - 13.12.2026 | Harrastemaksu syksy 2026 45min alk. 120,00 €",
    "activity_id": "van-2026-0062",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 120,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (120 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-036",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10793679_01de3fd4611f.html",
      "capture_sha256": "01de3fd4611fbed3a906ea071909283fe7e308636f2b235dca220d870e1c5488",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 38.45,
    "monthly_cost_basis": "120.0 € / term jaettuna 3.42 kuukaudelle (2026-09-01–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Viertola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Voimistelu 2020-2021 synt. Viertola",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021 synt.",
    "parent_child": "no",
    "venue_name": "Viertolan koulu, Jokirannan toimipiste",
    "address": null,
    "district": "Viertola",
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 132.0,
    "price_basis": "Harrastemaksu syksy 2026 60min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10793645",
    "source_quote": "Voimistelu 2020-2021 synt. Viertola | 1.9.2026 18:00 - 13.12.2026 | Harrastemaksu syksy 2026 60min alk. 132,00 €",
    "activity_id": "van-2026-0063",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 172.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 132,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (132 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-037",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10793645_00e826d28d9e.html",
      "capture_sha256": "00e826d28d9e4d502c2afd4a98175f43bad1dfd80f24f83a398c990c0a55a9e3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 41.97,
    "monthly_cost_basis": "132.0 € / term jaettuna 3.42 kuukaudelle (2026-09-01–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Viertola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Voimistelu 2022-2023 synt. Vierumäki",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-2023 synt.",
    "parent_child": "no",
    "venue_name": "Vierumäen koulu",
    "address": null,
    "district": "Vierumäki",
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 120.0,
    "price_basis": "Harrastemaksu syksy 2026 45min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10793766",
    "source_quote": "Voimistelu 2022-2023 synt. Vierumäki | 2.9.2026 17:00 - 13.12.2026 | Harrastemaksu syksy 2026 45min alk. 120,00 €",
    "activity_id": "van-2026-0064",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 120,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (120 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-038",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10793766_344ce365a817.html",
      "capture_sha256": "344ce365a8172605607dd816154b484d9a9e316c237ad6fe40fbf2cbde738bce",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 38.79,
    "monthly_cost_basis": "120.0 € / term jaettuna 3.38 kuukaudelle (2026-09-02–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Vierumäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Voimistelu 2020-2021 synt. Vierumäki",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021 synt.",
    "parent_child": "no",
    "venue_name": "Vierumäen koulu",
    "address": null,
    "district": "Vierumäki",
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 132.0,
    "price_basis": "Harrastemaksu syksy 2026 60min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10793734",
    "source_quote": "Voimistelu 2020-2021 synt. Vierumäki | 2.9.2026 18:00 - 13.12.2026 | Harrastemaksu syksy 2026 60min alk. 132,00 €",
    "activity_id": "van-2026-0065",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 172.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 132,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (132 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-039",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10793734_52aa195f5564.html",
      "capture_sha256": "52aa195f5564d6a695c32ad784ac6f866420072e19ab256aa446c33a8af7a783",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 42.34,
    "monthly_cost_basis": "132.0 € / term jaettuna 3.38 kuukaudelle (2026-09-02–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Vierumäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Voimistelu 2022-2023 synt. Jokiniemi",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-2023 synt.",
    "parent_child": "no",
    "venue_name": "Jokiniemen koulu / Valkoinen talo",
    "address": null,
    "district": "Jokiniemi",
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 120.0,
    "price_basis": "Harrastemaksu syksy 2026 45min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10793695",
    "source_quote": "Voimistelu 2022-2023 synt. Jokiniemi | 2.9.2026 18:00 - 13.12.2026 | Harrastemaksu syksy 2026 45min alk. 120,00 €",
    "activity_id": "van-2026-0066",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 120,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (120 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-040",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10793695_b0e4ec6d1a0f.html",
      "capture_sha256": "b0e4ec6d1a0f46b108406b6de6b8e0d26dd2d554802c09fedade0b8d20c7711a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 38.79,
    "monthly_cost_basis": "120.0 € / term jaettuna 3.38 kuukaudelle (2026-09-02–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Jokiniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Voimistelu 2022-2023 synt. Simonkallio",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-2023 synt.",
    "parent_child": "no",
    "venue_name": "Simonkallion koulu",
    "address": null,
    "district": "Simonkallio",
    "weekday": "torstai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 120.0,
    "price_basis": "Harrastemaksu syksy 2026 45min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10793747",
    "source_quote": "Voimistelu 2022-2023 synt. Simonkallio | 3.9.2026 16:30 - 13.12.2026 | Harrastemaksu syksy 2026 45min alk. 120,00 €",
    "activity_id": "van-2026-0067",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 120,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (120 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-041",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10793747_81638d333f8a.html",
      "capture_sha256": "81638d333f8ab41a0c85e6f286ea354931a485aa31bd29819fb3c9e4b7f906f3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 39.14,
    "monthly_cost_basis": "120.0 € / term jaettuna 3.35 kuukaudelle (2026-09-03–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Simonkallio",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Voimistelu 2020-2021 synt. Simonkallio",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021 synt.",
    "parent_child": "no",
    "venue_name": "Simonkallion koulu",
    "address": null,
    "district": "Simonkallio",
    "weekday": "torstai",
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 132.0,
    "price_basis": "Harrastemaksu syksy 2026 60min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10793768",
    "source_quote": "Voimistelu 2020-2021 synt. Simonkallio | 3.9.2026 17:30 - 13.12.2026 | Harrastemaksu syksy 2026 60min alk. 132,00 €",
    "activity_id": "van-2026-0068",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 172.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 132,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (132 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-042",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10793768_9b5ed25a3043.html",
      "capture_sha256": "9b5ed25a30439ef688ec7dda3ba2b84b764a8e518a5913392151f3cd03e82e4d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 42.72,
    "monthly_cost_basis": "132.0 € / term jaettuna 3.35 kuukaudelle (2026-09-03–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Simonkallio",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Voimistelu 2020-2021 synt. Ilola",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021 synt.",
    "parent_child": "no",
    "venue_name": "Ilolan koulu",
    "address": null,
    "district": "Ilola",
    "weekday": "lauantai",
    "start_time": "13:00",
    "end_time": "14:00",
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 132.0,
    "price_basis": "Harrastemaksu syksy 2026 60min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10793786",
    "source_quote": "Voimistelu 2020-2021 synt. Ilola | 5.9.2026 13:00 - 13.12.2026 | Harrastemaksu syksy 2026 60min alk. 132,00 €",
    "activity_id": "van-2026-0069",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 172.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 132,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (132 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-043",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10793786_82ff993a42df.html",
      "capture_sha256": "82ff993a42df884a0c2d0e516365722cff9256ab54399479dc264883d94978f5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.51,
    "monthly_cost_basis": "132.0 € / term jaettuna 3.29 kuukaudelle (2026-09-05–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Ilola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Voimistelu 2020-2021 synt. Rekola",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021 synt.",
    "parent_child": "no",
    "venue_name": "Rekolan koulu",
    "address": null,
    "district": "Rekola",
    "weekday": "sunnuntai",
    "start_time": "11:00",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": "2026-09-06",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 132.0,
    "price_basis": "Harrastemaksu syksy 2026 60min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10793829",
    "source_quote": "Voimistelu 2020-2021 synt. Rekola | 6.9.2026 11:00 - 13.12.2026 | Harrastemaksu syksy 2026 60min alk. 132,00 €",
    "activity_id": "van-2026-0070",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 172.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-06",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-06",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 132,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (132 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-044",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10793829_2ae5e3fa7ecb.html",
      "capture_sha256": "2ae5e3fa7ecb3e13218a49b69be5bed24a10ccc0b473768243d3f02ecdbcda70",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.92,
    "monthly_cost_basis": "132.0 € / term jaettuna 3.25 kuukaudelle (2026-09-06–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Rekola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Voimistelu 2022-2023 synt. Rekola",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-2023 synt.",
    "parent_child": "no",
    "venue_name": "Rekolan koulu",
    "address": null,
    "district": "Rekola",
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": "2026-09-06",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 120.0,
    "price_basis": "Harrastemaksu syksy 2026 45min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10793842",
    "source_quote": "Voimistelu 2022-2023 synt. Rekola | 6.9.2026 10:00 - 13.12.2026 | Harrastemaksu syksy 2026 45min alk. 120,00 €",
    "activity_id": "van-2026-0071",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-06",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-06",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 120,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (120 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-045",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10793842_06927f5b5b73.html",
      "capture_sha256": "06927f5b5b73e2bca292a4e9de34d970dde6eb12f725e1940a1464b7c33a7ae3",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 40.23,
    "monthly_cost_basis": "120.0 € / term jaettuna 3.25 kuukaudelle (2026-09-06–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Rekola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Naperoparkour 2020-2022 synt. Rekola",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2022 synt.",
    "parent_child": "no",
    "venue_name": "Rekolan koulu",
    "address": null,
    "district": "Rekola",
    "weekday": "perjantai",
    "start_time": "17:45",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-09-04",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 132.0,
    "price_basis": "Harrastemaksu syksy 2026 60min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10803520",
    "source_quote": "Naperoparkour 2020-2022 synt. Rekola | 4.9.2026 17:45 - 13.12.2026 | Harrastemaksu syksy 2026 60min alk. 132,00 €",
    "activity_id": "van-2026-0072",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 172.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-04",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-04",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2020,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 132,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (132 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-047",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10803520_fe283556b066.html",
      "capture_sha256": "fe283556b0663b3b2e092f4943ca7c27044ccc3cea2f32d810f56c80ec9621b6",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.11,
    "monthly_cost_basis": "132.0 € / term jaettuna 3.32 kuukaudelle (2026-09-04–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Rekola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Naperoparkour 2020-2022synt. Simonkallio",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2022synt.",
    "parent_child": "no",
    "venue_name": "Simonkallion koulu",
    "address": null,
    "district": "Simonkallio",
    "weekday": "lauantai",
    "start_time": "16:00",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 132.0,
    "price_basis": "Harrastemaksu syksy 2026 60min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10805081",
    "source_quote": "Naperoparkour 2020-2022synt. Simonkallio | 5.9.2026 16:00 - 13.12.2026 | Harrastemaksu syksy 2026 60min alk. 132,00 €",
    "activity_id": "van-2026-0073",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 172.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2020,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 132,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (132 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-048",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10805081_d3339ec777c8.html",
      "capture_sha256": "d3339ec777c85bdffc372c85170f827bbf4ac1f6ff65ba26a64fa594beca341a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.51,
    "monthly_cost_basis": "132.0 € / term jaettuna 3.29 kuukaudelle (2026-09-05–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Simonkallio",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Naperoparkour 2020-2022 synt. Viertola",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2022 synt.",
    "parent_child": "no",
    "venue_name": "Viertolan koulu, Jokirannan toimipiste",
    "address": null,
    "district": "Viertola",
    "weekday": "sunnuntai",
    "start_time": "10:30",
    "end_time": "11:30",
    "season": "syksy 2026",
    "start_date": "2026-09-06",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 132.0,
    "price_basis": "Harrastemaksu syksy 2026 60min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10804804",
    "source_quote": "Naperoparkour 2020-2022 synt. Viertola | 6.9.2026 10:30 - 13.12.2026 | Harrastemaksu syksy 2026 60min alk. 132,00 €",
    "activity_id": "van-2026-0074",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 172.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-06",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-06",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2020,
    "birth_year_max": 2022,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 132,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (132 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-049",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10804804_7b328eea7d30.html",
      "capture_sha256": "7b328eea7d30420b012d8c34ee45e8fa9c76952919e8dc0fd1c369aa25d434cd",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.92,
    "monthly_cost_basis": "132.0 € / term jaettuna 3.25 kuukaudelle (2026-09-06–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Viertola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Belina K 2020-2021 synt. Syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021 -syntyneille",
    "parent_child": "unknown",
    "venue_name": "Korson harjoitushalli, Sokeva",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": "16:15",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-08-10",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 272.0,
    "price_basis": "Belina K kausimaksu syksy 2026 -20%",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10530649",
    "source_quote": "Belina K 2020-2021 synt. Syksy 2026 | 10.8.2026 16:15 - 16.12.2026 | Belina K kausimaksu syksy 2026 -20% 272,00 €",
    "activity_id": "van-2026-0075",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 312.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-10",
    "price_period_end": "2026-12-16",
    "season_start_date": "2026-08-10",
    "season_end_date": "2026-12-16",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 272,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (272 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-051",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10530649_43bb97e12463.html",
      "capture_sha256": "43bb97e12463832454787f9c4818112f8a0ee771c70062ec0242e904680e4c1a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 67.51,
    "monthly_cost_basis": "272.0 € / term jaettuna 4.24 kuukaudelle (2026-08-10–2026-12-16, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Belina S 2020-2021 synt. Syksy 2026",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021 -syntyneille",
    "parent_child": "unknown",
    "venue_name": "Simonkylän koulu",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": "17:00",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-13",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 272.0,
    "price_basis": "Belina S kausimaksu syyskausi 2026 -20%",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10530863",
    "source_quote": "Belina S 2020-2021 synt. Syksy 2026 | 13.8.2026 17:00 - 13.12.2026 | Belina S kausimaksu syyskausi 2026 -20% 272,00 €",
    "activity_id": "van-2026-0076",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 312.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-13",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-13",
    "season_end_date": "2026-12-13",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 272,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: jäsenmaksu 40 € on pakollinen (\"Lisäksi kaikilta harrastajilta laskutetaan syksyllä SC Vantaan jäsenmaksu 40€/jäsenkausi\"; hinnasto: \"kaikkien Sport Club Vantaan toiminnassa mukana olevien tulee olla seuramme jäseniä ... 40€/jäsen\") - oli kirjattu tuntemattomaksi (hinta osittain tiedossa); lisätty fee_components-alkioksi, known_min_total_eur = hinta + 40 €, price_completeness complete. Sääntö 8: myClub-maksusivun hinta (272 €, \"alk.\"/-20 %) voittaa; seuran hinnastosivu ja kurssikuvaus kertovat normaalihinnan (45 min 150 €, 60 min 165 €, perheliikunta 120 €/kausi) - alennuksen perustetta ei kerrota.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-052",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_scvantaa_10530863_0927253a8039.html",
      "capture_sha256": "0927253a8039364c4f0382e7f0da047a4641723ac183f06bbd2bafa058b62bc5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 70.64,
    "monthly_cost_basis": "272.0 € / term jaettuna 4.04 kuukaudelle (2026-08-13–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimistelu- ja urheiluseura Elise-Vantaa ry",
    "group_name": "Syksy 2026: Vauhtinaperot maanantai (suositusikäraja 4-6v)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6v",
    "parent_child": "no",
    "venue_name": "Veromäen koulu",
    "address": "Veromiehentie 2, 01510 Vantaa, Suomi",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 140.0,
    "price_basis": "Syksy 2026: Vauhtinaperot maanantai (suositusikäraja 4-6v)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elisevantaa.myclub.fi/flow/courses/10934630",
    "source_quote": "Syksy 2026: Vauhtinaperot maanantai (suositusikäraja 4-6v) | 31.8.2026 17:00 - 7.12.2026 | Syksy 2026: Vauhtinaperot maanantai (suositusikäraja 4-6v) 140,00 €",
    "activity_id": "van-2026-0077",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 140,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Syksy 2026: Elise-Vantaan jäsenmaksu vuosi 2026 (syksyllä 2026 seurassa aloittavat) 30,00 € – pakollisuus vahvistamatta"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: review -> candidate_clear: jäsenmaksu on myClubissa \"Valinnaiset maksut\", mutta kuvaus sanoo \"Harjoitusmaksut: 140€/lukukausi + 30€ vuosittainen jäsenmaksu\" -> pakollinen Ilpon linjauksen 22.9.2026 (kierros 3) mukaan, ei review-syy (kuten saman seuran riveillä 02-056...060).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-055",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_elisevantaa_10934630_86c11aeb9ac7.html",
      "capture_sha256": "86c11aeb9ac7e137be14fbbf04800977860095715fc621470d57647050b5277a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 43.04,
    "monthly_cost_basis": "140.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pakkala",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pakkala' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimistelu- ja urheiluseura Elise-Vantaa ry",
    "group_name": "Syksy 2026: Voimistelukoulu 5-7v perjantai (ikäraja on suositus)",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7v",
    "parent_child": "no",
    "venue_name": "Vantaan kansainvälinen koulu Point",
    "address": "Hagelstamintie 1, 01520 Vantaa, Suomi",
    "district": null,
    "weekday": "perjantai",
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-04",
    "end_date": "2026-12-11",
    "sessions_count": null,
    "price_eur": 140.0,
    "price_basis": "Syksy 2026: Voimistelukoulu 5-7v perjantai (ikäraja on suositus)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elisevantaa.myclub.fi/flow/courses/10934732",
    "source_quote": "Syksy 2026: Voimistelukoulu 5-7v perjantai (ikäraja on suositus) | 4.9.2026 17:30 - 11.12.2026 | Syksy 2026: Voimistelukoulu 5-7v perjantai (ikäraja on suositus) 140,00 €",
    "activity_id": "van-2026-0078",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-04",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-09-04",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 140,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Syksy 2026: Elise-Vantaan jäsenmaksu vuosi 2026 (syksyllä seurassa aloittavat) 30,00 € – pakollisuus vahvistamatta - kuvausteksti vahvistaa pakolliseksi (22.9.2026 linjaus, kierros 3)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Jäsenmaksu myClubissa 'Valinnaiset maksut' -otsikon alla, mutta seuran oma kuvausteksti sanoo sen pakolliseksi ('+ 30€ vuosittainen jäsenmaksu') -> kirjattu pakolliseksi (Ilpon 22.9.2026 linjaus, kierros 3).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-056",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_elisevantaa_10934732_a9e1bcd207f6.html",
      "capture_sha256": "a9e1bcd207f6ff4fa0236d8011e0677867d5d3a7fcda2aeadbb27d54287b213b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 43.04,
    "monthly_cost_basis": "140.0 € / term jaettuna 3.25 kuukaudelle (2026-09-04–2026-12-11, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pakkala",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pakkala' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimistelu- ja urheiluseura Elise-Vantaa ry",
    "group_name": "Syksy 2026: Voimistelukoulu 6-8v sunnuntai (ikäraja on suositus)",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8v",
    "parent_child": "no",
    "venue_name": "Vantaan kansainvälinen koulu Point",
    "address": "Hagelstamintie 1, 01520 Vantaa, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "11:45",
    "end_time": "12:45",
    "season": "syksy 2026",
    "start_date": "2026-09-06",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 140.0,
    "price_basis": "Syksy 2026: Voimistelukoulu 6-8v sunnuntai (ikäraja on suositus)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elisevantaa.myclub.fi/flow/courses/10934765",
    "source_quote": "Syksy 2026: Voimistelukoulu 6-8v sunnuntai (ikäraja on suositus) | 6.9.2026 11:45 - 13.12.2026 | Syksy 2026: Voimistelukoulu 6-8v sunnuntai (ikäraja on suositus) 140,00 €",
    "activity_id": "van-2026-0079",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-06",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-06",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 140,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Syksy 2026: Elise-Vantaan jäsenmaksu vuosi 2026 (syksyllä seurassa aloittavat) 30,00 € – pakollisuus vahvistamatta - kuvausteksti vahvistaa pakolliseksi (22.9.2026 linjaus, kierros 3)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Jäsenmaksu myClubissa 'Valinnaiset maksut' -otsikon alla, mutta seuran oma kuvausteksti sanoo sen pakolliseksi ('+ 30€ vuosittainen jäsenmaksu') -> kirjattu pakolliseksi (Ilpon 22.9.2026 linjaus, kierros 3).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-057",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_elisevantaa_10934765_7c12971c5c64.html",
      "capture_sha256": "7c12971c5c64122a61b741f467b42a33daf9f40693f4402635249c596b17035d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 43.04,
    "monthly_cost_basis": "140.0 € / term jaettuna 3.25 kuukaudelle (2026-09-06–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pakkala",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pakkala' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimistelu- ja urheiluseura Elise-Vantaa ry",
    "group_name": "Syksy 2026: Voimistelukoulu 3-4v sunnuntai",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4v",
    "parent_child": "no",
    "venue_name": "Vantaan kansainvälinen koulu Point",
    "address": "Hagelstamintie 1, 01520 Vantaa, Suomi",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "16:00",
    "end_time": "16:45",
    "season": "syksy 2026",
    "start_date": "2026-09-06",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 140.0,
    "price_basis": "Syksy 2026: Voimistelukoulu 3-4v sunnuntai",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elisevantaa.myclub.fi/flow/courses/10934689",
    "source_quote": "Syksy 2026: Voimistelukoulu 3-4v sunnuntai | 6.9.2026 16:00 - 13.12.2026 | Syksy 2026: Voimistelukoulu 3-4v sunnuntai 140,00 €",
    "activity_id": "van-2026-0080",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-06",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-06",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 140,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Syksy 2026: Elise-Vantaan jäsenmaksu vuosi 2026 (syksyllä seurassa aloittavat) 30,00 € – pakollisuus vahvistamatta - kuvausteksti vahvistaa pakolliseksi (22.9.2026 linjaus, kierros 3)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Jäsenmaksu myClubissa 'Valinnaiset maksut' -otsikon alla, mutta seuran oma kuvausteksti sanoo sen pakolliseksi ('+ 30€ vuosittainen jäsenmaksu') -> kirjattu pakolliseksi (Ilpon 22.9.2026 linjaus, kierros 3).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-058",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_elisevantaa_10934689_ea92b014d721.html",
      "capture_sha256": "ea92b014d7217f257d97daad12c4cebcf99981af602073498f6c7b3a4b1dc2eb",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 43.04,
    "monthly_cost_basis": "140.0 € / term jaettuna 3.25 kuukaudelle (2026-09-06–2026-12-13, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pakkala",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pakkala' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimistelu- ja urheiluseura Elise-Vantaa ry",
    "group_name": "Syksy 2026: Esivalmennus 2krt/vk tiistai ja lauantai (suositusikäraja 5-8v)",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5-8v",
    "parent_child": "unknown",
    "venue_name": "Vantaan kansainvälinen koulu Point",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": null,
    "sessions_count": 2,
    "price_eur": 255.0,
    "price_basis": "Syksy 2026: Esivalmennus 2krt/vk tiistai ja lauantai (suositusikäraja 5-8v)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elisevantaa.myclub.fi/flow/courses/10934631",
    "source_quote": "Syksy 2026: Esivalmennus 2krt/vk tiistai ja lauantai (suositusikäraja 5-8v) | 1.9.2026 17:00 - 12.12.2026 | Syksy 2026: Esivalmennus 2krt/vk tiistai ja lauantai (suositusikäraja 5-8v) 255,00 €",
    "activity_id": "van-2026-0081",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 285.0,
    "price_per_session_eur": 142.5,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://elisevantaa.myclub.fi/flow/courses/10934631",
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 255,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Syksy 2026: Elise-Vantaan jäsenmaksu vuosi 2026 (syksyllä seurassa aloittavat) 30,00 € – pakollisuus vahvistamatta - kuvausteksti vahvistaa pakolliseksi (22.9.2026 linjaus, kierros 3)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Jäsenmaksu myClubissa 'Valinnaiset maksut' -otsikon alla, mutta seuran oma kuvausteksti sanoo sen pakolliseksi ('+ 30€ vuosittainen jäsenmaksu') -> kirjattu pakolliseksi (Ilpon 22.9.2026 linjaus, kierros 3).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-059",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_elisevantaa_10934631_7f173710272d.html",
      "capture_sha256": "7f173710272d70229095f1a7815dc24584a78f4963490570af2d2c6f6d7191d9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 75.35,
    "monthly_cost_basis": "255.0 € / term jaettuna 3.38 kuukaudelle (2026-09-01–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Voimistelu- ja urheiluseura Elise-Vantaa ry",
    "group_name": "Syksy 2026: Esivalmennus 1krt/vk lauantai (suositusikäraja 5-8v)",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "5-8v",
    "parent_child": "unknown",
    "venue_name": "Vantaan kansainvälinen koulu Point",
    "address": "Hagelstamintie 1, 01520 Vantaa, Suomi",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 140.0,
    "price_basis": "Syksy 2026: Esivalmennus 1krt/vk lauantai (suositusikäraja 5-8v)",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://elisevantaa.myclub.fi/flow/courses/10934706",
    "source_quote": "Syksy 2026: Esivalmennus 1krt/vk lauantai (suositusikäraja 5-8v) | 5.9.2026 11:00 - 12.12.2026 | Syksy 2026: Esivalmennus 1krt/vk lauantai (suositusikäraja 5-8v) 140,00 €",
    "activity_id": "van-2026-0082",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 170.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 140,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Valinnaiset maksut': Syksy 2026: Elise-Vantaan jäsenmaksu vuosi 2026 (syksyllä seurassa aloittavat) 30,00 € – pakollisuus vahvistamatta - kuvausteksti vahvistaa pakolliseksi (22.9.2026 linjaus, kierros 3)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Jäsenmaksu myClubissa 'Valinnaiset maksut' -otsikon alla, mutta seuran oma kuvausteksti sanoo sen pakolliseksi ('+ 30€ vuosittainen jäsenmaksu') -> kirjattu pakolliseksi (Ilpon 22.9.2026 linjaus, kierros 3).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_02.json",
      "staging_id": "batch_vantaa_2026-09-24_02-060",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_02/myclub_elisevantaa_10934706_87ec4a92f370.html",
      "capture_sha256": "87ec4a92f37035efb33d9a310c093d0b9bbbd2bbe46f30372748eb834d2a6989",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.04,
    "monthly_cost_basis": "140.0 € / term jaettuna 3.25 kuukaudelle (2026-09-05–2026-12-12, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Pakkala",
    "district_basis": "geokoodattu osoite -> neighborhood 'Pakkala' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "luistelu",
    "provider": "Kiekko-Vantaa ry",
    "group_name": "Luistelukoulu (3-6-vuotiaat)",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "tarkoitettu jääkiekon alkeista kiinnostuneille 3-6 vuotiaille (2021-2023 syntyneet)",
    "parent_child": "no",
    "venue_name": "Tikkurilan Areena",
    "address": null,
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "09:30",
    "end_time": "10:30",
    "season": "syksy 2026",
    "start_date": "2026-09-13",
    "end_date": "2026-12-20",
    "sessions_count": null,
    "price_eur": 99.0,
    "price_basis": "Syyskauden osallistumismaksu 99 euroa",
    "membership_fee_eur": 80.0,
    "other_required_fees": null,
    "equipment_notes": "Pelaajan vähimmäisvarustus: ristikollinen kypärä, jääkiekkoluistimet, kaulasuoja, hanskat, kevyt ulkoiluvarustus, maila (mailan voi tarvittaessa lainata opetuspisteeltä).",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.kiekkovantaa.fi/aloita-jaakiekko-2/luistelukoulu/",
    "source_quote": "Luistelukoulu on tarkoitettu jääkiekon alkeista kiinnostuneille 3-6 vuotiaille (2021-2023 syntyneet). ... Syyskausi alkaa 13.9. ja päättyy 20.12. Harjoitukset Tikkurilan Areenalla sunnuntaisin klo 9:30-10:30. Syyskauden osallistumismaksu 99€ + seuran jäsenmaksu 80€",
    "activity_id": "van-2026-0083",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 179.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.kiekkovantaa.fi/aloita-jaakiekko-2/luistelukoulu/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-13",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "per season",
        "applies_if": null,
        "note": "Syyskauden osallistumismaksu"
      },
      {
        "type": "membership",
        "amount_eur": 80,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Kiekko-Vantaa ry:n jäsenmaksu"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Osallistumismaksu sisältää vakuutuksen (Jääkiekkoliiton kiekkokoulurekisteröinti). Sivu ei ilmoita ryhmäkohtaista paikkatilannetta (avoin/jonossa/täynnä), joten availability_status=unknown.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_03.json",
      "staging_id": "batch_vantaa_2026-09-24_03-001",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 37.1,
    "monthly_cost_basis": "99.0 € / term jaettuna 3.25 kuukaudelle (2026-09-13–2026-12-20, season_start_date) + membership 80 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "luistelu",
    "provider": "Tikkurilan Taitoluisteluklubi ry",
    "group_name": "Tenavat (alle kouluikäisten luistelukoulu)",
    "min_age": 2,
    "max_age": 6,
    "eligibility_text": "Tenavien ryhmät on tarkoitettu alle kouluikäisille 2-6-vuotiaille lapsille. 2-3-vuotiaat voivat tuoda aikuisen mukaan jäälle.",
    "parent_child": "unknown",
    "venue_name": "Tikkurilan harjoitusjäähalli / Areena",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 180.0,
    "price_basis": "1 x/vk 180 €/syksy- tai kevätkausi",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Luistelukoulua voi kokeilla ilmaiseksi kertaalleen.",
    "enrollment_status": "unknown",
    "source_url": "https://www.tikkurilantaitoluisteluklubi.fi/luistelukoulu/joukkueet/14273/uutiset/57481/tenavat-alle-kouluikaisten-luistelukoulu",
    "source_quote": "Tenavien ryhmät on tarkoitettu alle kouluikäisille 2-6-vuotiaille lapsille. 1 x/vk 180 €, 2 x/vk 300 €. Kaikki luistelijat maksavat seuran jäsenmaksun 30 euroa. Tiistaisin 16:45-17:15 jumppa + jää 17:30-18:15, lauantaisin jumppa 9:25-9:55 + jää 10:10-10:55.",
    "activity_id": "van-2026-0084",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 210.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tikkurilantaitoluisteluklubi.fi/luistelukoulu/joukkueet/14273/uutiset/57481/tenavat-alle-kouluikaisten-luistelukoulu",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 180,
        "mandatory": true,
        "included": true,
        "recurrence": "per season",
        "applies_if": "harjoittelu 1 kerta/viikko",
        "note": "Luistelukoulun kausimaksu (1x/vk)"
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Seuran jäsenmaksu, kaikki luistelijat"
      }
    ],
    "price_options": [
      {
        "label": "2 kertaa viikossa",
        "amount_eur": 300.0,
        "applies_if": "harjoittelu 2 kertaa viikossa",
        "includes": "jää + jumppa 2x/vk"
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kaksi rinnakkaista ryhmää (ti klo 16:45-17:15 jumppa + 17:30-18:15 jää; la jumppa 9:25-9:55 + jää 10:10-10:55), sama hinta/kausi; weekday=null koska ryhmää ei voi yksilöidä sivulta valitsematta. Kauden tarkkoja päivämääriä ei ilmoitettu sivulla, joten start_date/end_date=null.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_03.json",
      "staging_id": "batch_vantaa_2026-09-24_03-002",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "taekwondo",
    "provider": "Tikkurilan Taekwondo",
    "group_name": "Taaperotaekwondo",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "Taaperotaekwondo 2-4-vuotiaille",
    "parent_child": "unknown",
    "venue_name": null,
    "address": "Keinumäenkuja 2, 01510 Vantaa",
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syyskausi 2026 (elo-joulukuu)",
    "start_date": "2026-08-15",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "kurssin hinta 35€/kk, laskutetaan 3 kuukauden jaksoissa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Maksuton kokeilukerta taapero- ja perheryhmiin.",
    "enrollment_status": "unknown",
    "source_url": "https://www.tikkurilantaekwondo.fi/",
    "source_quote": "Taaperotaekwondo 2-4 -vuotiaille, kurssi alkaa lauantaina 15.8. klo 10.00-10.45, kurssin hinta 35€/kk",
    "activity_id": "van-2026-0085",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.tikkurilantaekwondo.fi/hinnasto",
    "billing_period": "month",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "monthly",
        "applies_if": null,
        "note": "Harjoitusmaksu, laskutetaan 3 kk välein (105€/3kk)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Kilpailulisenssi tarvittaessa Taekwondoliitolta - ei pakollinen, seura ei ole vakuuttanut harrastajia tapaturmien varalta.",
    "unverified_fields": [],
    "verification_notes": "Kurssi alkanut 15.8.2026, jatkuu automaattisesti syyskauden loppuun (elo-joulukuu); ei erillistä sivulla ilmoitettua paikkatilannetta, joten availability_status=unknown.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_03.json",
      "staging_id": "batch_vantaa_2026-09-24_03-004",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 35.0,
    "monthly_cost_basis": "35.0 €/kk",
    "monthly_cost_complete": true,
    "district_derived": "Koivuhaka",
    "district_basis": "geokoodattu osoite -> neighborhood 'Koivuhaka' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "jalkapallo",
    "provider": "Korson Palloseura ry (KOPSE)",
    "group_name": "Perhefutiskerho, talvikausi 2026",
    "min_age": 2,
    "max_age": 4,
    "eligibility_text": "Perhefutiksen ikäsuositus lapsille on noin 2-4 vuotta",
    "parent_child": "yes",
    "venue_name": "Nikinmäen koulun sali",
    "address": "Perhotie 27, 01490 Vantaa",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "talvi 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 74.0,
    "price_basis": "Uusi kerholainen 74 euroa, jatkava kerholainen 64 euroa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma juomapullo, pallo, liikuntaan sopiva vaatetus sekä sisäpelikengät/tossut.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://perhefutiskerho.kopse.org",
    "source_quote": "Perhefutiksen ikäsuositus lapsille on noin 2-4 vuotta. Kerhojakso on ajalle 19.10-7.12.2026 (8 kertaa). Perhefutista järjestetään maanantaisin kello 17-18 Nikinmäen koulun salissa. Uusi kerholainen 74 euroa ... Jatkava kerholainen 64 euroa.",
    "activity_id": "van-2026-0086",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 74.0,
    "price_per_session_eur": 9.25,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://perhefutiskerho.kopse.org",
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://perhefutiskerho.kopse.org",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 74,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": "uusi kerholainen",
        "note": "Sisältää valmennuksen, kenttävuoron, vakuutuksen sekä pallon uusille kerholaisille"
      }
    ],
    "price_options": [
      {
        "label": "Jatkava kerholainen",
        "amount_eur": 64.0,
        "applies_if": "aiemmin KOPSEn Perhefutiksessa tai Futiskerhossa mukana ollut lapsi",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautuminen kerhojaksolle avautuu vasta 25.9.2026 klo 12 (keruupäivänä 24.9.2026 vielä auki tulossa), joten availability_status=unknown, purchasable_now=false.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_03.json",
      "staging_id": "batch_vantaa_2026-09-24_03-005",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 45.05,
    "monthly_cost_basis": "74.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Nikinmäki",
    "district_basis": "geokoodattu osoite -> sub_district 'Nikinmäki' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "jalkapallo",
    "provider": "Korson Palloseura ry (KOPSE)",
    "group_name": "Futiskerho, talvikausi 2026",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "Korson Palloseuran Futiskerho toivottaa tervetulleeksi 3-5 vuotiaat tytöt ja pojat",
    "parent_child": "no",
    "venue_name": "Nikinmäen koulun sali",
    "address": "Perhotie 27, 01490 Vantaa",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "talvi 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": 8,
    "price_eur": 79.0,
    "price_basis": "Uusi kerholainen 79 euroa, jatkava kerholainen 69 euroa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Oma juomapullo, pallo, urheiluun sopiva vaatetus, sisäpelikengät tai vaaleapohjaiset lenkkarit, säärisuojat heti ensimmäisestä kerrasta.",
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://futiskerho.kopse.org",
    "source_quote": "Korson Palloseuran Futiskerho toivottaa tervetulleeksi 3-5 vuotiaat tytöt ja pojat. Kerhojakso on ajalle 19.10-7.12.2026 (8 kertaa). Futiskerhoa järjestetään maanantaisin kello 18-19 Nikinmäen koulun salissa. Uusi kerholainen 79 euroa ... Jatkava kerholainen 69 euroa.",
    "activity_id": "van-2026-0087",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 79.0,
    "price_per_session_eur": 9.88,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://futiskerho.kopse.org",
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://futiskerho.kopse.org",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 79,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": "uusi kerholainen",
        "note": "Sisältää valmennuksen, kenttävuoron, vakuutuksen sekä pallon"
      }
    ],
    "price_options": [
      {
        "label": "Jatkava kerholainen",
        "amount_eur": 69.0,
        "applies_if": "aiemmin KOPSEn Perhefutiksessa tai Futiskerhossa mukana ollut lapsi",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautuminen kerhojaksolle avautuu vasta 25.9.2026 klo 12 (keruupäivänä 24.9.2026 vielä auki tulossa), joten availability_status=unknown, purchasable_now=false.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_03.json",
      "staging_id": "batch_vantaa_2026-09-24_03-006",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 48.09,
    "monthly_cost_basis": "79.0 € / course jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Nikinmäki",
    "district_basis": "geokoodattu osoite -> sub_district 'Nikinmäki' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "jalkapallo",
    "provider": "Koivukylän Palloseura (KoiPS)",
    "group_name": "Perhefutis 3-4-vuotiaille",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "Perhefutis 3-4 vuotiaille",
    "parent_child": "yes",
    "venue_name": "Havukosken koulun liikuntasali",
    "address": "Tarhakuja 2, 01360 Vantaa",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:10",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": "2026-09-07",
    "end_date": "2026-12-14",
    "sessions_count": 14,
    "price_eur": 112.0,
    "price_basis": "Hinta yhteensä 112 euroa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://koips.fi/toiminta/perhefutis",
    "source_quote": "Perhefutis 3-4 vuotiaille: maanantaisin klo 17:10-17:55 (45 minuuttia), Havukosken koulun liikuntasalissa. 7.9.2026-14.12.2026, yhteensä 14 kertaa. Hinta yhteensä 112 €.",
    "activity_id": "van-2026-0088",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 112.0,
    "price_per_session_eur": 8.0,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://koips.fi/toiminta/perhefutis",
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-07",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://koips.fi/toiminta/perhefutis",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 112,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sisältää vakuutuksen; valinnaisena lisänä KoiPS-logolla varustettu paita"
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": "Valinnaisena lisänä yksi KoiPS-logolla varustettu paita (ei pakollinen).",
    "unverified_fields": [],
    "verification_notes": null,
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_03.json",
      "staging_id": "batch_vantaa_2026-09-24_03-008",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 34.43,
    "monthly_cost_basis": "112.0 € / course jaettuna 3.25 kuukaudelle (2026-09-07–2026-12-14, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Havukoski",
    "district_basis": "geokoodattu osoite -> neighborhood 'Havukoski' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "koripallo",
    "provider": "PuHu Juniorit ry",
    "group_name": "Pallokerho, lapsi-aikuinen (Rajatorpan koulu, perjantai 16.30)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "lapset syntyneet 2022-2023, ryhmässä toimitaan oman aikuisen kanssa",
    "parent_child": "yes",
    "venue_name": "Rajatorpan koulu",
    "address": null,
    "district": null,
    "weekday": "perjantai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "kausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 250.0,
    "price_basis": "Pallokerhon toimintamaksu 250€/kausi, laskutetaan 125€ marraskuussa ja 125€ helmikuussa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://puhujuniorit.fi/kerhot",
    "source_quote": "Perjantai klo 16.30-17.15, lapsi-aikuinen -ryhmä (lapset syntyneet 2022-2023). Rajatorpan koulu. Pallokerhon toimintamaksu 250€/kausi sisältää pallokerhotapahtumat, koripallokoululisenssin, vakuutuksen ja paidan. Pallokerhoihin osallistuminen edellyttää PuHu Juniorit ry:n jäsenyyttä.",
    "activity_id": "van-2026-0089",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 250.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": "https://puhujuniorit.fi/kerhot",
    "billing_period": "full_season",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 250,
        "mandatory": true,
        "included": true,
        "recurrence": "per season",
        "applies_if": null,
        "note": "Sisältää pallokerhotapahtumat (45 min/vko), Koripalloliiton koripallokoululisenssin, Pohjolan Sporttiturvavakuutuksen ja PuHu-pallokerhopaidan"
      },
      {
        "type": "membership",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Pallokerhoihin osallistuminen edellyttää PuHu Juniorit ry:n jäsenyyttä; jäsenmaksun summaa ei ilmoitettu tällä sivulla"
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ilmoittautuminen ryhmiin avautui 3.8.2026; sivulla ei eksplisiittistä ryhmäkohtaista paikkatilannetta, joten availability_status=unknown. Jäsenyyden hintaa ei löytynyt tältä sivulta -> price_completeness=incomplete, has_unpriced_required_fee=true ('hinta osittain tiedossa'). Vantaa-QA 24.9.2026: season \"koripallokausi 2026-2027 (syyskuu-huhtikuu)\" sisälsi päätellyn kuukausivälin; nyt lähteen sananmukainen \"kaudella 2026-2027\". Epävarma kenttä tarkennettu jäsenmaksun summaan (hinta osittain tiedossa).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_03.json",
      "staging_id": "batch_vantaa_2026-09-24_03-009",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "koripallo",
    "provider": "PuHu Juniorit ry",
    "group_name": "Pallokerho (Rajatorpan koulu, perjantai 17.15)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "2021-2022-syntyneet lapset",
    "parent_child": "no",
    "venue_name": "Rajatorpan koulu",
    "address": null,
    "district": null,
    "weekday": "perjantai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "kausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 250.0,
    "price_basis": "Pallokerhon toimintamaksu 250€/kausi, laskutetaan 125€ marraskuussa ja 125€ helmikuussa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://puhujuniorit.fi/kerhot",
    "source_quote": "Perjantai klo 17.15-18, 2021-2022-syntyneet lapset. Rajatorpan koulu. Pallokerhon toimintamaksu 250€/kausi sisältää pallokerhotapahtumat, koripallokoululisenssin, vakuutuksen ja paidan.",
    "activity_id": "van-2026-0090",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 250.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": "https://puhujuniorit.fi/kerhot",
    "billing_period": "full_season",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 250,
        "mandatory": true,
        "included": true,
        "recurrence": "per season",
        "applies_if": null,
        "note": "Sisältää pallokerhotapahtumat (45 min/vko), Koripalloliiton koripallokoululisenssin, Pohjolan Sporttiturvavakuutuksen ja PuHu-pallokerhopaidan"
      },
      {
        "type": "membership",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Pallokerhoihin osallistuminen edellyttää PuHu Juniorit ry:n jäsenyyttä; jäsenmaksun summaa ei ilmoitettu tällä sivulla"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sama toimintamaksu ja aikataulukausi kuin lapsi-aikuinen-ryhmällä, eri kellonaika samassa koulussa - dokumentoitu erillinen ryhmä (distinct_from). Vantaa-QA 24.9.2026: season \"koripallokausi 2026-2027 (syyskuu-huhtikuu)\" sisälsi päätellyn kuukausivälin; nyt lähteen sananmukainen \"kaudella 2026-2027\". Epävarma kenttä tarkennettu jäsenmaksun summaan (hinta osittain tiedossa).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_03.json",
      "staging_id": "batch_vantaa_2026-09-24_03-010",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "koripallo",
    "provider": "PuHu Juniorit ry",
    "group_name": "Pallokerho (Kanniston koulu, keskiviikko)",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "21-23-syntyneet lapset",
    "parent_child": "unknown",
    "venue_name": "Kanniston koulu",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "kausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 250.0,
    "price_basis": "Pallokerhon toimintamaksu 250€/kausi, laskutetaan 125€ marraskuussa ja 125€ helmikuussa",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://puhujuniorit.fi/kerhot",
    "source_quote": "Kanniston koulu: Keskiviikko klo 17-17:45, 21-23-syntyneet lapset. Pallokerhon toimintamaksu 250€/kausi sisältää pallokerhotapahtumat, koripallokoululisenssin, vakuutuksen ja paidan.",
    "activity_id": "van-2026-0091",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 250.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": "https://puhujuniorit.fi/kerhot",
    "billing_period": "full_season",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 250,
        "mandatory": true,
        "included": true,
        "recurrence": "per season",
        "applies_if": null,
        "note": "Sisältää pallokerhotapahtumat (45 min/vko), Koripalloliiton koripallokoululisenssin, Pohjolan Sporttiturvavakuutuksen ja PuHu-pallokerhopaidan"
      },
      {
        "type": "membership",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Pallokerhoihin osallistuminen edellyttää PuHu Juniorit ry:n jäsenyyttä; jäsenmaksun summaa ei ilmoitettu tällä sivulla"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Eri koulu/paikka kuin Rajatorpan ryhmät, joten eri ryhmä eikä duplikaatti niiden kanssa. Vantaa-QA 24.9.2026: season \"koripallokausi 2026-2027 (syyskuu-huhtikuu)\" sisälsi päätellyn kuukausivälin; nyt lähteen sananmukainen \"kaudella 2026-2027\". Epävarma kenttä tarkennettu jäsenmaksun summaan (hinta osittain tiedossa).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_03.json",
      "staging_id": "batch_vantaa_2026-09-24_03-011",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "tanssi",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "SUPERDANCE (2021 ja aiemmin syntyneet) SU 16:30-17:15 149€",
    "min_age": 5,
    "max_age": null,
    "eligibility_text": "2021 ja aiemmin syntyneet (Erityisryhmät yli 5v)",
    "parent_child": "no",
    "venue_name": "VVS Tanssisali (Vetokuja 1E)",
    "address": "Vetokuja 1E, 01610 Vantaa",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": "2026-08-30",
    "end_date": "2027-05-09",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Kausimaksu, syksy 2026, hinta luettu myClub-kurssin nimestä: \"SUPERDANCE (2021 ja aiemmin syntyneet) SU 16:30-17:15 149€\".",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://vvs.myclub.fi/flow/courses/10678466",
    "source_quote": "SUPERDANCE (2021 ja aiemmin syntyneet) SU 16:30-17:15 149€ ... VVS Tanssisali (Vetokuja 1E) 30.8.2026 16:30 - 9.5.2027 Ilmoittautuminen päättyy 30.11.2026 23:59 Jonossa 0 ... Erityisryhmät yli 5v ... SuperDance sopii musiikkiliikunnasta pitäville lapsille, joille harrastaminen isossa ryhmässä on jostain syystä haastavaa. ... Syyskausi 24.8.–13.12.2026 ... Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. VVS Jäsenmaksu 2026-2027 20,00 € Toimintamaksu, syksy 2026 - Tanssisaliryhmä 45min 149,00 €",
    "activity_id": "van-2026-0092",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-30",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-08-30",
    "season_end_date": "2027-05-09",
    "birth_year_min": null,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Toimintamaksu, syksy 2026 - Tanssisaliryhmä 45min"
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Soveltava ryhmä (\"Erityisryhmät yli 5v\"; sopii lapsille, joille harrastaminen isossa ryhmässä on haastavaa) -> comparison_eligible=false. Vantaa-QA 24.9.2026: rivi oli kirjattu Tikkurilan Liikuntaseuralle, mutta lähdetallenne oli Vantaan Voimisteluseuran myClub-sivu; järjestäjä korjattu VVS:ksi ja tiedot luettu tuoreena VVS:n kurssisivulta (paikka VVS Tanssisali, jäsenmaksu 20 €, hinta = syyskausi 24.8.-13.12.2026, jonotilanne). Muut 8 saman erän TiLs-riviä olivat VVS-rivien duplikaatteja ja siirrettiin rejected-listalle.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_04.json",
      "staging_id": "batch_vantaa_2026-09-24_04-013",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/vvs_10678466_4673c47f1b58.html",
      "capture_sha256": "4673c47f1b58e3180fc12bb11c3cf85b6406d9038a4f700c3ff306ef49ce829d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 44.45,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-30–2026-12-13, price_period_start) + membership 20 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 3-4v, Askiston koulu (torstai), Lastenliitto ry",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3 - 4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Askiston koulu",
    "address": "Askiston koulu, Uudentuvantie 5 01680 Vantaa",
    "district": "Askisto",
    "weekday": "torstai",
    "start_time": "16:50",
    "end_time": "17:35",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (3.9.2026 16:50 - 10.12.2026 17:35), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-3-4-vuotiaille-askisto-syksy-26/",
    "source_quote": "Ajankohta 3.9.2026 16:50 - 10.12.2026 17:35 | Paikka Askiston koulu, Uudentuvantie 5 01680 Vantaa | Hinta 40 euroa | Ikähaitari 3 - 4 -vuotiaat | Osallistujamäärä 14 / 15",
    "activity_id": "van-2026-0093",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-001",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_askisto_3_4_7c3dfb1297e4.html",
      "capture_sha256": "7c3dfb1297e40fb176963079dcc834e7be0b8a6dd509ec410bbf88c691fd9fc4",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Askisto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 3-4v, Havukosken nuorisotila (tiistai), Lastenliitto ry",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3 - 4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Havukosken nuorisotila",
    "address": "Havukosken nuorisotila, liikuntasali, Eteläinen Rastitie 14, 01360 Vantaa",
    "district": "Havukoski",
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (1.9.2026 18:00 - 8.12.2026 18:45), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-3-4-vuotiaille-havukoski-syksy-26/",
    "source_quote": "Ajankohta 1.9.2026 18:00 - 8.12.2026 18:45 | Paikka Havukosken nuorisotila, liikuntasali, Eteläinen Rastitie 14, 01360 Vantaa | Hinta 40 euroa | Ikähaitari 3 - 4 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0094",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-002",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_havukoski_3_4_1dcdc16ca95c.html",
      "capture_sha256": "1dcdc16ca95cd5cce540e05980b0d3be940343443ccba56b4652a2a3d1db0f26",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Havukoski",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 3-4v, Hiekkaharjun nuorisotalo (tiistai), Lastenliitto ry",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3 - 4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Hiekkaharjun nuorisotalo",
    "address": "Hiekkaharjun nuorisotalo, alasali, Leinikkitie 36, 01350 Vantaa",
    "district": "Hiekkaharju",
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (1.9.2026 17:00 - 8.12.2026 17:45), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-3-4-vuotiaille-hiekkaharjussa-syksy-26/",
    "source_quote": "Ajankohta 1.9.2026 17:00 - 8.12.2026 17:45 | Paikka Hiekkaharjun nuorisotalo, alasali, Leinikkitie 36, 01350 Vantaa | Hinta 40 euroa | Ikähaitari 3 - 4 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0095",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-003",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_hiekkaharju_3_4_6025787a8fe1.html",
      "capture_sha256": "6025787a8fe1076a82fb87b33c6edb067bd02c69df5e6e5071635623f7280787",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Hiekkaharju",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 3-4v, Kaivokselan koulu (maanantai), Lastenliitto ry",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3 - 4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kaivokselan koulu",
    "address": "Kaivokselan koulu, liikuntasali, Kaivosvoudintie 10, 01610 Vantaa",
    "district": "Kaivoksela",
    "weekday": "maanantai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-09-07",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (7.9.2026 16:45 - 7.12.2026 17:30), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-3-4-vuotiaille-kaivoksela-syksy-26/",
    "source_quote": "Ajankohta 7.9.2026 16:45 - 7.12.2026 17:30 | Paikka Kaivokselan koulu, liikuntasali, Kaivosvoudintie 10, 01610 Vantaa | Hinta 40 euroa | Ikähaitari 3 - 4 -vuotiaat | Osallistujamäärä 11 / 15",
    "activity_id": "van-2026-0096",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-07",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-09-07",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-004",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_kaivoksela_3_4_fed5c6d5a495.html",
      "capture_sha256": "fed5c6d5a495948556409ec3c3134b138663bd0c0f54b59a825e121042694028",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 13.23,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.02 kuukaudelle (2026-09-07–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kaivoksela",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 3-4v, Keimolanmäen päiväkoti (keskiviikko), Lastenliitto ry",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3 - 4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Keimolanmäen päiväkoti",
    "address": "Keimolanmäen päiväkoti, liikuntasali, Ajolenkki 8, 01700 Vantaa",
    "district": "Keimolanmäki",
    "weekday": "keskiviikko",
    "start_time": "16:50",
    "end_time": "17:35",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (2.9.2026 16:50 - 9.12.2026 17:35), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-3-4-vuotiaille-keimolanmaki-syksy-26/",
    "source_quote": "Ajankohta 2.9.2026 16:50 - 9.12.2026 17:35 | Paikka Keimolanmäen päiväkoti, liikuntasali, Ajolenkki 8, 01700 Vantaa | Hinta 40 euroa | Ikähaitari 3 - 4 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0097",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-005",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_keimolanmaki_3_4_a2086d6038ce.html",
      "capture_sha256": "a2086d6038cea5baac769463804018cd21922bb9433daeb0edfb57724c05c61a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Keimolanmäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 3-4v, Martinlaakson nuorisotila (tiistai), Lastenliitto ry",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3 - 4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Martinlaakson nuorisotila",
    "address": "Martinlaakson nuorisotila, monitoimisali, Martinlaaksonpolku 9, 01620 Vantaa",
    "district": "Martinlaakso",
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (1.9.2026 18:00 - 8.12.2026 18:45), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-3-4-vuotiaille-martinlaakso-syksy-26/",
    "source_quote": "Ajankohta 1.9.2026 18:00 - 8.12.2026 18:45 | Paikka Martinlaakson nuorisotila, monitoimisali, Martinlaaksonpolku 9, 01620 Vantaa | Hinta 40 euroa | Ikähaitari 3 - 4 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0098",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-006",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_martinlaakso_3_4_d3ce0cace800.html",
      "capture_sha256": "d3ce0cace8006078e5d350fa4429eabc775812ef0ac7c84bd241cc37c699dad7",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Martinlaakso",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 3-4v, Päiväkummun koulu (tiistai), Lastenliitto ry",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3 - 4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Päiväkummun koulu",
    "address": "Päiväkummun koulu, liikuntasali, Ismontie 2, 01420 Vantaa",
    "district": "Päiväkumpu",
    "weekday": "tiistai",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (1.9.2026 16:45 - 8.12.2026 17:30), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-3-4-vuotiaille-paivakumpu-syksy-26/",
    "source_quote": "Ajankohta 1.9.2026 16:45 - 8.12.2026 17:30 | Paikka Päiväkummun koulu, liikuntasali, Ismontie 2, 01420 Vantaa | Hinta 40 euroa | Ikähaitari 3 - 4 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0099",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-007",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_paivakumpu_3_4_abbcbb7421f9.html",
      "capture_sha256": "abbcbb7421f997d7fb40979dbb6d0766096edaef5fabdab86a856b8c3e71f47f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Päiväkumpu",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 3-4v, Pakkalanrinteen päiväkoti (maanantai), Lastenliitto ry",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3 - 4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Pakkalanrinteen päiväkoti",
    "address": "Pakkalanrinteen päiväkoti, liikuntasali, Pakkalanrinne 4, 01510 Vantaa",
    "district": "Pakkalanrinne",
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 20.0,
    "price_basis": "Kausimaksu, syksy 2026 (19.10.2026 17:00 - 7.12.2026 17:45), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-3-4-vuotiaille-pakkalanrinne-syksy-26/",
    "source_quote": "Ajankohta 19.10.2026 17:00 - 7.12.2026 17:45 | Paikka Pakkalanrinteen päiväkoti, liikuntasali, Pakkalanrinne 4, 01510 Vantaa | Hinta 20 euroa | Ikähaitari 3 - 4 -vuotiaat | Osallistujamäärä 5 / 15",
    "activity_id": "van-2026-0100",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 20.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 20,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-008",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_pakkalanrinne_3_4_d60bbb32b4b4.html",
      "capture_sha256": "d60bbb32b4b40be22ede62080349773e249166e35d6c85f2b15578f096ba2002",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.18,
    "monthly_cost_basis": "20.0 € / term jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pakkalanrinne",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 3-4v, Tikkurilan nuorisotila Liito (tiistai), Lastenliitto ry",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3 - 4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Tikkurilan nuorisotila Liito",
    "address": "Tikkurilan nuorisotila Liito, tanssisali Pyörre, Lummetie 2b, 01300 Vantaa",
    "district": "Tikkurila",
    "weekday": "tiistai",
    "start_time": "17:50",
    "end_time": "18:35",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (1.9.2026 17:50 - 8.12.2026 18:35), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-3-4-vuotiaille-tikkurilassa-tiistai-syksy-26/",
    "source_quote": "Ajankohta 1.9.2026 17:50 - 8.12.2026 18:35 | Paikka Tikkurilan nuorisotila Liito, tanssisali Pyörre, Lummetie 2b, 01300 Vantaa | Hinta 40 euroa | Ikähaitari 3 - 4 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0101",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-009",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_tikkurila_3_4_dca8efe8ed10.html",
      "capture_sha256": "dca8efe8ed10a009b1bd53cf8b03d3bb3d2851ab658ec83b411f6e66d01f60d2",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Tikkurila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 3-4v, Aurinkokiven koulu (tiistai), Lastenliitto ry",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3 - 4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Aurinkokiven koulu",
    "address": "Aurinkokiven koulu, Aurinkokivenkuja 1 01700Vantaa",
    "district": "Kivistö",
    "weekday": "tiistai",
    "start_time": "16:30",
    "end_time": "17:15",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (1.9.2026 16:30 - 8.12.2026 17:15), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki3-4-vuotiaille-aurinkokivi-syksy-2026/",
    "source_quote": "Ajankohta 1.9.2026 16:30 - 8.12.2026 17:15 | Paikka Aurinkokiven koulu, Aurinkokivenkuja 1 01700Vantaa | Hinta 40 euroa | Ikähaitari 3 - 4 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0102",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-010",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_aurinkokivi_3_4_c86a7672dc60.html",
      "capture_sha256": "c86a7672dc605561ebc6de7cda407ea37ae5dcf8e8bcabf73bf7307fdb40f044",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kivistö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 5-6v, Aurinkokiven koulu (tiistai), Lastenliitto ry",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5 - 6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Aurinkokiven koulu",
    "address": "Aurinkokiven koulu, liikuntasali, Aurinkokivenkuja 1 01700Vantaa",
    "district": "Kivistö",
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (1.9.2026 17:15 - 8.12.2026 18:00), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-5-6-vuotiaille-aurinkokivi-syksy-26/",
    "source_quote": "Ajankohta 1.9.2026 17:15 - 8.12.2026 18:00 | Paikka Aurinkokiven koulu, liikuntasali, Aurinkokivenkuja 1 01700Vantaa | Hinta 40 euroa | Ikähaitari 5 - 6 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0103",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-011",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_aurinkokivi_5_6_bbc324d74a62.html",
      "capture_sha256": "bbc324d74a6253fd28a5ddb99100f96cccc1419fcb05c4406e6733d7e95844f5",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kivistö",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 5-6v, Hiekkaharjun nuorisotalo (tiistai), Lastenliitto ry",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5 - 6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Hiekkaharjun nuorisotalo",
    "address": "Hiekkaharjun nuorisotalo, alasali, Leinikkitie 36, 01350 Vantaa",
    "district": "Hiekkaharju",
    "weekday": "tiistai",
    "start_time": "17:50",
    "end_time": "18:35",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (1.9.2026 17:50 - 8.12.2026 18:35), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-5-6-vuotiaille-hiekkaharjussa-syksy-26/",
    "source_quote": "Ajankohta 1.9.2026 17:50 - 8.12.2026 18:35 | Paikka Hiekkaharjun nuorisotalo, alasali, Leinikkitie 36, 01350 Vantaa | Hinta 40 euroa | Ikähaitari 5 - 6 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0104",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-012",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_hiekkaharju_5_6_5b1805d3cbf0.html",
      "capture_sha256": "5b1805d3cbf0218bdad9140055a4e443732f5483139a3f16e4bcc2826097e48a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Hiekkaharju",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 5-6v, Kaivokselan koulu (maanantai), Lastenliitto ry",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5 - 6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Kaivokselan koulu",
    "address": "Kaivokselan koulu, liikuntasali, Kaivosvoudintie 10, 01610 Vantaa",
    "district": "Kaivoksela",
    "weekday": "maanantai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-09-07",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (7.9.2026 17:30 - 7.12.2026 18:15), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-5-6-vuotiaille-kaivoksela-syksy-26/",
    "source_quote": "Ajankohta 7.9.2026 17:30 - 7.12.2026 18:15 | Paikka Kaivokselan koulu, liikuntasali, Kaivosvoudintie 10, 01610 Vantaa | Hinta 40 euroa | Ikähaitari 5 - 6 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0105",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-07",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-09-07",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-013",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_kaivoksela_5_6_501f3097e3bf.html",
      "capture_sha256": "501f3097e3bf09fc15a7a3405504816cb3ffa7cb1a8d8ab1313cec63f0b8fdad",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 13.23,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.02 kuukaudelle (2026-09-07–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kaivoksela",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 5-6v, Keimolanmäen päiväkoti (keskiviikko), Lastenliitto ry",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5 - 6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Keimolanmäen päiväkoti",
    "address": "Keimolanmäen päiväkoti, liikuntasali, Ajolenkki 8, 01700 Vantaa",
    "district": "Keimolanmäki",
    "weekday": "keskiviikko",
    "start_time": "17:40",
    "end_time": "18:25",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (2.9.2026 17:40 - 9.12.2026 18:25), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-5-6-vuotiaille-keimolanmaki-syksy-26/",
    "source_quote": "Ajankohta 2.9.2026 17:40 - 9.12.2026 18:25 | Paikka Keimolanmäen päiväkoti, liikuntasali, Ajolenkki 8, 01700 Vantaa | Hinta 40 euroa | Ikähaitari 5 - 6 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0106",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-014",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_keimolanmaki_5_6_a8b83cd9a244.html",
      "capture_sha256": "a8b83cd9a244d23d9b598e913a393a9f7da47369a1a994362c5227559e2bd969",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Keimolanmäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 5-6v, Martinlaakson nuorisotila (tiistai), Lastenliitto ry",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5 - 6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Martinlaakson nuorisotila",
    "address": "Martinlaakson nuorisotila, monitoimisali, Martinlaaksonpolku 9, 01620 Vantaa",
    "district": "Martinlaakso",
    "weekday": "tiistai",
    "start_time": "18:50",
    "end_time": "19:35",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (1.9.2026 18:50 - 8.12.2026 19:35), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-5-6-vuotiaille-martinlaakso-syksy-26/",
    "source_quote": "Ajankohta 1.9.2026 18:50 - 8.12.2026 19:35 | Paikka Martinlaakson nuorisotila, monitoimisali, Martinlaaksonpolku 9, 01620 Vantaa | Hinta 40 euroa | Ikähaitari 5 - 6 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0107",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-015",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_martinlaakso_5_6_c71502f5665b.html",
      "capture_sha256": "c71502f5665bac0912597a626a7ef31e3f6e0f36151bb7cfb21037794c46cf8a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Martinlaakso",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 5-6v, Nikinmäen opetuspiste (torstai), Lastenliitto ry",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5 - 6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Nikinmäen opetuspiste",
    "address": "Nikinmäen opetuspiste, Perhotie 27, 01490 Vantaa",
    "district": "Nikinmäki",
    "weekday": "torstai",
    "start_time": "17:40",
    "end_time": "18:25",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (3.9.2026 17:40 - 10.12.2026 18:25), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-5-6-vuotiaille-nikinmaki-syksy-26/",
    "source_quote": "Ajankohta 3.9.2026 17:40 - 10.12.2026 18:25 | Paikka Nikinmäen opetuspiste, Perhotie 27, 01490 Vantaa | Hinta 40 euroa | Ikähaitari 5 - 6 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0108",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-016",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_nikinmaki_5_6_9fd5664ca3c3.html",
      "capture_sha256": "9fd5664ca3c35977e1253954091c057b93f4f5b7a17c16253d48dbe35638884f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Nikinmäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 5-6v, Päiväkummun koulu (tiistai), Lastenliitto ry",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5 - 6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Päiväkummun koulu",
    "address": "Päiväkummun koulu, Ismontie 2, 01420 Vantaa",
    "district": "Päiväkumpu",
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (1.9.2026 17:30 - 8.12.2026 18:15), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-5-6-vuotiaille-paivakumpu-syksy-26/",
    "source_quote": "Ajankohta 1.9.2026 17:30 - 8.12.2026 18:15 | Paikka Päiväkummun koulu, Ismontie 2, 01420 Vantaa | Hinta 40 euroa | Ikähaitari 5 - 6 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0109",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-017",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_paivakumpu_5_6_73d95cb5b888.html",
      "capture_sha256": "73d95cb5b888757c0a86641d9626ec7c0d0673b788492885235f2232a1820819",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Päiväkumpu",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 5-6v, Pakkalanrinteen päiväkoti (maanantai), Lastenliitto ry",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5 - 6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Pakkalanrinteen päiväkoti",
    "address": "Pakkalanrinteen päiväkoti, liikuntasali, Pakkalanrinne 4, 01510 Vantaa",
    "district": "Pakkalanrinne",
    "weekday": "maanantai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-10-19",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 20.0,
    "price_basis": "Kausimaksu, syksy 2026 (19.10.2026 17:45 - 7.12.2026 18:30), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-5-6-vuotiaille-pakkalanrinne-syksy-26/",
    "source_quote": "Ajankohta 19.10.2026 17:45 - 7.12.2026 18:30 | Paikka Pakkalanrinteen päiväkoti, liikuntasali, Pakkalanrinne 4, 01510 Vantaa | Hinta 20 euroa | Ikähaitari 5 - 6 -vuotiaat | Osallistujamäärä 0 / 15",
    "activity_id": "van-2026-0110",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 20.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-10-19",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-10-19",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 20,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-018",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_pakkalanrinne_5_6_3442f5feba5b.html",
      "capture_sha256": "3442f5feba5bdc1529b4eecf668aa64e128c4e79a8e66039778c216f4958dc4f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.18,
    "monthly_cost_basis": "20.0 € / term jaettuna 1.64 kuukaudelle (2026-10-19–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Pakkalanrinne",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 5-6v, Tikkurilan nuorisotila Liito (tiistai), Lastenliitto ry",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5 - 6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Tikkurilan nuorisotila Liito",
    "address": "Tikkurilan nuorisotila Liito, tanssisali Pyörre, Lummetie 2 B, 01300 Vantaa",
    "district": "Tikkurila",
    "weekday": "tiistai",
    "start_time": "18:40",
    "end_time": "19:25",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (1.9.2026 18:40 - 8.12.2026 19:25), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikki-5-6-vuotiaille-tikkurilassa-tiistai-syksy-26/",
    "source_quote": "Ajankohta 1.9.2026 18:40 - 8.12.2026 19:25 | Paikka Tikkurilan nuorisotila Liito, tanssisali Pyörre, Lummetie 2 B, 01300 Vantaa | Hinta 40 euroa | Ikähaitari 5 - 6 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0111",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-019",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_tikkurila_5_6_45e56d2dfa2c.html",
      "capture_sha256": "45e56d2dfa2cf599967ba028fb5a4b93ddcb87a163219091a5e54c1417535115",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Tikkurila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 5-6v, Askiston koulu (torstai), Lastenliitto ry",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5 - 6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Askiston koulu",
    "address": "Askiston koulu, liikuntasali, Uudentuvantie 5 01680 Vantaa",
    "district": "Askisto",
    "weekday": "torstai",
    "start_time": "17:40",
    "end_time": "18:25",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (3.9.2026 17:40 - 10.12.2026 18:25), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaleikkiliikunta-5-6-vuotiaille-askisto-syksy-26/",
    "source_quote": "Ajankohta 3.9.2026 17:40 - 10.12.2026 18:25 | Paikka Askiston koulu, liikuntasali, Uudentuvantie 5 01680 Vantaa | Hinta 40 euroa | Ikähaitari 5 - 6 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0112",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-020",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_askisto_5_6_1543f1c89a09.html",
      "capture_sha256": "1543f1c89a09ed5940dca3be4a0d01c32502c985c320dbf178fa641d63291114",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Askisto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Lastenliitto ry (Vantaan alue)",
    "group_name": "Tanssi- ja leikkiliikunta 5-6v, Lehtikuusen koulu Havu (keskiviikko), Lastenliitto ry",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5 - 6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Lehtikuusen koulu Havu",
    "address": "Lehtikuusen koulu Havu, liikuntasali, Hiirakkotie 18, 01200 Vantaa",
    "district": "Hakunila",
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 40.0,
    "price_basis": "Kausimaksu, syksy 2026 (2.9.2026 17:45 - 9.12.2026 18:30), Lastenliitto ry:n tapahtumasivu.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://www.lastenliitto.fi/vantaa/tapahtumat/vantaa-tanssijaliikunta-5-6-vuotiaille-hakunila-syksy-26/",
    "source_quote": "Ajankohta 2.9.2026 17:45 - 9.12.2026 18:30 | Paikka Lehtikuusen koulu Havu, liikuntasali, Hiirakkotie 18, 01200 Vantaa | Hinta 40 euroa | Ikähaitari 5 - 6 -vuotiaat | Osallistujamäärä 15 / 15",
    "activity_id": "van-2026-0113",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 40.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 40,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Lastenliiton jäsenyys 13 €/henkilö/vuosi valinnainen, ei pakollinen osallistumisehto (ilmoittautumislomakkeen valinta).",
    "unverified_fields": [],
    "verification_notes": "\"Tanssi- ja leikkiliikunta\": järjestäjän oman kuvauksen mukaan yhdistää leikin, liikkumisen ilon ja kehon kokonaisvaltaisen käytön ilman taitovaatimuksia (ei erillistä tanssitekniikkaa opeteta) - luokiteltu temppujumppaan liikuntaleikki-tyyppisenä ryhmänä, ei tanssiksi (vrt. CLAUDE.md kohta b). Lastenliiton jäsenmaksu 13 €/vuosi on valinnainen lisä, ei osa ryhmän hintaa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-021",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/lastenliitto_hakunila_5_6_70447c97cdb9.html",
      "capture_sha256": "70447c97cdb99282766e8f65c77933de802e59f75d492ffdc56a7f17c7eec178",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 12.3,
    "monthly_cost_basis": "40.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Hakunila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Kenttäurheilijat-58 ry (KU-58)",
    "group_name": "Liikuntaleikkikoulu 3-4v, Jokiniemi, torstai klo 17:00 (KU-58)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaat",
    "parent_child": "no",
    "venue_name": "Jokiniemen koulu",
    "address": null,
    "district": "Jokiniemi",
    "weekday": "torstai",
    "start_time": "17:00",
    "end_time": null,
    "season": "sisäkausi 2026-2027",
    "start_date": "2026-09-17",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 180.0,
    "price_basis": "Sisäharjoituskauden hinta Jokiniemessä (ku-58.fi/harjoitusryhmat/liikuntaleikkikoulu/), laskutetaan Suomisportin kautta kahdessa erässä (loka- ja tammikuussa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.ku-58.fi/harjoitusryhmat/liikuntaleikkikoulu/",
    "source_quote": "Liikuntaleikkikoulun sisäharjoituskausi alkaa Jokiniemessä 17.9.2026 ... Sisäharjotuskausi kestää huhtikuun loppuun 2027 ... Harjoitusajat sisäharjoituskausi 2026-2027: To klo 17 Liikuntaleikkikoulu 3-4v Jokiniemi / To klo 18 Liikuntaleikkikoulu 4-5v Jokiniemi / To klo 19 Liikuntaleikkikoulu 5-6v Jokiniemi ... Sisäharjoituskauden hinta on 180€ Jokiniemessä ja 166€ Hakunilassa. Ilmoittautumislinkki avautuu klikkaamalla ryhmän nimeä yläpuolella.",
    "activity_id": "van-2026-0114",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 180.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": null,
    "billing_period": "full_season",
    "price_period_start": "2026-09-17",
    "price_period_end": null,
    "season_start_date": "2026-09-17",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 180,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Laskutetaan Suomisportin kautta 2 erässä (loka-, tammikuu)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "season_end_date",
      "sessions_count"
    ],
    "verification_notes": "Yleisurheiluseuran liikuntaleikkikoulu: seuran oman sivun kuvauksen mukaan yleisiä liikkumisen perustaitoja leikin kautta, ei yleisurheilulajien tekniikkaharjoittelua - siksi luokiteltu temppujumppaan, ei yleisurheiluun (CLAUDE.md kohta b). Ilmoittautuminen ja maksu tapahtuu Suomisportissa (uusi, ei vielä hyväksytty järjestelmä); Suomisportin tapahtumasivu on JS-renderöity SPA eikä sisältöä saatu ilman selainta, joten lähteenä käytetty seuran omaa, staattista sivua. Kausi kestää huhtikuun 2027 loppuun asti, tarkkaa päättymispäivää ei ilmoitettu - ei arvattu. comparison_eligible=false, koska Suomisport-hinta ei ole vielä varmennettu maksusivulta (sääntö 8). CLAUDE.md (a2) 24.9.2026: suomisport.fi on nyt Ilpon hyväksymä virallinen järjestelmä (ks. myös scripts/validate_staging.py OFFICIAL_SYSTEM_DOMAINS) - review-tila poistettu, comparison_eligible=true.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-022",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/ku58_own_d17003e02a8a.html",
      "capture_sha256": "d17003e02a8a3f411297a632eb2d025758a33b0ca63217e63f56a7727deffb67",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Jokiniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Kenttäurheilijat-58 ry (KU-58)",
    "group_name": "Liikuntaleikkikoulu 4-5v, Jokiniemi, torstai klo 18:00 (KU-58)",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5-vuotiaat",
    "parent_child": "no",
    "venue_name": "Jokiniemen koulu",
    "address": null,
    "district": "Jokiniemi",
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": null,
    "season": "sisäkausi 2026-2027",
    "start_date": "2026-09-17",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 180.0,
    "price_basis": "Sisäharjoituskauden hinta Jokiniemessä (ku-58.fi/harjoitusryhmat/liikuntaleikkikoulu/), laskutetaan Suomisportin kautta kahdessa erässä (loka- ja tammikuussa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.ku-58.fi/harjoitusryhmat/liikuntaleikkikoulu/",
    "source_quote": "Liikuntaleikkikoulun sisäharjoituskausi alkaa Jokiniemessä 17.9.2026 ... Sisäharjotuskausi kestää huhtikuun loppuun 2027 ... Harjoitusajat sisäharjoituskausi 2026-2027: To klo 17 Liikuntaleikkikoulu 3-4v Jokiniemi / To klo 18 Liikuntaleikkikoulu 4-5v Jokiniemi / To klo 19 Liikuntaleikkikoulu 5-6v Jokiniemi ... Sisäharjoituskauden hinta on 180€ Jokiniemessä ja 166€ Hakunilassa. Ilmoittautumislinkki avautuu klikkaamalla ryhmän nimeä yläpuolella.",
    "activity_id": "van-2026-0115",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 180.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": null,
    "billing_period": "full_season",
    "price_period_start": "2026-09-17",
    "price_period_end": null,
    "season_start_date": "2026-09-17",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 180,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Laskutetaan Suomisportin kautta 2 erässä (loka-, tammikuu)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "season_end_date",
      "sessions_count"
    ],
    "verification_notes": "Yleisurheiluseuran liikuntaleikkikoulu: seuran oman sivun kuvauksen mukaan yleisiä liikkumisen perustaitoja leikin kautta, ei yleisurheilulajien tekniikkaharjoittelua - siksi luokiteltu temppujumppaan, ei yleisurheiluun (CLAUDE.md kohta b). Ilmoittautuminen ja maksu tapahtuu Suomisportissa (uusi, ei vielä hyväksytty järjestelmä); Suomisportin tapahtumasivu on JS-renderöity SPA eikä sisältöä saatu ilman selainta, joten lähteenä käytetty seuran omaa, staattista sivua. Kausi kestää huhtikuun 2027 loppuun asti, tarkkaa päättymispäivää ei ilmoitettu - ei arvattu. comparison_eligible=false, koska Suomisport-hinta ei ole vielä varmennettu maksusivulta (sääntö 8). CLAUDE.md (a2) 24.9.2026: suomisport.fi on nyt Ilpon hyväksymä virallinen järjestelmä (ks. myös scripts/validate_staging.py OFFICIAL_SYSTEM_DOMAINS) - review-tila poistettu, comparison_eligible=true.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-023",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/ku58_own_d17003e02a8a.html",
      "capture_sha256": "d17003e02a8a3f411297a632eb2d025758a33b0ca63217e63f56a7727deffb67",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Jokiniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Kenttäurheilijat-58 ry (KU-58)",
    "group_name": "Liikuntaleikkikoulu 5-6v, Jokiniemi, torstai klo 19:00 (KU-58)",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Jokiniemen koulu",
    "address": null,
    "district": "Jokiniemi",
    "weekday": "torstai",
    "start_time": "19:00",
    "end_time": null,
    "season": "sisäkausi 2026-2027",
    "start_date": "2026-09-17",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 180.0,
    "price_basis": "Sisäharjoituskauden hinta Jokiniemessä (ku-58.fi/harjoitusryhmat/liikuntaleikkikoulu/), laskutetaan Suomisportin kautta kahdessa erässä (loka- ja tammikuussa).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.ku-58.fi/harjoitusryhmat/liikuntaleikkikoulu/",
    "source_quote": "Liikuntaleikkikoulun sisäharjoituskausi alkaa Jokiniemessä 17.9.2026 ... Sisäharjotuskausi kestää huhtikuun loppuun 2027 ... Harjoitusajat sisäharjoituskausi 2026-2027: To klo 17 Liikuntaleikkikoulu 3-4v Jokiniemi / To klo 18 Liikuntaleikkikoulu 4-5v Jokiniemi / To klo 19 Liikuntaleikkikoulu 5-6v Jokiniemi ... Sisäharjoituskauden hinta on 180€ Jokiniemessä ja 166€ Hakunilassa. Ilmoittautumislinkki avautuu klikkaamalla ryhmän nimeä yläpuolella.",
    "activity_id": "van-2026-0116",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 180.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": null,
    "billing_period": "full_season",
    "price_period_start": "2026-09-17",
    "price_period_end": null,
    "season_start_date": "2026-09-17",
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 180,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Laskutetaan Suomisportin kautta 2 erässä (loka-, tammikuu)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "season_end_date",
      "sessions_count"
    ],
    "verification_notes": "Yleisurheiluseuran liikuntaleikkikoulu: seuran oman sivun kuvauksen mukaan yleisiä liikkumisen perustaitoja leikin kautta, ei yleisurheilulajien tekniikkaharjoittelua - siksi luokiteltu temppujumppaan, ei yleisurheiluun (CLAUDE.md kohta b). Ilmoittautuminen ja maksu tapahtuu Suomisportissa (uusi, ei vielä hyväksytty järjestelmä); Suomisportin tapahtumasivu on JS-renderöity SPA eikä sisältöä saatu ilman selainta, joten lähteenä käytetty seuran omaa, staattista sivua. Kausi kestää huhtikuun 2027 loppuun asti, tarkkaa päättymispäivää ei ilmoitettu - ei arvattu. comparison_eligible=false, koska Suomisport-hinta ei ole vielä varmennettu maksusivulta (sääntö 8). CLAUDE.md (a2) 24.9.2026: suomisport.fi on nyt Ilpon hyväksymä virallinen järjestelmä (ks. myös scripts/validate_staging.py OFFICIAL_SYSTEM_DOMAINS) - review-tila poistettu, comparison_eligible=true.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-024",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/ku58_own_d17003e02a8a.html",
      "capture_sha256": "d17003e02a8a3f411297a632eb2d025758a33b0ca63217e63f56a7727deffb67",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": "Jokiniemi",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Dance Team Vakita ry",
    "group_name": "Lasten tanssileikkikerho Pörriäiset, Dance Team Vakita",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5-vuotiaille",
    "parent_child": "no",
    "venue_name": "Vakitan studio, Martinkyläntie 43",
    "address": "Martinkyläntie 43 (2.krs), Varisto, Vantaa",
    "district": "Varisto",
    "weekday": null,
    "start_time": "16:15",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-08-14",
    "end_date": "2026-12-11",
    "sessions_count": null,
    "price_eur": 60.0,
    "price_basis": "Kausimaksu 1x/viikko, syksy 2026 (vakita.fi/tanssikurssit/lasten-tanssikurssit/).",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilukerta maksuton.",
    "enrollment_status": "unknown",
    "source_url": "https://vakita.fi/tanssikurssit/lasten-tanssikurssit/",
    "source_quote": "Lasten tanssileikkikerho Pörriäiset (3-5 -vuotiaille) | Aika: maanantaisin ja perjantaisin klo 16.15-17.00 | Kurssin kesto: 2026 syyskaudella pe 14.8. - pe 11.12. EI TUNTEJA viikolla 42 | Hinta: 1 kerta viikossa - 60 € / kausi + jäsenmaksu HUOM - kokeilukerta on maksuton | 2 kertaa viikossa - 90 € / kausi | Ilmoittaudu & maksa tästä: https://www.suomisport.fi/events/a936626e-1129-4315-93c7-dbda7d4d424f | Vakitan ulkopuoliset (ei-jäsenet) voivat myös osallistua kurssille halutessaan kertamaksulla: 8€ / kerta.",
    "activity_id": "van-2026-0117",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 80.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://vakita.fi/jasenmaksu-ja-liittyminen/",
    "billing_period": "term",
    "price_period_start": "2026-08-14",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-08-14",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 60,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "yearly",
        "applies_if": "jos osallistuu kausimaksulla (ei koske kertamaksulla 8 €/krt osallistuvia ei-jäseniä)",
        "note": "Lapset, syyskaudella liittyminen."
      }
    ],
    "price_options": [
      {
        "label": "2 kertaa viikossa",
        "amount_eur": 90.0,
        "applies_if": "osallistuu ryhmään kahdesti viikossa (kerran hinnan 60 € sijaan)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Jäsenmaksu (20 €/lapsi/syyskausi) on pakollinen vain kausimaksulla osallistuville - ei-jäsenet voivat osallistua myös kertamaksulla 8 €/kerta ilman jäsenyyttä (applies_if). Ilmoittautuminen ja maksu tapahtuu Suomisportissa (suomisport.fi), joka ei ole OFFICIAL_SYSTEM_DOMAINS-listalla - Suomisportin tapahtumasivu on JS-renderöity eikä hintaa saatu vahvistettua sieltä suoraan; hinta on kuitenkin sama järjestäjän omalla staattisella hinnastosivulla (vakita.fi), joka toimii tässä lähteenä. comparison_eligible=false, kunnes Suomisport hyväksytään järjestelmäksi ja hinta voidaan varmentaa maksusivulta (sääntö 8). CLAUDE.md (a2) 24.9.2026: suomisport.fi on nyt Ilpon hyväksymä virallinen järjestelmä (ks. myös scripts/validate_staging.py OFFICIAL_SYSTEM_DOMAINS) - review-tila poistettu, comparison_eligible=true.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-025",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/vakita_lasten_24d5e8269d1c.html",
      "capture_sha256": "24d5e8269d1c0d70a883afef721ee6fd66aac2f121703dfcb0f3377fbf2fd14e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 15.22,
    "monthly_cost_basis": "60.0 € / term jaettuna 3.94 kuukaudelle (2026-08-14–2026-12-11, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Varisto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Dance Team Vakita ry",
    "group_name": "Lasten alkeet ja jatko, Dance Team Vakita",
    "min_age": 6,
    "max_age": 10,
    "eligibility_text": "6-10-vuotiaille",
    "parent_child": "no",
    "venue_name": "Vakitan studio, Martinkyläntie 43",
    "address": "Martinkyläntie 43 (2.krs), Varisto, Vantaa",
    "district": "Varisto",
    "weekday": null,
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-08-15",
    "end_date": "2026-12-11",
    "sessions_count": null,
    "price_eur": 100.0,
    "price_basis": "Kausimaksu 1x/viikko, syksy 2026 (vakita.fi/tanssikurssit/lasten-tanssikurssit/).",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": "Kokeilukerta maksuton.",
    "enrollment_status": "unknown",
    "source_url": "https://vakita.fi/tanssikurssit/lasten-tanssikurssit/",
    "source_quote": "Lasten alkeet ja jatko | Aika: keskiviikkoisin ja perjantaisin klo 17.00-18.00 + ohjattu speed-up -harjoitus su klo 10.00-11.00 | Kurssin kesto: 2026 syyskaudella pe 15.8. - pe 11.12. EI TUNTEJA viikolla 42 | Hinta: 100 € / kausi + vuoden 2025 jäsenmaksu. HUOM - kokeilukerta on maksuton | Ilmoittaudu & maksa tästä: https://www.suomisport.fi/events/e02e6259-7c1b-4c8c-9411-ea13dfee75d2 | Vakitan ulkopuoliset (ei-jäsenet) voivat myös osallistua kurssille halutessaan kertamaksulla: 8€ / kerta.",
    "activity_id": "van-2026-0118",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 120.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://vakita.fi/jasenmaksu-ja-liittyminen/",
    "billing_period": "term",
    "price_period_start": "2026-08-15",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-08-15",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 100,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "yearly",
        "applies_if": "jos osallistuu kausimaksulla (ei koske kertamaksulla 8 €/krt osallistuvia ei-jäseniä)",
        "note": "Lapset, syyskaudella liittyminen."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Jäsenmaksu (20 €/lapsi/syyskausi) on pakollinen vain kausimaksulla osallistuville - ei-jäsenet voivat osallistua myös kertamaksulla 8 €/kerta ilman jäsenyyttä (applies_if). Ilmoittautuminen ja maksu tapahtuu Suomisportissa (suomisport.fi), joka ei ole OFFICIAL_SYSTEM_DOMAINS-listalla - Suomisportin tapahtumasivu on JS-renderöity eikä hintaa saatu vahvistettua sieltä suoraan; hinta on kuitenkin sama järjestäjän omalla staattisella hinnastosivulla (vakita.fi), joka toimii tässä lähteenä. comparison_eligible=false, kunnes Suomisport hyväksytään järjestelmäksi ja hinta voidaan varmentaa maksusivulta (sääntö 8). Ikäväli 6-10 v osuu rajaukseen vain alarajalla - sopii vain 6-vuotiaille. CLAUDE.md (a2) 24.9.2026: suomisport.fi on nyt Ilpon hyväksymä virallinen järjestelmä (ks. myös scripts/validate_staging.py OFFICIAL_SYSTEM_DOMAINS) - review-tila poistettu, comparison_eligible=true.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_05.json",
      "staging_id": "batch_vantaa_2026-09-24_05-026",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_05/vakita_lasten_24d5e8269d1c.html",
      "capture_sha256": "24d5e8269d1c0d70a883afef721ee6fd66aac2f121703dfcb0f3377fbf2fd14e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 25.58,
    "monthly_cost_basis": "100.0 € / term jaettuna 3.91 kuukaudelle (2026-08-15–2026-12-11, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Varisto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Vantaan kaupunki / Liikunnan palvelualue",
    "group_name": "Perheliikuntaryhmä, 2-6-vuotiaat (Tikkurila)",
    "min_age": 2,
    "max_age": 6,
    "eligibility_text": "2-6-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Tikkurilan urheilutalo",
    "address": "Läntinen Valkoisenlähteentie 52, 01300 Vantaa",
    "district": "Tikkurila",
    "weekday": "maanantai",
    "start_time": "16:30",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-08-24",
    "end_date": "2026-12-14",
    "sessions_count": 15,
    "price_eur": 0.0,
    "price_basis": "Kaupungin ilmainen avoin perheliikuntaryhmä, ei ilmoittautumista.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pisa.grynos.com/vantaaliikunta/course/V261010",
    "source_quote": "Perheliikuntaryhmä, 2-6 -vuotiaat. Ryhmä on avoin kaikille perheille, joissa on 2-6 -vuotiaita lapsia. Ryhmä on ilmainen (0 €). ... Vantaan Kaupunki / Liikunnan palvelualue, Tikkurilan urheilutalo, Läntinen Valkoisenlähteentie 52, 01300 Vantaa. Starts Mon 24.08.2026 at 16:30 - 17:30. Ends Mon 14.12.2026 (15 ses., 18 hrs). 10 seats remaining. Price: Autumn 0,00 €.",
    "activity_id": "van-2026-0119",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 0.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "full_season",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-24",
    "season_end_date": "2026-12-14",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://pisa.grynos.com/vantaaliikunta/course/V261010",
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 0,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kaupungin maksuton ryhmä."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kaupungin maksuton, ei-ilmoittautumista vaativa avoin perheryhmä (10 paikkaa jäljellä eksplisiittisesti sivulla); CLAUDE.md (a2) 24.9.2026 hyväksyi grynos.com-lähteen. Sivu on JS-renderöity SPA, sisältö haettu headless-selaimella (scratch v06_render.js, ks. qa/e2e.js-mallia).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-001",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_06/grynos_V261010.html",
      "capture_sha256": "461b6e1bced1d8d276c752cc62ff7e744e79b09e978f0a2842c2db370c591b74",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 0.0,
    "monthly_cost_basis": "0.0 € / full_season jaettuna 3.71 kuukaudelle (2026-08-24–2026-12-14, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Tikkurila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "temppujumppa",
    "provider": "Vantaan kaupunki / Liikunnan palvelualue",
    "group_name": "Perheliikunta 1-3-vuotiaat, avoin ryhmä (Hämeenkylä)",
    "min_age": 1,
    "max_age": 3,
    "eligibility_text": "1-3-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Hämeenkylän liikuntahalli",
    "address": "Varistontie 3, 01660 Vantaa",
    "district": "Hämeenkylä",
    "weekday": "sunnuntai",
    "start_time": "09:30",
    "end_time": "10:30",
    "season": "syksy 2026",
    "start_date": "2026-09-06",
    "end_date": "2026-12-13",
    "sessions_count": 15,
    "price_eur": 0.0,
    "price_basis": "Kaupungin ilmainen avoin perheliikuntaryhmä, ei ilmoittautumista.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://pisa.grynos.com/vantaaliikunta/course/V261009",
    "source_quote": "Perheliikunta 1-3-vuotiaat, avoin ryhmä. Ryhmä on avoin kaikille perheille, joissa on 1-3-vuotiaita lapsia. Ryhmä on ilmainen (0 €). ... Vantaan Kaupunki / Liikunnan palvelualue, Hämeenkylän liikuntahalli, Varistontie 3, 01660 Vantaa. Starts Sun 06.09.2026 at 09:30 - 10:30. Ends Sun 13.12.2026 (15 ses., 19 hrs). 12 seats remaining. Price: Autumn 0,00 €.",
    "activity_id": "van-2026-0120",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 0.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "full_season",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-06",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://pisa.grynos.com/vantaaliikunta/course/V261009",
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 0,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kaupungin maksuton ryhmä."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kaupungin maksuton, ei-ilmoittautumista vaativa avoin perheryhmä (12 paikkaa jäljellä eksplisiittisesti sivulla, ei ohjaajaa - vapaata leikkiä); CLAUDE.md (a2) 24.9.2026 hyväksyi grynos.com-lähteen. JS-renderöity SPA, haettu headless-selaimella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-002",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_06/grynos_V261009.html",
      "capture_sha256": "bffd6aafbdf80e9eea90cb07be03d17641aa5dc2783044832d0af17ab30c1d68",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 0.0,
    "monthly_cost_basis": "0.0 € / full_season jaettuna 3.25 kuukaudelle (2026-09-06–2026-12-13, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Hämeenkylä",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "jalkapallo",
    "provider": "Vantaan kaupunki / Liikunnan palvelualue",
    "group_name": "Perheliikunta 6-11-vuotiaat (Rekola)",
    "min_age": 6,
    "max_age": 11,
    "eligibility_text": "6-11-vuotiaat",
    "parent_child": "yes",
    "venue_name": "Rekolanmäen koulu",
    "address": "Valtimotie 4, 01400 Vantaa",
    "district": "Rekola",
    "weekday": "lauantai",
    "start_time": "14:00",
    "end_time": "16:00",
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": "2026-12-19",
    "sessions_count": 15,
    "price_eur": 0.0,
    "price_basis": "Kaupungin ilmainen avoin perheliikuntaryhmä (jalkapalloa), ei ilmoittautumista.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://pisa.grynos.com/vantaaliikunta/course/V261021",
    "source_quote": "Perheliikunta 6-11 -vuotiaat (TÄYNNÄ) / Sports for families with children 6-11 years (FULL). Huom. Ryhmä on tällä hetkellä täynnä... Ryhmä on avoin kaikille perheille, joissa on 6-11 -vuotiaita lapsia. Ryhmä on ilmainen (0 €). Ryhmässä pelataan jalkapalloa... Vantaan Kaupunki / Liikunnan palvelualue, Rekolanmäen koulu, Valtimotie 4, 01400 Vantaa. Starts Sat 05.09.2026 at 14:00 - 16:00. Ends Sat 19.12.2026 (15 ses., 40 hrs). Price: 0,00 €.",
    "activity_id": "van-2026-0121",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 0.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "full_season",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://pisa.grynos.com/vantaaliikunta/course/V261021",
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 0,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kaupungin maksuton ryhmä."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäväli 6-11 v osuu rajaukseen vain alarajalla - sopii vain 6-vuotiaille. Sivun otsikko ja teksti kertovat ryhmän olevan tällä hetkellä täynnä (\"TÄYNNÄ\"/\"FULL\") - explisiittinen tila, ei päätelty. CLAUDE.md (a2) 24.9.2026 hyväksyi grynos.com-lähteen. JS-renderöity SPA, haettu headless-selaimella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-003",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_06/grynos_V261021.html",
      "capture_sha256": "a170e249068c0ac8b793328e0b8cb11a30cbf17e86b39e6ed6cd7ecd3ce12acc",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 0.0,
    "monthly_cost_basis": "0.0 € / full_season jaettuna 3.48 kuukaudelle (2026-09-05–2026-12-19, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Rekola",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "tanssi",
    "provider": "Vantaan Katutanssiyhdistys ry",
    "group_name": "Syksy 2026: Ministreet 6-7v., Tiina",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6-7-vuotiaille",
    "parent_child": "no",
    "venue_name": "Studio VKTY, Sali 2",
    "address": "Liesitori 1, 01600 Vantaa",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "16:45",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-08-19",
    "end_date": "2026-12-02",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "Kausimaksu, syksy 2026 (45 min tunti) + VKTY:n jäsenmaksu.",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vkty.myclub.fi/flow/courses/10808195",
    "source_quote": "Syksy 2026: Ministreet 6-7v., Tiina | Studio VKTY, Sali 2, Liesitori 1, 01600 Vantaa | 19.8.2026 16:45 - 2.12.2026 | Hinnat: https://vantaankatutanssi.fi/tanssitunnit/hinnasto/ | Hinnasto 2026-2027: Jäsenmaksu koko kausi 30 €; Tunnit 45 min: 143 € (114 € kun ilmoittaudut 7.9. alk.)",
    "activity_id": "van-2026-0122",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 173.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://vantaankatutanssi.fi/tanssitunnit/hinnasto/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-19",
    "season_end_date": "2026-12-02",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "Koko kausi (syksy 2026 - kevät 2027) jäsenmaksu; kaikkien lipputyyppien osto edellyttää jäsenyyttä."
      }
    ],
    "price_options": [
      {
        "label": "ilmoittautuu 1. alennusjaksosta alkaen (7.9.2026 tai myöhemmin)",
        "amount_eur": 114.0,
        "applies_if": "alennus lasketaan myClubin ilmoittautumispäivän mukaan, ei käyntikerran mukaan",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäväli 6-7 v osuu rajaukseen vain alarajalla - sopii vain 6-vuotiaille. Hinta (45 min tunti, koko syyskausi) luettu vantaankatutanssi.fi/tanssitunnit/hinnasto/-sivulta, koska kurssisivu viittaa siihen eikä listaa hintaa itse. Kausimaksun hinta alenee n. 3 viikon välein syyskaudella - price_eur = normaalihinta (143 €), alennusjakso price_options-alkiona (sääntö 8/kierros 3).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-004",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_06/vkty_10808195.html",
      "capture_sha256": "ee0c286373fe71d27346aab0c8c9c7ead420b087d255f1d5bd5c95867b48993d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 41.06,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.48 kuukaudelle (2026-08-19–2026-12-02, season_start_date)",
    "monthly_cost_complete": false,
    "district_derived": "Myyrmäki",
    "district_basis": "geokoodattu osoite -> neighborhood 'Myyrmäki' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Vantaan Katutanssiyhdistys ry",
    "group_name": "Syksy 2026: Ministreet 4-6v., Neela (Ylästö)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Ylästön koulu",
    "address": "Ollaksentie 29, 01690 Vantaa",
    "district": null,
    "weekday": "torstai",
    "start_time": "16:15",
    "end_time": "17:00",
    "season": "syksy 2026",
    "start_date": "2026-08-20",
    "end_date": "2026-12-03",
    "sessions_count": null,
    "price_eur": 143.0,
    "price_basis": "Kausimaksu, syksy 2026 (45 min tunti) + VKTY:n jäsenmaksu.",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vkty.myclub.fi/flow/courses/10808219",
    "source_quote": "Syksy 2026: Ministreet 4-6v., Neela (Ylästö) | Ylästön koulu, Ollaksentie 29, 01690 Vantaa | 20.8.2026 16:15 - 3.12.2026 | Hinnat: https://vantaankatutanssi.fi/tanssitunnit/hinnasto/ | Hinnasto 2026-2027: Jäsenmaksu koko kausi 30 €; Tunnit 45 min: 143 € (114 € kun ilmoittaudut 7.9. alk.)",
    "activity_id": "van-2026-0123",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 173.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://vantaankatutanssi.fi/tanssitunnit/hinnasto/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-08-20",
    "season_end_date": "2026-12-03",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 143,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "Koko kausi (syksy 2026 - kevät 2027) jäsenmaksu; kaikkien lipputyyppien osto edellyttää jäsenyyttä."
      }
    ],
    "price_options": [
      {
        "label": "ilmoittautuu 1. alennusjaksosta alkaen (7.9.2026 tai myöhemmin)",
        "amount_eur": 114.0,
        "applies_if": "alennus lasketaan myClubin ilmoittautumispäivän mukaan, ei käyntikerran mukaan",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Hinta (45 min tunti, koko syyskausi) luettu vantaankatutanssi.fi/tanssitunnit/hinnasto/-sivulta, koska kurssisivu viittaa siihen eikä listaa hintaa itse. Kausimaksun hinta alenee n. 3 viikon välein syyskaudella - price_eur = normaalihinta (143 €), alennusjakso price_options-alkiona (sääntö 8/kierros 3).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-005",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_06/vkty_10808219.html",
      "capture_sha256": "4e287831b486240f89a89aa379da83904295e6c86de89f5a1e87c40ed6b4fcc7",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 41.06,
    "monthly_cost_basis": "143.0 € / term jaettuna 3.48 kuukaudelle (2026-08-20–2026-12-03, season_start_date)",
    "monthly_cost_complete": false,
    "district_derived": "Ylästö",
    "district_basis": "geokoodattu osoite -> neighborhood 'Ylästö' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Vantaan Katutanssiyhdistys ry",
    "group_name": "Syksy 2026: Ministreet 4-6 v., Elviira (Tikkurila)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Monitoimitila Liito",
    "address": "Lummetie 2 B C, 01300 Vantaa",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-09-28",
    "end_date": "2026-11-30",
    "sessions_count": null,
    "price_eur": 86.0,
    "price_basis": "Kausimaksu, syksy 2026 (45 min tunti) + VKTY:n jäsenmaksu.",
    "membership_fee_eur": 30.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vkty.myclub.fi/flow/courses/11617626",
    "source_quote": "Syksy 2026: Ministreet 4-6 v., Elviira | Monitoimitila Liito, Lummetie 2 B C, 01300 Vantaa | 28.9.2026 18:00 - 30.11.2026 | Tikkurilassa alkavat VKTY:n uudet tunnit 28.9. ja jatkuvat 30.11. saakka. Tuntia ei ole syyslomaviikon maanantaina 12.10. Tämän kurssin koko syksyn hinta on 86 € + VKTY:n jäsenmaksu 30 €.",
    "activity_id": "van-2026-0124",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 116.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-28",
    "season_end_date": "2026-11-30",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 86,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 30,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "Koko kausi (syksy 2026 - kevät 2027) jäsenmaksu; kaikkien lipputyyppien osto edellyttää jäsenyyttä."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Tikkurilan uusi ryhmä, jolla on oma hinnastonsa (koko syksyn hinta ilmoitettu suoraan kurssisivulla, ei viittaa yleiseen hinnastoon kuten muut VKTY-ryhmät). Ei tunnilla 12.10. (syysloma).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-006",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_06/vkty_11617626.html",
      "capture_sha256": "ccf31b63b0b02c6e39c6e4a5db85fb9dabfc4313130463e498d3f0ea82d5c7f7",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 40.9,
    "monthly_cost_basis": "86.0 € / term jaettuna 2.10 kuukaudelle (2026-09-28–2026-11-30, season_start_date)",
    "monthly_cost_complete": false,
    "district_derived": "Tikkurila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Tikkurila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "SATUBALETTI (2022-2023-syntyneet) TI 17:00-17:45 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2022-2023-syntyneet",
    "parent_child": "no",
    "venue_name": "VVS Tanssisali (Vetokuja 1E)",
    "address": "Vetokuja 1E, 01610 Vantaa",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2027-05-04",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Tanssisaliryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10678068",
    "source_quote": "SATUBALETTI (2022-2023-syntyneet) TI 17:00-17:45 149€ | 2022-2023-syntyneet (3-4v) | 25.8.2026 17:00 - 4.5.2027 | Vaadittavat tuotteet: VVS Jäsenmaksu 2026-2027 20,00 €; Toimintamaksu, syksy 2026 - Tanssisaliryhmä 45min 149,00 €",
    "activity_id": "van-2026-0125",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-25",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-08-25",
    "season_end_date": "2027-05-04",
    "birth_year_min": 2022,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "VVS:n lisäkurssi, joka puuttui batch_vantaa_2026-09-24_02.json:n 33 rivin listasta (tarkistettu koko myclub-listaus uudelleen q=parkour/koko lista -haulla). Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta, koska sivulla ei ole erillistä Hintatiedot-listaa. Ilmoittautumisjakso jatkuu keväälle 2027 asti (sama tunti), mutta price_eur/price_basis koskee vain syksyn 2026 toimintamaksua (sama käytäntö kuin muilla VVS-riveillä batch_02:ssa). Vantaa-QA 24.9.2026: sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.45 -> 11.27; price_period 2026-08-25..2026-12-08 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-007",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_06/vvs_10678068.html",
      "capture_sha256": "f50bef69d0a8ca751b0083b8320739e17c5c3fa9b1789e83c4f0cb167406649a",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-25–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "BALETTI (2020-2021-syntyneet) TI 17:45-18:30 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2021-syntyneet",
    "parent_child": "no",
    "venue_name": "VVS Tanssisali (Vetokuja 1E)",
    "address": "Vetokuja 1E, 01610 Vantaa",
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-25",
    "end_date": "2027-05-04",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - Tanssisaliryhmä 45min",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10678140",
    "source_quote": "BALETTI (2020-2021-syntyneet) TI 17:45-18.30 149€ | 2020-2021-syntyneet (5-6v) | 25.8.2026 17:45 - 4.5.2027 | Vaadittavat tuotteet: VVS Jäsenmaksu 2026-2027 20,00 €; Toimintamaksu, syksy 2026 - Tanssisaliryhmä 45min 149,00 €",
    "activity_id": "van-2026-0126",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-25",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-08-25",
    "season_end_date": "2027-05-04",
    "birth_year_min": 2020,
    "birth_year_max": 2021,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "VVS:n lisäkurssi, joka puuttui batch_vantaa_2026-09-24_02.json:n 33 rivin listasta (tarkistettu koko myclub-listaus uudelleen q=parkour/koko lista -haulla). Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta, koska sivulla ei ole erillistä Hintatiedot-listaa. Ilmoittautumisjakso jatkuu keväälle 2027 asti (sama tunti), mutta price_eur/price_basis koskee vain syksyn 2026 toimintamaksua (sama käytäntö kuin muilla VVS-riveillä batch_02:ssa). Vantaa-QA 24.9.2026: sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.45 -> 11.27; price_period 2026-08-25..2026-12-08 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-008",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_06/vvs_10678140.html",
      "capture_sha256": "c1ccb01c2555a84e04fa7d9d194064ab670321e60529c5fba89e893e11fb3f89",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-25–2026-12-08, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Kaivoksela",
    "district_basis": "geokoodattu osoite -> neighborhood 'Kaivoksela' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Vantaan Voimisteluseura VVS ry",
    "group_name": "LASTEN TANSSI (2020-2023-syntyneet) KE 17:30-18:15 149€",
    "min_age": null,
    "max_age": null,
    "eligibility_text": "2020-2023-syntyneet",
    "parent_child": "no",
    "venue_name": "Myyrmäen urheilutalo/pieni sali",
    "address": "Myyrmäenraitti 4, 01600 Vantaa",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:30",
    "end_time": "18:15",
    "season": "syksy 2026",
    "start_date": "2026-08-26",
    "end_date": "2027-05-05",
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Toimintamaksu, syksy 2026 - kouluryhmä",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vvs.myclub.fi/flow/courses/10681345",
    "source_quote": "LASTEN TANSSI (2020-2023-syntyneet) KE 17:30-18:15 149€ | 2020-2023-syntyneet (3-6v) | 26.8.2026 17:30 - 5.5.2027 | Vaadittavat tuotteet: VVS Jäsenmaksu 2026-2027 20,00 €; Toimintamaksu, syksy 2026 - kouluryhmä 149,00 €",
    "activity_id": "van-2026-0127",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 169.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-26",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-08-26",
    "season_end_date": "2027-05-05",
    "birth_year_min": 2020,
    "birth_year_max": 2023,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "unknown",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': VVS Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "VVS:n lisäkurssi, joka puuttui batch_vantaa_2026-09-24_02.json:n 33 rivin listasta (tarkistettu koko myclub-listaus uudelleen q=parkour/koko lista -haulla). Hinta luettu myClubin 'Vaadittavat tuotteet' -listasta, koska sivulla ei ole erillistä Hintatiedot-listaa. Ilmoittautumisjakso jatkuu keväälle 2027 asti (sama tunti), mutta price_eur/price_basis koskee vain syksyn 2026 toimintamaksua (sama käytäntö kuin muilla VVS-riveillä batch_02:ssa). Vantaa-QA 24.9.2026: sessions_count 31 -> 15 (vain syyskauden kerrat, koska hinta on \"Toimintamaksu, syksy 2026\"; kevät laskutetaan erikseen), price_per_session_eur 5.45 -> 11.27; price_period 2026-08-26..2026-12-09 lisätty (hinta koskee syyskautta \"Syyskausi 24.8.–13.12.2026\"; season_*-kentät kattavat koko toimintakauden, joten kuukausihinta olisi muuten laskettu koko vuodelle).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-009",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_06/vvs_10681345.html",
      "capture_sha256": "926e52ffcfa80294531b55220ae2dd5639728f86ccd28c21451af3083a45fff9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 42.78,
    "monthly_cost_basis": "149.0 € / term jaettuna 3.48 kuukaudelle (2026-08-26–2026-12-09, price_period_start)",
    "monthly_cost_complete": false,
    "district_derived": "Myyrmäki",
    "district_basis": "geokoodattu osoite -> neighborhood 'Myyrmäki' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "tanssi",
    "provider": "Vantaan aikuisopisto",
    "group_name": "Taaperotanssi (1,5-2,5v.)",
    "min_age": 1,
    "max_age": 2,
    "eligibility_text": "1,5-2,5-vuotiaille",
    "parent_child": "yes",
    "venue_name": "Myyrinki",
    "address": "Vaskivuorentie 10 B 3.krs., 01600 Vantaa",
    "district": "Myyrmäki",
    "weekday": "perjantai",
    "start_time": "14:00",
    "end_time": "14:45",
    "season": "syksy 2026",
    "start_date": "2026-10-23",
    "end_date": "2026-11-20",
    "sessions_count": 5,
    "price_eur": 30.0,
    "price_basis": "Kurssimaksu, syyskausi 2026.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://ilmonet.fi/course/V262847",
    "source_quote": "Taaperotanssi (1,5-2,5v.). Tunneilla tanssitaan, leikitään, jumpataan, lauletaan ja hassutellaan yhdessä... Vantaan aikuisopisto, Myyrmäki, Myyrinki, Vaskivuorentie 10 B 3.krs., 01600 Vantaa. Starts fri 23.10.2026 at 14:00 - 14:45. Ends fri 20.11.2026 (5 ses., 5 hrs). Enroll to queue. Course code: V262847. Price: Autumn 30,00 €. Discount: Työttömyysalennus.",
    "activity_id": "van-2026-0128",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 30.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-23",
    "season_end_date": "2026-11-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://ilmonet.fi/course/V262847",
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 30,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "Sivulla mainitaan 'Työttömyysalennus' hintaan, ehtoja ei eritelty.",
    "unverified_fields": [],
    "verification_notes": "Kaupungin kansalaisopisto, ilmonet.fi hyväksytty järjestelmä. Sivu näyttää \"Enroll to queue\" / \"Ilmoittaudu jonoon\" eksplisiittisesti (ei paikkamäärää) -> availability_status=waitlist. Työttömyysalennus mainittu hinnan yhteydessä, mutta ehtoja/summaa ei eritelty riittävästi price_options-kirjaukseen - jätetty optional_cost_notes-tasoiseksi huomioksi. JS-renderöity SPA, haettu headless-selaimella (scratch v06_render.js).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-010",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_06/ilmonet_V262847.html",
      "capture_sha256": "09db737b6e74b7a32dd8a4b9097dd49f63ea5fb0117cfab829386cc85c18805d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 31.49,
    "monthly_cost_basis": "30.0 € / course jaettuna 0.95 kuukaudelle (2026-10-23–2026-11-20, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Myyrmäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "voimistelu",
    "provider": "Sporttia kaikille ry",
    "group_name": "Voimistelu alkeet, 4-5 v.",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5-vuotiaille",
    "parent_child": "no",
    "venue_name": "Rekolan koulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10864189",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 3 kurssia, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 1 kurssi || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0129",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-011",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10864189_003a4c58ef4b.html",
      "capture_sha256": "003a4c58ef4b1a5d0cc24ef376a34fae611b1a358ad8b1e30ba826984f79bde0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sporttia kaikille ry",
    "group_name": "Voimistelu alkeet, 3-4 v.",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille",
    "parent_child": "no",
    "venue_name": "Mikkolan koulu (toimipiste Lyyra)",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:40",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10865594",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 3 kurssia, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 1 kurssi || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0130",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-012",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10865594_e3d2d35cd959.html",
      "capture_sha256": "e3d2d35cd959a78b8cd38fb51d380fd2a12f7c7690c64c224c17ef3e44cb423f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sporttia kaikille ry",
    "group_name": "Voimistelu alkeet, 5-6 v.",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Mikkolan koulu (toimipiste Lyyra)",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10865673",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 3 kurssia, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 1 kurssi || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0131",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-013",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10865673_9ef6c131ff0e.html",
      "capture_sha256": "9ef6c131ff0e2e7805e9d7bf9173ca7cd6898d7ed54508a9a8475ad73db736b8",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sporttia kaikille ry",
    "group_name": "Voimistelu alkeisjatko, 6-8 v.",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8-vuotiaille",
    "parent_child": "no",
    "venue_name": "Rekolan koulu",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:45",
    "end_time": "18:30",
    "season": "syksy 2026",
    "start_date": "2026-08-31",
    "end_date": "2026-12-07",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10864380",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 3 kurssia, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 1 kurssi || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0132",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-08-31",
    "price_period_end": "2026-12-07",
    "season_start_date": "2026-08-31",
    "season_end_date": "2026-12-07",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-014",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10864380_992e6746efcf.html",
      "capture_sha256": "992e6746efcf0be35e0edb3ec07639eaa3e7eb279fdc852167cd5cc15fd95383",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-08-31–2026-12-07, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sporttia kaikille ry",
    "group_name": "Voimistelu ja tanssi, 6-8 v.",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8-vuotiaille",
    "parent_child": "no",
    "venue_name": "Rajatorpan koulu",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "16:50",
    "end_time": "17:30",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10868290",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 3 kurssia, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 1 kurssi || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0133",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-015",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10868290_170dd78a09f1.html",
      "capture_sha256": "170dd78a09f1d57b2e899d5fbd56561381b082187a49c4c325bd92d45d590eb9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sporttia kaikille ry",
    "group_name": "Voimistelu alkeisjatko, 3-5 v.",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5-vuotiaille",
    "parent_child": "no",
    "venue_name": "Lehtikuusen koulu/Havu (pieni sali)",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10869579",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 3 kurssia, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 1 kurssi || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0134",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-016",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10869579_9c0f8efad49f.html",
      "capture_sha256": "9c0f8efad49f3055c9d607a6aff06c2fcd7ec5968c6f3977e5178940fa278b55",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sporttia kaikille ry",
    "group_name": "Voimistelu, 4-6 v.",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Veromäen koulu",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:30",
    "end_time": "18:20",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10863603",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 3 kurssia, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 1 kurssi || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0135",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-017",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10863603_ea36987dee75.html",
      "capture_sha256": "ea36987dee75c7426cd3c15224e5721d047bf455070fc95b6e0a0be7e7295988",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Sporttia kaikille ry",
    "group_name": "Voimistelutemput, 4-5 v.",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5-vuotiaille",
    "parent_child": "no",
    "venue_name": "Pähkinärinteen koulu",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "15:30",
    "end_time": "16:20",
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10865113",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 3 kurssia, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 1 kurssi || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0136",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-018",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10865113_56c088bd2c74.html",
      "capture_sha256": "56c088bd2c74ee3ba231e38a1c11fc801bc2cffb29f7330f6f16ec6106f894cb",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-05–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Sporttia kaikille ry",
    "group_name": "Voimistelutemput, 6-8 v.",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8-vuotiaille",
    "parent_child": "no",
    "venue_name": "Pähkinärinteen koulu",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "16:30",
    "end_time": "17:20",
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10865290",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 3 kurssia, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 1 kurssi || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0137",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-019",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10865290_4250caadd0e7.html",
      "capture_sha256": "4250caadd0e72c346eb607e6a4f077488da03b194c02846cd10027e2bad76551",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-05–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sporttia kaikille ry",
    "group_name": "Akrobatia ja parkour, 6-7 v.",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6-7-vuotiaille",
    "parent_child": "no",
    "venue_name": "Lehtikuusen koulu/Havu (pieni sali)",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:00",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10863035",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 3 kurssia, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 1 kurssi || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0138",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-020",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10863035_f1fc0b5cfb7d.html",
      "capture_sha256": "f1fc0b5cfb7df3aa773b5cf40912d02b1ded0126c476a47884f3cd5d25d2c214",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "jalkapallo",
    "provider": "Sporttia kaikille ry",
    "group_name": "Futisleikkikoulu, 4-6 v.",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Länsimäen koulu",
    "address": null,
    "district": null,
    "weekday": "tiistai",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "syksy 2026",
    "start_date": "2026-09-01",
    "end_date": "2026-12-08",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10903409",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 1 kurssi, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 3 kurssia || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0139",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-09-01",
    "price_period_end": "2026-12-08",
    "season_start_date": "2026-09-01",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-021",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10903409_ed5dda27c9db.html",
      "capture_sha256": "ed5dda27c9db21cd193e95f10f2195a6670997185e9474071c73a1ffb7a97b41",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-01–2026-12-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "jalkapallo",
    "provider": "Sporttia kaikille ry",
    "group_name": "Jalkapallo alkeet, 5-6 v.",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "5-6-vuotiaille",
    "parent_child": "no",
    "venue_name": "Kilterin koulu",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:10",
    "end_time": "11:50",
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10903190",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 3 kurssia, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 1 kurssi || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0140",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-022",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10903190_7646db2cb81f.html",
      "capture_sha256": "7646db2cb81f2bf5e24d36136a14f46a6242d487bff7eb1ef30995f459eee990",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-05–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "koripallo",
    "provider": "Sporttia kaikille ry",
    "group_name": "Koripallo, alkeet 5-7v.",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7-vuotiaille",
    "parent_child": "no",
    "venue_name": "Rajatorpan koulu",
    "address": null,
    "district": null,
    "weekday": "torstai",
    "start_time": "18:00",
    "end_time": "18:40",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10882767",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 1 kurssi, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 3 kurssia || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0141",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-09-03",
    "price_period_end": "2026-12-10",
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-023",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10882767_d3958bcf3c7b.html",
      "capture_sha256": "d3958bcf3c7bf83c6f854e00f2f4c1e34640ca0891db51e43eeedd19c6969456",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "koripallo",
    "provider": "Sporttia kaikille ry",
    "group_name": "Koripallo, alkeet 6-8v.",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8-vuotiaille",
    "parent_child": "no",
    "venue_name": "Lehtikuusen koulu/Havu (pieni sali)",
    "address": null,
    "district": null,
    "weekday": "perjantai",
    "start_time": "17:00",
    "end_time": "17:55",
    "season": "syksy 2026",
    "start_date": "2026-09-04",
    "end_date": "2026-12-11",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10887040",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 1 kurssi, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 3 kurssia || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0142",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-09-04",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-09-04",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-024",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10887040_4b1468ca02dc.html",
      "capture_sha256": "4b1468ca02dc5008abb5cd4621e2a03626c4cd22de74db142dd055f2fc6cf4c1",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-04–2026-12-11, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Sporttia kaikille ry",
    "group_name": "Perhetemppuilu, 3-5 v. (aikuisen kanssa) - Rekolanmäki",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5-vuotiaille (aikuisen kanssa)",
    "parent_child": "yes",
    "venue_name": "Rekolanmäen koulu",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:50",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": "2026-12-09",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10889450",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 3 kurssia, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 1 kurssi || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0143",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-09",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-09",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Perhetemppuilu: hinta on lapsen Sporttikortti, aikuisen maksusta ei mainintaa -> lapsi + aikuinen, price_covers verified=false. Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-025",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10889450_248507c06e81.html",
      "capture_sha256": "248507c06e8185a977e299c025fe40bbcabb5deb3e0eaf01255596fdc9305998",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-02–2026-12-09, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "temppujumppa",
    "provider": "Sporttia kaikille ry",
    "group_name": "Perhetemppuilu, 3-5 v. (aikuisen kanssa) - Hämeenkylä",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5-vuotiaille (aikuisen kanssa)",
    "parent_child": "yes",
    "venue_name": "Hämeenkylän liikuntahalli (lohko 1-3)",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "16:30",
    "end_time": "17:20",
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10896971",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 3 kurssia, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 1 kurssi || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0144",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-12",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-12",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Perhetemppuilu: hinta on lapsen Sporttikortti, aikuisen maksusta ei mainintaa -> lapsi + aikuinen, price_covers verified=false. Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-026",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10896971_a904f8398f1b.html",
      "capture_sha256": "a904f8398f1bb75e6a6a7e6e6da51a30dc9647994ca31f5876ddcfceee95f150",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-05–2026-12-12, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sporttia kaikille ry",
    "group_name": "Parkour, 6-8 v.",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8-vuotiaille",
    "parent_child": "no",
    "venue_name": "Hämeenkylän liikuntahalli (voimistelusali)",
    "address": null,
    "district": null,
    "weekday": "perjantai",
    "start_time": "17:40",
    "end_time": "18:35",
    "season": "syksy 2026",
    "start_date": "2026-09-04",
    "end_date": "2026-12-11",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (oikeuttaa osallistumaan 1 kurssille syyskaudella 2026)",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "full",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10862733",
    "source_quote": "Vaadittavat tuotteet Voit ostaa puuttuvat tuotteet ilmoittautumisen yhteydessä. Sporttikortti lapset, syksykortti 3 kurssia, alk. 35,00 € Sporttikortti lapset, syksykortti 2 kurssia, tai Sporttikortti lapset, syksykortti 1 kurssi || myClub-verkkokauppa (https://sporttiakaikillery.myclub.fi/flow/shop): SPORTTIKORTTI LAPSET, SYKSYKORTTI 1 KURSSI 35,00 € Sporttikortti oikeuttaa osallistumaan 1 kurssille. ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 2 KURSSIA 50,00 € ... SPORTTIKORTTI LAPSET, SYKSYKORTTI 3 KURSSIA 60,00 €",
    "activity_id": "van-2026-0145",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://sporttiakaikillery.myclub.fi/flow/shop",
    "billing_period": "term",
    "price_period_start": "2026-09-04",
    "price_period_end": "2026-12-11",
    "season_start_date": "2026-09-04",
    "season_end_date": "2026-12-11",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi (myClub-verkkokauppa)."
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "sama kortti kahdelle kurssille syyskaudella (25 €/kurssi)",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "sama kortti kolmelle kurssille syyskaudella (20 €/kurssi)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Ryhmään voi osallistua myös kertamaksulla (MobilePay paikan päällä), summaa ei julkaista. Osallistujat eivät ole järjestäjän vakuuttamia.",
    "unverified_fields": [
      "sessions_count"
    ],
    "verification_notes": "Vantaa-QA 24.9.2026 (Sporttia kaikille -selvitys): hinta ON julkisesti nähtävissä ilman kirjautumista - kurssisivun \"Vaadittavat tuotteet\" näyttää \"Sporttikortti lapset ... alk. 35,00 €\" ja seuran myClub-verkkokauppa (flow/shop) listaa lasten syksykortit 1 kurssi 35 €, 2 kurssia 50 €, 3 kurssia 60 €; seuran sivu: \"Maksu tapahtuu ostamalla Sporttikortti (ellei kurssikuvauksessa ole mainittu muuta)\". Kurssikuvauksessa ei muuta maksutapaa. price_eur = 1 kurssin kortti (35 €), 2/3 kurssin kortit price_options-alkioina. Aiempi blocked-päätös (hinta vasta ostovaiheessa) oli virheellinen: sama tieto oli jo keruutallenteessa. Kertamäärä vain kalenterista -> sessions_count=null (linjaus 1). Ryhmä järjestetään Vantaan kaupungin avustuksella.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_06.json",
      "staging_id": "batch_vantaa_2026-09-24_06-027",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/vantaa_qa_2026-09-24/sk_10862733_6905b300a159.html",
      "capture_sha256": "6905b300a15992672fb782f8e5ab713efa121527d2e7f2792a01e7d934237e4b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-04–2026-12-11, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "jääkiekko",
    "provider": "Etelä-Vantaan Urheilijat ry (EVU)",
    "group_name": "Leijona-kiekkokoulu, syyskausi 2026 (EVU)",
    "min_age": 4,
    "max_age": 8,
    "eligibility_text": "4-8 vuotiaat tytöt ja pojat",
    "parent_child": "no",
    "venue_name": "Myyrmäen jäähalli 1 / Rajatorpan koulu",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 149.0,
    "price_basis": "Leijona-kiekkokoulun syyskausi 2026, hinta 149€ (sis. jäsenmaksun).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://evu.myclub.fi/flow/courses/10770423",
    "source_quote": "Tule mukaan EVUn Leijona-kiekkokoulun syyskaudelle hintaan 149€ (sis. jäsenmaksun). Kiekkokoulu on tarkoitettu 4-8 vuotiaille tytöille ja pojille. Syyskausi alkaa tiistaina 11.8.2026 ja päättyy tiistaina 15.12.2026. Jäävuorot Myyrmäen jäähallissa 1: Tiistaisin klo 18-19. Salivuoro: Keskiviikkoisin klo 16.30-17.30 Rajatorpan koulun salissa. Sunnuntaisin klo 9.20-10.20 ja 10.20-10.50 vapaata luistelua/pelia vanhempien kanssa.",
    "activity_id": "van-2026-0146",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 149.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 149,
        "mandatory": true,
        "included": true,
        "recurrence": "per season",
        "applies_if": null,
        "note": "Sisältää EVUn jäsenmaksun."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ryhmällä on kaksi eri harjoituspaikkaa/-aikaa viikossa (jää: tiistai klo 18-19 Myyrmäen jäähalli 1; sali: keskiviikko klo 16.30-17.30 Rajatorpan koulu), lisäksi sunnuntaisin vapaaehtoinen vapaa luistelu/peli vanhempien kanssa klo 9.20-10.20 ja 10.20-10.50 - weekday/start_time/end_time jätetty tyhjäksi (sääntö 3), koko aikataulu tässä huomautuksessa. Kertamäärää ei laskettu kalenterista.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_07.json",
      "staging_id": "batch_vantaa_2026-09-24_07-001",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_07/evu_leijona_kiekkokoulu.html",
      "capture_sha256": "4ef621f2410f39327c895084804d8f9d20e4828068247ee59fa6848899f6ddbb",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "luistelu",
    "provider": "Etelä-Vantaan Urheilijat ry & Etelä-Vantaan Taitoluistelijat ry (Tähtiseurat)",
    "group_name": "Jäätävän hauska luistelukoulu, syyskausi 2026",
    "min_age": 2,
    "max_age": 9,
    "eligibility_text": "2-9 vuotiaat",
    "parent_child": "no",
    "venue_name": "Myyrmäen jäähalli 2",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-09-09",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 99.0,
    "price_basis": "Syyskauden 2026 luistelukoulumaksu 1x/vko 99€ (sis. molempien seurojen jäsenmaksun ja vakuutuksen).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.luistelukoulu-vantaa.fi/jaatavan-hauska-luistelukoulu/",
    "source_quote": "Jäätävän hauska luistelukoulu ( 2-9 vuotiaat ). Luistelukoulu ajat: Keskiviikkoisin klo 17:45 – 18:30, Sunnuntaisin klo 10:10 – 10:55. Syksyn luistelukoulu alkaa viikolla 37. Harjoitukset luistellaan Myyrmäessä jäähalli 2. Luistelukoulu hinnat: 1 x vko, 99€. 2 x vko, 149€. Hinnat sisältävät molempien seurojen jäsenyyden, vakuutukset ja ammattitaitoisen luistelu opetuksen. Syyskauden 2026 tärkeät päivämäärät: 9.9. Luistelukoulu alkaa. 30.9. & 4.10. Vanhempaininfot. 11.11. & 15.11. Kaverikerrat. 9.12. Joulunäytös.",
    "activity_id": "van-2026-0147",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 99.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "per season",
        "applies_if": "1x viikossa",
        "note": "Sisältää EVU:n ja EVT:n jäsenmaksut sekä vakuutuksen."
      }
    ],
    "price_options": [
      {
        "label": "2x viikossa",
        "amount_eur": 149.0,
        "applies_if": "osallistuu sekä keskiviikon että sunnuntain vuoroon",
        "includes": "Sama sisältö kuin 1x/vko, kaksinkertainen harjoitusmäärä."
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "EVU:n ja EVT:n (\"Tähtiseurat\") yhteinen luistelukoulu, oma sivusto luistelukoulu-vantaa.fi (yhteystieto luistelukoulu@evtluistelijat.fi -> EVT:n oma domain evtluistelijat.fi), ilmoittautuminen ohjaa evt.myclub.fi/flow/events/public -sivulle (hyväksytty järjestelmä). Kaksi harjoitusvuoroa viikossa eri hinnoin (1x tai 2x/vko) - kirjattu price_eur=perushinta (1x/vko), 2x/vko price_options-alkiona. Ryhmällä on kaksi eri viikonpäivää/aikaa riippuen paketista (ke 17:45-18:30 tai su 10:10-10:55) - weekday/start_time/end_time jätetty tyhjäksi (sääntö 3). 9.12. \"Joulunäytös\" on ei-harjoitustapahtuma, ei laskettu mukaan kertoihin. Kausi alkaa 9.9.2026 (viikko 37); päättymispäivää ei ilmoitettu eksplisiittisesti, jätetty null:ksi.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_07.json",
      "staging_id": "batch_vantaa_2026-09-24_07-002",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_07/evt_evu_luistelukoulu_vantaa_fi.html",
      "capture_sha256": "c198c8003843edb24f33b9501d59945b572b21847b307f8f34c394974b1b906f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "judo",
    "provider": "Tikkurilan Judokat ry",
    "group_name": "Muksujudo",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaat",
    "parent_child": "no",
    "venue_name": "Tikkurilan urheilutalo",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "kausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 60.0,
    "price_basis": "Muksujudon harjoittelumaksu 60€/kausi (syys- tai kevätkausi erikseen).",
    "membership_fee_eur": null,
    "other_required_fees": "Seuran jäsenmaksu pakollinen, kaksi maksuvaihtoehtoa (ks. fee_components), ei yksikäsitteistä yhden kauden summaa.",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.tikkurilanjudokat.fi/harjoittelu/muksu-ja-perhejudo/",
    "source_quote": "Muksujudo (4-6-vuotiaat) Tikkurilan urheilutalo Keskiviikkoisin klo 17:00-18:00. Muksujudo on perheen pienimmille judon aloittajille sopiva ryhmä. || Harrastaaksesi Tikkurilan Judokoissa sinun tulee olla seuran jäsen. ... Muksujudo: 60 euroa. || Jäsenmaksut: Enintään 7-vuotiaat jäsenet: 101 euroa koko kaudelle (erääntyy maksettavaksi syksyllä). Enintään 7-vuotiaat jäsenet: puolivuosijäsenmaksu 80 eur (erääntyy maksettavaksi keväällä ja syksyllä).",
    "activity_id": "van-2026-0148",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": null,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "verified",
    "price_source_url": "https://www.tikkurilanjudokat.fi/seura/maksut/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 60,
        "mandatory": true,
        "included": true,
        "recurrence": "per season",
        "applies_if": null,
        "note": "Muksujudon oma harjoittelumaksu, korvaa yleisen 7-17v harjoittelumaksun."
      },
      {
        "type": "membership",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "annual or per season",
        "applies_if": "enintään 7-vuotiaat: 101€ koko kaudelle TAI puolivuosijäsenmaksu 80€ (maksetaan kahdesti, kevät+syksy)",
        "note": "Seuran jäsenyys on pakollinen kaikille harrastajille (sis. Judoliiton jäsenmaksun, lisenssin ja Sporttiturva-vakuutuksen); kaksi maksuvaihtoehtoa, ei yksi kiinteä summa yhdelle kaudelle."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ratkaisee batch_vantaa_2026-09-24_03.json:n deferred-merkinnän Tikkurilan Judokat ry:lle (\"muksu- ja perhejudosta löytyi maininta mutta hintaa ei löytynyt\"). Jäsenmaksulle kaksi maksutapaa (koko kausi 101€ tai puolivuosi 2x80€) - ei yksikäsitteistä summaa, siksi fee_components.amount_eur=null ja has_unpriced_required_fee=true (malli 4). Päivitetty 2026-09-24 (linjaus (c), Ilpon 24.9.2026 päätös): hinnoittelematon mutta seuran vahvistama pakollinen jäsenmaksu ei enää yksinään review-syy, kun perushinta, ryhmä, ikä ja kausi ovat varmoja; rivi julkaistaan hinta osittain tiedossa -merkinnällä (price_completeness=incomplete, has_unpriced_required_fee=true). Vantaa-QA 24.9.2026: sama vuoro kuin batch_vantaa_2026-09-24_07-004 (ke 17-18, Tikkurilan urheilutalo), mutta lähteen mukaan eri ryhmä (Muksujudo lapsille / Perhejudo lapsi+vanhempi) - ei duplikaatti. Epävarma kenttä kirjattu muotoon fee_components.membership.amount_eur.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_07.json",
      "staging_id": "batch_vantaa_2026-09-24_07-003",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_07/tikkurilan_judokat_muksu_perhejudo.html",
      "capture_sha256": "e7b9cac8d345a8bf1a32819994c0a25b2ec9c04eb3cd1cb64fc7e0db658bd75f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "judo",
    "provider": "Tikkurilan Judokat ry",
    "group_name": "Perhejudo",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "n. 4-6-vuotiaat (lapsi + vanhempi)",
    "parent_child": "yes",
    "venue_name": "Tikkurilan urheilutalo",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "kausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 60.0,
    "price_basis": "Perhejudon harjoittelumaksu 60€/kausi lapselta; vanhempi maksaa vain jäsenmaksun.",
    "membership_fee_eur": null,
    "other_required_fees": "Sekä lapsen että vanhemman jäsenmaksut pakollisia, summat epätäydellisesti tiedossa.",
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.tikkurilanjudokat.fi/harjoittelu/muksu-ja-perhejudo/",
    "source_quote": "Perhejudo (n. 4-6-vuotiaat) Tikkurilan urheilutalo Keskiviikkoisin klo 17:00-18:00. Perhejudo sopii vanhemman ja lapsen yhteiseksi harrastukseksi, jossa vanhempi osallistuu treeneihin yhdessä lapsen kanssa. || Perhejudo: lapselta 60 euroa, vanhempi maksaa vain jäsenmaksun.",
    "activity_id": "van-2026-0149",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": null,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": true,
    "verification_status": "source_partial",
    "price_source_url": "https://www.tikkurilanjudokat.fi/seura/maksut/",
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "incomplete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 60,
        "mandatory": true,
        "included": true,
        "recurrence": "per season",
        "applies_if": null,
        "note": "Perhejudon harjoittelumaksu, lapselta."
      },
      {
        "type": "membership",
        "amount_eur": null,
        "mandatory": true,
        "included": false,
        "recurrence": "annual or per season",
        "applies_if": "sekä lapselta että vanhemmalta vaaditaan seuran jäsenyys; enintään 7v lapselle 101€/kausi tai 2x80€ puolivuosi, vanhemman jäsenmaksu erikseen (ei ilmoitettu tällä sivulla)",
        "note": "Vanhempi maksaa vain jäsenmaksun (harjoittelumaksua ei peritä vanhemmalta), mutta vanhemman jäsenmaksun summaa ei löytynyt tässä erässä."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "fee_components[1].amount_eur"
    ],
    "verification_notes": "Sama harjoitusaika ja -paikka kuin Muksujudo (ke 17-18, Tikkurilan urheilutalo), mutta eri ryhmä (lapsi+vanhempi yhdessä). Vanhemman jäsenmaksun summaa ei ilmoitettu maksut-sivulla tässä erässä. Päivitetty 2026-09-24 (linjaus (c), Ilpon 24.9.2026 päätös): hinnoittelematon mutta seuran vahvistama pakollinen jäsenmaksu ei enää yksinään review-syy, kun perushinta, ryhmä, ikä ja kausi ovat varmoja; rivi julkaistaan hinta osittain tiedossa -merkinnällä (price_completeness=incomplete, has_unpriced_required_fee=true). Vantaa-QA 24.9.2026: sama vuoro kuin batch_vantaa_2026-09-24_07-003 (ke 17-18, Tikkurilan urheilutalo), mutta lähteen mukaan eri ryhmä (Muksujudo lapsille / Perhejudo lapsi+vanhempi) - ei duplikaatti. Epävarma kenttä kirjattu muotoon fee_components.membership.amount_eur.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_07.json",
      "staging_id": "batch_vantaa_2026-09-24_07-004",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_07/tikkurilan_judokat_muksu_perhejudo.html",
      "capture_sha256": "e7b9cac8d345a8bf1a32819994c0a25b2ec9c04eb3cd1cb64fc7e0db658bd75f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "kauden päivät puuttuvat, kuukausia ei lasketa",
    "monthly_cost_complete": false,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "uinti",
    "provider": "Rantakirppu Oy",
    "group_name": "Vauvauinti (3kk-1v), Tikkurilan uimahalli, lauantai",
    "min_age": 0,
    "max_age": 1,
    "eligibility_text": "3kk-1v (uinnin voi aloittaa kun vauva painaa 5kg ja on 3kk)",
    "parent_child": "no",
    "venue_name": "Tikkurilan uimahalli",
    "address": "Läntinen Valkoisenlähteentie 50, 01300 Vantaa",
    "district": null,
    "weekday": "lauantai",
    "start_time": "08:30",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-15",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 22.0,
    "price_basis": "Kertahinta 22€/uintikerta, laskutusväli 1kk (vähintään).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.rantakirppu.fi/vauva-ja-perheuinti",
    "source_quote": "Lauantai / Tikkurila, SYYSKAUSI 15.8.-12.12.2026. Kello 8.30 vauvauinti (3kk-1v) / TILAA. Uinnin voi aloittaa, kun vauva painaa viisi kilogrammaa ja on kolmen kuukauden ikäinen. || Hinnasto: Yksi uintikerta on 22 euroa, sisarkorotus on 3,5 euroa. Minimisitoutumisaika ja samalla yksi laskutusväli on 1 kk.",
    "activity_id": "van-2026-0150",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 22.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "session",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 22,
        "mandatory": true,
        "included": true,
        "recurrence": "per session",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "sisarkorotus",
        "amount_eur": 3.5,
        "applies_if": "sisarus mukana samalla kerralla",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kertahintainen toistuva ryhmä (malli 6, vrt. naperouinti-esimerkki): billing_period=session, comparison_eligible=false. Saatavuus luettu sivun eksplisiittisestä merkinnästä \"TILAA\" (=paikkoja vapaana) kyseiselle vuorolle.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_07.json",
      "staging_id": "batch_vantaa_2026-09-24_07-006",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_07/rantakirppu_vauva_ja_perheuinti.html",
      "capture_sha256": "c0759b997971d80f35a65a7f11e1da41b6eb6863823848a65178e63d0de9118c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa session ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Viertola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Viertola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Rantakirppu Oy",
    "group_name": "Vauvauinti (3kk-1v), Hakunilan uimahalli, sunnuntai",
    "min_age": 0,
    "max_age": 1,
    "eligibility_text": "3kk-1v",
    "parent_child": "no",
    "venue_name": "Hakunilan uimahalli",
    "address": "Sotungintie 17, 01200 Vantaa",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "08:30",
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 22.0,
    "price_basis": "Kertahinta 22€/uintikerta, laskutusväli 1kk (vähintään).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.rantakirppu.fi/vauva-ja-perheuinti",
    "source_quote": "Sunnuntai / Hakunila, SYYSKAUSI 23.8.-13.12.2026. Kello 8.30 vauvauinti (3kk-1v) / TÄYNNÄ. || Hinnasto: Yksi uintikerta on 22 euroa, sisarkorotus on 3,5 euroa.",
    "activity_id": "van-2026-0151",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 22.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "session",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 22,
        "mandatory": true,
        "included": true,
        "recurrence": "per session",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "sisarkorotus",
        "amount_eur": 3.5,
        "applies_if": "sisarus mukana samalla kerralla",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sama hinnoittelu kuin Tikkurilan vuoro (malli 6). Saatavuus \"TÄYNNÄ\" luettu suoraan sivulta.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_07.json",
      "staging_id": "batch_vantaa_2026-09-24_07-007",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_07/rantakirppu_vauva_ja_perheuinti.html",
      "capture_sha256": "c0759b997971d80f35a65a7f11e1da41b6eb6863823848a65178e63d0de9118c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa session ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Hakunila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Hakunila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Rantakirppu Oy",
    "group_name": "Perheuinti (1-6v), Tikkurilan uimahalli, lauantai",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6-vuotiaat (mukaan saa tulla myös vauvaikäiset sisarukset)",
    "parent_child": "no",
    "venue_name": "Tikkurilan uimahalli",
    "address": "Läntinen Valkoisenlähteentie 50, 01300 Vantaa",
    "district": null,
    "weekday": "lauantai",
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-15",
    "end_date": "2026-12-12",
    "sessions_count": null,
    "price_eur": 22.0,
    "price_basis": "Kertahinta 22€/uintikerta, laskutusväli 1kk (vähintään).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.rantakirppu.fi/vauva-ja-perheuinti",
    "source_quote": "Lauantai / Tikkurila, SYYSKAUSI 15.8.-12.12.2026. Kello 9.00 perheuinti (1-6-vuotiaat, mukaan saa tulla myös vauvaikäiset sisarukset) / TÄYNNÄ. Kello 9.30 perheuinti (1-6-vuotiaat, mukaan saa tulla myös vauvaikäiset sisarukset) / TÄYNNÄ. || Hinnasto: Yksi uintikerta on 22 euroa, sisarkorotus on 3,5 euroa.",
    "activity_id": "van-2026-0152",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 22.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "session",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 22,
        "mandatory": true,
        "included": true,
        "recurrence": "per session",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "sisarkorotus",
        "amount_eur": 3.5,
        "applies_if": "sisarus mukana samalla kerralla",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kaksi peräkkäistä vuoroa (klo 9.00 ja 9.30) samalla lauantailla, molemmat merkitty TÄYNNÄ - kirjattu yhtenä rivinä (sääntö 3, useita aikoja samassa ryhmässä), start_time/end_time jätetty tyhjäksi, molemmat kellonajat tässä huomautuksessa.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_07.json",
      "staging_id": "batch_vantaa_2026-09-24_07-008",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_07/rantakirppu_vauva_ja_perheuinti.html",
      "capture_sha256": "c0759b997971d80f35a65a7f11e1da41b6eb6863823848a65178e63d0de9118c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa session ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Viertola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Viertola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Rantakirppu Oy",
    "group_name": "Perheuinti (1-6v), Hakunilan uimahalli, sunnuntai",
    "min_age": 1,
    "max_age": 6,
    "eligibility_text": "1-6-vuotiaat (mukaan saa tulla myös vauvaikäiset sisarukset)",
    "parent_child": "no",
    "venue_name": "Hakunilan uimahalli",
    "address": "Sotungintie 17, 01200 Vantaa",
    "district": null,
    "weekday": "sunnuntai",
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-23",
    "end_date": "2026-12-13",
    "sessions_count": null,
    "price_eur": 22.0,
    "price_basis": "Kertahinta 22€/uintikerta, laskutusväli 1kk (vähintään).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.rantakirppu.fi/vauva-ja-perheuinti",
    "source_quote": "Sunnuntai / Hakunila, SYYSKAUSI 23.8.-13.12.2026. Kello 9.00 perheuinti (1-6-vuotiaat, mukaan saa tulla myös vauvaikäiset sisarukset) / TÄYNNÄ. Kello 9.30 perheuinti (1-6-vuotiaat, mukaan saa tulla myös vauvaikäiset sisarukset) / TÄYNNÄ.",
    "activity_id": "van-2026-0153",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 22.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "session",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "full",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 22,
        "mandatory": true,
        "included": true,
        "recurrence": "per session",
        "applies_if": null,
        "note": null
      }
    ],
    "price_options": [
      {
        "label": "sisarkorotus",
        "amount_eur": 3.5,
        "applies_if": "sisarus mukana samalla kerralla",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kaksi peräkkäistä vuoroa (klo 9.00 ja 9.30) samalla sunnuntailla, molemmat TÄYNNÄ - yksi rivi (sääntö 3).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_07.json",
      "staging_id": "batch_vantaa_2026-09-24_07-009",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_07/rantakirppu_vauva_ja_perheuinti.html",
      "capture_sha256": "c0759b997971d80f35a65a7f11e1da41b6eb6863823848a65178e63d0de9118c",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa session ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Hakunila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Hakunila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "jalkapallo",
    "provider": "Pakkalan Palloseura ry (PPS)",
    "group_name": "Tsempin Perhefutis (Perhefutiskerho)",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille pikkufutareille",
    "parent_child": "yes",
    "venue_name": "Kartanonkosken urheilupuisto",
    "address": "Kartanonkosken urheilupuisto, Vantaa",
    "district": "Kartanonkoski",
    "weekday": "maanantai",
    "start_time": "18:10",
    "end_time": "18:55",
    "season": "syyskausi 2026",
    "start_date": "2026-08-10",
    "end_date": "2026-10-19",
    "sessions_count": 11,
    "price_eur": 95.0,
    "price_basis": "Syyskausi (elo-lokakuu) 95 e, sisältää 11 kerhokertaa.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Liikuntaan sopivat vaatteet, lenkkarit/nappikset ja jalkapallo (koko 3).",
    "trial_info": "Ensimmäiselle kerholle voi tulla kokeilemaan ilman sitoumusta.",
    "enrollment_status": "open",
    "source_url": "https://pakkalanpalloseura.fi/toiminta/perhefutis/",
    "source_quote": "pallokerhoon, joka on suunniteltu 3-4-vuotiaille pikkufutareille. ... Kartanonkosken urheilupuisto – maanantaisin klo 18.10–18.55. ... Syyskausi (elo-lokakuu) 95€ (sisältää 11 kerhokertaa) ... Kerhopäivät syyskaudella 2026 10.8., 17.8., 24.8., 31.8., 7.9., 14.9., 21.9., 28.9., 5.10., 12.10. ja 19.10. ... Ilmoittautuminen on nyt auki",
    "activity_id": "van-2026-0154",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 95.0,
    "price_per_session_eur": 8.64,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://pakkalanpalloseura.fi/toiminta/perhefutis/",
    "billing_period": "course",
    "price_period_start": "2026-08-10",
    "price_period_end": "2026-10-19",
    "season_start_date": "2026-08-10",
    "season_end_date": "2026-10-19",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://pakkalanpalloseura.fi/toiminta/perhefutis/",
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 95,
        "mandatory": true,
        "included": true,
        "recurrence": "per course",
        "applies_if": null,
        "note": "Syyskausi (elo-lokakuu), 11 kerhokertaa."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": false
    },
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ratkaisee data/vantaa/staging/batch_vantaa_2026-09-24_07.json:n deferred-merkinnän ('sivu ei ilmoita minkäänlaista ikärajaa'): pakkalanpalloseura.fi/toiminta/perhefutis/ -sivu ilmoittaa eksplisiittisesti ikäraja '3-4-vuotiaille pikkufutareille' (aiemmin tarkistettu vain myClub- ja harrastukset.vantaa.fi-lahteista, joissa ikää ei mainita). Ääkköskorjaus 24.9.2026: aiempi source_excerpt/source_quote oli kirjoitettu ilman ääkkösiä (myös paikallinen tekstitallenne); ote haettu uudelleen tuoreesta lähteestä ja palautettu sananmukaiseksi, uusi raakatallenne evidence.capture-kentässä.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_08.json",
      "staging_id": "batch_vantaa_2026-09-24_08-001",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_08/pps_tsempin_perhefutis_9775887a02f3.html",
      "capture_sha256": "9775887a02f3e100060b7ed5a6c91211670ba757a0ccda4e1050f47023b79728",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 40.73,
    "monthly_cost_basis": "95.0 € / course jaettuna 2.33 kuukaudelle (2026-08-10–2026-10-19, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kartanonkoski",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Ringette Walapais",
    "group_name": "Luistelukoulu 4-10v, Tikkurilan harjoitusjäähalli",
    "min_age": 4,
    "max_age": 10,
    "eligibility_text": "4-10-vuotiaille lapsille",
    "parent_child": "no",
    "venue_name": "Tikkurilan harjoitusjäähalli",
    "address": "Läntinen Valkoisenlähteentie 52-54, 01300 Vantaa",
    "district": "Tikkurila",
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "kausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 30.0,
    "price_basis": "Kolmen maksuttoman kokeilukerran jälkeen kuukausimaksu 30 e/kk.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Luistimet ja kypärä; lapsen pitää kyetä seisomaan luistimilla ilman tukea TAI huoltaja tulee mukaan jäälle auttamaan.",
    "trial_info": "Kolme kokeilukertaa maksutta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.walapais.fi/luistelukoulut",
    "source_quote": "Luistelukoulu 4-10-vuotiaille lapsille Tikkurilassa: Keskiviikkoisin 2.9.2026 alkaen klo 18.00-19.00,Tikkurilan harjoitusjäähallissa ... Tämän jälkeen luistelukoulun kuukausimaksu on 30€, jonka lisäksi maksetaan: ... Kausimaksu syyskausi 40€ (syys-joulukuu) Kausimaksu kevätkausi 40€ (tammi-huhtikuu)",
    "activity_id": "van-2026-0155",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 110.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.walapais.fi/luistelukoulut",
    "billing_period": "month",
    "price_period_start": "2026-09-02",
    "price_period_end": "2027-04-30",
    "season_start_date": "2026-09-02",
    "season_end_date": "2027-04-30",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 30,
        "mandatory": true,
        "included": true,
        "recurrence": "per month",
        "applies_if": null,
        "note": "Luistelukoulun kuukausimaksu."
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "per term (syyskausi)",
        "applies_if": null,
        "note": "Kausimaksu syyskausi (Ice Card -ringettekoululisenssi ym.)."
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "per term (kevätkausi)",
        "applies_if": null,
        "note": "Kausimaksu kevätkausi."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Luistelukoulukausi kestää syyskuun alusta huhtikuun loppuun; kuukausimaksun lisäksi kausimaksu 40 e syyskaudelta ja 40 e kevätkaudelta (Ice Card -ringettekoululisenssi, harjoituspaita panttia vastaan, kevään turnaus). Ääkköskorjaus 24.9.2026: aiempi source_excerpt/source_quote oli kirjoitettu ilman ääkkösiä (myös paikallinen tekstitallenne); ote haettu uudelleen tuoreesta lähteestä ja palautettu sananmukaiseksi, uusi raakatallenne evidence.capture-kentässä.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_08.json",
      "staging_id": "batch_vantaa_2026-09-24_08-002",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_08/walapais_luistelukoulut_32a887ccefd9.html",
      "capture_sha256": "32a887ccefd93fd749519671408cd729ddb90057751ad9c3e944a2bd3c250322",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 30.0,
    "monthly_cost_basis": "30.0 €/kk",
    "monthly_cost_complete": false,
    "district_derived": "Tikkurila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "luistelu",
    "provider": "Ringette Walapais",
    "group_name": "Luistelukoulu 4-10v, Myyrmäen 2. jäähalli",
    "min_age": 4,
    "max_age": 10,
    "eligibility_text": "4-10-vuotiaille lapsille",
    "parent_child": "no",
    "venue_name": "Myyrmäen 2. jäähalli",
    "address": "Raappavuorentie 10, 01600 Vantaa",
    "district": "Myyrmäki",
    "weekday": "sunnuntai",
    "start_time": "16:00",
    "end_time": "17:00",
    "season": "kausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 30.0,
    "price_basis": "Kolmen maksuttoman kokeilukerran jälkeen kuukausimaksu 30 e/kk.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Luistimet ja kypärä; lapsen pitää kyetä seisomaan luistimilla ilman tukea TAI huoltaja tulee mukaan jäälle auttamaan.",
    "trial_info": "Kolme kokeilukertaa maksutta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.walapais.fi/luistelukoulut",
    "source_quote": "Luistelukoulu 4-10 vuotiaille lapsille Myyrmäessä: Sunnuntaisin 13.9.2026 alkaen klo 16.00-17.00, Myyrmäen 2. jäähallissa Raappavuorentie 10, 01600 Vantaa ... Tämän jälkeen luistelukoulun kuukausimaksu on 30€, jonka lisäksi maksetaan: ... Kausimaksu syyskausi 40€ (syys-joulukuu) Kausimaksu kevätkausi 40€ (tammi-huhtikuu)",
    "activity_id": "van-2026-0156",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 110.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.walapais.fi/luistelukoulut",
    "billing_period": "month",
    "price_period_start": "2026-09-13",
    "price_period_end": "2027-04-30",
    "season_start_date": "2026-09-13",
    "season_end_date": "2027-04-30",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 30,
        "mandatory": true,
        "included": true,
        "recurrence": "per month",
        "applies_if": null,
        "note": "Luistelukoulun kuukausimaksu."
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "per term (syyskausi)",
        "applies_if": null,
        "note": "Kausimaksu syyskausi (Ice Card -ringettekoululisenssi ym.)."
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "per term (kevätkausi)",
        "applies_if": null,
        "note": "Kausimaksu kevätkausi."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Luistelukoulukausi kestää syyskuun alusta huhtikuun loppuun; kuukausimaksun lisäksi kausimaksu 40 e syyskaudelta ja 40 e kevätkaudelta (Ice Card -ringettekoululisenssi, harjoituspaita panttia vastaan, kevään turnaus). Ääkköskorjaus 24.9.2026: aiempi source_excerpt/source_quote oli kirjoitettu ilman ääkkösiä (myös paikallinen tekstitallenne); ote haettu uudelleen tuoreesta lähteestä ja palautettu sananmukaiseksi, uusi raakatallenne evidence.capture-kentässä.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_08.json",
      "staging_id": "batch_vantaa_2026-09-24_08-003",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_08/walapais_luistelukoulut_32a887ccefd9.html",
      "capture_sha256": "32a887ccefd93fd749519671408cd729ddb90057751ad9c3e944a2bd3c250322",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 30.0,
    "monthly_cost_basis": "30.0 €/kk",
    "monthly_cost_complete": false,
    "district_derived": "Myyrmäki",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "uinti",
    "provider": "Aqua Trio Oy",
    "group_name": "Vauva- ja perheuinti",
    "min_age": 0,
    "max_age": null,
    "eligibility_text": "Vauvauinti alkaen muutaman kuukauden ikäisistä; ei yläikärajaa ilmoitettu",
    "parent_child": "yes",
    "venue_name": "Foibekartano",
    "address": "Sairaalakatu 7, 01400 Vantaa (Peijaksen sairaalaa vastapäätä)",
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "kausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 28.5,
    "price_basis": "28,50 e/uinti (sis. alv 13,5%), laskutus kuukausittain viikonpäivien määrän mukaan.",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.aquatrio.fi/hinnasto",
    "source_quote": "Vauva- ja perheuinti Uinnin hinta on 28,50€/uinti (sis alv 13,5%). ... Vauvauinnin hinta sisältää kaksi aikuista ja yhden lapsen. Sisarkorotus samassa uintiryhmässä uivalta on 7,30 €/sisar/uinti (sis alv 13,5%). ... Laskutus tapahtuu kuukausittain",
    "activity_id": "van-2026-0157",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 28.5,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.aquatrio.fi/hinnasto",
    "billing_period": "session",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 28.5,
        "mandatory": true,
        "included": true,
        "recurrence": "per session",
        "applies_if": null,
        "note": "Vauvauinnin hinta, sisältää kaksi aikuista ja yhden lapsen."
      }
    ],
    "price_options": [],
    "price_covers": {
      "children_count": 1,
      "adults_count": 2,
      "verified": true
    },
    "optional_cost_notes": "Sisarkorotus samassa uintiryhmässä uivalta 7,30 e/sisar/uinti.",
    "unverified_fields": [],
    "verification_notes": "Toistuva viikoittainen ryhmä (kertahintainen, laskutus kuukausittain viikonpäivien lukumäärän mukaan) - ei yksittäinen drop-in-kerta. Tarkkaa viikonpäivää/kellonaikaa ei julkaista tekstimuotoisena tallin sivuilla (varauskalenteri vaatii tunnukset); sijainti Foibekartano, Vantaa. Ratkaisee data/vantaa/staging/batch_vantaa_2026-09-24_07.json:n deferred-merkinnän (aiemmin 'aquatrio.fi ei vastannut'). Ääkköskorjaus 24.9.2026: aiempi source_excerpt/source_quote oli kirjoitettu ilman ääkkösiä (myös paikallinen tekstitallenne); ote haettu uudelleen tuoreesta lähteestä ja palautettu sananmukaiseksi, uusi raakatallenne evidence.capture-kentässä.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_08.json",
      "staging_id": "batch_vantaa_2026-09-24_08-004",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_08/aquatrio_hinnasto_b352d509ca1f.html",
      "capture_sha256": "b352d509ca1f283c3e1b09c4aac7294f821bac34105a3f4638e2ed374dfda82f",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa session ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Asola",
    "district_basis": "geokoodattu osoite -> neighborhood 'Asola' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "uinti",
    "provider": "Uinti Vantaa ry (Vanders)",
    "group_name": "Uimakoulu 2 (4-6 v), Ti klo 19.15-20.15, Martinlaakson uimahalli (20.10.-8.12.2026)",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 v",
    "parent_child": "unknown",
    "venue_name": "Martinlaakson uimahalli",
    "address": "Martinlaaksonkuja 2, 01620 Vantaa, Finland",
    "district": null,
    "weekday": "tiistai",
    "start_time": "19:15",
    "end_time": "20:15",
    "season": "syksy 2026",
    "start_date": "2026-10-20",
    "end_date": "2026-12-08",
    "sessions_count": 8,
    "price_eur": 70.0,
    "price_basis": "Lasten arkikurssit ti/to 8krt",
    "membership_fee_eur": 5.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://vanders.myclub.fi/flow/courses/11567010",
    "source_quote": "Uimakoulu 2 (4-6 v), Ti klo 19.15-20.15, Martinlaakson uimahalli (20.10.-8.12.2026) | 20.10.2026 19:15 - 8.12.2026 | Lasten arkikurssit ti/to 8krt 70,00 €",
    "activity_id": "van-2026-0158",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 75.0,
    "price_per_session_eur": 9.38,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-10-20",
    "season_end_date": "2026-12-08",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "exact",
    "sessions_count_source": "https://vanders.myclub.fi/flow/courses/11567010",
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 70,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 5,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Vaadittavat tuotteet': 2026 Kurssijäsenyys"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Vanders-tunnistetut korjaukset samalla perusteella kuin batch_vantaa_2026-09-24_01: '2026 Kurssijäsenyys' (5 €) on myClubin 'Vaadittavat tuotteet' -rivillä required_product-tyyppisenä, luokiteltu käsin membership-maksuksi; billing_period='course' päätelty hintarivin ja kertamäärän yhdistelmästä (8 kertaa aikataulussa, sama malli kuin muilla Vandersin arkikursseilla). Saatavuus korjattu unknown/false: sivulla 'Ilmoittautuminen alkaa 6.10.2026 20:00' (tuleva pvm) - 'Paikkoja jäljellä 13' ei tarkoita avointa ilmoittautumista ennen tuota päivää (sama parserirajoitus kuin data/vantaa/coverage/vantaa_qa_2026-09-24.md kohta 1).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_09.json",
      "staging_id": "batch_vantaa_2026-09-24_09-001",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_09/myclub_vanders_11567010_7503305de7f0.html",
      "capture_sha256": "7503305de7f01846466eabd6c45b35b329d172488a753401e40ddf980b351291",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.03,
    "monthly_cost_basis": "70.0 € / course jaettuna 1.64 kuukaudelle (2026-10-20–2026-12-08, season_start_date) + membership 5 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Martinlaakso",
    "district_basis": "geokoodattu osoite -> neighborhood 'Martinlaakso' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "voimistelu",
    "provider": "Sporttia kaikille ry",
    "group_name": "Voimistelu alkeisjatko, 6-8 v.",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8 v.",
    "parent_child": "no",
    "venue_name": "Lehtikuusen koulu/Havu (pieni sali)",
    "address": "Hiirakkotie 18, 01200 Vantaa, Suomi",
    "district": null,
    "weekday": "torstai",
    "start_time": "18:45",
    "end_time": "19:30",
    "season": "syksy 2026",
    "start_date": "2026-09-03",
    "end_date": "2026-12-10",
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "myClub 'Vaadittavat tuotteet': Sporttikortti lapset, syksykortti 1 kurssi alk. 35,00 €",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sporttiakaikillery.myclub.fi/flow/courses/10869677",
    "source_quote": "Voimistelu alkeisjatko, 6-8 v. | 3.9.2026 18:45 - 10.12.2026",
    "activity_id": "van-2026-0159",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 35.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-03",
    "season_end_date": "2026-12-10",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Sporttikortti lapset, syksykortti 1 kurssi 35,00 € (myClub 'Vaadittavat tuotteet')"
      }
    ],
    "price_options": [
      {
        "label": "Sporttikortti lapset, syksykortti 2 kurssia",
        "amount_eur": 50.0,
        "applies_if": "jos osallistuu kahteen Sporttia kaikille ry:n syksykurssiin",
        "includes": null
      },
      {
        "label": "Sporttikortti lapset, syksykortti 3 kurssia",
        "amount_eur": 60.0,
        "applies_if": "jos osallistuu kolmeen Sporttia kaikille ry:n syksykurssiin",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": "Lisäksi kertamaksu MobilePaylla mahdollinen (summa ei julkaistu); seuran oma vakuutus ei sisälly, ei mainintaa pakollisesta vakuutuksesta.",
    "unverified_fields": [],
    "verification_notes": "Sama korjaus kuin Vantaa-QA 24.9.2026 kohta 5 (17 muuta Sporttia kaikille -riviä): hinta on julkisesti nähtävissä myClubin 'Vaadittavat tuotteet' -kohdassa ilman kirjautumista ('Sporttikortti lapset, syksykortti 3 kurssia, ... 2 kurssia, tai ... 1 kurssi alk. 35,00 €'), vaikka Hintatiedot-lista on tyhjä (myclub.py:n hinnanpoiminta ei kata required_products-yhdistelmähintaa). price_eur=35 € (halvin/perusvaihtoehto, 1 kurssi), 2/3 kurssin kortit price_options-alkioina, billing_period=term (syyskausi).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_09.json",
      "staging_id": "batch_vantaa_2026-09-24_09-002",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_09/myclub_sporttiakaikillery_10869677_697988512f9b.html",
      "capture_sha256": "697988512f9b55a1b6b1ebc2f85b5109fcc18dd1c89b2761da8fe6f575abb54e",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "monthly_cost_eur": 10.76,
    "monthly_cost_basis": "35.0 € / term jaettuna 3.25 kuukaudelle (2026-09-03–2026-12-10, season_start_date)",
    "monthly_cost_complete": true,
    "district_derived": "Hakunila",
    "district_basis": "geokoodattu osoite -> neighborhood 'Hakunila' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "jääkiekko",
    "provider": "Kiekko-Vantaa ry",
    "group_name": "Luistelukoulu syyskausi -26",
    "min_age": 3,
    "max_age": 6,
    "eligibility_text": "3-6 vuotiaille (2021-2023 syntyneet)",
    "parent_child": "unknown",
    "venue_name": "Tikkurilan Areena",
    "address": null,
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "09:30",
    "end_time": "10:30",
    "season": "syksy 2026",
    "start_date": "2026-09-13",
    "end_date": "2026-12-20",
    "sessions_count": null,
    "price_eur": 99.0,
    "price_basis": "Syyskauden osallistumismaksu 99€ (kuvausteksti)",
    "membership_fee_eur": 80.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://kiekkovantaa.myclub.fi/flow/courses/10678238",
    "source_quote": "Luistelukoulu on tarkoitettu jääkiekon alkeista kiinnostuneille 3-6 vuotiaille (2021-2023 syntyneet). Harjoitukset ovat Tikkurilan Areenalla sunnuntaisin klo 9:30-10:30. Syyskausi alkaa 13.9. ja päättyy 20.12. Syyskauden osallistumismaksu 99€ + seuran jäsenmaksu 80€",
    "activity_id": "van-2026-0160",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 179.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-13",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kuvausteksti: 'Syyskauden osallistumismaksu 99€'"
      },
      {
        "type": "membership",
        "amount_eur": 80,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Kuvausteksti: '+ seuran jäsenmaksu 80€' (Jäsenmaksu 26-27, myClub Hintatiedot)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "myClubin kurssisivulla ei ole Hintatiedot-listaa eikä aikataulun tapahtumalistaa; kaikki tiedot (ikäraja, harjoituspäivä/-aika, kausi, hinta, jäsenmaksu) luettu kuvauksen sananmukaisesta richtext-osiosta (ei arvattu). myClubin range-kenttä ('29.4.2026 13:00 - 20.12.2026') on virheellinen (sivun latauspäivä, ei kauden alku) - tunnettu myclub.py-parserirajoitus (ks. Vanders MiniGaattoriralli, batch_vantaa_2026-09-24_01); todellinen kausi luettu tekstistä 'Syyskausi alkaa 13.9. ja päättyy 20.12.'. Saatavuus unknown/false: sivulla ei ole 'Paikkoja jäljellä'/'Täynnä' tms. ryhmäkohtaista saatavuusnäyttöä, vain 'Ilmoittaudu'-painike.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_09.json",
      "staging_id": "batch_vantaa_2026-09-24_09-003",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_09/myclub_kiekkovantaa_10678238_ec3af7b4b04d.html",
      "capture_sha256": "ec3af7b4b04ddf019e75c19f093c204542a2d92625a4db3833ef01edbc8ecbdf",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 37.1,
    "monthly_cost_basis": "99.0 € / term jaettuna 3.25 kuukaudelle (2026-09-13–2026-12-20, season_start_date) + membership 80 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "jääkiekko",
    "provider": "Kiekko-Vantaa ry",
    "group_name": "Kiekkokoulu syyskausi -26",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7 vuotiaille (2019-2021 syntyneet), osattava jo luistella",
    "parent_child": "unknown",
    "venue_name": "Tikkurilan Areena",
    "address": null,
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "10:30",
    "end_time": "11:30",
    "season": "syksy 2026",
    "start_date": "2026-09-13",
    "end_date": "2026-12-20",
    "sessions_count": null,
    "price_eur": 99.0,
    "price_basis": "Syyskauden osallistumismaksu 99€ (kuvausteksti)",
    "membership_fee_eur": 80.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://kiekkovantaa.myclub.fi/flow/courses/10679169",
    "source_quote": "Kiekkokoulu on tarkoitettu 5-7 vuotiaille (2019-2021 syntyneet), jotka osaavat jo luistella. Harjoitukset ovat Tikkurilan Areenalla sunnuntaisin klo 10:30-11:30. Syyskausi alkaa 13.9. ja päättyy 20.12. Syyskauden osallistumismaksu 99€ + seuran jäsenmaksu 80€",
    "activity_id": "van-2026-0161",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 179.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-13",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kuvausteksti: 'Syyskauden osallistumismaksu 99€'"
      },
      {
        "type": "membership",
        "amount_eur": 80,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Kuvausteksti: '+ seuran jäsenmaksu 80€' (Jäsenmaksu 26-27, myClub Hintatiedot)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "myClubin kurssisivulla ei ole Hintatiedot-listaa eikä aikataulun tapahtumalistaa; kaikki tiedot (ikäraja, harjoituspäivä/-aika, kausi, hinta, jäsenmaksu) luettu kuvauksen sananmukaisesta richtext-osiosta (ei arvattu). myClubin range-kenttä ('29.4.2026 13:00 - 20.12.2026') on virheellinen (sivun latauspäivä, ei kauden alku) - tunnettu myclub.py-parserirajoitus (ks. Vanders MiniGaattoriralli, batch_vantaa_2026-09-24_01); todellinen kausi luettu tekstistä 'Syyskausi alkaa 13.9. ja päättyy 20.12.'. Saatavuus unknown/false: sivulla ei ole 'Paikkoja jäljellä'/'Täynnä' tms. ryhmäkohtaista saatavuusnäyttöä, vain 'Ilmoittaudu'-painike.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_09.json",
      "staging_id": "batch_vantaa_2026-09-24_09-004",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_09/myclub_kiekkovantaa_10679169_276ab341c4be.html",
      "capture_sha256": "276ab341c4be828c699c290db85dd7cfb5a34ca99c4d66ca1eb8e89fe392eeac",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 37.1,
    "monthly_cost_basis": "99.0 € / term jaettuna 3.25 kuukaudelle (2026-09-13–2026-12-20, season_start_date) + membership 80 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "jääkiekko",
    "provider": "Kiekko-Vantaa ry",
    "group_name": "Tyttökiekkokoulu syyskausi -26",
    "min_age": 3,
    "max_age": 8,
    "eligibility_text": "3-8-vuotiaille tytöille",
    "parent_child": "unknown",
    "venue_name": "Tikkurilan Areena",
    "address": null,
    "district": null,
    "weekday": "sunnuntai",
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-09-13",
    "end_date": "2026-12-20",
    "sessions_count": null,
    "price_eur": 99.0,
    "price_basis": "Syyskauden osallistumismaksu 99€ (kuvausteksti)",
    "membership_fee_eur": 80.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://kiekkovantaa.myclub.fi/flow/courses/10679400",
    "source_quote": "Tyttökiekkokoulu on tarkoitettu jääkiekon alkeista kiinnostuneille 3-8 vuotiaille tytöille. Harjoitukset ovat Tikkurilan Areenalla sunnuntaisin: 2021-2023 syntyneet klo 9:30 (yhdessä luistelukoulun kanssa), 2019-2021 syntyneet klo 10:30 (yhdessä kiekkokoulun kanssa). Syyskausi alkaa 13.9. ja päättyy 20.12. Syyskauden osallistumismaksu 99€ + seuran jäsenmaksu 80€",
    "activity_id": "van-2026-0162",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 179.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": "2026-09-13",
    "season_end_date": "2026-12-20",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 99,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kuvausteksti: 'Syyskauden osallistumismaksu 99€'"
      },
      {
        "type": "membership",
        "amount_eur": 80,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Kuvausteksti: '+ seuran jäsenmaksu 80€' (Jäsenmaksu 26-27, myClub Hintatiedot)"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "myClubin kurssisivulla ei ole Hintatiedot-listaa eikä aikataulun tapahtumalistaa; kaikki tiedot (ikäraja, harjoituspäivä/-aika, kausi, hinta, jäsenmaksu) luettu kuvauksen sananmukaisesta richtext-osiosta (ei arvattu). myClubin range-kenttä ('29.4.2026 13:00 - 20.12.2026') on virheellinen (sivun latauspäivä, ei kauden alku) - tunnettu myclub.py-parserirajoitus (ks. Vanders MiniGaattoriralli, batch_vantaa_2026-09-24_01); todellinen kausi luettu tekstistä 'Syyskausi alkaa 13.9. ja päättyy 20.12.'. Saatavuus unknown/false: sivulla ei ole 'Paikkoja jäljellä'/'Täynnä' tms. ryhmäkohtaista saatavuusnäyttöä, vain 'Ilmoittaudu'-painike.",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_09.json",
      "staging_id": "batch_vantaa_2026-09-24_09-005",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_09/myclub_kiekkovantaa_10679400_5a80e59bca35.html",
      "capture_sha256": "5a80e59bca3512ae47c130054e8104e93d8055974fba2bc7f5ea2c5945fef3f0",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 37.1,
    "monthly_cost_basis": "99.0 € / term jaettuna 3.25 kuukaudelle (2026-09-13–2026-12-20, season_start_date) + membership 80 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Olymp ry",
    "group_name": "DIONE 2021-2022 - RV esivalmennus",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Lumo Monitoimikeskus",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-10",
    "end_date": "2027-05-24",
    "sessions_count": null,
    "price_eur": 460.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu (seuran hinnasto, ei myClubissa)",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sportclubolymp.myclub.fi/flow/courses/10650572",
    "source_quote": "DIONE 2021-2022 - RV esivalmennus | 4.8.2026 16:30 - 24.5.2027 | Jäsenmaksu 2026-2027 40,00 €",
    "activity_id": "van-2026-0163",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 500.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-01",
    "price_period_end": "2026-12-31",
    "season_start_date": "2026-08-04",
    "season_end_date": "2027-05-24",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 460,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnasto (https://www.sportclubolymp.fi/?page_id=710): 180 min/vko - 460 € / syykausi 2026 tai 115 € 1/4 erä ja 575 € / kevätkausi 2027"
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Hintatiedot': Jäsenmaksu 2026-2027 40,00 €"
      }
    ],
    "price_options": [
      {
        "label": "Kevätkausi 2027",
        "amount_eur": 575.0,
        "applies_if": "kevätkauden 2027 harjoitusmaksu, eri jakso kuin syksyn hinta",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sport Club Olympin myClub-kurssisivulla Hintatiedot-listassa näkyy vain jäsenmaksu, ei varsinaista harjoitusmaksua; osallistumishinta luettu seuran omalta hinnastosivulta (https://www.sportclubolymp.fi/?page_id=710, tarkistettu 24.9.2026): '180 min/vko - 460 € / syykausi 2026 tai 115 € 1/4 erä ja 575 € / kevätkausi 2027'. Kausi jakautuu syys- ja kevätkauden erillisiin hintoihin (sääntö: ei muunneta kausisummaksi, price_options kattaa toisen kauden hinnan). Ryhmällä on useita harjoituspäiviä/-aikoja viikossa (esim. ma+la), joten weekday/start_time/end_time jätetty null:ksi (aikataulu myClubin aikataulussa, ei toistettu tässä huomautuksessa laajuuden vuoksi).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_09.json",
      "staging_id": "batch_vantaa_2026-09-24_09-006",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_09/myclub_sportclubolymp_10650572_530197c44154.html",
      "capture_sha256": "530197c441548bc2f0a6e2ad1362f74ca415f1077173abef5f21dc7fb94a7288",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 94.84,
    "monthly_cost_basis": "460.0 € / term jaettuna 5.03 kuukaudelle (2026-08-01–2026-12-31, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Olymp ry",
    "group_name": "ELENI 2022-2023 - RV esivalmennus",
    "min_age": 3,
    "max_age": 4,
    "eligibility_text": "3-4-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Lumo Monitoimikeskus, kamppailu",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-16",
    "end_date": "2027-05-16",
    "sessions_count": null,
    "price_eur": 240.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu (seuran hinnasto, ei myClubissa)",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sportclubolymp.myclub.fi/flow/courses/10641452",
    "source_quote": "ELENI 2022-2023 - RV esivalmennus | 4.8.2026 17:20 - 22.5.2027 | Jäsenmaksu 2026-2027 40,00 €",
    "activity_id": "van-2026-0164",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 280.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-01",
    "price_period_end": "2026-12-31",
    "season_start_date": "2026-08-04",
    "season_end_date": "2027-05-22",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 240,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnasto (https://www.sportclubolymp.fi/?page_id=710): 60 min/vko - 240 € /syyskausi 2026 tai 60 € 1/4 erä ja 300 € / kevätkausi 2027"
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Hintatiedot': Jäsenmaksu 2026-2027 40,00 €"
      }
    ],
    "price_options": [
      {
        "label": "Kevätkausi 2027",
        "amount_eur": 300.0,
        "applies_if": "kevätkauden 2027 harjoitusmaksu, eri jakso kuin syksyn hinta",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sport Club Olympin myClub-kurssisivulla Hintatiedot-listassa näkyy vain jäsenmaksu, ei varsinaista harjoitusmaksua; osallistumishinta luettu seuran omalta hinnastosivulta (https://www.sportclubolymp.fi/?page_id=710, tarkistettu 24.9.2026): '60 min/vko - 240 € /syyskausi 2026 tai 60 € 1/4 erä ja 300 € / kevätkausi 2027'. Kausi jakautuu syys- ja kevätkauden erillisiin hintoihin (sääntö: ei muunneta kausisummaksi, price_options kattaa toisen kauden hinnan). Ryhmällä on useita harjoituspäiviä/-aikoja viikossa (esim. ma+la), joten weekday/start_time/end_time jätetty null:ksi (aikataulu myClubin aikataulussa, ei toistettu tässä huomautuksessa laajuuden vuoksi).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_09.json",
      "staging_id": "batch_vantaa_2026-09-24_09-007",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_09/myclub_sportclubolymp_10641452_82fb4f3bec1f.html",
      "capture_sha256": "82fb4f3bec1fb5a0db8d329ba83068f4513a925018261de4d3069f3c23fe884d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 51.08,
    "monthly_cost_basis": "240.0 € / term jaettuna 5.03 kuukaudelle (2026-08-01–2026-12-31, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Olymp ry",
    "group_name": "ADELE 2019-2021 - RV Minivalmennus",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "5-7-vuotiaille",
    "parent_child": "unknown",
    "venue_name": "Lumo Monitoimikeskus",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-12",
    "end_date": "2027-05-30",
    "sessions_count": null,
    "price_eur": 1650.0,
    "price_basis": "Kausimaksu 2026-2027 (seuran hinnasto, ei myClubissa)",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sportclubolymp.myclub.fi/flow/courses/10650914",
    "source_quote": "ADELE 2019-2021 - RV Minivalmennus | 5.8.2026 17:00 - 30.5.2027 | Jäsenmaksu 2026-2027 40,00 €",
    "activity_id": "van-2026-0165",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 1690.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "full_season",
    "price_period_start": "2026-08-05",
    "price_period_end": "2027-05-30",
    "season_start_date": "2026-08-05",
    "season_end_date": "2027-05-30",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 1650,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnasto (https://www.sportclubolymp.fi/?page_id=710): 3 krt/vko (6 t/vko) - 150 € 1/11 erä tai 1650 € / kausi 2026-2027"
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Hintatiedot': Jäsenmaksu 2026-2027 40,00 €"
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sport Club Olympin myClub-kurssisivulla Hintatiedot-listassa näkyy vain jäsenmaksu, ei varsinaista harjoitusmaksua; osallistumishinta luettu seuran omalta hinnastosivulta (https://www.sportclubolymp.fi/?page_id=710, tarkistettu 24.9.2026): '3 krt/vko (6 t/vko) - 150 € 1/11 erä tai 1650 € / kausi 2026-2027'. Kausi jakautuu syys- ja kevätkauden erillisiin hintoihin (sääntö: ei muunneta kausisummaksi, price_options kattaa toisen kauden hinnan). Ryhmällä on useita harjoituspäiviä/-aikoja viikossa (esim. ma+la), joten weekday/start_time/end_time jätetty null:ksi (aikataulu myClubin aikataulussa, ei toistettu tässä huomautuksessa laajuuden vuoksi).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_09.json",
      "staging_id": "batch_vantaa_2026-09-24_09-008",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_09/myclub_sportclubolymp_10650914_93eed85177f7.html",
      "capture_sha256": "93eed85177f7b3a73cf4d99a31be218788c8fd8eb0a9166a9ec11cf54a709790",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 171.3,
    "monthly_cost_basis": "1650.0 € / full_season jaettuna 9.82 kuukaudelle (2026-08-05–2027-05-30, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Olymp ry",
    "group_name": "VIONE 2018-2020 (6-8v) - RV Harraste",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8v",
    "parent_child": "unknown",
    "venue_name": "Rekolanmäen koulu",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-11",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 280.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu (seuran hinnasto, ei myClubissa)",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sportclubolymp.myclub.fi/flow/courses/10639682",
    "source_quote": "VIONE 2018-2020 (6-8v) - RV Harraste | 11.8.2026 16:30 - 22.5.2027 | Jäsenmaksu 2026-2027 / harrasteliikunta 20,00 €",
    "activity_id": "van-2026-0166",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 300.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-01",
    "price_period_end": "2026-12-31",
    "season_start_date": "2026-08-11",
    "season_end_date": "2027-05-22",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 280,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnasto (https://www.sportclubolymp.fi/?page_id=710): Syyskausi: 280 € (laskutus 4 erässä, 70 € / kk); Kevätkausi: 350 € (laskutus 5 erässä, 70 € / kk)"
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Hintatiedot': Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [
      {
        "label": "Kevätkausi 2027",
        "amount_eur": 350.0,
        "applies_if": "kevätkauden 2027 harjoitusmaksu, eri jakso kuin syksyn hinta",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sport Club Olympin myClub-kurssisivulla Hintatiedot-listassa näkyy vain jäsenmaksu, ei varsinaista harjoitusmaksua; osallistumishinta luettu seuran omalta hinnastosivulta (https://www.sportclubolymp.fi/?page_id=710, tarkistettu 24.9.2026): 'Syyskausi: 280 € (laskutus 4 erässä, 70 € / kk); Kevätkausi: 350 € (laskutus 5 erässä, 70 € / kk)'. Kausi jakautuu syys- ja kevätkauden erillisiin hintoihin (sääntö: ei muunneta kausisummaksi, price_options kattaa toisen kauden hinnan). Ryhmällä on useita harjoituspäiviä/-aikoja viikossa (esim. ma+la), joten weekday/start_time/end_time jätetty null:ksi (aikataulu myClubin aikataulussa, ei toistettu tässä huomautuksessa laajuuden vuoksi).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_09.json",
      "staging_id": "batch_vantaa_2026-09-24_09-009",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_09/myclub_sportclubolymp_10639682_ec25a76ab44e.html",
      "capture_sha256": "ec25a76ab44eac18a9d0e8700f559c4ffbf5cd91fc232c28002564a651b67c04",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 57.37,
    "monthly_cost_basis": "280.0 € / term jaettuna 5.03 kuukaudelle (2026-08-01–2026-12-31, price_period_start) + membership 20 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Olymp ry",
    "group_name": "CORELLA 2018-2020 (6-8v) - RV Harraste",
    "min_age": 6,
    "max_age": 8,
    "eligibility_text": "6-8v",
    "parent_child": "unknown",
    "venue_name": "Jokiniemen koulu / Valkoinen talo",
    "address": null,
    "district": null,
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "syksy 2026",
    "start_date": "2026-08-12",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 280.0,
    "price_basis": "Syyskauden 2026 harjoitusmaksu (seuran hinnasto, ei myClubissa)",
    "membership_fee_eur": 20.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://sportclubolymp.myclub.fi/flow/courses/10639678",
    "source_quote": "CORELLA 2018-2020 (6-8v) - RV Harraste | 12.8.2026 16:30 - 22.5.2027 | Jäsenmaksu 2026-2027 / harrasteliikunta 20,00 €",
    "activity_id": "van-2026-0167",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 300.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-08-01",
    "price_period_end": "2026-12-31",
    "season_start_date": "2026-08-12",
    "season_end_date": "2027-05-22",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 280,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Seuran hinnasto (https://www.sportclubolymp.fi/?page_id=710): Syyskausi: 280 € (laskutus 4 erässä, 70 € / kk); Kevätkausi: 350 € (laskutus 5 erässä, 70 € / kk)"
      },
      {
        "type": "membership",
        "amount_eur": 20,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "myClub 'Hintatiedot': Jäsenmaksu 2026-2027 20,00 €"
      }
    ],
    "price_options": [
      {
        "label": "Kevätkausi 2027",
        "amount_eur": 350.0,
        "applies_if": "kevätkauden 2027 harjoitusmaksu, eri jakso kuin syksyn hinta",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Sport Club Olympin myClub-kurssisivulla Hintatiedot-listassa näkyy vain jäsenmaksu, ei varsinaista harjoitusmaksua; osallistumishinta luettu seuran omalta hinnastosivulta (https://www.sportclubolymp.fi/?page_id=710, tarkistettu 24.9.2026): 'Syyskausi: 280 € (laskutus 4 erässä, 70 € / kk); Kevätkausi: 350 € (laskutus 5 erässä, 70 € / kk)'. Kausi jakautuu syys- ja kevätkauden erillisiin hintoihin (sääntö: ei muunneta kausisummaksi, price_options kattaa toisen kauden hinnan). Ryhmällä on useita harjoituspäiviä/-aikoja viikossa (esim. ma+la), joten weekday/start_time/end_time jätetty null:ksi (aikataulu myClubin aikataulussa, ei toistettu tässä huomautuksessa laajuuden vuoksi).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_09.json",
      "staging_id": "batch_vantaa_2026-09-24_09-010",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_09/myclub_sportclubolymp_10639678_492c9d93fab5.html",
      "capture_sha256": "492c9d93fab51cdc71eca18e738a196b845d2338a31333fed3f7755a48bf69af",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 57.37,
    "monthly_cost_basis": "280.0 € / term jaettuna 5.03 kuukaudelle (2026-08-01–2026-12-31, price_period_start) + membership 20 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Lastentanssi 2022-2023 synt. Rekola",
    "min_age": null,
    "max_age": null,
    "eligibility_text": null,
    "parent_child": "no",
    "venue_name": "Rekolan koulu",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:00",
    "end_time": "17:45",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 120.0,
    "price_basis": "Harrastemaksu syksy 2026 45min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10794443",
    "source_quote": "Lastentanssi 2022-2023 synt. Rekola | 2.9.2026 17:00 - 13.12.2026 | Harrastemaksu syksy 2026 45min alk. 120,00 €",
    "activity_id": "van-2026-0168",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 120,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Sama korjaus kuin Vantaa-QA 24.9.2026 (SC Vantaan 20 aiempaa riviä, batch_vantaa_2026-09-24_02/06): SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto). price_completeness complete, known_min_total_eur = kurssihinta + 40 €. Sääntö 8: myClub-maksusivun hinta ('alk.'-merkinnällä) voittaa mahdollisen ristiriitaisen hinnastosivun; ikä ei näy ryhmän nimessä eksplisiittisesti muodossa 'v.', joten birth_year_min/max on ainoa varma ikäkenttä (min_age/max_age jätetty null:ksi, ei laskettu ikää syntymävuodesta ilman eksplisiittistä viitepäivää, samoin kuin aiemmissa SC Vantaa -riveissä).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_09.json",
      "staging_id": "batch_vantaa_2026-09-24_09-011",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_09/myclub_scvantaa_10794443_5218c0f35791.html",
      "capture_sha256": "5218c0f35791ce8c2c77be83041bc2f89216ecacdac2690d57fd7af77278412b",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 38.79,
    "monthly_cost_basis": "120.0 € / term jaettuna 3.38 kuukaudelle (2026-09-02–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Lastentanssi 2020-2021 synt. Rekola",
    "min_age": null,
    "max_age": null,
    "eligibility_text": null,
    "parent_child": "no",
    "venue_name": "Rekolan koulu",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:45",
    "end_time": "18:45",
    "season": "syksy 2026",
    "start_date": "2026-09-02",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 132.0,
    "price_basis": "Harrastemaksu syksy 2026 60min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10794643",
    "source_quote": "Lastentanssi 2020-2021 synt. Rekola | 2.9.2026 17:45 - 13.12.2026 | Harrastemaksu syksy 2026 60min alk. 132,00 €",
    "activity_id": "van-2026-0169",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 172.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-02",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-02",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 132,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Sama korjaus kuin Vantaa-QA 24.9.2026 (SC Vantaan 20 aiempaa riviä, batch_vantaa_2026-09-24_02/06): SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto). price_completeness complete, known_min_total_eur = kurssihinta + 40 €. Sääntö 8: myClub-maksusivun hinta ('alk.'-merkinnällä) voittaa mahdollisen ristiriitaisen hinnastosivun; ikä ei näy ryhmän nimessä eksplisiittisesti muodossa 'v.', joten birth_year_min/max on ainoa varma ikäkenttä (min_age/max_age jätetty null:ksi, ei laskettu ikää syntymävuodesta ilman eksplisiittistä viitepäivää, samoin kuin aiemmissa SC Vantaa -riveissä).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_09.json",
      "staging_id": "batch_vantaa_2026-09-24_09-012",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_09/myclub_scvantaa_10794643_73687e809f83.html",
      "capture_sha256": "73687e809f8369f17b37ccd8e25d9c681e5d7849ad10348744eb9ee2434ec526",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 42.34,
    "monthly_cost_basis": "132.0 € / term jaettuna 3.38 kuukaudelle (2026-09-02–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Satubaletti 2022-2023 synt. Rekola",
    "min_age": null,
    "max_age": null,
    "eligibility_text": null,
    "parent_child": "no",
    "venue_name": "Rekolan koulu",
    "address": null,
    "district": null,
    "weekday": "lauantai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": "2026-09-05",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 120.0,
    "price_basis": "Harrastemaksu syksy 2026 45min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "waitlist",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10794761",
    "source_quote": "Satubaletti 2022-2023 synt. Rekola | 5.9.2026 10:00 - 13.12.2026 | Harrastemaksu syksy 2026 45min alk. 120,00 €",
    "activity_id": "van-2026-0170",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-05",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-05",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "waitlist",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 120,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Sama korjaus kuin Vantaa-QA 24.9.2026 (SC Vantaan 20 aiempaa riviä, batch_vantaa_2026-09-24_02/06): SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto). price_completeness complete, known_min_total_eur = kurssihinta + 40 €. Sääntö 8: myClub-maksusivun hinta ('alk.'-merkinnällä) voittaa mahdollisen ristiriitaisen hinnastosivun; ikä ei näy ryhmän nimessä eksplisiittisesti muodossa 'v.', joten birth_year_min/max on ainoa varma ikäkenttä (min_age/max_age jätetty null:ksi, ei laskettu ikää syntymävuodesta ilman eksplisiittistä viitepäivää, samoin kuin aiemmissa SC Vantaa -riveissä).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_09.json",
      "staging_id": "batch_vantaa_2026-09-24_09-013",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_09/myclub_scvantaa_10794761_9ed00313f022.html",
      "capture_sha256": "9ed00313f0222a815bdb02bbba530fc9372de77197adf7b93228d633a9104097",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 39.86,
    "monthly_cost_basis": "120.0 € / term jaettuna 3.29 kuukaudelle (2026-09-05–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Lastentanssi 2022-2023 synt. Simonkallio",
    "min_age": null,
    "max_age": null,
    "eligibility_text": null,
    "parent_child": "no",
    "venue_name": "Simonkallion koulu",
    "address": null,
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "10:00",
    "end_time": "10:45",
    "season": "syksy 2026",
    "start_date": "2026-09-06",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 120.0,
    "price_basis": "Harrastemaksu syksy 2026 45min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10794702",
    "source_quote": "Lastentanssi 2022-2023 synt. Simonkallio | 6.9.2026 10:00 - 17.12.2026 | Harrastemaksu syksy 2026 45min alk. 120,00 €",
    "activity_id": "van-2026-0171",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 160.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-06",
    "price_period_end": "2026-12-17",
    "season_start_date": "2026-09-06",
    "season_end_date": "2026-12-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 120,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Sama korjaus kuin Vantaa-QA 24.9.2026 (SC Vantaan 20 aiempaa riviä, batch_vantaa_2026-09-24_02/06): SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto). price_completeness complete, known_min_total_eur = kurssihinta + 40 €. Sääntö 8: myClub-maksusivun hinta ('alk.'-merkinnällä) voittaa mahdollisen ristiriitaisen hinnastosivun; ikä ei näy ryhmän nimessä eksplisiittisesti muodossa 'v.', joten birth_year_min/max on ainoa varma ikäkenttä (min_age/max_age jätetty null:ksi, ei laskettu ikää syntymävuodesta ilman eksplisiittistä viitepäivää, samoin kuin aiemmissa SC Vantaa -riveissä).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_09.json",
      "staging_id": "batch_vantaa_2026-09-24_09-014",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_09/myclub_scvantaa_10794702_3af5d3397578.html",
      "capture_sha256": "3af5d339757805e444f77afedb889d7941b6a2431cf0961807e30f5fe759bc90",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 38.79,
    "monthly_cost_basis": "120.0 € / term jaettuna 3.38 kuukaudelle (2026-09-06–2026-12-17, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "voimistelu",
    "provider": "Sport Club Vantaa ry",
    "group_name": "Lastentanssi 2020-2021 synt. Simonkallio",
    "min_age": null,
    "max_age": null,
    "eligibility_text": null,
    "parent_child": "no",
    "venue_name": "Simonkallion koulu",
    "address": null,
    "district": null,
    "weekday": "sunnuntai",
    "start_time": "11:00",
    "end_time": "12:00",
    "season": "syksy 2026",
    "start_date": "2026-09-06",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 132.0,
    "price_basis": "Harrastemaksu syksy 2026 60min",
    "membership_fee_eur": 40.0,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "open",
    "source_url": "https://scvantaa.myclub.fi/flow/courses/10794656",
    "source_quote": "Lastentanssi 2020-2021 synt. Simonkallio | 6.9.2026 11:00 - 13.12.2026 | Harrastemaksu syksy 2026 60min alk. 132,00 €",
    "activity_id": "van-2026-0172",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 172.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "term",
    "price_period_start": "2026-09-06",
    "price_period_end": "2026-12-13",
    "season_start_date": "2026-09-06",
    "season_end_date": "2026-12-13",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 132,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": null
      },
      {
        "type": "membership",
        "amount_eur": 40,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto)."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": "myClub 'Valinnaiset maksut': Jumppaturva-vakuutus 5,00 €",
    "unverified_fields": [],
    "verification_notes": "Sama korjaus kuin Vantaa-QA 24.9.2026 (SC Vantaan 20 aiempaa riviä, batch_vantaa_2026-09-24_02/06): SC Vantaan jäsenmaksu 40 €/jäsenkausi (1.7.-30.6.), laskutetaan kaikilta harrastajilta (kurssikuvaus ja scvantaa.fi/harrasteryhmat/hinnasto). price_completeness complete, known_min_total_eur = kurssihinta + 40 €. Sääntö 8: myClub-maksusivun hinta ('alk.'-merkinnällä) voittaa mahdollisen ristiriitaisen hinnastosivun; ikä ei näy ryhmän nimessä eksplisiittisesti muodossa 'v.', joten birth_year_min/max on ainoa varma ikäkenttä (min_age/max_age jätetty null:ksi, ei laskettu ikää syntymävuodesta ilman eksplisiittistä viitepäivää, samoin kuin aiemmissa SC Vantaa -riveissä).",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_09.json",
      "staging_id": "batch_vantaa_2026-09-24_09-015",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_09/myclub_scvantaa_10794656_76cd6ddacf00.html",
      "capture_sha256": "76cd6ddacf002a6d37a26206ded4a01ed14f397e09e69876312594dbe9dcd7c9",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 43.92,
    "monthly_cost_basis": "132.0 € / term jaettuna 3.25 kuukaudelle (2026-09-06–2026-12-13, price_period_start) + membership 40 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Vantaan Salamat ry",
    "group_name": "Yleisurheilun harrasteryhmä 4-5-vuotiaat, Ma Ryhmä 1",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5-vuotiaat (ikäryhmähaarukat viitteellisiä)",
    "parent_child": "unknown",
    "venue_name": "Pähkinärinteen koulu",
    "address": "Mantelikuja 4, 01710 Vantaa",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "talvikausi 2026-2027 (5.10.2026-26.4.2027)",
    "start_date": "2026-10-05",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "4-5 v.: 35 €/kk, harjoitukset 1 krt/vko (talvikausi).",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.suomisport.fi/events/69d63785-c3fe-41ac-9342-4a53c7fbf239",
    "source_quote": "4–5 –vuotiaat: 4-5-vuotiaat, Ma klo 17:00-18:00, Ryhmä 1 4-5-vuotiaat, Ke klo 17:30-18:30, Ryhmä 2 6-7 -vuotiaat: 6-7-vuotiaat, Ma klo 18:00-19:00, Ryhmä 1 ... HINNASTO: 4-5 v.: 35 €/kk, harjoitukset 1 krt/vko 4-5 v.: 50 €/kk, harjoitukset 2 krt/vko 6-7 v.: 35 €/kk, harjoitukset 1 krt/vko 6-7 v.: 50 €/kk, harjoitukset 2 krt/vko ... jäsenmaksu vuodelle 2026: – 35 €/lapsi",
    "activity_id": "van-2026-0173",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 70.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": "2026-10-05",
    "price_period_end": "2027-04-26",
    "season_start_date": "2026-10-05",
    "season_end_date": "2027-04-26",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "monthly",
        "applies_if": null,
        "note": "1 krt/vko, 35 €/kk."
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Seuran jäsenmaksu 2026, lapsi alle 18 v."
      }
    ],
    "price_options": [
      {
        "label": "2 krt/vko",
        "amount_eur": 50.0,
        "applies_if": "2 harjoitusta viikossa 1x:n sijaan",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: review -> candidate_clear: ainoa review-syy oli suomisport.fi-lähde; suomisport.fi on nyt hyväksytty ilmoittautumisjärjestelmä (scripts/validate_staging.py OFFICIAL_SYSTEM_DOMAINS).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_10.json",
      "staging_id": "batch_vantaa_2026-09-24_10-001",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 37.92,
    "monthly_cost_basis": "35.0 €/kk + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Hämeenkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Hämeenkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Vantaan Salamat ry",
    "group_name": "Yleisurheilun harrasteryhmä 4-5-vuotiaat, Ke Ryhmä 2",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "4-5-vuotiaat (ikäryhmähaarukat viitteellisiä)",
    "parent_child": "unknown",
    "venue_name": "Sanomalan toimipiste",
    "address": "Sanomatie 1, 01770 Vantaa",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:30",
    "end_time": "18:30",
    "season": "talvikausi 2026-2027 (7.10.2026-28.4.2027)",
    "start_date": "2026-10-07",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "4-5 v.: 35 €/kk, harjoitukset 1 krt/vko (talvikausi).",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.suomisport.fi/events/bd07527b-613b-4e5a-95f7-e908b77d86a1",
    "source_quote": "4–5 –vuotiaat: 4-5-vuotiaat, Ma klo 17:00-18:00, Ryhmä 1 4-5-vuotiaat, Ke klo 17:30-18:30, Ryhmä 2 6-7 -vuotiaat: 6-7-vuotiaat, Ma klo 18:00-19:00, Ryhmä 1 ... HINNASTO: 4-5 v.: 35 €/kk, harjoitukset 1 krt/vko 4-5 v.: 50 €/kk, harjoitukset 2 krt/vko 6-7 v.: 35 €/kk, harjoitukset 1 krt/vko 6-7 v.: 50 €/kk, harjoitukset 2 krt/vko ... jäsenmaksu vuodelle 2026: – 35 €/lapsi",
    "activity_id": "van-2026-0174",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 70.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": "2026-10-07",
    "price_period_end": "2027-04-28",
    "season_start_date": "2026-10-07",
    "season_end_date": "2027-04-28",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "monthly",
        "applies_if": null,
        "note": "1 krt/vko, 35 €/kk."
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Seuran jäsenmaksu 2026, lapsi alle 18 v."
      }
    ],
    "price_options": [
      {
        "label": "2 krt/vko",
        "amount_eur": 50.0,
        "applies_if": "2 harjoitusta viikossa 1x:n sijaan",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Vantaa-QA 24.9.2026: review -> candidate_clear: ainoa review-syy oli suomisport.fi-lähde; suomisport.fi on nyt hyväksytty ilmoittautumisjärjestelmä (scripts/validate_staging.py OFFICIAL_SYSTEM_DOMAINS).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_10.json",
      "staging_id": "batch_vantaa_2026-09-24_10-002",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 37.92,
    "monthly_cost_basis": "35.0 €/kk + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Martinlaakso",
    "district_basis": "geokoodattu osoite -> neighborhood 'Martinlaakso' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Vantaan Salamat ry",
    "group_name": "Yleisurheilun harrasteryhmä 6-7-vuotiaat, Ma Ryhmä 1",
    "min_age": 6,
    "max_age": 7,
    "eligibility_text": "6-7-vuotiaat (ikäryhmähaarukat viitteellisiä)",
    "parent_child": "no",
    "venue_name": "Pähkinärinteen koulu",
    "address": "Mantelikuja 4, 01710 Vantaa",
    "district": null,
    "weekday": "maanantai",
    "start_time": "18:00",
    "end_time": "19:00",
    "season": "talvikausi 2026-2027 (5.10.2026-26.4.2027)",
    "start_date": "2026-10-05",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 35.0,
    "price_basis": "6-7 v.: 35 €/kk, harjoitukset 1 krt/vko (talvikausi); sivu mainitsee myös \"4-7-vuotiaat voivat valita useamman treenin viikolle\".",
    "membership_fee_eur": 35,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.suomisport.fi/events/c145f682-d178-4a74-bed2-d7a44a473654",
    "source_quote": "4–5 –vuotiaat: 4-5-vuotiaat, Ma klo 17:00-18:00, Ryhmä 1 4-5-vuotiaat, Ke klo 17:30-18:30, Ryhmä 2 6-7 -vuotiaat: 6-7-vuotiaat, Ma klo 18:00-19:00, Ryhmä 1 ... HINNASTO: 4-5 v.: 35 €/kk, harjoitukset 1 krt/vko 4-5 v.: 50 €/kk, harjoitukset 2 krt/vko 6-7 v.: 35 €/kk, harjoitukset 1 krt/vko 6-7 v.: 50 €/kk, harjoitukset 2 krt/vko ... jäsenmaksu vuodelle 2026: – 35 €/lapsi",
    "activity_id": "van-2026-0175",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 70.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "month",
    "price_period_start": "2026-10-05",
    "price_period_end": "2027-04-26",
    "season_start_date": "2026-10-05",
    "season_end_date": "2027-04-26",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "open",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": true,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 35,
        "mandatory": true,
        "included": true,
        "recurrence": "monthly",
        "applies_if": null,
        "note": "1 krt/vko, 35 €/kk."
      },
      {
        "type": "membership",
        "amount_eur": 35,
        "mandatory": true,
        "included": false,
        "recurrence": "annual",
        "applies_if": null,
        "note": "Seuran jäsenmaksu 2026, lapsi alle 18 v."
      }
    ],
    "price_options": [
      {
        "label": "2 krt/vko",
        "amount_eur": 50.0,
        "applies_if": "2 harjoitusta viikossa 1x:n sijaan",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Ikäraja 6-7 v - sopii vain 6-vuotiaille (alaraja tasan 6). Vantaa-QA 24.9.2026: review -> candidate_clear: ainoa review-syy oli suomisport.fi-lähde; suomisport.fi on nyt hyväksytty ilmoittautumisjärjestelmä (scripts/validate_staging.py OFFICIAL_SYSTEM_DOMAINS).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_10.json",
      "staging_id": "batch_vantaa_2026-09-24_10-003",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 37.92,
    "monthly_cost_basis": "35.0 €/kk + membership 35 €/v ÷ 12",
    "monthly_cost_complete": true,
    "district_derived": "Hämeenkylä",
    "district_basis": "geokoodattu osoite -> neighborhood 'Hämeenkylä' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "yleisurheilu",
    "provider": "Vantaan Salamat ry",
    "group_name": "Sporttiseikkailijat (4-6-vuotiaat), yhteistyössä Sporttia kaikille ry",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6-vuotiaat, ensisijaisesti lapsille joilla ei ole muita harrastuksia",
    "parent_child": "unknown",
    "venue_name": "Myyrmäen yleisurheilukenttä",
    "address": null,
    "district": null,
    "weekday": "maanantai",
    "start_time": "16:15",
    "end_time": "17:00",
    "season": "kesä 2026 (11.5.-8.6.2026)",
    "start_date": "2026-05-11",
    "end_date": "2026-06-08",
    "sessions_count": null,
    "price_eur": 0.0,
    "price_basis": "Maksuton (TALO-hanke, EU-osarahoitteinen).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://vantaansalamat.fi/sporttiakaikillery-yleisurheilukoulu/",
    "source_quote": "Sporttiseikkailijat (4-6-vuotiaat) Aloitus: maanantaina 11.5.2026 Aika: klo 16.15-17.00 Paikka: Myyrmäen yleisurheilukenttä Harjoitukset: 11.5., 18.5., 25.5., 1.6. & 8.6.2026 ... Ryhmään osallistuminen on maksutonta.",
    "activity_id": "van-2026-0176",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 0.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": null,
    "billing_period": "course",
    "price_period_start": "2026-05-11",
    "price_period_end": "2026-06-08",
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [],
    "verification_notes": "Kurssi on jo päättynyt (8.6.2026); sääntö 3b: alkanutta/päättynyttä kurssia ei hylätä, julkaistaan hintahistoriaa varten. Lähde ei kerro eksplisiittisesti ilmoittautumisen sulkeutumisesta -> availability_status=unknown (ei closed).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_10.json",
      "staging_id": "batch_vantaa_2026-09-24_10-004",
      "decision": "candidate_clear",
      "capture_path": null,
      "capture_sha256": null,
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 0.0,
    "monthly_cost_basis": "0.0 € / course jaettuna 0.95 kuukaudelle (2026-05-11–2026-06-08, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "salibandy",
    "provider": "SB Vantaa ry",
    "group_name": "SB-koulu 4-5v, Rajatorppa",
    "min_age": 4,
    "max_age": 5,
    "eligibility_text": "SB-koulu 4-5 v.",
    "parent_child": "no",
    "venue_name": "Rajatorpan kalliosuoja",
    "address": "Rajatorpantie 27, 01650 Vantaa",
    "district": null,
    "weekday": "maanantai",
    "start_time": "17:00",
    "end_time": "18:00",
    "season": "toimintakausi 2026-2027",
    "start_date": "2026-08-31",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 270.0,
    "price_basis": "Koko toimintakauden 2026-2027 (31.8.2026-16.5.2027) maksu 270€ kerralla maksettuna. Vaihtoehtoisesti kahdessa erässä: syyskausi 145€ + kevät 160€ (yhteensä 305€, kalliimpi kuin kertamaksu). Käytetty halvinta vaihtoehtoa (270€, yksi erä).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Sisäliikuntaan sopivat vaatteet, sisäpelikengät, juomapullo, suojalasit ja oma maila (oikean pituinen ja riittävän pehmeä juniorimaila).",
    "trial_info": "50€ kokeilumaksulla mahdollisuus kokeilla riskittömästi kuukauden ajan (4x); kokeilumaksu vähennetään varsinaisesta toimintamaksusta.",
    "enrollment_status": "unknown",
    "source_url": "https://sbvantaa.myclub.fi/flow/events/10409624",
    "source_quote": "SB-koulu 4-5 v. Rajatorppa 2026-2027 | Rajatorpan kalliosuoja, Rajatorpantie 27, 01650 Vantaa | 31.8.2026 17:00 - 10.5.2027 | Ilmoittautuminen päättyy 4.5.2027 14:00 | Hintatiedot: Salibandykoulu 145,00€ / 270,00€ / 160,00€ (* vain yksi on valittava)",
    "activity_id": "van-2026-0177",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 270.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.sbvantaa.fi/joukkue8620/30403",
    "billing_period": "full_season",
    "price_period_start": "2026-08-31",
    "price_period_end": "2027-05-16",
    "season_start_date": "2026-08-31",
    "season_end_date": "2027-05-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 270,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kertamaksu koko kaudelle. Kahdessa erässä (145€+160€=305€) maksettuna kalliimpi, ei valittu tähän."
      }
    ],
    "price_options": [
      {
        "label": "Syyskausi erikseen",
        "amount_eur": 145.0,
        "applies_if": "maksetaan kausi kerrallaan: syyskausi 145 €, kevätkausi 160 € (yhteensä 305 €)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count",
      "end_date"
    ],
    "verification_notes": "Hinta vahvistettu sekä seuran Toimintamaksut-sivulta että myClub-tapahtumasivun Hintatiedot-osiosta (samat kolme vaihtoehtoa 145/270/160€) - ei ristiriitaa. myClub-sivulla ei ollut ryhmäkohtaista täyttöaste- tai jonotekstiä ('Paikkoja jäljellä'/'Täynnä'), vain ilmoittautumispainike ja kauas tulevaisuuteen (2027) asetettu ilmoittautumisen päättymisaika - pelkkä Ilmoittaudu-painike ei ole saatavuusnäyttö, joten availability_status=unknown. Harjoitukset tauolla koulujen loma-aikoina, tarkkaa kertamäärää tai viimeistä harjoituspäivää ei ilmoitettu sanamukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_11.json",
      "staging_id": "batch_vantaa_2026-09-24_11-001",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_11/sbvantaa_sbk45.html",
      "capture_sha256": "d77db8c5a765cd10a5b4d836ef838ab21b1a2cc241346fc9afbda0bd0d07cc14",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 31.73,
    "monthly_cost_basis": "270.0 € / full_season jaettuna 8.51 kuukaudelle (2026-08-31–2027-05-16, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vapaala",
    "district_basis": "geokoodattu osoite -> neighborhood 'Vapaala' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "salibandy",
    "provider": "SB Vantaa ry",
    "group_name": "SB-koulu 5-6v, Ylästö",
    "min_age": 5,
    "max_age": 6,
    "eligibility_text": "SB-koulu 5-6 v.",
    "parent_child": "no",
    "venue_name": "Ylästön koulu",
    "address": "Vantaa (Ylästö)",
    "district": null,
    "weekday": "lauantai",
    "start_time": "11:00",
    "end_time": "12:00",
    "season": "toimintakausi 2026-2027",
    "start_date": "2026-09-05",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 270.0,
    "price_basis": "Koko toimintakauden 2026-2027 (31.8.2026-16.5.2027) maksu 270€ kerralla maksettuna. Vaihtoehtoisesti kahdessa erässä: syyskausi 145€ + kevät 160€ (yhteensä 305€, kalliimpi kuin kertamaksu). Käytetty halvinta vaihtoehtoa (270€, yksi erä).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Sisäliikuntaan sopivat vaatteet, sisäpelikengät, juomapullo, suojalasit ja oma maila (oikean pituinen ja riittävän pehmeä juniorimaila).",
    "trial_info": "50€ kokeilumaksulla mahdollisuus kokeilla riskittömästi kuukauden ajan (4x); kokeilumaksu vähennetään varsinaisesta toimintamaksusta.",
    "enrollment_status": "unknown",
    "source_url": "https://sbvantaa.myclub.fi/flow/events/10398302",
    "source_quote": "SB-koulu 5-6 v. Ylästö 2026-2027 | Ylästön koulu | 5.9.2026 11:00 ... | Ilmoittautuminen päättyy 10.5.2027 12:29 | Hintatiedot: Salibandykoulu 145,00€ / 270,00€ / 160,00€ (* vain yksi on valittava)",
    "activity_id": "van-2026-0178",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 270.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "verified",
    "price_source_url": "https://www.sbvantaa.fi/joukkue8620/30403",
    "billing_period": "full_season",
    "price_period_start": "2026-08-31",
    "price_period_end": "2027-05-16",
    "season_start_date": "2026-08-31",
    "season_end_date": "2027-05-16",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 270,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kertamaksu koko kaudelle. Kahdessa erässä (145€+160€=305€) maksettuna kalliimpi, ei valittu tähän."
      }
    ],
    "price_options": [
      {
        "label": "Syyskausi erikseen",
        "amount_eur": 145.0,
        "applies_if": "maksetaan kausi kerrallaan: syyskausi 145 €, kevätkausi 160 € (yhteensä 305 €)",
        "includes": null
      }
    ],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "sessions_count",
      "end_date",
      "address"
    ],
    "verification_notes": "Hinta vahvistettu sekä seuran Toimintamaksut-sivulta että myClub-tapahtumasivun Hintatiedot-osiosta (samat kolme vaihtoehtoa 145/270/160€) - ei ristiriitaa. myClub-sivulla ei ollut ryhmäkohtaista täyttöaste- tai jonotekstiä ('Paikkoja jäljellä'/'Täynnä'), vain ilmoittautumispainike ja kauas tulevaisuuteen (2027) asetettu ilmoittautumisen päättymisaika - pelkkä Ilmoittaudu-painike ei ole saatavuusnäyttö, joten availability_status=unknown. Harjoitukset tauolla koulujen loma-aikoina, tarkkaa kertamäärää tai viimeistä harjoituspäivää ei ilmoitettu sanamukaisesti.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_11.json",
      "staging_id": "batch_vantaa_2026-09-24_11-002",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_11/sbvantaa_sbk56.html",
      "capture_sha256": "bfe6a9d3b2b4119a3ec9e2b3a8c85e4ba137e965d364d4908d95bde624ab2f26",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 31.73,
    "monthly_cost_basis": "270.0 € / full_season jaettuna 8.51 kuukaudelle (2026-08-31–2027-05-16, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "geokoodaus ei tuottanut kaupunginosaa/osa-aluetta"
  },
  {
    "sport": "salibandy",
    "provider": "SB Vantaa ry",
    "group_name": "Perhesähly 3-5v, Rajatorppa",
    "min_age": 3,
    "max_age": 5,
    "eligibility_text": "3-5 -vuotiaat",
    "parent_child": "yes",
    "venue_name": "Rajatorpan kalliosuoja",
    "address": null,
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "17:15",
    "end_time": "18:00",
    "season": "toimintakausi 2026-2027",
    "start_date": "2026-09-02",
    "end_date": null,
    "sessions_count": null,
    "price_eur": 300.0,
    "price_basis": "Koko toimintakauden 2026-2027 (31.8.2026-17.5.2027) perhesählymaksu 300€ kerralla maksettuna (tai erikseen syyskausi 160€ + kevät 175€ = 335€, kalliimpi).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Sisäliikuntavaatteet, maila (myös aikuiselle), suojalasit ja vesipullo.",
    "trial_info": "50€ kokeilumaksulla mahdollisuus kokeilla riskittömästi kuukauden ajan (4x); kokeilumaksu vähennetään varsinaisesta toimintamaksusta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.sbvantaa.fi/380",
    "source_quote": "Perhesählyssä 3 - 6 -vuotias lapsi ja oma aikuinen opettelevat salibandyn perusteita pelaten ja leikkien yhdessä muiden perheiden kanssa ammattimaisen ohjaajan opastuksella. ... Ryhmät syyskaudella 2026 (31.8.2026 - 17.5.2027) RAJATORPAN KALLIOSUOJA 3-5 -vuotiaat, KE 17:15-18 ... Perhesählyn toimintamaksut: Syyskauden toimintamaksu 160 e Kevätkauden toimintamaksu 175 e Koko kausi kerralla maksettu 300 e Hinnat koskevat yhtä osallistuvaa lapsi + aikuinen -paria. Kausimaksuun sisältyy: ohjaus, vuorot sekä seuran jäsenyys.",
    "activity_id": "van-2026-0179",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 300.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.sbvantaa.fi/380",
    "billing_period": "full_season",
    "price_period_start": "2026-08-31",
    "price_period_end": "2027-05-17",
    "season_start_date": "2026-08-31",
    "season_end_date": "2027-05-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 300,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kertamaksu koko kaudelle, yhtä lapsi+aikuinen-paria kohden. Kahdessa erässä (160€+175€=335€) kalliimpi, ei valittu tähän."
      }
    ],
    "price_options": [
      {
        "label": "Syyskausi erikseen",
        "amount_eur": 160.0,
        "applies_if": "maksetaan kausi kerrallaan: syyskausi 160 €, kevätkausi 175 € (yhteensä 335 €)",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "sessions_count",
      "address"
    ],
    "verification_notes": "Hinta seuran omalta Perhesähly-sivulta (sbvantaa.fi/380), sananmukainen. myClub-ryhmäkohtaisia tapahtumasivuja ei avattu jokaiselle vuorolle, joten availability_status=unknown.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_11.json",
      "staging_id": "batch_vantaa_2026-09-24_11-003",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_11/sbvantaa_perhe.html",
      "capture_sha256": "a481322a2b1f4a96205bbf4a56ac8869687174955f076c2a26533aeff0a487f8",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 35.12,
    "monthly_cost_basis": "300.0 € / full_season jaettuna 8.54 kuukaudelle (2026-08-31–2027-05-17, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": null,
    "district_basis": "ei osoitetta eikä postinumeroa saatavilla"
  },
  {
    "sport": "salibandy",
    "provider": "SB Vantaa ry",
    "group_name": "Perhesähly 4-6v, Rajatorppa",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 -vuotiaat",
    "parent_child": "yes",
    "venue_name": "Rajatorpan kalliosuoja",
    "address": "Rajatorpantie 27, 01650 Vantaa",
    "district": null,
    "weekday": "keskiviikko",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "toimintakausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 300.0,
    "price_basis": "Koko toimintakauden 2026-2027 (31.8.2026-17.5.2027) perhesählymaksu 300€ kerralla maksettuna (tai erikseen syyskausi 160€ + kevät 175€ = 335€, kalliimpi).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Sisäliikuntavaatteet, maila (myös aikuiselle), suojalasit ja vesipullo.",
    "trial_info": "50€ kokeilumaksulla mahdollisuus kokeilla riskittömästi kuukauden ajan (4x); kokeilumaksu vähennetään varsinaisesta toimintamaksusta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.sbvantaa.fi/380",
    "source_quote": "Perhesählyssä 3 - 6 -vuotias lapsi ja oma aikuinen opettelevat salibandyn perusteita pelaten ja leikkien yhdessä muiden perheiden kanssa ammattimaisen ohjaajan opastuksella. ... Ryhmät syyskaudella 2026 (31.8.2026 - 17.5.2027) RAJATORPAN KALLIOSUOJA 4-6 -vuotiaat, KE 18-18:45 | KANNISTON KOULU 4-6 -vuotiaat, TI 18-18:45 Kanniston koulu | KARTANONKOSKEN KOULU 4-6 -vuotiaat, TI 18-18:45 Kartanonkosken koulu ... Perhesählyn toimintamaksut: Syyskauden toimintamaksu 160 e Kevätkauden toimintamaksu 175 e Koko kausi kerralla maksettu 300 e Hinnat koskevat yhtä osallistuvaa lapsi + aikuinen -paria. Kausimaksuun sisältyy: ohjaus, vuorot sekä seuran jäsenyys.",
    "activity_id": "van-2026-0180",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 300.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.sbvantaa.fi/380",
    "billing_period": "full_season",
    "price_period_start": "2026-08-31",
    "price_period_end": "2027-05-17",
    "season_start_date": "2026-08-31",
    "season_end_date": "2027-05-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 300,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kertamaksu koko kaudelle, yhtä lapsi+aikuinen-paria kohden. Kahdessa erässä (160€+175€=335€) kalliimpi, ei valittu tähän."
      }
    ],
    "price_options": [
      {
        "label": "Syyskausi erikseen",
        "amount_eur": 160.0,
        "applies_if": "maksetaan kausi kerrallaan: syyskausi 160 €, kevätkausi 175 € (yhteensä 335 €)",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "sessions_count",
      "venue_name",
      "weekday",
      "start_time",
      "end_time",
      "address"
    ],
    "verification_notes": "Kolme rinnakkaista vuoroa/paikkaa samalla hinnalla/iällä (Rajatorppa ke 18-18:45, Kanniston koulu ti 18-18:45, Kartanonkosken koulu ti 18-18:45) - yksi rivi rajaussäännön 3 mukaisesti. Hinta seuran omalta Perhesähly-sivulta (sbvantaa.fi/380), sananmukainen. myClub-ryhmäkohtaisia tapahtumasivuja ei avattu jokaiselle vuorolle, joten availability_status=unknown. Vantaa-QA 24.9.2026: rivi yhdisti kolme eri ryhmää (Rajatorppa ke, Kanniston koulu ti, Kartanonkosken koulu ti, kukin oma ryhmänsä omassa paikassa) - pilkottu: tämä rivi = Rajatorppa ke 18-18:45; Kannisto ja Kartanonkoski omiksi riveikseen (11-005, 11-006).",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_11.json",
      "staging_id": "batch_vantaa_2026-09-24_11-004",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_11/sbvantaa_perhe.html",
      "capture_sha256": "a481322a2b1f4a96205bbf4a56ac8869687174955f076c2a26533aeff0a487f8",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 35.12,
    "monthly_cost_basis": "300.0 € / full_season jaettuna 8.54 kuukaudelle (2026-08-31–2027-05-17, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Vapaala",
    "district_basis": "geokoodattu osoite -> neighborhood 'Vapaala' (api.hel.fi/servicemap/administrative_division)"
  },
  {
    "sport": "salibandy",
    "provider": "SB Vantaa ry",
    "group_name": "Perhesähly 4-6v, Kannisto",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 -vuotiaat",
    "parent_child": "yes",
    "venue_name": "Kanniston koulu",
    "address": null,
    "district": "Kannisto",
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "toimintakausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 300.0,
    "price_basis": "Koko toimintakauden 2026-2027 (31.8.2026-17.5.2027) perhesählymaksu 300€ kerralla maksettuna (tai erikseen syyskausi 160€ + kevät 175€ = 335€, kalliimpi).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Sisäliikuntavaatteet, maila (myös aikuiselle), suojalasit ja vesipullo.",
    "trial_info": "50€ kokeilumaksulla mahdollisuus kokeilla riskittömästi kuukauden ajan (4x); kokeilumaksu vähennetään varsinaisesta toimintamaksusta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.sbvantaa.fi/380",
    "source_quote": "Perhesählyssä 3 - 6 -vuotias lapsi ja oma aikuinen opettelevat salibandyn perusteita pelaten ja leikkien yhdessä muiden perheiden kanssa ammattimaisen ohjaajan opastuksella. ... Ryhmät syyskaudella 2026 (31.8.2026 - 17.5.2027) RAJATORPAN KALLIOSUOJA 4-6 -vuotiaat, KE 18-18:45 | KANNISTON KOULU 4-6 -vuotiaat, TI 18-18:45 Kanniston koulu | KARTANONKOSKEN KOULU 4-6 -vuotiaat, TI 18-18:45 Kartanonkosken koulu ... Perhesählyn toimintamaksut: Syyskauden toimintamaksu 160 e Kevätkauden toimintamaksu 175 e Koko kausi kerralla maksettu 300 e Hinnat koskevat yhtä osallistuvaa lapsi + aikuinen -paria. Kausimaksuun sisältyy: ohjaus, vuorot sekä seuran jäsenyys.",
    "activity_id": "van-2026-0181",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 300.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.sbvantaa.fi/380",
    "billing_period": "full_season",
    "price_period_start": "2026-08-31",
    "price_period_end": "2027-05-17",
    "season_start_date": "2026-08-31",
    "season_end_date": "2027-05-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 300,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kertamaksu koko kaudelle, yhtä lapsi+aikuinen-paria kohden. Kahdessa erässä (160€+175€=335€) kalliimpi, ei valittu tähän."
      }
    ],
    "price_options": [
      {
        "label": "Syyskausi erikseen",
        "amount_eur": 160.0,
        "applies_if": "maksetaan kausi kerrallaan: syyskausi 160 €, kevätkausi 175 € (yhteensä 335 €)",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "sessions_count",
      "venue_name",
      "weekday",
      "start_time",
      "end_time",
      "address"
    ],
    "verification_notes": "Kolme rinnakkaista vuoroa/paikkaa samalla hinnalla/iällä (Rajatorppa ke 18-18:45, Kanniston koulu ti 18-18:45, Kartanonkosken koulu ti 18-18:45) - yksi rivi rajaussäännön 3 mukaisesti. Hinta seuran omalta Perhesähly-sivulta (sbvantaa.fi/380), sananmukainen. myClub-ryhmäkohtaisia tapahtumasivuja ei avattu jokaiselle vuorolle, joten availability_status=unknown. Vantaa-QA 24.9.2026: pilkottu rivistä batch_vantaa_2026-09-24_11-004 (yhdisti kolme eri ryhmää); lähde \"KANNISTON KOULU 4-6 -vuotiaat, TI 18-18:45\". Osoite ei lähteessä -> null.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_11.json",
      "staging_id": "batch_vantaa_2026-09-24_11-005",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_11/sbvantaa_perhe.html",
      "capture_sha256": "a481322a2b1f4a96205bbf4a56ac8869687174955f076c2a26533aeff0a487f8",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 35.12,
    "monthly_cost_basis": "300.0 € / full_season jaettuna 8.54 kuukaudelle (2026-08-31–2027-05-17, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kannisto",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "salibandy",
    "provider": "SB Vantaa ry",
    "group_name": "Perhesähly 4-6v, Kartanonkoski",
    "min_age": 4,
    "max_age": 6,
    "eligibility_text": "4-6 -vuotiaat",
    "parent_child": "yes",
    "venue_name": "Kartanonkosken koulu",
    "address": null,
    "district": "Kartanonkoski",
    "weekday": "tiistai",
    "start_time": "18:00",
    "end_time": "18:45",
    "season": "toimintakausi 2026-2027",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 300.0,
    "price_basis": "Koko toimintakauden 2026-2027 (31.8.2026-17.5.2027) perhesählymaksu 300€ kerralla maksettuna (tai erikseen syyskausi 160€ + kevät 175€ = 335€, kalliimpi).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": "Sisäliikuntavaatteet, maila (myös aikuiselle), suojalasit ja vesipullo.",
    "trial_info": "50€ kokeilumaksulla mahdollisuus kokeilla riskittömästi kuukauden ajan (4x); kokeilumaksu vähennetään varsinaisesta toimintamaksusta.",
    "enrollment_status": "unknown",
    "source_url": "https://www.sbvantaa.fi/380",
    "source_quote": "Perhesählyssä 3 - 6 -vuotias lapsi ja oma aikuinen opettelevat salibandyn perusteita pelaten ja leikkien yhdessä muiden perheiden kanssa ammattimaisen ohjaajan opastuksella. ... Ryhmät syyskaudella 2026 (31.8.2026 - 17.5.2027) RAJATORPAN KALLIOSUOJA 4-6 -vuotiaat, KE 18-18:45 | KANNISTON KOULU 4-6 -vuotiaat, TI 18-18:45 Kanniston koulu | KARTANONKOSKEN KOULU 4-6 -vuotiaat, TI 18-18:45 Kartanonkosken koulu ... Perhesählyn toimintamaksut: Syyskauden toimintamaksu 160 e Kevätkauden toimintamaksu 175 e Koko kausi kerralla maksettu 300 e Hinnat koskevat yhtä osallistuvaa lapsi + aikuinen -paria. Kausimaksuun sisältyy: ohjaus, vuorot sekä seuran jäsenyys.",
    "activity_id": "van-2026-0182",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 300.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.sbvantaa.fi/380",
    "billing_period": "full_season",
    "price_period_start": "2026-08-31",
    "price_period_end": "2027-05-17",
    "season_start_date": "2026-08-31",
    "season_end_date": "2027-05-17",
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": true,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 300,
        "mandatory": true,
        "included": true,
        "recurrence": "billing_period",
        "applies_if": null,
        "note": "Kertamaksu koko kaudelle, yhtä lapsi+aikuinen-paria kohden. Kahdessa erässä (160€+175€=335€) kalliimpi, ei valittu tähän."
      }
    ],
    "price_options": [
      {
        "label": "Syyskausi erikseen",
        "amount_eur": 160.0,
        "applies_if": "maksetaan kausi kerrallaan: syyskausi 160 €, kevätkausi 175 € (yhteensä 335 €)",
        "includes": null
      }
    ],
    "price_covers": {
      "children_count": 1,
      "adults_count": 1,
      "verified": true
    },
    "optional_cost_notes": null,
    "unverified_fields": [
      "end_date",
      "sessions_count",
      "venue_name",
      "weekday",
      "start_time",
      "end_time",
      "address"
    ],
    "verification_notes": "Kolme rinnakkaista vuoroa/paikkaa samalla hinnalla/iällä (Rajatorppa ke 18-18:45, Kanniston koulu ti 18-18:45, Kartanonkosken koulu ti 18-18:45) - yksi rivi rajaussäännön 3 mukaisesti. Hinta seuran omalta Perhesähly-sivulta (sbvantaa.fi/380), sananmukainen. myClub-ryhmäkohtaisia tapahtumasivuja ei avattu jokaiselle vuorolle, joten availability_status=unknown. Vantaa-QA 24.9.2026: pilkottu rivistä batch_vantaa_2026-09-24_11-004 (yhdisti kolme eri ryhmää); lähde \"KARTANONKOSKEN KOULU 4-6 -vuotiaat, TI 18-18:45\". Osoite ei lähteessä -> null.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_11.json",
      "staging_id": "batch_vantaa_2026-09-24_11-006",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_11/sbvantaa_perhe.html",
      "capture_sha256": "a481322a2b1f4a96205bbf4a56ac8869687174955f076c2a26533aeff0a487f8",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": 35.12,
    "monthly_cost_basis": "300.0 € / full_season jaettuna 8.54 kuukaudelle (2026-08-31–2027-05-17, price_period_start)",
    "monthly_cost_complete": true,
    "district_derived": "Kartanonkoski",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "ratsastus",
    "provider": "Ratsastuskoulu Poni-Haka Oy",
    "group_name": "Tenavatunnit (5-7v)",
    "min_age": 5,
    "max_age": 7,
    "eligibility_text": "Viikkotunnit: tenavaratsastus 5-7 v.",
    "parent_child": "no",
    "venue_name": "Poni-Haka",
    "address": "Vuorilehdontie 16, 01200 Vantaa",
    "district": "Hakunila",
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "kevät- ja syyskausi (kausikortti, n. 20-23 kertaa kaudessa)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 41.0,
    "price_basis": "Tenavatunnit (5-7v), poni: 41 €/vakiotunti (kausikorttitunti).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.ponihaka.fi/ratsastustuntien-hinnat/",
    "source_quote": "Talutusratsastus 20 min (ikä 3+) Neljän (4) kerran kortti talutukseen 33 € 120 € 33 € 120 € Tenavatunnit (5 – 7v) 41 € - Minialkeistunnit (5 – 8v) 41 € -",
    "activity_id": "van-2026-0183",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 41.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.ponihaka.fi/ratsastustuntien-hinnat/",
    "billing_period": "session",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 41,
        "mandatory": true,
        "included": true,
        "recurrence": "per_session",
        "applies_if": null,
        "note": "Kausikorttitunti, sitova koko kaudelle; kertamäärä ilmoitettu vain suuntaa-antavasti (n. 20-23 kertaa), ei sanamukaisesti tarkkaa lukua tälle ryhmälle."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "sessions_count"
    ],
    "verification_notes": "Kausikortti sitoo koko kauden maksuihin, mutta sivu ei ilmoita tarkkaa kertamäärää tälle ryhmälle (muualla sivustolla mainittu yleisesti '20-23 ratsastuskertaa' kausikorttitunneille), joten sessions_count jätetty null:ksi eikä kertahintaa lasketa. SRL-jäsenyyden/green cardin hintaa ei ilmoitettu, joten sitä ei ole lisätty fee_components-tauluun vaan other_required_fees-huomautukseen; price_completeness on silti complete koska itse osallistumismaksu (41 €/kerta) on tiedossa eikä jäsenyys ole tämän tallin oma pakollinen lisämaksu vaan SRL:n yleinen vaatimus. Vantaa-QA 24.9.2026: other_required_fees väitti SRL-jäsenyyden/green cardin koskevan ryhmää; hinnastosivun mukaan \"Talutustuntilaiset, (talustus-, tenava-, minialkeis-, sekä alkeiskurssit) ovat vakuutettuja koulun puolesta\" ja jäsenyyden jälkilaskutus \"ei koske talutustason tunteja\" -> huomautus poistettu, hinta complete.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_12.json",
      "staging_id": "batch_vantaa_2026-09-24_12-002",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_12/ponihaka_hinnasto_bca171986014.html",
      "capture_sha256": "bca171986014d93f2493c03dd0995cc4568fe8776479e56eb56f6c225e04ba6d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa session ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Hakunila",
    "district_basis": "alkuperäinen kenttä"
  },
  {
    "sport": "ratsastus",
    "provider": "Ratsastuskoulu Poni-Haka Oy",
    "group_name": "Minialkeistunnit (5-8v)",
    "min_age": 5,
    "max_age": 8,
    "eligibility_text": "Viikkotunnit: minialkeiskurssit 7-8 v (sivun hinnastotaulukossa ikähaarukka merkitty 5-8v).",
    "parent_child": "no",
    "venue_name": "Poni-Haka",
    "address": "Vuorilehdontie 16, 01200 Vantaa",
    "district": "Hakunila",
    "weekday": null,
    "start_time": null,
    "end_time": null,
    "season": "kevät- ja syyskausi (kausikortti, n. 20-23 kertaa kaudessa)",
    "start_date": null,
    "end_date": null,
    "sessions_count": null,
    "price_eur": 41.0,
    "price_basis": "Minialkeistunnit (5-8v), poni: 41 €/vakiotunti (kausikorttitunti).",
    "membership_fee_eur": null,
    "other_required_fees": null,
    "equipment_notes": null,
    "trial_info": null,
    "enrollment_status": "unknown",
    "source_url": "https://www.ponihaka.fi/ratsastustuntien-hinnat/",
    "source_quote": "Talutusratsastus 20 min (ikä 3+) Neljän (4) kerran kortti talutukseen 33 € 120 € 33 € 120 € Tenavatunnit (5 – 7v) 41 € - Minialkeistunnit (5 – 8v) 41 € -",
    "activity_id": "van-2026-0184",
    "city": "Vantaa",
    "checked_at": "2026-09-24",
    "known_min_total_eur": 41.0,
    "price_per_session_eur": null,
    "has_unpriced_required_fee": false,
    "verification_status": "source_partial",
    "price_source_url": "https://www.ponihaka.fi/ratsastustuntien-hinnat/",
    "billing_period": "session",
    "price_period_start": null,
    "price_period_end": null,
    "season_start_date": null,
    "season_end_date": null,
    "birth_year_min": null,
    "birth_year_max": null,
    "age_reference_date": null,
    "sessions_count_status": "unknown",
    "sessions_count_source": null,
    "availability_status": "unknown",
    "availability_checked_at": "2026-09-24",
    "purchasable_now": false,
    "price_completeness": "complete",
    "comparison_eligible": false,
    "fee_components": [
      {
        "type": "activity",
        "amount_eur": 41,
        "mandatory": true,
        "included": true,
        "recurrence": "per_session",
        "applies_if": null,
        "note": "Kausikorttitunti, sitova koko kaudelle; kertamäärä ei tarkka tälle ryhmälle."
      }
    ],
    "price_options": [],
    "price_covers": null,
    "optional_cost_notes": null,
    "unverified_fields": [
      "weekday",
      "start_time",
      "end_time",
      "sessions_count"
    ],
    "verification_notes": "Hinnastotaulukossa ikähaarukka '5-8v', vaikka valikon otsikko toisaalla sivustolla on 'minialkeiskurssit 7-8v' - kirjattu hinnastotaulukon sananmukaisen ikähaarukan (5-8v) mukaan, koska hinta liittyy nimenomaan siihen tauluun. Kertamäärä ei tarkka, ks. Tenavatunnit-rivin huomautus samasta syystä. Vantaa-QA 24.9.2026: other_required_fees väitti SRL-jäsenyyden/green cardin koskevan ryhmää; hinnastosivun mukaan \"Talutustuntilaiset, (talustus-, tenava-, minialkeis-, sekä alkeiskurssit) ovat vakuutettuja koulun puolesta\" ja jäsenyyden jälkilaskutus \"ei koske talutustason tunteja\" -> huomautus poistettu, hinta complete.",
    "source_status": "active",
    "last_seen_in_source_at": "2026-09-24",
    "provenance": {
      "batch_file": "data/vantaa/staging/batch_vantaa_2026-09-24_12.json",
      "staging_id": "batch_vantaa_2026-09-24_12-003",
      "decision": "candidate_clear",
      "capture_path": "data/vantaa/evidence_local/batch_vantaa_2026-09-24_12/ponihaka_hinnasto_bca171986014.html",
      "capture_sha256": "bca171986014d93f2493c03dd0995cc4568fe8776479e56eb56f6c225e04ba6d",
      "approved_by": "Ilpo",
      "promoted_at": "2026-09-24T06:28:52+00:00"
    },
    "monthly_cost_eur": null,
    "monthly_cost_basis": "hintajaksoa session ei muunneta kuukausihinnaksi",
    "monthly_cost_complete": false,
    "district_derived": "Hakunila",
    "district_basis": "alkuperäinen kenttä"
  }
]
