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.
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"
}
}Response200
application/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
- API · browser agent
- Runs by
- Your Google, GitHub, LinkedIn and X sign-ins, once, in a live view.
- Connect once
What you get
| Field | What it says |
|---|---|
| Place | Where the link lives: a directory, a launch site, a registry or a page you control. |
| Link | Followed, nofollow or user content, read from the page itself. |
| Status | Submitted, live, refused or lapsed. |
| Referring domains | Distinct followed domains that link to you, counted from a fetch of each page the same day. |
| Points to | The key page each link sends readers to. |
How it runs
| When | What happens | Runs by | Your part | Takes |
|---|---|---|---|---|
| Day 0 | Put your followed links live on hosts you control, and inside a Studio its portfolio page (Own-host links) | API · browser agent | one sitting: approve the kit, sign in once, grant two Mandates | live the same day |
| Day 1 | Read the link on every page from day 0, and submit the first batch of listings (Listing check) | API · browser agent | nothing | followed domains counted the same day |
| Days 2 to 6 | List the product in 5 to 10 places a day, ranked by the link each gives and how fast it reviews | browser agent · API | a step only when a place needs a person, batched once a day | days to weeks per place |
| Day 7 | The readout: found, linked and listed, then next week’s batch or the launch date | API | 5 minutes | the same day |
| Weeks 2 to 8 | Ask the sites on the link gap list, one ask each, naming the page you want linked (Link asks) | API | approve the batch | 2 to 8 weeks per editorial link |
Jobs inside it
Its flow pages: Directory submissions · Launch circuit.
Where and how it runs
| Where it works | How it runs | Connect once |
|---|---|---|
| GitHub, Product Hunt, Hacker News, BetaList, G2, Capterra, npm, MCP Registry | API · browser agent | Your 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
| Play | Strategy that runs it |
|---|---|
| Directory listings | Passive |
| Editorial SEO | Passive |
Reference
| Tool | Runs today |
|---|---|
POST /{namespace}/posts/{post}/publish | Coming |
POST /{namespace}/domains/benchmark | Coming |
POST /{namespace}/mandates/authorize | Coming |
POST /{namespace}/monitors | Coming |
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.