File size: 867 Bytes
0ece81f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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