Kinage

Automatically ingests market intelligence from 55 RSS and LinkedIn sources, scores each article for relevance to Kinage ICP domains, prunes to the top 300 signals, and publishes the ranked feed to the live dashboard.

Runs Monday and Thursday at 6am UTC via GitHub Actions (.github/workflows/biweekly-ingest.yml)

  1. Fetches articles from all 55 configured sources
  2. Filters to US-only content published within the last 6 months
  3. Scores each article using OpenAI embeddings compared against 11 ICP domain definitions
  4. Applies intersection bonuses when articles touch multiple key domains
  5. Applies time decay and source authority weighting
  6. Prunes corpus to top 300 files by score
  7. Builds ranked_chunks.json and curated_signals.json
  8. Extracts named professionals from top articles using Claude
  9. Uploads output to Vercel Blob
  10. Pushes to GitHub which triggers Vercel auto-deploy
Signal Feed dashboard (kinagehal.com/dashboard)HAL Signal Contacts tabWeekly email digest
OpenAI APIAnthropic APIGitHub ActionsVercel Blob
OPENAI_API_KEYANTHROPIC_API_KEY

Clay sends enriched contact data to the platform, Claude classifies each contact ICP role, and the result is written back to HubSpot automatically.

  1. Clay enriches a contact with name, job title, company, and LinkedIn URL
  2. Clay fires a POST request to https://kinagehal.com/api/clay/enrich-callback
  3. The endpoint calls Claude Haiku with the contact data and a classification prompt
  4. Claude returns one of: DMM, Estate Planner, Elder Care Advisor, Partner, Other, Unknown
  5. The endpoint writes icp_role, icp_confidence (Inferred), last_enriched_date, jobtitle, and hs_linkedin_url back to HubSpot
HubSpot contact recordsHubSpot Contacts tabNeeds Enrichment tab
Anthropic API (Claude Haiku)HubSpot v3 API
ANTHROPIC_API_KEYHUBSPOT_API_TOKEN
  • Clay subscription plan and provider configuration to be confirmed

HubSpot is the system of record for all contact and deal data. The platform reads from and writes to HubSpot in real time.

HubSpot Contacts tabNeeds Enrichment tabCRM Activity page
HUBSPOT_API_TOKEN
HUBSPOT_API_TOKEN
  • No contacts should be written to HubSpot without a validated workflow approved by Rick and Roger
  • Portal ID: 244850752
  • Custom properties: icp_role (DMM/Estate Planner/Elder Care Advisor/Partner/Other/Unknown), influence_tier (A/B/C/Unscored), lead_score (Number), social_score (Number), last_enriched_date (Date), icp_confidence (Confirmed/Inferred/Unknown), hs_linkedin_url (existing field)

Automatically emails the top 10 signals from the latest pipeline run to the full GTM team every Monday morning.

Every Monday at 9am UTC (cron: 0 9 * * 1)

  1. Cron triggers the digest endpoint on Monday at 9am UTC
  2. Pulls the top 10 signals from the latest ranked_chunks.json in Vercel Blob
  3. Formats an HTML email with domain tag, title, AI summary, and article link for each signal
  4. Sends via Mailgun from digest@alerts.kinage.co
  5. Footer includes a View full dashboard button linking to kinagehal.com
Mailgun APIVercel Blob
MAILGUN_API_KEY
  • Recipients: Lapo, Ben, Rick, Alex, Roger
  • Sending domain: alerts.kinage.co

Allows team members to mark any signal as Reviewed, Outreach sent, or Not relevant directly on the dashboard. Status persists across all sessions and devices.

  1. User clicks a status button on any signal card
  2. The status is written to Vercel Blob at signal_statuses.json
  3. On next load the dashboard reads from the same blob and restores all statuses
  4. The last synced bar updates to reflect review progress
Vercel Blob
  • Blob URL: gmfi9pr14tuzujww.public.blob.vercel-storage.com/signal_statuses.json
  • Status data is public read. Do not store sensitive information in signal statuses.

Claude reads the top articles from each pipeline run and extracts named professionals who are mentioned or quoted. These appear on the HAL Signal Contacts tab as potential outreach targets.

  1. After scoring, the pipeline sends the top articles to Claude
  2. Claude identifies named professionals, their role, organisation, and context
  3. Extracted contacts are stored in the pipeline output and served via the contacts page API
  4. Each contact card shows name, role, company, why they appeared, and ICP fit assessment
  5. Add to HubSpot button is present but gated pending workflow approval from Rick and Roger
HAL Signal Contacts tab on the Contacts page
Anthropic API (Claude)Vercel Blob
  • Add to HubSpot workflow requires approval from Rick and Roger before activation
  • Contacts extracted: 29 named persons across 18 articles (last pipeline run)