def process_ticket(ticket): scratchpad = [] max_retries = 3 for attempt in range(max_retries): context = semantic_retrieve(ticket.text) context = cohere_rerank(ticket.text, context) agent_response = llm_respond(ticket.text, context) scratchpad.append(agent_response) if fact_checker(agent_response, context): update_ticket(ticket.id, agent_response) log_metrics(ticket.id, "resolved", attempt + 1) return "resolved" if has_repeated_answer(agent_response, scratchpad): break escalate(ticket.id) log_metrics(ticket.id, "escalated", len(scratchpad)) return "escalated"