Research demand
Which terms should I target? Name the problem in your own words: your agent finds the terms buyers type, measures each, and keeps the ones you can win.
You, to your agent
Find the terms landlords search when they outgrow the rent spreadsheet.
Keep the ones I can win, and tell me what a click on each costs.
curl -X POST https://api.sb/leaseline.app/keywords/keywords%2Fkeyword_4/measure \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"venue":"reddit"}'
curl -X POST https://api.sb/leaseline.app/keywords/keywords%2Fkeyword_7/measure \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"locale":"en-US","venue":"google-search"}'
# Not live yet (gaps #11)
curl -X POST https://api.sb/leaseline.app/keywords/find \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"seeds":["rent ledger template","track rent payments"],"locale":"en-US","save":40}'import { $ } from 'startup-builder'
const posts = await $.Keyword.measure({ keyword: 'keywords/ keyword_4', venue: 'reddit' }) // “rent spreadsheet”: the posts and the words buyers use
await $.Keyword.measure({ keyword: 'keywords/ keyword_7', locale: 'en-US', venue: 'google-search' }) // searches, cost of a click, difficulty, intent, trend
return await $.Keyword.find({ seeds: posts.phrases, locale: 'en-US', save: 40 }) // related terms, each measured; the ones you can win kept · Not live yet, gaps #11
npx startup-builder do Keyword.measure --json '{"keyword":"keywords/keyword_4","venue":"reddit"}'
npx startup-builder do Keyword.measure --json '{"keyword":"keywords/keyword_7","locale":"en-US","venue":"google-search"}'
npx startup-builder do Keyword.find --json '{"seeds":["rent ledger template","track rent payments"],"locale":"en-US","save":40}' # Not live yet (gaps #11){
"name": "do",
"arguments": {
"code": "const posts = await $.Keyword.measure({ keyword: 'keywords/keyword_4', venue: 'reddit' }) // “rent spreadsheet”: the posts and the words buyers use\nawait $.Keyword.measure({ keyword: 'keywords/keyword_7', locale: 'en-US', venue: 'google-search' }) // searches, cost of a click, difficulty, intent, trend\nreturn await $.Keyword.find({ seeds: posts.phrases, locale: 'en-US', save: 40 }) // related terms, each measured; the ones you can win kept · Not live yet, gaps #11"
}
}Response200
application/json{
"$type": "KeywordList",
"locale": "en-US",
"venue": "google-search",
"found": 312,
"kept": 40,
"terms": [
{
"term": "rent ledger template",
"searches": 1900,
"cpc": 2.4,
"difficulty": 18,
"intent": "buy",
"trend": "rising",
…
sample · 1 Not live yet- 200 ideas, 40 terms measured, 10 results pages read: about $0.20
- First run
- Coming
- Status
- API
- Runs by
- Nothing to start. Your Google Ads account, once, makes volume and site ideas free.
- Connect once
What you get
| Field | What it says |
|---|---|
| Term | The words as buyers type them, drawn from your seed words, the problem posts and rivals’ pages. |
| Searches a month | Monthly searches in your Market. A blank on a long-tail term reads unknown, never zero. |
| Cost of a click | What one click on the term costs as an ad today. |
| Two routes | One row prices both: rank for the term in months for the cost of a page, or buy the click today. |
| Difficulty | How hard the term is to rank for, from 0 to 100, read against the sites in its top 10. |
| Intent | Buy, compare or learn, so the short list keeps the terms that end in a sale. |
| Trend | Twelve months of searches: rising, flat or falling. |
| Who ranks | The top 10 today and the questions people also ask, which become pages and the questions in Check AI answers. |
| Buyer words | The phrases buyers use in posts about the problem, with a link to each post. |
| Cost | The most the pass can cost, shown before it runs, and what it cost after. |
How it runs
| When | What happens | Runs by | Your part | Takes |
|---|---|---|---|---|
| Minute 1 | Read the posts where buyers describe the problem, for the words they use (Problem posts) | API | one sentence about the problem | the same minute |
| Minute 2 | Grow those words and your seed words into a few hundred related terms and search suggestions (Keyword ideas) | API | nothing | the same minute |
| Minute 3 | Measure every term: searches, cost of a click, difficulty, intent and trend (Keyword volume) | API | nothing | the same minute |
| Minute 4 | Read the top 10 and the questions people also ask for each term you can win (Search results) | API | nothing | the same minute |
| Minute 5 | Rank the short list by buying intent, difficulty and trend, with both routes priced on each row (Difficulty and intent) | API | approve 20 to 40 terms | 15 minutes of yours |
| Monthly | Measure the approved terms again, and flag a term that rises or a new question people ask (Search trend) | API | nothing | the same day |
Jobs inside it
Where and how it runs
| Where it works | How it runs | Connect once |
|---|---|---|
| Google Search, Bing, Reddit, X, Hacker News, YouTube | API | Nothing to start. Your Google Ads account, once, makes volume and site ideas free. |
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 |
|---|---|
| Community answers | Hands-on, Passive |
| Editorial SEO | Passive |
| Answer engine optimization | Passive |
Reference
| Tool | Runs today |
|---|---|
POST /{namespace}/keywords/{keyword}/measure | Coming |
Keyword.find (Not live yet, gaps #11) | Coming |
POST /{namespace}/monitors | Coming |
Compiled, not written: edit the records it reads (catalog/research-demand), 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.