... or otherwise storing user-specified information.
Job.tags gives you a copy of the tag info as a dict, so modifying that does nothing to the underlying record.
Minimum support would be something like this workaround:
def set_tag(job, key, new_val):
for _t in job._tags:
if _t.key == key:
_t.value = new_val
return
else:
raise ValueError(f'No tag called "{key}"')