diff --git a/sales-agent/run.py b/sales-agent/run.py index 54b77fd..38653c7 100644 --- a/sales-agent/run.py +++ b/sales-agent/run.py @@ -2,7 +2,7 @@ """CLI entrypoint for the Sales Prospecting Agent Loop (MVP). Commands: - python run.py loop [--account ID] [--tier strategic|enterprise|growth] + python run.py loop [--account ID] [--tier strategic|enterprise|growth] [--priority high|medium|low] python run.py digest [--rep rep_sarah] python run.py feedback --brief ID --action act_on|snooze|reject|won|lost [--note "..."] python run.py recalibrate @@ -29,7 +29,7 @@ def cmd_loop(args): if args.domain_filter: config.EXA_DOMAIN_FILTER = True pipeline.run_all(tier=args.tier, account_id=args.account, - limit=args.limit, rep=args.rep) + limit=args.limit, rep=args.rep, priority=args.priority) print("\n--- digest preview ---") print(digest_mod.write_digest()) @@ -148,6 +148,8 @@ def main(argv=None): p_loop = sub.add_parser("loop", help="Run the harvest->deliver loop") p_loop.add_argument("--account", help="single account id") p_loop.add_argument("--tier", choices=["strategic", "enterprise", "growth"]) + p_loop.add_argument("--priority", choices=["high", "medium", "low"], + help="only accounts with this Campaign Command Center priority") p_loop.add_argument("--rep", help="only accounts assigned to this rep (name or id substring)") p_loop.add_argument("--limit", type=int, help="process at most N accounts (strategic + least-recently-run first); " diff --git a/sales-agent/src/connectors/crm.py b/sales-agent/src/connectors/crm.py index 59974ce..3510640 100644 --- a/sales-agent/src/connectors/crm.py +++ b/sales-agent/src/connectors/crm.py @@ -15,12 +15,15 @@ def _accounts() -> list[dict]: return json.loads((config.DATA_DIR / "accounts.json").read_text())["accounts"] -def load_accounts(tier: str | None = None, account_id: str | None = None) -> list[dict]: +def load_accounts(tier: str | None = None, account_id: str | None = None, + priority: str | None = None) -> list[dict]: accts = _accounts() if account_id: accts = [a for a in accts if a["accountId"] == account_id] if tier: accts = [a for a in accts if a["accountTier"] == tier] + if priority: + accts = [a for a in accts if (a.get("accountPriority") or "").lower() == priority] return accts diff --git a/sales-agent/src/pipeline.py b/sales-agent/src/pipeline.py index 5acf870..a97f51d 100644 --- a/sales-agent/src/pipeline.py +++ b/sales-agent/src/pipeline.py @@ -140,6 +140,7 @@ def run_all( account_id: str | None = None, limit: int | None = None, rep: str | None = None, + priority: str | None = None, ) -> list[dict]: config.ensure_dirs() if not config.LLM_CONFIGURED: @@ -147,7 +148,7 @@ def run_all( "OPENAI_MODEL), GEMINI_API_KEY, or ANTHROPIC_API_KEY in sales-agent/.env.") print("Refusing to run without a reasoning model (no mock fallback).") return [] - accounts = crm.load_accounts(tier=tier, account_id=account_id) + accounts = crm.load_accounts(tier=tier, account_id=account_id, priority=priority) if rep: accounts = [a for a in accounts if rep.lower() in a["assignedRep"]["name"].lower()