feder-cr/Jobs_Applier_AI_Agent_AIHawk · error · TypeError
Invalid data for Experience: {e}
Error message
Invalid data for Experience: {e} What it means
ExperienceDetails (or a nested constructor such as building key_responsibilities/skills_acquired) raised TypeError: wrong argument count/types — e.g. a required kwarg missing, an unexpected kwarg, or a list comprehension receiving a non-iterable like None.
Source
Thrown at src/resume_schemas/resume.py:182
key_responsibilities = [
Responsibility(description=list(resp.values())[0])
for resp in exp.get('key_responsibilities', [])
]
skills_acquired = [str(skill) for skill in exp.get('skills_acquired', [])]
experience = ExperienceDetails(
position=exp['position'],
company=exp['company'],
employment_period=exp['employment_period'],
location=exp['location'],
industry=exp['industry'],
key_responsibilities=key_responsibilities,
skills_acquired=skills_acquired
)
experience_list.append(experience)
except KeyError as e:
raise KeyError(f"Missing field in experience details: {e}") from e
except TypeError as e:
raise TypeError(f"Invalid data for Experience: {e}") from e
except AttributeError as e:
raise AttributeError(f"AttributeError in Experience: {e}") from e
except Exception as e:
raise Exception(f"Unexpected error in Experience processing: {e}") from e
return experience_list
@dataclass
class Exam:
name: str
grade: str
@dataclass
class Responsibility:
description: strView on GitHub (pinned to 79155b52fa)
Solutions
- Check the TypeError text for the exact argument name.
- Normalize list fields: vals = exp.get('key_responsibilities') or []; wrap scalars: [vals] if isinstance(vals, str) else vals.
- Add Optional/List defaults to the dataclass fields.
- Validate types before constructing ExperienceDetails.
Example fix
// before
key_responsibilities = exp['key_responsibilities']
skills_acquired = exp['skills_acquired']
# after
key_responsibilities = exp.get('key_responsibilities') or []
skills_acquired = exp.get('skills_acquired') or [] Defensive patterns
Strategy: validation
Validate before calling
def as_str_list(v):
if v is None:
return []
if isinstance(v, str):
return [v]
return list(v)
key_responsibilities = as_str_list(exp.get('key_responsibilities'))
skills_acquired = as_str_list(exp.get('skills_acquired')) Type guard
def is_str_list(x: Any) -> TypeGuard[list[str]]:
return isinstance(x, list) and all(isinstance(i, str) for i in x) Try / catch
try:
exp_list = _process_experience_details(data)
except TypeError as e:
logger.error("experience type mismatch: %s", e)
raise Prevention
- Coerce None → [] and str → [str] for list fields
- Add Optional[list] = field(default_factory=list) defaults
- Verify argument names against the dataclass definition
When it happens
Trigger: exp.get('key_responsibilities') returning None and being iterated; passing a scalar where a List[str] field expects an iterable; missing required positional argument in ExperienceDetails(**kwargs).
Common situations: Extraction output where skills/key_responsibilities are absent (None) instead of empty lists; a single string instead of a list; schema drift after adding fields.
Related errors
- Invalid data for PersonalInformation: {e}
- Invalid data for Education: {e}
- Error in self_identification data: {e}
- Attribute error in self_identification processing.
- Error in legal_authorization data: {e}
AI-assisted analysis of feder-cr/Jobs_Applier_AI_Agent_AIHawk@79155b52fa (2026-08-28).
Data as JSON: /api/errors/2b23d14f3c4fb6e5.
Report an issue: GitHub.