proofrank / src /narrative.py
Sarthak080907's picture
Deploy ProofRank sandbox with production-parity ranker
c643b04
Raw
History Blame Contribute Delete
2.69 kB
from __future__ import annotations
def profile(candidate: dict) -> dict:
return candidate.get("profile") or {}
def current_role(candidate: dict) -> dict:
roles = candidate.get("career_history") or []
for role in roles:
if role.get("is_current"):
return role
return roles[0] if roles else {}
def career_text(candidate: dict) -> str:
parts: list[str] = []
for role in candidate.get("career_history") or []:
title = role.get("title") or ""
company = role.get("company") or ""
industry = role.get("industry") or ""
desc = role.get("description") or ""
parts.append(f"{title} at {company} ({industry}). {desc}")
return "\n".join(p for p in parts if p.strip())
def summary_text(candidate: dict) -> str:
p = profile(candidate)
return "\n".join(str(x) for x in [p.get("headline"), p.get("summary")] if x)
def profile_text(candidate: dict) -> str:
p = profile(candidate)
return "\n".join(
str(x)
for x in [
p.get("headline"),
p.get("summary"),
p.get("current_title"),
p.get("current_industry"),
p.get("location"),
p.get("country"),
]
if x
)
def certification_text(candidate: dict) -> str:
certs = candidate.get("certifications") or []
if not certs:
return ""
names = [f"{c.get('name', '')} ({c.get('issuer', '')})" for c in certs[:6] if c.get("name")]
return "Certifications: " + ", ".join(names) if names else ""
def language_text(candidate: dict) -> str:
langs = candidate.get("languages") or []
if not langs:
return ""
names = [f"{l.get('language', '')} ({l.get('proficiency', '')})" for l in langs[:4] if l.get("language")]
return "Languages: " + ", ".join(names) if names else ""
def trusted_skill_names(candidate: dict, limit: int = 8) -> list[str]:
skills = candidate.get("skills") or []
ranked = sorted(
skills,
key=lambda s: (
int(s.get("endorsements") or 0),
int(s.get("duration_months") or 0),
str(s.get("proficiency") or ""),
),
reverse=True,
)
return [str(s.get("name")) for s in ranked[:limit] if s.get("name")]
def full_text(candidate: dict) -> str:
skills = trusted_skill_names(candidate)
skill_part = f"Skills: {', '.join(skills)}" if skills else ""
return "\n".join(
p
for p in [
profile_text(candidate),
career_text(candidate),
certification_text(candidate),
language_text(candidate),
skill_part,
]
if p
)