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
Claude
claude-sonnet-4-high
4
/4
317.9s
26.8
1,167,666
17,257
1,184,922
OpenAI
gpt-5-high
4
/4
1481.3s
12.0
494,561
46,729
541,290
OpenAI
gpt-5-low
4
/4
560.9s
10.5
424,179
33,185
457,364
OpenAI
gpt-5-medium
4
/4
424.3s
9.8
354,476
27,176
381,653
OpenAI
gpt-5-mini-high
4
/4
795.0s
22.5
1,867,849
77,594
1,945,442
Grok
grok-4
3
/4
573.3s
42.5
1,819,661
24,539
1,844,200
Gemini
gemini-2-5-pro
2
/4
214.5s
6.3
116,541
14,451
130,992
OpenAI
gpt-5-mini-medium
2
/4
271.4s
14.0
851,374
25,860
877,234
Claude
claude-opus-4-1
1
/1
--
1082.4s
29.0
1,498,886
21,607
1,520,493
Claude
claude-sonnet-4-low
1
/4
250.0s
23.8
824,447
13,313
837,760
Grok
grok-code-fast-1
1
/4
95.0s
13.3
373,947
11,835
393,513
Claude
claude-sonnet-4
0
/4
324.4s
21.3
773,518
10,820
784,338
DeepSeek
deepseek-chat
0
/4
819.0s
59.5
2,062,537
10,136
2,072,673
Gemini
gemini-2-5-flash
0
/4
37.0s
4.5
16,803
646
17,449
Z.ai
glm-4-5
0
/4
475.3s
39.8
1,348,327
12,820
1,361,146
OpenAI
gpt-4-1
0
/4
62.6s
13.3
122,514
1,870
124,384
OpenAI
gpt-4-1-mini
0
/4
127.8s
35.8
915,061
4,697
919,758
OpenAI
gpt-4-1-nano
0
/4
10.3s
4.8
7,479
202
7,681
OpenAI
gpt-5-mini-low
0
/4
165.8s
5.0
20,535
268
20,803
OpenAI
gpt-5-nano-high
0
/4
309.3s
100.0
3,906,601
29,419
3,936,020
OpenAI
gpt-5-nano-low
0
/4
340.4s
73.5
2,020,811
14,204
2,035,015
OpenAI
gpt-5-nano-medium
0
/4
181.1s
62.8
1,758,089
15,963
1,774,052
OpenAI
gpt-oss-120b
0
/4
9.0s
3.3
29,261
383
29,644
MoonshotAI
kimi-k2-0711
0
/4
1166.7s
64.5
3,115,150
13,686
3,128,836
MoonshotAI
kimi-k2-0905
0
/4
861.0s
63.8
1,574,887
10,692
1,585,578
OpenAI
o3
0
/4
590.5s
74.3
2,704,222
31,553
2,735,775
OpenAI
o4-mini
0
/4
398.7s
37.8
776,661
24,542
801,203
Qwen
qwen-3-coder-plus
0
/4
508.6s
84.0
2,494,563
9,913
2,504,476
Qwen
qwen-3-max
0
/4
662.5s
38.5
1,766,847
17,567
1,784,414

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

Please use FileSystem tools to finish the following task:

We are now recruiting students proficient in English to be responsible for the school’s English media operations. To contact with students, from the total of 150 students, select those who meet both of the following criteria :

  1. Rated S or A grade level in recommendation_letter.txt by their teachers.
  2. TOEFL score in the basic info is higher than or equal to 100 .

Please compile all their names, ids and emails into a qualified_students.txt file, with the format:

Plaintext
name: xxx
id: xxx
email: xxx

Each person’s information should occupy three lines, with one blank line between each block.



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()