How calls compose
A Workflow promises its steps run, an agent task that its output passes, and a Service the outcome; each is one priced call.
- Deepens
- Workflow, Evaluator, Outcome Contract
- Workflows
- 21
- Agent tasks
- 14
- Services
- 5
- First call
Keyword.map
Find 20 winnable keywords for salesbuilder.dev, spend up to $1, and show me the plan first.
curl -X POST "https: //api.sb/ leaseline.app/ keywords/ map? mode= try" \
-H "Authorization: Bearer $SB_TOKEN" \
-H "Content-Type: application/ json" \
-d '{"goal": "Find 20 winnable keywords for salesbuilder.dev.", "budget": {"amount": 1, "currency": "USD"}}'
npx startup-builder do Keyword.map --try --data '{"goal": "Find 20 winnable keywords for salesbuilder.dev.", "budget": {"amount": 1, "currency": "USD"}}'
{
"name": "do",
"arguments": {
"mode": "try",
"code": "return await $.Keyword.map({ goal: 'Find 20 winnable keywords for salesbuilder.dev.', budget: { amount: 1, currency: 'USD' } })"
}
}
import { $ } from 'startup-builder'
const result = await $.try.Keyword.map({ goal: 'Find 20 winnable keywords for salesbuilder.dev.', budget: { amount: 1, currency: 'USD' } })
Keyword.findon 5 seeds, with search-box suggestions where the seeds come back thin.- Shortlist the terms a buyer would type.
Keyword.measuredifficulty for the shortlist, in one batch.Keyword.searchfor the top 25.Domain.benchmarkfor the top 5 domains on those results pages.- Score each term on difficulty, the domains it must beat and intent.
Planning is free. You see the plan and its price before anything runs.
Decisions
- D1, rows 8 to 16switch from related terms to phrase match and search-box suggestions.Related terms had no reading for founder phrasing such as “how to get first customers”. Phrase match and suggestions returned 205 rows and 52 suggestions for the same words.
- D2, row 17measure the 63-term shortlist in one batch.Difficulty is priced by the batch of up to 1,000 terms, so 63 terms cost one batch. The 19 terms with no reading cost nothing.
- D3, row 78read salesbuilder.dev’s own authority as the baseline.At an authority of 1, a term is winnable only where page one already holds weak or user-written pages, which is what the soft slots column counts.
By call
| Call | Calls | Cost | Outcomes |
|---|---|---|---|
Keyword.find | 10 | $0.004 | 8 listed · 2 no reading |
Keyword.find({ mode: 'suggestions' }) | 6 | $0.0051 | 6 listed |
Keyword.measure | 1 | $0.022 | 1 measured |
Keyword.search | 28 | $0.0042 | 28 read |
Domain.benchmark | 33 | $0.08861 | 33 read |
| Spent | 78 | $0.12 | of $1.00, $0.88 left |
Agent time 6 minutes, in one sitting.
Every call, 78 rows
Loading the rows.
The reference for every call on this page is Compose your own.
Three promises: the steps, the output, the outcome
A Workflow promises its steps run. An agent task also promises its output passes an Evaluator, or it is redone or free. A Service promises the outcome under an Outcome Contract.
The kind comes from the promise, never from the steps. Build a verified list asks a model whether each company fits, and still promises only that its steps run. Booked first calls runs that same Workflow inside it, and promises held meetings.
Each kind is built from the one below
Read down: a Service orders agent tasks, an agent task reads from a Workflow, and a Workflow's steps are Data calls. Each example carries its own price, and cost adds up the chain.
| Kind | It promises | Built from | Example, at its own price |
|---|---|---|---|
| A Service, on AI-delivered Services | The outcome arrives, or the remedy applies. | An agent task | Booked first calls ($90 a held meeting) |
| An agent task, on Agents | The task passes, or it is redone or free. | A Workflow | Personal first touch (about $1.33 per 100 people) |
| A Workflow, on Headless SaaS | The tool works. | A Data call | Build a verified list (about $1.38 per 100 checked emails) |
| A Data call, on Data | The records are true. | None. | Organization.find (about 20¢ per 100 rows) |
Control: you, a goal, a Play or a strategy
Control is the other axis. Any kind can be called by you, planned by a goal, ordered every week by a Play, or chosen by your strategy.
| Who picks the next call | What it is | What it promises | Example |
|---|---|---|---|
| You | One call of any kind | That kind’s promise | $.Audience.build({ icp, |
| A goal | An agent plans the calls inside your budget | It stops at the budget, with a receipt | Keyword.map with a goal |
| A Play | The same calls every week against one number | Its Metric moves, or it pauses | Cold email |
| A strategy | Which Plays get your hours and cash | It names the Plays, and when to switch | Hands-on |
Every Workflow, agent task and Service, by stage
Each is one call at the price on its card, at the size the card states. Your time is what it asks of you: inputs, picks and review.
Get found
| Composition | Kind | Price | Your time | Plays that order it |
|---|---|---|---|---|
| AI answer audit | Workflow | About 98¢ per 20 questions | 10 minutes | 4 Plays |
| Answer page per question | Agent task | About 12¢ a page | 6 minutes | 3 Plays |
| Answer threads | Agent task | About $2.30 per 10 answers | 12 minutes | 5 Plays |
| Competitor gap | Workflow | About $1.44 per 3 rivals | 10 minutes | 4 Plays |
| Directory submissions | Workflow | About $13.04 per 40 directories | 25 minutes | 6 Plays |
| Index the site | Workflow | Free | 5 minutes | 5 Plays |
| Keyword opportunity map | Workflow | About 87¢ per 300 terms | 10 minutes | 6 Plays |
| Launch day | Agent task | About $1.08 a launch | 140 minutes | 3 Plays |
| Launch kit | Workflow | About 0.16¢ per 8 sites | 15 minutes | 7 Plays |
| Link pitches | Agent task | About 46¢ per 40 pitches | 20 minutes | 2 Plays |
| Listing check | Workflow | About 0.8¢ per 40 listings | 2 minutes | 3 Plays |
| Monthly search content | Agent task | About $2.46 per 10 pages | 25 minutes | 2 Plays |
| Ranked page | Service | $25 a ranked page | 35 minutes | 5 Plays |
| Search readout | Workflow | About 98¢ per 50 terms | 5 minutes | 3 Plays |
| Weekly readout | Workflow | Free | 7 minutes | 6 Plays |
Start conversations
| Composition | Kind | Price | Your time | Plays that order it |
|---|---|---|---|---|
| Ad kit | Agent task | About 38¢ an angle | 10 minutes | 9 Plays |
| Ad test setup | Workflow | Free | 10 minutes | 8 Plays |
| Booked first calls | Service | $90 a held meeting | 40 minutes | 5 Plays |
| Build a verified list | Workflow | About $1.38 per 100 checked emails | 8 minutes | 7 Plays |
| Buying-trigger feed | Workflow | About $1.55 a week | 7 minutes | 3 Plays |
| Demand generation | Service | $40 a qualified lead | 75 minutes | 5 Plays |
| Founder posts | Agent task | About 6.2¢ per 3 posts | 12 minutes | 6 Plays |
| List refresh | Workflow | About $2.30 per 500 rows | 3 minutes | 3 Plays |
| Lookalikes | Workflow | About 36¢ per 100 companies | 10 minutes | 3 Plays |
| Message test | Agent task | About 18¢ per 4 angles | 20 minutes | 7 Plays |
| Personal first touch | Agent task | About $1.33 per 100 people | 15 minutes | 13 Plays |
| Pick who to sell to first | Workflow | About 91¢ per 3 customer sentences | 20 minutes | 2 Plays |
| Post-engager harvest | Workflow | About 56¢ per 200 people | 7 minutes | 7 Plays |
| Verified list with a bounce warranty | Service | 4¢ a contact | 8 minutes | 4 Plays |
| Who is visiting | Workflow | About 1.2¢ a visit | 4 minutes | 2 Plays |
Make the sale
| Composition | Kind | Price | Your time | Plays that order it |
|---|---|---|---|---|
| Account brief | Agent task | About 9.3¢ a brief | 5 minutes | 16 Plays |
| Answer every inbound | Agent task | About 1.1¢ an inbound | 20 minutes | 5 Plays |
| Inbound routing | Workflow | About 0.4¢ an inbound | 11 minutes | 8 Plays |
| Sales closing | Service | $268.20 a signed order on the $1,788 plan | 40 minutes | 6 Plays |
Keep customers
| Composition | Kind | Price | Your time | Plays that order it |
|---|---|---|---|---|
| Save and win back | Agent task | About 0.7¢ a customer | 13 minutes | 1 Play |
| Silence watch | Workflow | Free | 7 minutes | 3 Plays |
Grow each customer
| Composition | Kind | Price | Your time | Plays that order it |
|---|---|---|---|---|
| Upgrade note at the limit | Agent task | About 0.65¢ a note | 7 minutes | 7 Plays |
Earn referrals
| Composition | Kind | Price | Your time | Plays that order it |
|---|---|---|---|---|
| Champion moved | Workflow | About 42¢ per 200 champions checked | 8 minutes | 2 Plays |
| Referral ask | Agent task | About 2.4¢ per 5 asks | 10 minutes | 3 Plays |
| Review requests | Workflow | About 0.05¢ an ask | 6 minutes | 4 Plays |
Every one keeps the same edges
Whatever its kind, a composed call behaves the same way at the edges, so an agent that can call one can call them all.
- Priced before it runs.
tryreturns the plan and the most each step can cost, and spends nothing. - One Event. It emits one Event named for its Verb, such as
Audience.built, carrying each step's cost. - Idempotency keys. Each step's key is the parent key plus the step and the item, so a retry never charges, sends or posts twice.
- Retries, then fallback. A failed step retries three times, then a data step tries its next route (Data).
- A cost cap, then
resume. It stops before a step would crossmaxCost, and returns what it has with aresumelink. - Skipped, with reasons. One item that fails lands in
skippedwith its reason, and the rest of the call goes on.
Some return in minutes, some wait weeks
How long a call takes is a third question. A call that waits on the world, such as an index or a reply, runs as send and costs nothing while it waits.
| Kind | Returns in minutes | Waits for days or weeks |
|---|---|---|
| Workflow | Audience.build: 50 checked emails in about 21 minutes | Site.index: read daily until each key page is held |
| Agent task | Page.answer: one page drafted and reviewed | Prospect.reach: first touches at the inbox pace, then every reply |
| Service | Audience.deliver: the list in about 20 minutes | Page.rank: 120 days to the top 20 |
Compose your own from the calls you use
Chain any calls into one call of your own, and name it on a hub Noun in your own namespace. Your agent, API, CLI and MCP server all get it, priced before it runs.
import { $, workflow } from 'startup-builder'
export default workflow({
name: 'hiring-brokers',
verb: 'Audience.buildHiring',
maxCost: 3,
execute: async (ctx) => {
const hiring = await ctx.step('hiring', () => $.Organization.find({ where: { hiringFor: ['leasing coordinator'] }, maxCost: 0.1 }))
return ctx.step('list', () => $.Audience.build({ from: hiring, size: 50, maxCost: 2.5 }))
},
})Add grade: and it deploys as an agent task. Add contract with its done Event, price and remedy, and it deploys as a Service. Compose your own covers each.