Skip to content

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.

Workflows
21
Agent tasks
14
Services
5
First call
Keyword.map
Keyword.map
You, to your agent

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' } })
  1. Keyword.find on 5 seeds, with search-box suggestions where the seeds come back thin.
  2. Shortlist the terms a buyer would type.
  3. Keyword.measure difficulty for the shortlist, in one batch.
  4. Keyword.search for the top 25.
  5. Domain.benchmark for the top 5 domains on those results pages.
  6. Score each term on difficulty, the domains it must beat and intent.
Estimate$0.29 of $1.00

Planning is free. You see the plan and its price before anything runs.

Try mode reads, stores nothing and spends nothingAPI referenceIts Nouns

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.

KindIt promisesBuilt fromExample, at its own price
A Service, on AI-delivered ServicesThe outcome arrives, or the remedy applies.An agent taskBooked first calls ($90 a held meeting)
An agent task, on AgentsThe task passes, or it is redone or free.A WorkflowPersonal first touch (about $1.33 per 100 people)
A Workflow, on Headless SaaSThe tool works.A Data callBuild a verified list (about $1.38 per 100 checked emails)
A Data call, on DataThe 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 callWhat it isWhat it promisesExample
YouOne call of any kindThat kind’s promise$.Audience.build({ icp, titles, size: 100 })
A goalAn agent plans the calls inside your budgetIt stops at the budget, with a receiptKeyword.map with a goal
A PlayThe same calls every week against one numberIts Metric moves, or it pausesCold email
A strategyWhich Plays get your hours and cashIt names the Plays, and when to switchHands-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

CompositionKindPriceYour timePlays that order it
AI answer auditWorkflowAbout 98¢ per 20 questions10 minutes4 Plays
Answer page per questionAgent taskAbout 12¢ a page6 minutes3 Plays
Answer threadsAgent taskAbout $2.30 per 10 answers12 minutes5 Plays
Competitor gapWorkflowAbout $1.44 per 3 rivals10 minutes4 Plays
Directory submissionsWorkflowAbout $13.04 per 40 directories25 minutes6 Plays
Index the siteWorkflowFree5 minutes5 Plays
Keyword opportunity mapWorkflowAbout 87¢ per 300 terms10 minutes6 Plays
Launch dayAgent taskAbout $1.08 a launch140 minutes3 Plays
Launch kitWorkflowAbout 0.16¢ per 8 sites15 minutes7 Plays
Link pitchesAgent taskAbout 46¢ per 40 pitches20 minutes2 Plays
Listing checkWorkflowAbout 0.8¢ per 40 listings2 minutes3 Plays
Monthly search contentAgent taskAbout $2.46 per 10 pages25 minutes2 Plays
Ranked pageService$25 a ranked page35 minutes5 Plays
Search readoutWorkflowAbout 98¢ per 50 terms5 minutes3 Plays
Weekly readoutWorkflowFree7 minutes6 Plays

Start conversations

CompositionKindPriceYour timePlays that order it
Ad kitAgent taskAbout 38¢ an angle10 minutes9 Plays
Ad test setupWorkflowFree10 minutes8 Plays
Booked first callsService$90 a held meeting40 minutes5 Plays
Build a verified listWorkflowAbout $1.38 per 100 checked emails8 minutes7 Plays
Buying-trigger feedWorkflowAbout $1.55 a week7 minutes3 Plays
Demand generationService$40 a qualified lead75 minutes5 Plays
Founder postsAgent taskAbout 6.2¢ per 3 posts12 minutes6 Plays
List refreshWorkflowAbout $2.30 per 500 rows3 minutes3 Plays
LookalikesWorkflowAbout 36¢ per 100 companies10 minutes3 Plays
Message testAgent taskAbout 18¢ per 4 angles20 minutes7 Plays
Personal first touchAgent taskAbout $1.33 per 100 people15 minutes13 Plays
Pick who to sell to firstWorkflowAbout 91¢ per 3 customer sentences20 minutes2 Plays
Post-engager harvestWorkflowAbout 56¢ per 200 people7 minutes7 Plays
Verified list with a bounce warrantyService4¢ a contact8 minutes4 Plays
Who is visitingWorkflowAbout 1.2¢ a visit4 minutes2 Plays

Make the sale

CompositionKindPriceYour timePlays that order it
Account briefAgent taskAbout 9.3¢ a brief5 minutes16 Plays
Answer every inboundAgent taskAbout 1.1¢ an inbound20 minutes5 Plays
Inbound routingWorkflowAbout 0.4¢ an inbound11 minutes8 Plays
Sales closingService$268.20 a signed order on the $1,788 plan40 minutes6 Plays

Keep customers

CompositionKindPriceYour timePlays that order it
Save and win backAgent taskAbout 0.7¢ a customer13 minutes1 Play
Silence watchWorkflowFree7 minutes3 Plays

Grow each customer

CompositionKindPriceYour timePlays that order it
Upgrade note at the limitAgent taskAbout 0.65¢ a note7 minutes7 Plays

Earn referrals

CompositionKindPriceYour timePlays that order it
Champion movedWorkflowAbout 42¢ per 200 champions checked8 minutes2 Plays
Referral askAgent taskAbout 2.4¢ per 5 asks10 minutes3 Plays
Review requestsWorkflowAbout 0.05¢ an ask6 minutes4 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. try returns 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 cross maxCost, and returns what it has with a resume link.
  • Skipped, with reasons. One item that fails lands in skipped with 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.

KindReturns in minutesWaits for days or weeks
WorkflowAudience.build: 50 checked emails in about 21 minutesSite.index: read daily until each key page is held
Agent taskPage.answer: one page drafted and reviewedProspect.reach: first touches at the inbox pace, then every reply
ServiceAudience.deliver: the list in about 20 minutesPage.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.

TypeScript
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: { evaluator, passWhen, remedy } 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.

    Contents