from typing import List


def demand_satisfied(people_after: List) -> List[bool]:
    """Verifies that each person gets the appropriate number of appointments.

    We assume that scheduling occurs over a single week. Thus, people in the
    `1x` cohort get one test, people in the `2x` cohort get two tests,
    and people without a cohort due to incompatibility (the `None` cohort)
    get no tests. All people in the `None` cohort should not be `assigned`;
    people in the other cohorts should be `assigned`.

    Args:
        people_after: A roster of people with assigned schedules.

    Returns:
        A list of booleans indicating whether each person has the right number
        of appointments.
    """
    valid = []
    cohort_demands = {'1x': 1, '2x': 2, None: 0}
    for person in people_after:
        n_appointments = sum(len(day) for day in person['schedule'].values())
        if person['assigned']:
            valid.append(n_appointments == cohort_demands[person['cohort']]
                         and person['cohort'] is not None)
        else:
            valid.append(n_appointments == 0 and person['cohort'] is None)
    return valid