Skip to content

Earn first links

How do I get my first backlinks? Start with followed links on hosts you control, then list the product where your category already links, and check every link it earns.

Earn first links
You, to your agent

Get our first links. Start with the places that already link to our rivals.

List us as me, up to 10 a day, for the next 60 days.

curl -X POST https://api.sb/leaseline.app/domains/benchmark \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"hostname":"leaseline.app","competitors":["rentroll.example","doorloop.example"]}'

curl -X POST https://api.sb/leaseline.app/mandates/authorize \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"agent":"workers/worker_4","verb":"Post.publish","for":"people/dana","topics":["first-links"],"limit":{"perDay":10},"expiresAt":"2026-12-24"}'

curl -X POST https://api.sb/leaseline.app/posts/posts%2Fpost_41/publish \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
import { $ } from 'startup-builder'

const gap = await $.Domain.benchmark({ hostname: 'leaseline.app', competitors: ['rentroll.example', 'doorloop.example'] })   // link gap and authority on two rivals
await $.Mandate.authorize({ agent: 'workers/worker_4', verb: 'Post.publish', for: 'people/dana', topics: ['first-links'], limit: { perDay: 10 }, expiresAt: '2026-12-24' })   // list as you, 10 a day, for 60 days
return await $.Post.publish({ post: 'posts/post_41' })   // the first listing, checked once it is live
npx startup-builder do Domain.benchmark --json '{"hostname":"leaseline.app","competitors":["rentroll.example","doorloop.example"]}'
npx startup-builder do Mandate.authorize --json '{"agent":"workers/worker_4","verb":"Post.publish","for":"people/dana","topics":["first-links"],"limit":{"perDay":10},"expiresAt":"2026-12-24"}'
npx startup-builder do Post.publish --json '{"post":"posts/post_41"}'
{
  "name": "do",
  "arguments": {
    "code": "const gap = await $.Domain.benchmark({ hostname: 'leaseline.app', competitors: ['rentroll.example', 'doorloop.example'] })   // link gap and authority on two rivals\nawait $.Mandate.authorize({ agent: 'workers/worker_4', verb: 'Post.publish', for: 'people/dana', topics: ['first-links'], limit: { perDay: 10 }, expiresAt: '2026-12-24' })   // list as you, 10 a day, for 60 days\nreturn await $.Post.publish({ post: 'posts/post_41' })   // the first listing, checked once it is live"
  }
}
Response200application/json
{
  "$id": "https://api.sb/leaseline.app/posts/post_41",
  "$type": "Post",
  "place": "Fazier",
  "status": "published",
  "url": "https://fazier.com/launches/leaseline",
  "link": "follow",
  "linkCheckedAt": "2026-10-26",
  "referringDomains": {
    "followed": 4,
    "week": 1
  }
}
sample
Link gap on 3 rivals and the first batch of listings: about $0.15
First run
Coming
Status
Your Google, GitHub, LinkedIn and X sign-ins, once, in a live view.
Connect once

What you get

FieldWhat it says
PlaceWhere the link lives: a directory, a launch site, a registry or a page you control.
LinkFollowed, nofollow or user content, read from the page itself.
StatusSubmitted, live, refused or lapsed.
Referring domainsDistinct followed domains that link to you, counted from a fetch of each page the same day.
Points toThe key page each link sends readers to.

How it runs

WhenWhat happensRuns byYour partTakes
Day 0Put your followed links live on hosts you control, and inside a Studio its portfolio page (Own-host links)API · browser agentone sitting: approve the kit, sign in once, grant two Mandateslive the same day
Day 1Read the link on every page from day 0, and submit the first batch of listings (Listing check)API · browser agentnothingfollowed domains counted the same day
Days 2 to 6List the product in 5 to 10 places a day, ranked by the link each gives and how fast it reviewsbrowser agent · APIa step only when a place needs a person, batched once a daydays to weeks per place
Day 7The readout: found, linked and listed, then next week’s batch or the launch dateAPI5 minutesthe same day
Weeks 2 to 8Ask the sites on the link gap list, one ask each, naming the page you want linked (Link asks)APIapprove the batch2 to 8 weeks per editorial link

Jobs inside it

JobWhat it returnsPriceStatusRuns by
Own-host linksFollowed links from hosts you control: your GitHub Pages site, Docker Hub overview and Substack postsfreeComingAPI · browser agent
Authority scoreHow much weight each place carries, for up to 1,000 domains at once$0.024 a checkComingAPI
Link gapThe places that link to two or three rivals and not to you, hubs and spam removed$0.024 a checkComingAPI
Backlink checkEvery domain that links to you, new and lost, each week$0.000179 a rowComingAPI
Listing checkEach listing fetched daily: live, refused or lapsed, and the kind of link it givesfreeComingAPI
Contact finderThe editor or author to ask, at each site on the link gap list$0.0005 a found addressComingAPI
Link asksOne ask per site from your inbox, naming the page you want linkedfree from your inboxComingAPI

Its flow pages: Directory submissions · Launch circuit.

Where and how it runs

Where it worksHow it runsConnect once
GitHub, Product Hunt, Hacker News, BetaList, G2, Capterra, npm, MCP RegistryAPI · browser agentYour Google, GitHub, LinkedIn and X sign-ins, once, in a live view.

Your agent acts as you on every Venue you authorize. Where a Venue has no API, a browser agent signs in as you and does the steps.

Plays that use it

Reference

Compiled, not written: edit the records it reads (catalog/earn-first-links), then regenerate. Every step runs from a sentence or a line of code. In your words: the CRM words you know, and where each lives here.

Contents