Act on every signal
Common Room captures signals and resolves them to people and accounts. Cargo enriches, scores, routes and acts on them, with the logic held as code.
Trusted by GTM teams at
Common Room sees the signal. Cargo decides what to do about it.
A signal is an input. Something still has to enrich the record, score it, decide who owns it and act.
| Cargo | ||
|---|---|---|
| Built for | Seeing activity across community, social and product | Deciding what to do about a signal |
| Identity | Resolves activity to people and accounts | Takes the resolved signal as an input |
| After the signal | Surfaces who is worth a conversation | Enriches, scores against your ICP, assigns and acts |
| GTM as code | Configured in the Common Room app | The workspace in TypeScript, in your git repo |
| Best when | You cannot see the signals yet | Every signal needs the same decision, whatever its source |
In short. Teams often run both: Common Room detects and resolves, and Cargo takes the resolved signal and runs the engine against it.
What a signal still needs
A signal is an input. These turn it into an action.
Enrichment waterfalls
Fill the fields a decision depends on before it runs.
EnabledEnrich inbound leadsSearch...4/4 nodesFilter5/5 statusesAll versionsAll batchesAll datesStartstart
Find emailfind_email
Enrich companyenrich_company
ICP fitscore_icpAda Lovelaceada@northwind.com
Northwind, 420 employees
82/100Grace Hoppergrace@contoso.com
Contoso, 1,200 employees
74/100Alan TuringNo email found, 0 credits
Globex, 3,400 employees
91/100Katherine Johnsonkatherine@initech.com
Running...DefaultScoring on your ICP
Each account gets a fit score and a readiness score from signals.
EnabledRoute inbound leadsSearch...2/2 nodesFilter5/5 statusesAll versionsAll batchesAll datesStartstart
ICP fitscore_icpAda Lovelace82/100Grace Hopper74/100Alan Turing91/100Katherine Johnson68/100Edsger Dijkstra55/100Mary Jackson77/100Claude Shannon86/100Barbara Liskov63/100DefaultSignals from any source
Every signal, whatever its source, runs through the same logic.
NorthwindSignals this weekAda Lovelace reacted to your post2h
Ada Lovelace commented on your post3h
Ada Lovelace viewed your profile1d
Northwind viewed your company page1d
Routing that knows the org
Territory, capacity, ownership and fallback, not tied to one CRM.
Revenue organizationNew territoryNew capacityMembersTerritoriesCapacitiesA group of members that shares incoming records. Weights and a fallback decide who is next.
Territories3 territoriesUnited StatesInbound from North AmericaFranceInbound from FranceEMEAEverything else in EuropeUnited StatesLabel*United StatesChoose a label to your territory
Color*Choose a color to represent your territory
DescriptionInbound from North AmericaChoose a description
Members*AMAlice Martin50SOSam Okoro50Add memberPick members you want to be part of your territory
Fallback MemberDCDana ColeThe member that will be used when other territory members are not available (e.g. Capacity reached).
SavePlays that fire on change
A signal lands, a play runs. Retried and traced.
Route inbound leadsSchedule
Type*ManualEnroll records manuallyReal-timeTrigger your play when new records are addedIntervalSchedule your play to run on a set interval (e.g., once per hour)CronSchedule your play using a cron expressionDependencySchedule after a play finished runningInterval*Every hourSyncs are scheduled in UTC
Conditions
FilterLifecycle stage is LeadANDEmail is not emptyAdd groupChanges
Mode*New records onlyOnly new records that match the conditions will be enrolled in the playNew and updated recordsNew and updated records that match the conditions will be enrolled in the playFullProcess all matching recordsCustomAdvanced modeChanges included*AddedUpdatedUnchangedEnrollment
Rule*Always enrollEnroll the record into a new play run every time the trigger fires for that recordEnroll onceOnly enroll each record once, even if the trigger fires multiple times for the same recordIf is not currently enrolledOnly enroll a record if it's not already in an active run, preventing concurrent runsSaveModelContacts
The model associated with this play. Each record within this model is eligible for enrollment in the play.
Enroll manuallySync nowBuilt by coding agents
Your coding agent changes it as diffs, over the CLI or MCP.
Account researcherDeployInstructionsResearch the account, score it against our ICP and write a two-line brief for the owner. Use our ICP definition from context, not your own.ActionsEnrich companyenrich_company
Search the webweb_search
Get companyhubspot_get_company
The building blocks of the agent. They are the actions the agent can take. The agent will use the actions to achieve the goal.
Advanced settingsClaude Sonnet 5
Research Northwind and tell me if it fits our ICP.Reasoned for a few secondsGet company0
Enrich company1
Search the web2
Northwind fits: 82/100. 420 employees, logistics, and two open SDR roles, which is the growth trigger in your ICP.
It sits in the United States territory, so the owner is Alice Martin. Lead with routing: their HubSpot assigns inbound by hand today.
Ask agent...
GTM as code, in your repo.
Your whole Cargo workspace is TypeScript in git: every change reviewed, planned and reversible.
- In your repoThe whole workspace, declared in TypeScript.
- Planned on every pull request
cargo-ai project planshows the diff. Merging deploys it. - Undone with git revertRevert the commit and the previous version deploys.
Written by your coding agent: Claude Code, Cursor or Codex.
import { defineMember, defineTerritory } from "@cargo-ai/cdk";const alice = defineMember("alice@acme.com");const dana = defineMember("dana@acme.com");// United States accounts go to Alice, Dana coversexport const unitedStates = defineTerritory("united-states", {label: "United States",members: [{ ref: alice, weight: 1 }],fallback: dana,});
When to choose which
Both products have a real job. The decision is which job you are hiring for.
- You cannot see the signals yet
- The activity happens in community, social or product
- Identity resolution across those surfaces is the gap
- Surfacing who is worth a conversation is enough
- Every signal needs the same decision, whatever its source
- Records should be enriched and scored before anyone acts
- Each signal should end with an owner and an action
- The logic should live in code a coding agent can change
Both true. Common Room is the better signal layer. Cargo is the better GTM engine. Teams often run both: Common Room detects and resolves, and Cargo runs the engine against the resolved signal.
Cargo vs Common Room, in short
“Essential. Innovative. Indispensable. Cargo let you build your unique growth engine, a much-needed solution in the market today.”
Guillaume Cabane · Co-Founder @HypergrowthBuild the self-driving GTM engine
Your coding agents build it on Cargo.Or our team builds, operates and improves it with you.

