Your GTM belongs in gitRegister
Blog

Keep Company and Competitor Context Fresh Every Week

16 Oct
6min read

To keep company and competitor context fresh, read the same pages every week (your own site, each competitor’s pricing and changelog, and the news about all of you), write each page to a file in your go-to-market repository, let git diff say what changed, and land the changes as one dated note in a pull request a human merges. The web capture cookbook deploys that as one Claude Code harness agent on a Monday cron, with two fixed reads that cost at most 0.625 credits a run.

The problem: the context your agents read (positioning, offerings, the ICP, who you compete with) goes stale the week after someone writes it, and nobody notices a competitor’s new pricing tier until a prospect mentions it. An agent with stale context writes confident copy about last quarter. For why context matters to agents at all, see contextualizing go-to-market agents.

How it works, end to end #

  1. Two fixed reads. One parallel.extract call with fullContent reads every listed URL in full: your pages (home, pricing, customers, careers, blog, changelog by default) and each competitor’s watched pages. One parallel.createTask call on the lite processor asks what you and each competitor announced, launched or were covered for since the last merged read. The commands are spelled out in the agent’s prompt, so every week reads the web the same way.
  2. Code writes the files, not the agent. A fixed node -e line writes each page to cadence/log/raw/web/pages/<page>.md or cadence/log/raw/web/competitors/<name>/<page>.md, and the news to cadence/log/raw/web/news/<date>.json. No page text passes through the model on its way to disk, so a diff is a change on the site, not a retyping.
  3. Git says what changed. git diff against the default branch lists the pages that moved; a news URL that appears in no earlier file is new. The agent keeps what a reader would want (a new offering, a pricing change, a new customer, a repositioned headline) and drops footer dates and duplicates.
  4. The first run seeds, every later run adds. The first run fills every empty context/ domain: global/ (positioning, value proposition, offerings), icp/ as an inferred profile with at least one disqualifier, alternative/, client/, proof/ and signal/. After that, each week adds one insight/<date>-web.md, one tagged line per finding, plus a file for a newly named customer or competitor. It never edits an existing file: a contradiction becomes a proposal in the pull request body.
  5. Every sentence carries an evidence tag. [R: <url>] when a page states it, [I: <from what>] when inferred, [TR: <what would settle it>] when unknown. Public pages are one source, so nothing is stated with the conviction of a deal.
  6. One pull request, or none. The first run always opens one, because its files are the baseline. A quiet week opens none, and the next news window starts at the last merged read, so nothing is skipped. After a merge, the next cargo-ai project deploy syncs context/ into the workspace context.

Run it #

shellscript
npm install -g @cargo-ai/cli
cargo-ai login --email you@company.com      # emailed code, no browser, 100 free credits, no card

cargo-ai project cookbook view web-capture
cargo-ai project init my-gtm --cookbook web-capture && cd my-gtm && npm install
# already have a Cargo project? from its root:
cargo-ai project add cookbook/web-capture

Then set three constants in infra/agents/web-scribe.prompt.ts (under infra/web-capture/ once installed): DOMAIN (your bare domain; the agent refuses to run on the placeholder), PAGES (your real sections, from the sitemap) and COMPETITORS (each competitor’s pricing and changelog URLs; it ships empty). Set languageModel, then cargo-ai project plan (one agent, two bound connectors, one folder) and cargo-ai project deploy. Run the first one by hand:

shellscript
cargo-ai ai message create --agent-uuid <uuid> \
  --parts '[{"type":"text","text":"Run the web capture. Follow your system prompt exactly."}]'

What it needs and what it costs #

NeedsWhy
An authorized GitHub connectorThe agent’s only write path: a branch and a pull request
An authorized Anthropic connectorThe harness runs on Cargo’s model proxy, billed to it
A repository with context/ and cadence/The shape cargo-ai project init scaffolds

No credential in .env, no CRM, no Slack. The reads are priced in code:

ReadCredits
parallel.extract0.025 per URL, a 404 included
parallel.createTask, lite0.125 per run
One week at the 20-URL maximum0.625

parallel.extract takes at most 20 URLs per call, which is the cookbook’s cap across your pages and every competitor’s. The six default pages with no competitor cost 0.275 credits a week. The other cost is model usage for the harness run, which scales with how much changed. Switching the news question to the base processor doubles its price to 0.25; higher processors cost far more, which is why the prompt keeps lite.

What it will not do #

  • It does not read a CRM, calls, an inbox or Slack. Verifying the ICP it seeds against won and lost deals is the monthly win-loss review.
  • It does not edit, rename or delete an existing file under context/, so what a human corrected stays corrected.
  • It does not write persona/ or jtbd/: job titles and jobs come from evidence it does not read.
  • It does not write the workspace context directly, contact anyone or merge its own pull request.
  • It does not watch target accounts. News about accounts you sell to is monitoring buying signals.

The cookbook is marked to-be-approved: not yet deploy-verified against a live workspace. Read the plan before you deploy and walk its acceptance list after the first run.

Frequently asked questions #

AurelienOct 16, 2026

Give your agents a runtime

Bring the agents you have.Start free, deploy in one command.