mirror of
https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools.git
synced 2026-06-17 23:09:35 +00:00
8 agents + 4 models + 4 configs + CLI dry-run + 3 docs. Tested on agency/real_estate/clinic/saas — all pass. Safety: LinkedIn scraping PROHIBITED, WhatsApp blast PROHIBITED. https://claude.ai/code/session_01W1rJthWDkasijTdXCfxVHs
33 lines
1.7 KiB
Python
33 lines
1.7 KiB
Python
from dealix_gtm_os.agents.base_agent import BaseAgent
|
|
from dealix_gtm_os.models.message import ChannelType, AutomationLevel
|
|
|
|
SECTOR_CHANNELS = {
|
|
"agency": (ChannelType.EMAIL, ChannelType.LINKEDIN_MANUAL),
|
|
"real_estate": (ChannelType.EMAIL, ChannelType.WHATSAPP_WARM),
|
|
"clinic": (ChannelType.WHATSAPP_WARM, ChannelType.EMAIL),
|
|
"saas": (ChannelType.EMAIL, ChannelType.LINKEDIN_MANUAL),
|
|
"ecommerce": (ChannelType.EMAIL, ChannelType.INSTAGRAM_INBOUND),
|
|
"construction": (ChannelType.EMAIL, ChannelType.PHONE),
|
|
"training": (ChannelType.EMAIL, ChannelType.WHATSAPP_WARM),
|
|
"consulting": (ChannelType.LINKEDIN_MANUAL, ChannelType.EMAIL),
|
|
"website_agency": (ChannelType.LINKEDIN_MANUAL, ChannelType.EMAIL),
|
|
}
|
|
|
|
class ChannelStrategyAgent(BaseAgent):
|
|
name = "channel_strategy"
|
|
description = "Selects best outreach channel per target"
|
|
|
|
async def run(self, input_data: dict) -> dict:
|
|
sector = input_data.get("sector", "").lower().replace(" ", "_")
|
|
channels = SECTOR_CHANNELS.get(sector, (ChannelType.EMAIL, ChannelType.LINKEDIN_MANUAL))
|
|
primary, secondary = channels
|
|
manual_channels = {ChannelType.LINKEDIN_MANUAL, ChannelType.WHATSAPP_WARM, ChannelType.PHONE}
|
|
level = AutomationLevel.MANUAL_REQUIRED if primary in manual_channels else AutomationLevel.SEMI_AUTOMATED
|
|
return {
|
|
"primary_channel": primary.value,
|
|
"secondary_channel": secondary.value,
|
|
"automation_level": level.value,
|
|
"reason": f"Sector {sector} best reached via {primary.value}",
|
|
"risk_flags": ["manual_approval_required"] if level == AutomationLevel.MANUAL_REQUIRED else [],
|
|
}
|