Agents
PulseAd is run by agents at three layers. A new product leader should hold this shape before the details:
- In-app agents — the 10 agents a user opens in the Pulson app under
/agent/..., grouped into Planning, Reporting, and Campaign. - The chat engine — when a user talks to Pulson, a graph of agents
(router → specialist → composer) answers, in
ai-api. - Autonomous back-office agents — 21 scheduled/orchestrated agents in
pulsead-agentsthat monitor accounts, rebalance budgets, write reports, and run keyword automation, mostly on cron — these power what the in-app agents display.
Two facts that cut across everything:
- Models split by service.
ai-api(chat, reports) runs on OpenAI GPT‑5 family models.pulsead-agents(autonomous) runs on AWS Bedrock — Claude Haiku 4.5 by default, Claude Sonnet 4.6 for the writer/decision agents. The Snowflake semantic layer’s Cortex Agent also uses Sonnet 4.6. - Reads are free; Amazon writes are hard-gated. Real Amazon Ads budget/bid
writes are gated to a single pilot brand (
KISS) today, and every write path is behind approval or an explicit auto-approval toggle. See Capabilities.
1. In-app agents (what the user sees)
Section titled “1. In-app agents (what the user sees)”Ten agents, in three families. “Default” is whether it’s on for a brand without any setup.
| Agent | Family | Reads | Can change Amazon? | Default |
|---|---|---|---|---|
| News & Market Intelligence | Planning | Exa.ai news/search (8 marketplaces) | No | Off (per subscription) |
| Biweekly Marketing Proposal | Planning | Recent performance + market context | No | Active (managed tier) |
| Product Discovery | Planning | Category / brand / ASIN / keyword signals | No | Active |
| Pulson Weekly Report | Reporting | Snowflake performance (managed/published) | No | Active (managed tier) |
| Weekly Report Generator | Reporting | Snowflake performance | No (suggestions only) | Active |
| Monthly Report Generator | Reporting | Snowflake performance | No (suggestions only) | Active |
| Daily Brief Generator | Reporting | Snowflake performance | No (suggestions only) | Active |
| AMC Builder | Campaign | Amazon Marketing Cloud | No (read-only) | Active |
| Campaign Optimizer | Campaign | Ads campaign structure/metrics | Yes — propose → chat-approve | Active |
| Budget Automation | Campaign | Snowflake pacing/targets | Yes — autonomous under policy | Off (until a cycle runs) |
All 10 are defined in one registry (pulsy-frontend/src/core/agent/agent-registry.ts).
2. The chat engine (ai-api, live)
Section titled “2. The chat engine (ai-api, live)”When a user types into Pulson, Action Chat answers — a LangGraph state machine,
rebuilt each turn: router → one specialist sub-agent → composer.
| Agent | Role | Reads/writes | Model |
|---|---|---|---|
| Router | Classifies the message (query / insight / action / task) and resolves context | Read-only | gpt-4.1-mini |
| Query sub-agent | Answers about your own performance/sales/budget from Snowflake; draws charts | Read-only | gpt-5.5 |
| Insight sub-agent | External/market lookups — competitors, keywords, ASIN detail (web search) | Read-only | gpt-5.5 |
| Action sub-agent | The only agent that can change an Amazon account — bids/budgets/keywords/targets, custom reports, AMC, optimize-cycle, diagnosis | Write (gated) | gpt-5.5 / gpt-5 |
| Task sub-agent | Manages the internal inbox & tasks | Internal writes only | gpt-5-mini |
| Composer | Writes the final reply (“Your name is Pulson”) | Read-only | gpt-5.5 |
| Memory Agent | Background — observes each turn, builds durable brand memory (16-card classifier) | Internal writes only | gpt-5-nano |
Two adjacent chat surfaces: Pulson / “Growth Twin” (the live brand-facing
chat, /pulsy/chats) and PSM (the original engine, legacy/frozen — see
the timeline).
3. Report & diagnostic engines (ai-api)
Section titled “3. Report & diagnostic engines (ai-api)”| Agent | What it does | Reads/writes |
|---|---|---|
| Dashboard Report Agent | The real report engine — a 3-phase pipeline (fetch data → plan directives → render KPI bands / cards / charts / tables). Powers the Reporting generators. | Read-only (writes report rows) |
| Reporter Agent | Regenerates a single report section on request | Writes report rows |
| Performance Diagnose | Finds declining SP/SB/SD campaigns, root-causes them, recommends 1–5 actions | Read-only — recommends, never applies |
| News Intelligence | Brand/market/competitor news briefings via Exa.ai (not an LLM chat agent) | Read-only |
| Search-term segmentation | Batch-classifies Amazon search terms into segments + brand recognition | Read-only · Gemini 2.5 Flash-Lite (the one non-OpenAI model in ai-api) |
4. Autonomous back-office agents (pulsead-agents, 21)
Section titled “4. Autonomous back-office agents (pulsead-agents, 21)”These run on schedules or orchestration in the AWS Bedrock/AgentCore layer. They
do the heavy lifting; the in-app agents mostly display their output. Every
proposer writes to an approval queue; only an executor acts, and only after
approval (and the KISS-only live gate).
Campaign Health — daily monitor → diagnose → fix loop:
- monitoring — daily anomaly detection (ROAS drops, cost surges, Buy Box loss). Read-only. ~07:00 KST Mon–Fri.
- diagnoser — root-causes anomalies, proposes structural actions (pause, audit). Proposer.
- rtb_analyst — RTB rule-group analysis, proposes bid/budget tuning. Proposer.
- executor — applies approved actions (bid/budget/pause). Write, manual-only.
Optimize Cycle — automated budget rebalancing (the engine behind Budget Automation), 1-min schedule poller, two human gates:
- input_checker (P0) → monitor (P2) → rebalancer (P3, proposer) → approval → optimizer (P4, proposer) → approval → executor (P6, write) → verifier (P7, write).
Weekly Report pipeline — the engine behind Pulson Weekly Report:
- data_preparer ∥ context_builder → report_writer (Sonnet 4.6) → approve / reject→auto-rewrite → publisher (HTML to S3 + Slack).
Ads Scheduling — natural-language scheduled changes:
- ads_scheduler (NL → scheduled task) → ads_executor (runs due tasks every minute; write, gated).
AMC — the engine behind AMC Builder:
- router → advisor (answers AMC questions) / writer (generates & saves AMC SQL; does not execute).
Proactive Keyword — alert-driven proposers:
- keyword_harvester (proposes profitable exact-match keywords) and waste_keyword_pauser (proposes pausing zero-click spend). Both propose → approval card → gated mutation.
5. Operator tooling (separate)
Section titled “5. Operator tooling (separate)”AOP / aop-hermes is a separate operator-facing agent CLI for PulseAd staff —
not part of the Pulson product, and not behind the propose→approve gates (its
~45 Amazon Ads write actions are guarded only by per-tool dry-run). See the
name map and Capabilities. It’s listed
here for completeness; it isn’t one of the in-app agents.
How the layers connect
Section titled “How the layers connect”The in-app agent you click is usually a window onto a backend engine:
| In-app agent | Powered by |
|---|---|
| Budget Automation | Optimize Cycle (6-agent pipeline) |
| Campaign Optimizer | Action Chat’s Action sub-agent → ads_* mutation tools |
| AMC Builder | AMC agents (router/advisor/writer) |
| Weekly / Monthly / Daily Report | Dashboard Report Agent |
| Pulson Weekly Report | Weekly Report pipeline (published by ops) |
| News & Market Intelligence | News Intelligence service (Exa.ai) |
Read the per-family pages for the full capability of each in-app agent.