Initial commit: prospecting agent loop MVP
Closed-loop account-intelligence system: harvest -> relevance filter vs. Capability Library -> synthesize -> score -> deliver -> feedback. - 40-capability Broadcom + VMware library - Live Exa.ai news connector with hard free-plan request ceilings - Provider-agnostic LLM layer (Gemini/Anthropic) with offline mock fallback - LLM confidence wired into composite scoring + low-confidence floor - 7-account pilot list Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
24
sales-agent/src/connectors/jobs.py
Normal file
24
sales-agent/src/connectors/jobs.py
Normal file
@@ -0,0 +1,24 @@
|
||||
"""Job posting harvester (v1 placeholder -> JSearch/Adzuna in production)."""
|
||||
from __future__ import annotations
|
||||
|
||||
from ..types import RawSignal
|
||||
from . import account_fixture
|
||||
|
||||
|
||||
def harvest(account: dict) -> list[RawSignal]:
|
||||
out: list[RawSignal] = []
|
||||
for item in account_fixture(account["accountId"]).get("jobs", []):
|
||||
count = item.get("count", 1)
|
||||
prefix = f"[{count} openings] " if count > 1 else ""
|
||||
out.append(
|
||||
RawSignal(
|
||||
account_id=account["accountId"],
|
||||
source="jobs",
|
||||
signal_type="hiring_surge" if count > 1 else "job_posting",
|
||||
content=f"{prefix}{item['title']}: {item['content']}",
|
||||
published_at=item["publishedAt"],
|
||||
url=item["url"],
|
||||
extra={"title": item["title"], "count": count},
|
||||
)
|
||||
)
|
||||
return out
|
||||
Reference in New Issue
Block a user