New tools added across multiple domains: - Sales: lead-score, proposal-outline, objection-response - Marketing: competitor-brief, campaign-brief, social-post-draft, email-subject-score, audience-persona, content-calendar-plan, pricing-page-copy - HR: job-description-draft, interview-questions, performance-review-draft, onboarding-checklist, compensation-band, survey-analyze, org-chart-format, offer-letter-draft, exit-interview-summarize, policy-doc-format - Legal: contract-clause-scan, nda-template-draft, tos-readability, risk-clause-highlight, invoice-terms-extract, gdpr-data-map, copyright-notice, trademark-check - Finance: expense-categorize, invoice-data-extract, budget-variance, cash-flow-project, revenue-breakdown, ratio-analysis, tax-deduction-scan, reconciliation-match - Customer Experience: feedback-themes, churn-risk-score, nps-analysis, ticket-categorize, response-template-suggest, health-score-calculate, renewal-forecast - Education: lesson-plan-outline, quiz-generate, rubric-create, syllabus-format, progress-report-draft, learning-objective-write, curriculum-map Also includes improvements to 68 existing tool implementations. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
7.3 KiB
TPMJS Tools Implementation Summary
Overview
Successfully implemented 5 production-ready TPMJS tools following the blocks.yml definitions:
- finance.reconciliationMatch - Bank transaction reconciliation
- cx.feedbackThemes - Customer feedback theme extraction
- cx.churnRiskScore - Customer churn risk scoring
- cx.npsAnalysis - NPS survey analysis
- cx.ticketCategorize - Support ticket categorization
Tool Details
1. finance.reconciliationMatch (reconciliation-match)
Path: /packages/tools/official/reconciliation-match/
Description: Matches bank transactions to ledger entries for reconciliation using amount matching, date proximity scoring, and description similarity analysis.
Key Features:
- Exact amount matching with 60% weight
- Date proximity scoring (same day = 1.0, decreases with distance)
- Levenshtein distance for description similarity
- Confidence scores with match reasons
- Unmatched transaction tracking
Input Schema:
{
bankTransactions: Array<{
id: string;
date: string;
amount: number;
description: string;
}>;
ledgerEntries: Array<{
id: string;
date: string;
amount: number;
description: string;
}>;
}
Output:
- Matched pairs with confidence scores
- Unmatched bank transactions
- Unmatched ledger entries
- Match rate summary
2. cx.feedbackThemes (feedback-themes)
Path: /packages/tools/official/feedback-themes/
Description: Extracts themes and sentiment from customer feedback text using keyword-based analysis.
Key Features:
- 10+ theme categories (Performance, UI, Ease of Use, Features, Support, etc.)
- Sentiment scoring (positive/negative/neutral)
- Theme frequency tracking
- Overall sentiment calculation
- Example feedback for each theme
Input Schema:
{
feedback: string[];
}
Output:
- Themes with sentiment scores and frequencies
- Overall sentiment breakdown
- Positive/negative/neutral counts
- Example feedback per theme
3. cx.churnRiskScore (churn-risk-score)
Path: /packages/tools/official/churn-risk-score/
Description: Scores customer churn risk based on usage, engagement, and support signals.
Key Features:
- Multi-signal risk assessment (usage, engagement, support)
- 0-100 risk score calculation
- Risk level categorization (critical/high/medium/low)
- Contributing factors with impact levels
- Actionable retention recommendations
Input Schema:
{
customer: {
id: string;
name: string;
subscriptionStartDate: string;
lastLoginDate?: string;
loginCount30Days?: number;
activeUsersCount?: number;
totalSeats?: number;
supportTicketsCount30Days?: number;
negativeTicketsCount30Days?: number;
npsScore?: number;
billingIssues?: boolean;
contractEndDate?: string;
};
}
Output:
- Risk score (0-100)
- Risk level classification
- Contributing risk factors
- Retention recommendations
- Summary statement
4. cx.npsAnalysis (nps-analysis)
Path: /packages/tools/official/nps-analysis/
Description: Analyzes NPS survey responses to categorize by promoter/passive/detractor and extract themes.
Key Features:
- NPS score calculation (% promoters - % detractors)
- Automatic categorization (9-10 = promoter, 7-8 = passive, 0-6 = detractor)
- Theme extraction from comments
- Separate themes for promoters vs detractors
- Actionable recommendations based on findings
Input Schema:
{
responses: Array<{
score: number; // 0-10
comment?: string;
respondentId?: string;
date?: string;
}>;
}
Output:
- NPS score
- Distribution breakdown (promoters/passives/detractors)
- Themes by category
- Recommendations
- Summary statement
5. cx.ticketCategorize (ticket-categorize)
Path: /packages/tools/official/ticket-categorize/
Description: Categorizes support tickets by type, priority, and product area with routing suggestions.
Key Features:
- 7 ticket categories (bug, feature-request, how-to, billing, technical-issue, account, other)
- 4 priority levels (critical, high, medium, low)
- Product area identification (API, Dashboard, Mobile, Integrations, etc.)
- Smart routing suggestions
- Estimated resolution time
- Automatic tagging
Input Schema:
{
ticket: {
id: string;
subject: string;
description: string;
customerEmail?: string;
createdAt?: string;
};
}
Output:
- Category classification
- Priority level
- Product area
- Routing suggestion
- Tags
- Estimated resolution time
- Reasoning explanation
Technical Implementation
Stack
- AI SDK: v6.0.0-beta.124 (Vercel AI SDK)
- Schema:
jsonSchema()(avoids Zod 4 JSON Schema issues) - TypeScript: Strict mode with full type safety
- Build Tool: tsup (ESM only)
- Package Structure: Follows TPMJS monorepo conventions
Build Status
✅ All 5 tools successfully type-check ✅ All 5 tools successfully build ✅ All output files generated (index.js + index.d.ts)
File Structure (per tool)
tool-name/
├── src/
│ └── index.ts # Full implementation with interfaces and logic
├── package.json # With tpmjs field and category
├── tsconfig.json # Extends @tpmjs/tsconfig/base.json
└── tsup.config.ts # Standard tsup config
Package Naming Convention
@tpmjs/reconciliation-match@tpmjs/feedback-themes@tpmjs/churn-risk-score@tpmjs/nps-analysis@tpmjs/ticket-categorize
Categories
- finance: reconciliation-match
- cx: feedback-themes, churn-risk-score, nps-analysis, ticket-categorize
Export Pattern
Each tool exports both named and default:
export const toolNameTool = tool({ ... });
export default toolNameTool;
Validation & Quality
All tools include:
- ✅ Input validation with error messages
- ✅ TypeScript interfaces for all data structures
- ✅ Comprehensive JSDoc comments
- ✅ Edge case handling
- ✅ Production-ready error handling
- ✅ Detailed tpmjs metadata in package.json
Usage Example
import { reconciliationMatchTool } from '@tpmjs/reconciliation-match';
import { streamText } from 'ai';
const result = await streamText({
model: yourModel,
tools: {
reconciliationMatch: reconciliationMatchTool,
},
// ... your config
});
Next Steps
To use these tools:
-
Build the packages:
pnpm --filter=@tpmjs/reconciliation-match... build pnpm --filter=@tpmjs/feedback-themes... build pnpm --filter=@tpmjs/churn-risk-score... build pnpm --filter=@tpmjs/nps-analysis... build pnpm --filter=@tpmjs/ticket-categorize... build -
Type-check:
pnpm --filter=@tpmjs/reconciliation-match type-check # ... repeat for other tools -
Publish to npm (when ready):
pnpm changeset pnpm changeset:version pnpm changeset:publish
Notes
- All tools use keyword-based heuristics for classification
- For advanced use cases, consider enhancing with AI model-powered analysis
- Categorization logic can be customized per organization
- All scoring algorithms use weighted factors that can be tuned
- Tools are designed to be composable with other TPMJS tools
Created: 2026-01-01 Author: AI Assistant Status: Production Ready