| # file: agents/curator.py | |
| from datetime import datetime | |
| from app.schema import Prospect, HandoffPacket | |
| class Curator: | |
| """Creates handoff packets for sales team""" | |
| def __init__(self, mcp_registry): | |
| self.mcp = mcp_registry | |
| self.store = mcp_registry.get_store_client() | |
| self.email_client = mcp_registry.get_email_client() | |
| self.calendar_client = mcp_registry.get_calendar_client() | |
| async def run(self, prospect: Prospect) -> Prospect: | |
| """Create handoff packet""" | |
| # Get thread | |
| thread = None | |
| if prospect.thread_id: | |
| thread = await self.email_client.get_thread(prospect.id) | |
| # Get calendar slots | |
| slots = await self.calendar_client.suggest_slots() | |
| # Create packet | |
| packet = HandoffPacket( | |
| prospect=prospect, | |
| thread=thread, | |
| calendar_slots=slots, | |
| generated_at=datetime.utcnow() | |
| ) | |
| # Save packet | |
| await self.store.save_handoff(packet) | |
| # Update prospect status | |
| prospect.status = "ready_for_handoff" | |
| await self.store.save_prospect(prospect) | |
| return prospect |