Skip to content
synergia-yoshiPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Hermes

Hermes is a personal Silicon Valley startup intelligence bot for a Japanese startup founder. It gathers overseas startup signals every morning, scores them from a TTP perspective, and posts only high-value items to Slack.

What Hermes Watches

v1 sources:

  • Hacker News via Algolia: front page, Show HN, Ask HN, Launch HN
  • Product Hunt RSS, with optional GraphQL enrichment later
  • Techmeme RSS
  • TechCrunch RSS
  • YC Blog RSS
  • a16z News RSS
  • First Round Review articles RSS
  • Optional: GitHub Trending and Reddit RSS, disabled by default because they are less stable/noisier

Required Secrets

This repository is intended to be public. Never commit API keys or webhook URLs.

Public repository secret leaks can lead to immediate unauthorized API usage and Slack abuse. Store all secrets in GitHub repository secrets:

  • ANTHROPIC_API_KEY
  • SLACK_WEBHOOK_URL
  • PRODUCT_HUNT_TOKEN optional, only if Product Hunt GraphQL is enabled

For local testing, use .env only. .env is ignored by git. Commit .env.example, not .env.

GitHub Actions Status

The workflow lives at .github/workflows/hermes.yml.

  • Scheduled GitHub Actions delivery is paused.
  • The legacy workflow is retained as manual-only via workflow_dispatch.
  • Daily/weekly/monthly intelligence delivery has moved to Codex Automations so the legacy Anthropic API run does not spend API credits automatically.

Historical schedule notes:

  • Desired delivery was JST 7:00
  • GitHub Actions cron timezone is UTC
  • The prior cron was 7 22 * * *, which is 22:07 UTC on the previous day
  • Minute 0 was intentionally avoided to reduce top-of-hour congestion

Important GitHub Actions trap: scheduled workflows in public repositories can be automatically disabled if the repository has no push activity for 60 days. Mitigations:

  • Make a small config/docs update periodically.
  • Keep a separate daily Slack notification enabled as a heartbeat if scheduled GitHub Actions delivery is re-enabled.
  • If the heartbeat disappears, check whether GitHub disabled the scheduled workflow.

State Persistence

GitHub Actions runners are ephemeral. Local files disappear after each run unless committed.

Hermes stores delivered item IDs in state/seen.json. After each run, the workflow commits that file back to the repository using contents: write. This prevents duplicate delivery on later days without adding a database or paid service.

Cost Guardrail

Hermes defaults to Opus 4.8:

ANTHROPIC_MODEL=claude-opus-4-8
HERMES_DAILY_API_BUDGET_USD=1.50
MAX_CANDIDATES_PER_RUN=40
MAX_DELIVERIES_PER_RUN=4
TTP_SCORE_THRESHOLD=15
LLM_BATCH_SIZE=8
MAX_BODY_CHARS_PER_CANDIDATE=3000

The app estimates cost before each LLM batch and records actual usage from Anthropic responses. If the daily budget would be exceeded, Hermes stops and sends a Slack alert.

Local Setup

npm install
cp .env.example .env
npm run build
npm run dummy

npm run dummy does not call Anthropic and does not require Slack. It renders a preview of the C-format Slack digest using fixture data.

For a live dry run:

DRY_RUN=true npm start

If ANTHROPIC_API_KEY is absent, dry run uses mock scoring so you can verify source fetching and Slack formatting without spending API credits. If the key is present, dry run uses the real model but does not post to Slack or mutate state/seen.json.

For a real run, set ANTHROPIC_API_KEY and SLACK_WEBHOOK_URL, then:

npm start

Slack Format

Hermes uses format C:

  1. What should be copied or adapted in Japan
  2. TTP score and five-axis breakdown
  3. Why it works
  4. Japanese translation of the provided source body
  5. Source URL

Zero-match days still post "本日該当なし" so the Slack channel doubles as a heartbeat monitor.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages