Skip to content

[example] Renewal Tracker #29

@bnchrch

Description

@bnchrch

Overview

Scans your CRM for contracts expiring in the next 90 days, surfaces account health signals and last conversation topics, and creates a personalized renewal playbook for each account.

Input: CRM API token (HubSpot, Salesforce, or Pipedrive)
Output: Renewal playbook per account with health signals, key risks, last touch summary, and recommended next actions

APIs Required

  • CRM: HubSpot API or Salesforce REST API or Pipedrive API
  • LLM: Anthropic API

Folder Structure

Based on: output-dev-folder-structure skill

This workflow lives at src/workflows/renewal_tracker/:

  • workflow.ts — deterministic orchestration (no I/O, no Date.now(), no Math.random())
  • steps.ts — all HTTP, LLM, and external API calls
  • types.ts — Zod input/output schemas
  • prompts/ — LLM prompt templates (if needed)
  • scenarios/ — test input JSON files

Scenario

Based on: output-dev-scenario-file skill

Create src/workflows/renewal_tracker/scenarios/happy_path.json with a realistic sample input, e.g.:

{
  "crmType": "hubspot",
  "apiToken": "pat-na1-xxxx"
}

Test Plan

Based on: output-workflow-run skill

  1. Start the dev environment:
    npx output dev
  2. Add your CRM API credentials:
    npx output credentials edit
    # Add: hubspot.api_key, salesforce.api_key, or pipedrive.api_key
  3. Run with the scenario:
    npx output workflow run renewal_tracker --scenario happy_path
    Or with inline input:
    npx output workflow run renewal_tracker --input '{"crmType": "hubspot", "apiToken": "pat-na1-xxxx"}'
  4. Confirm the output matches the expected schema and content.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions