{
  "headline": "Melbourne train line tier list",
  "intro": "Ranked from benchmark stats (on-time, frequency, crowding, reliability). If Frankston line is D tier, it's struggling compared to peers \u2014 if Belgrave line is S or A tier, that's the line you want.",
  "disclaimer": "Representative seed data for demo. Not official PTV rankings.",
  "tiers": {
    "S": [
      {
        "line_code": "BEL",
        "line_name": "Belgrave line",
        "network": "Metro Trains Melbourne",
        "composite_score": 83.9,
        "metrics": {
          "crowding_index": {
            "label": "Crowding index",
            "value": 38.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV load (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "frequency_score": {
            "label": "Service frequency score",
            "value": 88.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV GTFS (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "on_time_pct": {
            "label": "On-time performance",
            "value": 94.2,
            "unit": "percent",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "reliability_score": {
            "label": "Reliability score",
            "value": 91.5,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          }
        },
        "tier": "S",
        "tier_meta": {
          "label": "S",
          "title": "Elite",
          "blurb": "Top of the network. Rarely lets you down.",
          "color": "#ff7f7f"
        },
        "verdict": "Belgrave is running hot \u2014 top tier for a reason."
      },
      {
        "line_code": "SAN",
        "line_name": "Sandringham line",
        "network": "Metro Trains Melbourne",
        "composite_score": 81.5,
        "metrics": {
          "crowding_index": {
            "label": "Crowding index",
            "value": 41.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV load (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "frequency_score": {
            "label": "Service frequency score",
            "value": 85.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV GTFS (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "on_time_pct": {
            "label": "On-time performance",
            "value": 92.8,
            "unit": "percent",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "reliability_score": {
            "label": "Reliability score",
            "value": 89.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          }
        },
        "tier": "S",
        "tier_meta": {
          "label": "S",
          "title": "Elite",
          "blurb": "Top of the network. Rarely lets you down.",
          "color": "#ff7f7f"
        },
        "verdict": "Sandringham is running hot \u2014 top tier for a reason."
      }
    ],
    "A": [
      {
        "line_code": "MER",
        "line_name": "Mernda line",
        "network": "Metro Trains Melbourne",
        "composite_score": 76.1,
        "metrics": {
          "crowding_index": {
            "label": "Crowding index",
            "value": 48.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV load (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "frequency_score": {
            "label": "Service frequency score",
            "value": 80.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV GTFS (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "on_time_pct": {
            "label": "On-time performance",
            "value": 88.5,
            "unit": "percent",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "reliability_score": {
            "label": "Reliability score",
            "value": 84.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          }
        },
        "tier": "A",
        "tier_meta": {
          "label": "A",
          "title": "Solid",
          "blurb": "Good everyday ride \u2014 reliable enough you stop thinking about it.",
          "color": "#ffbf7f"
        },
        "verdict": "Mernda is a solid pick \u2014 few nasty surprises."
      }
    ],
    "B": [
      {
        "line_code": "SUN",
        "line_name": "Sunbury line",
        "network": "Metro Trains Melbourne",
        "composite_score": 72.8,
        "metrics": {
          "crowding_index": {
            "label": "Crowding index",
            "value": 52.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV load (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "frequency_score": {
            "label": "Service frequency score",
            "value": 76.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV GTFS (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "on_time_pct": {
            "label": "On-time performance",
            "value": 86.0,
            "unit": "percent",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "reliability_score": {
            "label": "Reliability score",
            "value": 81.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          }
        },
        "tier": "B",
        "tier_meta": {
          "label": "B",
          "title": "Fine",
          "blurb": "Middle of the pack. Gets you there, with the occasional grumble.",
          "color": "#ffdf7f"
        },
        "verdict": "Sunbury is middle of the pack \u2014 fine, not flashy."
      },
      {
        "line_code": "WIL",
        "line_name": "Williamstown line",
        "network": "Metro Trains Melbourne",
        "composite_score": 69.9,
        "metrics": {
          "crowding_index": {
            "label": "Crowding index",
            "value": 55.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV load (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "frequency_score": {
            "label": "Service frequency score",
            "value": 72.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV GTFS (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "on_time_pct": {
            "label": "On-time performance",
            "value": 84.5,
            "unit": "percent",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "reliability_score": {
            "label": "Reliability score",
            "value": 78.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          }
        },
        "tier": "B",
        "tier_meta": {
          "label": "B",
          "title": "Fine",
          "blurb": "Middle of the pack. Gets you there, with the occasional grumble.",
          "color": "#ffdf7f"
        },
        "verdict": "Williamstown is middle of the pack \u2014 fine, not flashy."
      }
    ],
    "C": [
      {
        "line_code": "CRA",
        "line_name": "Craigieburn line",
        "network": "Metro Trains Melbourne",
        "composite_score": 65.8,
        "metrics": {
          "crowding_index": {
            "label": "Crowding index",
            "value": 62.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV load (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "frequency_score": {
            "label": "Service frequency score",
            "value": 70.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV GTFS (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "on_time_pct": {
            "label": "On-time performance",
            "value": 81.0,
            "unit": "percent",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "reliability_score": {
            "label": "Reliability score",
            "value": 74.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          }
        },
        "tier": "C",
        "tier_meta": {
          "label": "C",
          "title": "Shaky",
          "blurb": "Below average. Budget extra time or a backup plan.",
          "color": "#9fdf9f"
        },
        "verdict": "Craigieburn is below average \u2014 keep a backup route in mind."
      }
    ],
    "D": [
      {
        "line_code": "UPF",
        "line_name": "Upfield line",
        "network": "Metro Trains Melbourne",
        "composite_score": 60.4,
        "metrics": {
          "crowding_index": {
            "label": "Crowding index",
            "value": 68.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV load (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "frequency_score": {
            "label": "Service frequency score",
            "value": 64.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV GTFS (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "on_time_pct": {
            "label": "On-time performance",
            "value": 76.5,
            "unit": "percent",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "reliability_score": {
            "label": "Reliability score",
            "value": 69.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          }
        },
        "tier": "D",
        "tier_meta": {
          "label": "D",
          "title": "Oof",
          "blurb": "Bottom tier. Delays, gaps, or crowding \u2014 the line everyone roasts.",
          "color": "#7fdfff"
        },
        "verdict": "Upfield is D tier \u2014 expect pain (delays, gaps, or crowding)."
      },
      {
        "line_code": "FRK",
        "line_name": "Frankston line",
        "network": "Metro Trains Melbourne",
        "composite_score": 53.0,
        "metrics": {
          "crowding_index": {
            "label": "Crowding index",
            "value": 79.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV load (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "frequency_score": {
            "label": "Service frequency score",
            "value": 58.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV GTFS (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "on_time_pct": {
            "label": "On-time performance",
            "value": 71.8,
            "unit": "percent",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          },
          "reliability_score": {
            "label": "Reliability score",
            "value": 61.0,
            "unit": "score_0_100",
            "source_url": "https://www.ptv.vic.gov.au/",
            "source_name": "PTV performance (seed)",
            "period": "2024",
            "fetched_at": "2026-05-21T10:39:47.782046+00:00"
          }
        },
        "tier": "D",
        "tier_meta": {
          "label": "D",
          "title": "Oof",
          "blurb": "Bottom tier. Delays, gaps, or crowding \u2014 the line everyone roasts.",
          "color": "#7fdfff"
        },
        "verdict": "Frankston is D tier \u2014 expect pain (delays, gaps, or crowding)."
      }
    ]
  },
  "tier_meta": {
    "S": {
      "label": "S",
      "title": "Elite",
      "blurb": "Top of the network. Rarely lets you down.",
      "color": "#ff7f7f"
    },
    "A": {
      "label": "A",
      "title": "Solid",
      "blurb": "Good everyday ride \u2014 reliable enough you stop thinking about it.",
      "color": "#ffbf7f"
    },
    "B": {
      "label": "B",
      "title": "Fine",
      "blurb": "Middle of the pack. Gets you there, with the occasional grumble.",
      "color": "#ffdf7f"
    },
    "C": {
      "label": "C",
      "title": "Shaky",
      "blurb": "Below average. Budget extra time or a backup plan.",
      "color": "#9fdf9f"
    },
    "D": {
      "label": "D",
      "title": "Oof",
      "blurb": "Bottom tier. Delays, gaps, or crowding \u2014 the line everyone roasts.",
      "color": "#7fdfff"
    }
  },
  "tier_order": [
    "S",
    "A",
    "B",
    "C",
    "D"
  ],
  "ranked": [
    {
      "line_code": "BEL",
      "line_name": "Belgrave line",
      "network": "Metro Trains Melbourne",
      "composite_score": 83.9,
      "metrics": {
        "crowding_index": {
          "label": "Crowding index",
          "value": 38.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV load (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "frequency_score": {
          "label": "Service frequency score",
          "value": 88.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV GTFS (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "on_time_pct": {
          "label": "On-time performance",
          "value": 94.2,
          "unit": "percent",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "reliability_score": {
          "label": "Reliability score",
          "value": 91.5,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        }
      },
      "tier": "S",
      "tier_meta": {
        "label": "S",
        "title": "Elite",
        "blurb": "Top of the network. Rarely lets you down.",
        "color": "#ff7f7f"
      },
      "verdict": "Belgrave is running hot \u2014 top tier for a reason."
    },
    {
      "line_code": "SAN",
      "line_name": "Sandringham line",
      "network": "Metro Trains Melbourne",
      "composite_score": 81.5,
      "metrics": {
        "crowding_index": {
          "label": "Crowding index",
          "value": 41.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV load (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "frequency_score": {
          "label": "Service frequency score",
          "value": 85.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV GTFS (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "on_time_pct": {
          "label": "On-time performance",
          "value": 92.8,
          "unit": "percent",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "reliability_score": {
          "label": "Reliability score",
          "value": 89.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        }
      },
      "tier": "S",
      "tier_meta": {
        "label": "S",
        "title": "Elite",
        "blurb": "Top of the network. Rarely lets you down.",
        "color": "#ff7f7f"
      },
      "verdict": "Sandringham is running hot \u2014 top tier for a reason."
    },
    {
      "line_code": "MER",
      "line_name": "Mernda line",
      "network": "Metro Trains Melbourne",
      "composite_score": 76.1,
      "metrics": {
        "crowding_index": {
          "label": "Crowding index",
          "value": 48.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV load (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "frequency_score": {
          "label": "Service frequency score",
          "value": 80.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV GTFS (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "on_time_pct": {
          "label": "On-time performance",
          "value": 88.5,
          "unit": "percent",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "reliability_score": {
          "label": "Reliability score",
          "value": 84.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        }
      },
      "tier": "A",
      "tier_meta": {
        "label": "A",
        "title": "Solid",
        "blurb": "Good everyday ride \u2014 reliable enough you stop thinking about it.",
        "color": "#ffbf7f"
      },
      "verdict": "Mernda is a solid pick \u2014 few nasty surprises."
    },
    {
      "line_code": "SUN",
      "line_name": "Sunbury line",
      "network": "Metro Trains Melbourne",
      "composite_score": 72.8,
      "metrics": {
        "crowding_index": {
          "label": "Crowding index",
          "value": 52.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV load (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "frequency_score": {
          "label": "Service frequency score",
          "value": 76.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV GTFS (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "on_time_pct": {
          "label": "On-time performance",
          "value": 86.0,
          "unit": "percent",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "reliability_score": {
          "label": "Reliability score",
          "value": 81.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        }
      },
      "tier": "B",
      "tier_meta": {
        "label": "B",
        "title": "Fine",
        "blurb": "Middle of the pack. Gets you there, with the occasional grumble.",
        "color": "#ffdf7f"
      },
      "verdict": "Sunbury is middle of the pack \u2014 fine, not flashy."
    },
    {
      "line_code": "WIL",
      "line_name": "Williamstown line",
      "network": "Metro Trains Melbourne",
      "composite_score": 69.9,
      "metrics": {
        "crowding_index": {
          "label": "Crowding index",
          "value": 55.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV load (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "frequency_score": {
          "label": "Service frequency score",
          "value": 72.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV GTFS (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "on_time_pct": {
          "label": "On-time performance",
          "value": 84.5,
          "unit": "percent",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "reliability_score": {
          "label": "Reliability score",
          "value": 78.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        }
      },
      "tier": "B",
      "tier_meta": {
        "label": "B",
        "title": "Fine",
        "blurb": "Middle of the pack. Gets you there, with the occasional grumble.",
        "color": "#ffdf7f"
      },
      "verdict": "Williamstown is middle of the pack \u2014 fine, not flashy."
    },
    {
      "line_code": "CRA",
      "line_name": "Craigieburn line",
      "network": "Metro Trains Melbourne",
      "composite_score": 65.8,
      "metrics": {
        "crowding_index": {
          "label": "Crowding index",
          "value": 62.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV load (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "frequency_score": {
          "label": "Service frequency score",
          "value": 70.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV GTFS (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "on_time_pct": {
          "label": "On-time performance",
          "value": 81.0,
          "unit": "percent",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "reliability_score": {
          "label": "Reliability score",
          "value": 74.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        }
      },
      "tier": "C",
      "tier_meta": {
        "label": "C",
        "title": "Shaky",
        "blurb": "Below average. Budget extra time or a backup plan.",
        "color": "#9fdf9f"
      },
      "verdict": "Craigieburn is below average \u2014 keep a backup route in mind."
    },
    {
      "line_code": "UPF",
      "line_name": "Upfield line",
      "network": "Metro Trains Melbourne",
      "composite_score": 60.4,
      "metrics": {
        "crowding_index": {
          "label": "Crowding index",
          "value": 68.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV load (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "frequency_score": {
          "label": "Service frequency score",
          "value": 64.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV GTFS (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "on_time_pct": {
          "label": "On-time performance",
          "value": 76.5,
          "unit": "percent",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "reliability_score": {
          "label": "Reliability score",
          "value": 69.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        }
      },
      "tier": "D",
      "tier_meta": {
        "label": "D",
        "title": "Oof",
        "blurb": "Bottom tier. Delays, gaps, or crowding \u2014 the line everyone roasts.",
        "color": "#7fdfff"
      },
      "verdict": "Upfield is D tier \u2014 expect pain (delays, gaps, or crowding)."
    },
    {
      "line_code": "FRK",
      "line_name": "Frankston line",
      "network": "Metro Trains Melbourne",
      "composite_score": 53.0,
      "metrics": {
        "crowding_index": {
          "label": "Crowding index",
          "value": 79.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV load (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "frequency_score": {
          "label": "Service frequency score",
          "value": 58.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV GTFS (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "on_time_pct": {
          "label": "On-time performance",
          "value": 71.8,
          "unit": "percent",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        },
        "reliability_score": {
          "label": "Reliability score",
          "value": 61.0,
          "unit": "score_0_100",
          "source_url": "https://www.ptv.vic.gov.au/",
          "source_name": "PTV performance (seed)",
          "period": "2024",
          "fetched_at": "2026-05-21T10:39:47.782046+00:00"
        }
      },
      "tier": "D",
      "tier_meta": {
        "label": "D",
        "title": "Oof",
        "blurb": "Bottom tier. Delays, gaps, or crowding \u2014 the line everyone roasts.",
        "color": "#7fdfff"
      },
      "verdict": "Frankston is D tier \u2014 expect pain (delays, gaps, or crowding)."
    }
  ]
}