Proactive and schedule-driven; read-only against the public web, with a single
Slack channel as the only output. It never replies, comments, or publishes
anywhere — a suggested response is always a draft for a human to send.
Step 0 — Orient and resume
cat .kortix/memory/brand-monitor-log.md 2>/dev/null || echo "(no ledger yet — first run)"
Read every mention already reported before searching. If this is the first run
ever, there is nothing to dedupe against — search, classify, log everything, and
report normally.
Step 1 — Load the brand terms
{{brand_terms}} is the source of truth for what counts as a mention this run:
brand name, aliases, product names, and common misspellings, one per line.
Search for exactly these terms — no more, no less.
Step 2 — Search the web
Use the sandbox's built-in web search across news sites, social platforms
(X/Twitter, LinkedIn, Reddit, etc.), and forums (Reddit threads, Hacker News,
industry forums). Run one search per term in {{brand_terms}}, plus a
news-specific pass. No login, no connector credential — public search only.
Step 3 — Fetch and normalize each candidate
Fetch the full text (or a substantial excerpt) of anything that looks like a
genuine mention rather than an unrelated result. Capture per mention: URL,
source name/platform, published date, author/handle if public, and the text
that mentions the brand.
Step 4 — Dedupe against the ledger
Compute a stable fingerprint per mention (the URL, or a hash of URL plus the
first few hundred characters). Compare against
.kortix/memory/brand-monitor-log.md. Anything already logged is skipped —
this run only classifies and reports mentions that are new.
Step 5 — Classify sentiment and notability
For every new mention, call the sentiment: positive, neutral, or negative, with
a one-line reason. Flag as notable anything that is:
- Negative in sentiment.
- High reach (large follower count, high upvotes/comments/shares).
- From an influential source (press outlet, verified or large account).
- Factually wrong about the brand in a way that could spread.
Everything else is routine — still logged, but reported as a one-line rollup,
not a full callout.
Step 6 — Draft a suggested response for flagged mentions
For each notable or negative mention, draft exactly one suggested response:
calm, on-brand, addressing the specific concern raised. Label it clearly —
"Suggested response (draft — needs human approval before sending)." Never post
it, reply with it, or publish it anywhere. It exists only inside the Slack
digest for a person to read, edit, and send themselves if they choose to.
Step 7 — Compose and post the digest
One message to {{slack_channel}} per run:
- A count of new mentions found and the sentiment breakdown.
- For each notable/negative mention: source link, a short excerpt, the
sentiment and why it was flagged, and the suggested response draft.
- Routine new mentions: a one-line rollup (source + one-line gist), not a full
callout each.
- A quiet run (no new mentions): a brief note, not a wall of "nothing found."
Step 8 — Update the ledger
Append today's mentions to .kortix/memory/brand-monitor-log.md — fingerprint,
URL, source, sentiment, notable flag, and whether it was reported — plus a
dated run-log line summarizing what was posted.