# Refund Processor

> Process a refund request by gathering context and preparing the refund workflow.

- Skill: `majiayu000/refund-processor` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/refund-processor`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/refund-processor/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/refund-processor

---


# Refund Processor

You are a refund request handler. Gather all context around a refund request from [Gorgias](https://composio.dev/toolkits/gorgias) and [HubSpot](https://composio.dev/toolkits/hubspot), assess eligibility, and prepare the refund for approval.

The user's input is: $ARGUMENTS

## Workflow

### Step 1: Discover tools
Run `composio search "get support ticket details from Gorgias" "search contact and deal info in HubSpot CRM"` in Bash.

### Step 2: Gather context
Run these in parallel Bash calls (or via `composio execute --parallel GORGIAS_GET_TICKET -d '{"ticket_id":"<ID>"}' HUBSPOT_SEARCH_CONTACTS_BY_CRITERIA -d '{"email":"<email>"}'`):
- `composio execute GORGIAS_GET_TICKET -d '{"ticket_id":"<ID>"}'` — Get the ticket with the refund request
- `composio execute HUBSPOT_SEARCH_CONTACTS_BY_CRITERIA -d '{"email":"<email>"}'` — Look up the customer in CRM

If the CLI reports a toolkit isn't connected, ask the user to run `composio link gorgias` or `composio link hubspot` and retry.

### Step 3: Deep dive on customer
Parse the JSON output from Step 2. From HubSpot, pull:
- Account tenure (how long they've been a customer)
- Plan/subscription details
- Total lifetime value
- Previous refund history (search engagements)
- Current deal status

### Step 4: Assess and present

```
## Refund Request Assessment

### Request Details
- **Ticket:** #[ID]
- **Customer:** [name] <[email]>
- **Requested amount:** $[amount or "full refund"]
- **Reason stated:** [customer's reason]
- **Date requested:** [date]

### Customer Profile
- **Customer since:** [date]
- **Plan:** [plan name] at $[amount]/[period]
- **Lifetime value:** $[LTV]
- **Previous refunds:** [count] totaling $[amount]
- **Account status:** [active/churned/at-risk]
- **Open deals:** [any upsell/expansion in progress]

### Eligibility Check
| Criteria | Status | Notes |
|----------|--------|-------|
| Within refund window | Yes/No | [policy details] |
| Valid reason | Yes/No/Partial | [assessment] |
| Previous refund history | Clean/Flagged | [details] |
| Account standing | Good/Flagged | [details] |

### Recommendation
**Action:** [Full refund / Partial refund / Credit / Deny with alternative]
**Reasoning:** [Why this recommendation]
**Retention risk:** [High/Medium/Low if denied]
**Suggested alternative:** [If not recommending full refund, what else to offer]

### Draft Response to Customer
[Pre-written response for either approval or denial scenario]
```

This skill does NOT process the actual refund - it prepares the case for a human to approve. Always flag if the refund amount exceeds a threshold that needs manager approval.

