Customer Service banner
nazrul007 nazrul007

Customer Service

AI community

Description

A multi-provider AI customer service agent that automates order lookup, return-eligibility checks, and Stripe refunds with a code-enforced human confirmation gate and inventory restocking. It also exposes the same functionality through a Claude Code plugin using MCP tools and a guided slash command.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

customer-service

A customer service agent for product returns and Stripe refunds, with a JSON flat-file backing store and a defense-in-depth human-confirmation gate before any refund is issued. Refer to the [architecture](ARCHITECTURE.md) to learn more.

Layout

  • src/customer-service/ — the standalone Python app: a CLI chat loop backed by a swappable LLM provider (Anthropic, OpenAI, Google, or DeepSeek via NVIDIA). See src/customer-service/README.md (below) for setup.
  • src/claude-plugin/ — a Claude Code plugin exposing the same tools over MCP, so Claude Code itself can act as the agent. See src/claude-plugin/README.md.

Quick start (CLI)

cd src/customer-service
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env   # fill in an LLM provider API key in .env; leave STRIPE_API_KEY blank for dry-run
customer-service --dry-run

Quick start (Claude Code plugin)

claude --plugin-dir ./src/claude-plugin

Then in-chat: `/customer-service-returns:process-return`.

Safety model

Every refund requires: (1) the model setting `confirmed=true` only after the customer affirms in chat, (2) a from-scratch eligibility re-check inside the refund handler, and (3) an explicit human confirmation step — a terminal prompt in the CLI, or Claude Code's own tool-permission dialog in the plugin. See the implementation plan for full details.

Data

  • Happy path (ORD-1001): eligibility check → chat confirmation → terminal confirmation → dry-run Stripe refund → inventory incremented 42→43
  • Outside-window rejection (ORD-1002)
  • Already-refunded rejection (ORD-1003)
  • Fail-fast when the provider's API key is missing