HyperBrickCaseOps / tasks /billing_refund_easy.py
modelbuilderhq's picture
Upload folder using huggingface_hub
2ade2c6 verified
from __future__ import annotations
from tasks.base import SupportTaskSpec, KnowledgeSnippet, SupportTicket
TASK = SupportTaskSpec(
task_id="billing_refund_easy",
difficulty="easy",
title="Duplicate charge refund triage",
objective=(
"Triage a duplicate-charge billing ticket, send the correct customer response, "
"and close the case only if no further customer information is required."
),
ticket=SupportTicket(
customer_name="Riya Shah",
customer_tier="pro",
company="PixelNorth Studio",
subject="Charged twice after I canceled",
body=(
"I canceled our Pro annual workspace yesterday, but my card was charged again "
"this morning and I still see the old invoice. We only had one workspace, "
"so this looks like a duplicate charge. Please fix it quickly."
),
region="ap-south-1",
affected_users=12,
sla_minutes_remaining=240,
),
knowledge_base=(
KnowledgeSnippet(
article_id="kb-refund-dup",
title="Refund duplicate charges",
content=(
"If a customer is double-charged, verify the duplicate invoice IDs, refund the extra charge, "
"and send a confirmation summarizing the refund amount and timeline."
),
),
KnowledgeSnippet(
article_id="kb-pro-refund-policy",
title="Pro tier refund policy",
content=(
"Pro annual refunds are prorated to the current billing month; processing takes 5-7 business days. "
"Provide the refund reference ID in your reply."
),
),
),
gold_queue="billing_ops",
gold_priority="high",
gold_issue_type="duplicate_charge",
gold_status="resolved",
gold_resolution_code="refund_processed",
required_requested_fields=("invoice_ids",),
required_reply_markers=(
("refund", "processed"),
("reference", "id"),
("timeline",),
),
required_note_markers=(("duplicate charge",), ("refund issued",)),
risk_flags=("sla_breach", "finance_close_risk"),
follow_up_outcome="complete",
follow_up_message="Customer confirms the refund hit their card.",
follow_up_provided_fields=("refund_reference",),
follow_up_wrong_fields=(),
sla_step_cost=12,
over_escalation_queues=(),
under_escalation_deadline_step=None,
max_steps=6,
)