English Talent

L3
ModelContextProtocolFilesystemStudent Database

Select qualified students with S/A recommendation grades and TOEFL scores ≥100 for English media operations recruitment opportunities.

Created by Lingjun Chen
2025-08-10
Data ExtractionCross ReferencingPattern Analysis

Model Ranking

Click on the dots to view the trajectory of each task run
Model
Run Results
Pass@4
Pass^4
Avg Time
Avg Turns
Input Tokens
Output Tokens
Total Tokens
OpenAI
gpt-5
4
/4
560.9s
10.5
424,179
33,185
457,364
Gemini
gemini-2-5-pro
2
/4
214.5s
6.3
116,541
14,451
130,992
Claude
claude-4-1-opus
1
/1
--
1082.4s
29.0
1,498,886
21,607
1,520,493
Claude
claude-4-sonnet
0
/4
324.4s
21.3
773,518
10,820
784,338
DeepSeek
deepseek-chat
0
/4
937.2s
78.3
2,739,515
9,804
2,749,319
Grok
grok-4
0
/4
272.2s
24.0
-
-
-
MoonshotAI
k2
0
/4
1166.7s
64.5
3,115,150
13,686
3,128,836
OpenAI
o3
0
/4
590.5s
74.3
2,704,222
31,553
2,735,775
Qwen
qwen-3-coder
0
/4
283.7s
46.5
1,321,482
6,533
1,328,015

Task State

Task Initial State Files
Download ZIP package to view the complete file structure
student_database/ ├── 20101250_Patricia_Jones/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20101701_Isabella_Davis/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20102572_Michael_Taylor/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20104233_Robert_Lopez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20104498_Sarah_Brown/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20104653_Sophia_Brown/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20104675_Michael_Gonzalez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20104846_Christopher_Brown/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20107487_Mia_Martin/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20108742_Sarah_Brown/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20109144_Emma_Thomas/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20109803_Oliver_Hernandez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20111634_Isabella_Thomas/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20112439_Christopher_Moore/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20113368_William_Wilson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20113603_Robert_Rodriguez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20114397_Isabella_Martin/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20114869_Ethan_Martin/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20115252_Mason_Johnson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20115632_Elizabeth_Anderson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20115753_Charlotte_Johnson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20115924_Michael_Lopez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20116232_Olivia_Lopez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20119528_Thomas_Brown/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20122427_Karen_Gonzalez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20122977_Evelyn_Miller/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20123376_Joseph_Johnson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20125451_Barbara_Brown/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20126203_Barbara_Davis/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20126394_Olivia_Williams/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20126471_Ethan_Taylor/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20127423_John_Williams/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20128249_Oliver_Smith/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20128879_Christopher_Taylor/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20129898_Jessica_Johnson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20131271_Olivia_Brown/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20131518_Sophia_Smith/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20132026_Isabella_Smith/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20132370_James_Brown/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20132669_Noah_Smith/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20133527_Mason_Jackson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20133697_Isabella_Smith/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20135821_Thomas_Wilson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20136681_Benjamin_Anderson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20136890_Benjamin_Brown/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20137514_Lucas_Anderson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20139234_Harper_Martinez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20139637_Noah_Johnson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20139647_Patricia_Lopez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20141421_Linda_Gonzalez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20142085_William_Anderson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20142383_Amelia_Brown/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20143406_Susan_Martin/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20143830_James_Garcia/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20146035_Christopher_Garcia/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20146277_William_Anderson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20146279_Christopher_Moore/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20147301_James_Jones/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20147789_James_Anderson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20148681_John_Hernandez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20148778_Susan_Anderson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20149712_Jessica_Rodriguez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20151012_Harper_Miller/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20153174_Benjamin_Jackson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20153412_Charlotte_Martin/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20153606_James_Anderson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20153687_Richard_Taylor/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20154518_John_Gonzalez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20154710_Benjamin_Rodriguez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20156469_Jennifer_Hernandez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20156522_Jennifer_Martinez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20156851_Noah_Anderson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20157943_Harper_Williams/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20158266_Sophia_Moore/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20158294_Sophia_Wilson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20158819_Sarah_Wilson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20159113_John_Rodriguez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20159695_James_Moore/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20161279_William_Moore/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20162253_Mason_Rodriguez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20162542_Mia_Anderson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20163356_Ava_Anderson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20164515_Patricia_Moore/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20164801_Noah_Rodriguez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20165511_Mary_Gonzalez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20166436_Christopher_Jackson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20166487_Barbara_Hernandez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20166564_Ava_Lopez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20166998_Ava_Lopez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20168311_Lucas_Jackson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20168491_Karen_Martinez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20169515_Thomas_Taylor/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20171050_Christopher_Rodriguez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20171406_Mary_Anderson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20171613_Ethan_Moore/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20172106_Isabella_Rodriguez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20173259_Michael_Anderson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20173492_Richard_Miller/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20173501_Mary_Smith/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20173517_Susan_Anderson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20174207_Richard_Wilson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20174369_Mary_Garcia/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20175314_William_Taylor/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20176169_Lucas_Smith/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20176947_Noah_Miller/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20177389_James_Smith/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20178687_Isabella_Anderson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20179461_William_Johnson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20179690_Linda_Thomas/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20181056_Sarah_Hernandez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20182020_Patricia_Taylor/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20182390_Ethan_Wilson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20183149_David_Smith/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20183219_Charlotte_Williams/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20184489_Jessica_Gonzalez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20186154_Charlotte_Smith/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20186510_James_Thomas/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20187107_David_Martinez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20187144_Mary_Jackson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20187892_Christopher_Taylor/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20187921_Mary_Jones/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20187967_Sarah_Davis/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20188937_James_Moore/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20189123_Mary_Martin/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20189192_Olivia_Jones/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20189268_Emma_Williams/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20189854_William_Taylor/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20191265_Joseph_Lopez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20192725_Robert_Martinez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20194054_Michael_Jones/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20194160_Benjamin_Jackson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20194164_Sarah_Jones/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20194525_John_Taylor/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20195164_Jennifer_Gonzalez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20195982_David_Jackson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20196776_William_Brown/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20196896_Olivia_Jones/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20196961_Joseph_Thomas/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20196998_Ethan_Wilson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20198548_Evelyn_Moore/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20199036_Benjamin_Hernandez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20199583_Mary_Brown/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20199735_Mason_Johnson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20199872_Sophia_Jackson/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20199980_James_Rodriguez/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20201385_John_Taylor/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20201800_John_Jones/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20202548_Robert_Miller/ │ ├── basic_info.txt │ └── recommendation_letter.txt ├── 20203855_Mia_Miller/ │ ├── basic_info.txt │ └── recommendation_letter.txt └── 20204611_Sarah_Wilson/ ├── basic_info.txt └── recommendation_letter.txt

Instruction



Verify

*.py
Python
#!/usr/bin/env python3
"""
Verification script for Student Database Task: English Talent Recruitment
"""

import sys
from pathlib import Path
import re
import os

def get_test_directory() -> Path:
    """Get the test directory from FILESYSTEM_TEST_DIR env var."""
    test_root = os.environ.get("FILESYSTEM_TEST_DIR")
    if not test_root:
        raise ValueError("FILESYSTEM_TEST_DIR environment variable is required")
    return Path(test_root)

def verify_qualified_students_file_exists(test_dir: Path) -> bool:
    """Verify that the qualified_students.txt file exists."""
    answer_file = test_dir / "qualified_students.txt"
    
    if not answer_file.exists():
        print("❌ File 'qualified_students.txt' not found")
        return False
    
    print("✅ Qualified students file found")
    return True

def verify_file_format(test_dir: Path) -> bool:
    """Verify that the qualified_students.txt file has the correct format."""
    answer_file = test_dir / "qualified_students.txt"
    
    try:
        content = answer_file.read_text()
        lines = content.strip().split('\n')
        
        if not lines:
            print("❌ File is empty")
            return False
        
        # Check if content follows the expected pattern
        # Each student should have 3 lines: name, id, email
        # Students should be separated by blank lines
        current_line = 0
        student_count = 0
        
        while current_line < len(lines):
            # Skip blank lines
            if not lines[current_line].strip():
                current_line += 1
                continue
            
            # Check if we have enough lines for a complete student
            if current_line + 2 >= len(lines):
                print(f"❌ Incomplete student entry at line {current_line + 1}")
                return False
            
            # Verify name line format
            if not lines[current_line].strip().startswith("name: "):
                print(f"❌ Invalid name line format at line {current_line + 1}: {lines[current_line]}")
                return False
            
            # Verify id line format
            if not lines[current_line + 1].strip().startswith("id: "):
                print(f"❌ Invalid id line format at line {current_line + 2}: {lines[current_line + 1]}")
                return False
            
            # Verify email line format
            if not lines[current_line + 2].strip().startswith("email: "):
                print(f"❌ Invalid email line format at line {current_line + 3}: {lines[current_line + 2]}")
                return False
            
            student_count += 1
            current_line += 3
            
            # Check for blank line separator (except for the last student)
            if current_line < len(lines) and lines[current_line].strip():
                print(f"❌ Missing blank line separator after student {student_count}")
                return False
            
            current_line += 1
        
        if student_count == 0:
            print("❌ No valid student entries found")
            return False
        
        print(f"✅ File format is correct with {student_count} students")
        return True
        
    except Exception as e:
        print(f"❌ Error reading qualified students file: {e}")
        return False

def parse_qualified_students_file(test_dir: Path) -> list:
    """Parse the qualified_students.txt file and return structured data."""
    answer_file = test_dir / "qualified_students.txt"
    
    try:
        content = answer_file.read_text()
        lines = content.strip().split('\n')
        
        students = []
        current_line = 0
        
        while current_line < len(lines):
            # Skip blank lines
            if not lines[current_line].strip():
                current_line += 1
                continue
            
            # Parse student entry
            name_line = lines[current_line].strip()
            id_line = lines[current_line + 1].strip()
            email_line = lines[current_line + 2].strip()
            
            # Extract name
            name = name_line.replace("name: ", "").strip()
            
            # Extract id
            student_id = id_line.replace("id: ", "").strip()
            
            # Extract email
            email = email_line.replace("email: ", "").strip()
            
            students.append({
                'name': name,
                'id': student_id,
                'email': email
            })
            
            current_line += 4  # Skip to next student (after blank line)
        
        return students
        
    except Exception as e:
        print(f"❌ Error parsing qualified students file: {e}")
        return []

def verify_student_count(students: list) -> bool:
    """Verify that exactly 19 students are found."""
    expected_count = 19
    actual_count = len(students)
    
    if actual_count != expected_count:
        print(f"❌ Expected {expected_count} students, but found {actual_count}")
        return False
    
    print(f"✅ Found exactly {expected_count} students")
    return True

def verify_expected_students(students: list) -> bool:
    """Verify that all expected students are present with correct details."""
    # Expected students from answer.md
    expected_students = {
        'James Smith': {'id': '20177389', 'email': 'james.smith30@outlook.com'},
        'Ava Lopez': {'id': '20166998', 'email': 'ava.lopez67@outlook.com'},
        'James Anderson': {'id': '20153606', 'email': 'james.anderson71@yahoo.com'},
        'Benjamin Anderson': {'id': '20136681', 'email': 'benjamin.anderson37@qq.com'},
        'Sarah Wilson': {'id': '20158819', 'email': 'sarah.wilson96@outlook.com'},
        'Isabella Davis': {'id': '20101701', 'email': 'isabella.davis89@gmail.com'},
        'James Moore': {'id': '20188937', 'email': 'james.moore62@gmail.com'},
        'Harper Williams': {'id': '20157943', 'email': 'harper.williams38@163.com'},
        'Noah Smith': {'id': '20132669', 'email': 'noah.smith45@163.com'},
        'Emma Thomas': {'id': '20109144', 'email': 'emma.thomas68@163.com'},
        'Mary Brown': {'id': '20199583', 'email': 'mary.brown27@yahoo.com'},
        'John Jones': {'id': '20201800', 'email': 'john.jones46@gmail.com'},
        'Mia Anderson': {'id': '20162542', 'email': 'mia.anderson3@outlook.com'},
        'Barbara Davis': {'id': '20126203', 'email': 'barbara.davis67@163.com'},
        'Thomas Brown': {'id': '20119528', 'email': 'thomas.brown43@163.com'},
        'Susan Anderson': {'id': '20148778', 'email': 'susan.anderson16@163.com'},
        'Mary Garcia': {'id': '20174369', 'email': 'mary.garcia58@gmail.com'},
        'Richard Wilson': {'id': '20174207', 'email': 'richard.wilson39@outlook.com'},
        'Joseph Lopez': {'id': '20191265', 'email': 'joseph.lopez93@yahoo.com'}
    }
    
    # Check if all expected students are present
    found_students = set()
    for student in students:
        found_students.add(student['name'])
    
    missing_students = set(expected_students.keys()) - found_students
    if missing_students:
        print(f"❌ Missing expected students: {missing_students}")
        return False
    
    # Check if all found students are expected
    unexpected_students = found_students - set(expected_students.keys())
    if unexpected_students:
        print(f"❌ Unexpected students found: {unexpected_students}")
        return False
    
    # Check if student details match exactly
    for student in students:
        expected = expected_students[student['name']]
        if student['id'] != expected['id']:
            print(f"❌ ID mismatch for {student['name']}: expected {expected['id']}, got {student['id']}")
            return False
        if student['email'] != expected['email']:
            print(f"❌ Email mismatch for {student['name']}: expected {expected['email']}, got {student['email']}")
            return False
    
    print("✅ All expected students are present with correct details")
    return True

def main():
    """Main verification function."""
    test_dir = get_test_directory()
    print("🔍 Verifying Student Database Task: English Talent Recruitment...")
    
    # Define verification steps
    verification_steps = [
        ("Qualified Students File Exists", verify_qualified_students_file_exists),
        ("File Format", verify_file_format),
    ]
    
    # Run basic verification steps first
    all_passed = True
    for step_name, verify_func in verification_steps:
        print(f"\n--- {step_name} ---")
        if not verify_func(test_dir):
            all_passed = False
            break
    
    if not all_passed:
        print("\n❌ Basic verification failed, cannot proceed with content verification")
        sys.exit(1)
    
    # Parse the file and run content verification
    print("\n--- Content Verification ---")
    students = parse_qualified_students_file(test_dir)
    
    if not students:
        print("❌ Failed to parse qualified students file")
        sys.exit(1)
    
    content_verification_steps = [
        ("Student Count", lambda: verify_student_count(students)),
        ("Expected Students", lambda: verify_expected_students(students)),
    ]
    
    for step_name, verify_func in content_verification_steps:
        print(f"\n--- {step_name} ---")
        if not verify_func():
            all_passed = False
    
    # Final result
    print("\n" + "="*50)
    if all_passed:
        print("✅ English talent recruitment completed correctly!")
        print(f"🎉 Found exactly {len(students)} qualified students")
        print("🎉 Task verification: PASS")
        sys.exit(0)
    else:
        print("❌ Task verification: FAIL")
        sys.exit(1)

if __name__ == "__main__":
    main()