from rragent.schema import TraceEvent from rragent.utils.text import normalize_text, split_requirements, redact_sensitive def parse_jd_and_resumes(jd_text: str, candidates: list[dict]): jd_clean = normalize_text(jd_text) jd_items = split_requirements(jd_clean) cand_struct = [] for c in candidates: raw = c["raw_text"] redacted = redact_sensitive(raw) cand_struct.append({ "candidate_id": c["candidate_id"], "text": normalize_text(redacted) }) jd_struct = {"raw": jd_clean, "items": jd_items} ev = TraceEvent( step="1", agent="ParserAgent", status="ok", summary=f"Parsed JD into {len(jd_items)} requirement items; normalized + redacted {len(cand_struct)} resumes.", details="\n".join(jd_items[:12]) ) return jd_struct, cand_struct, ev