Skip to content

Start a business

Say what the business does and what it charges, and get a Startup with its app, Site, domain, Offer, Stripe account, Teams, Roles and Systems.

For developers

One sentence creates a Startup from a Startup Template and builds it: Startup.create records the business, and Startup.build provisions what it declares.

For developers

What you get

  • 1business named Leaseline, moved from Idea to BuildingStartup
  • 1brand: name, logo, colors and voiceBrand
  • 1app your customers sign in toApp
  • 1site at leaseline.app with pricing, sign-up and termsSite
  • 1domain with its DNS records and certificateDomain
  • 1Offer at $29 a month, ready to publishOffer
  • 1Stripe account in the business’s name, claimed in one stepStripe's Account
  • 1product and monthly price on StripeStripe's Product and Price
  • 4Interfaces to the business: API, SDK, CLI and MCP serverInterface
  • 10Teams, from Product to LegalTeam
  • 38Roles, an agent named in eachRole
  • 56Processes, each owned by a RoleProcess
  • 67Systems: billing, ledger, CRM, support and the restSystem
  • 1connect providers runs on the first dayWorkflow
  • 1publish terms runs on the first dayWorkflow
  • 1staff roles runs on the first dayWorkflow

Your agent does

Startup.create → Startup.build
You, to your agent

Start a business that tracks lease renewals for small property managers, $29 a month.

Make me a business for landlords who keep missing renewal dates.

Turn my idea into a business: renewal reminders for managers with up to 200 units.

# 1. Startup.create
STARTUP=$(curl -X POST https://api.sb/leaseline.app/startups \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Leaseline","idea":"Tracks lease renewals for small property managers, $29 a month."}' | jq -r '.startup["$id"] | split("/") | last')

# 2. Startup.build
curl -X POST https://api.sb/leaseline.app/startups/$STARTUP/build \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
import { $ } from 'startup-builder'

const startup = await $.Startup.create({ name: 'Leaseline', idea: 'Tracks lease renewals for small property managers, $29 a month.' })
await $.Startup.build({ startup: startup.$id })
STARTUP=$(npx startup-builder do Startup.create --json '{"name":"Leaseline","idea":"Tracks lease renewals for small property managers, $29 a month."}' | jq -r '.startup["$id"] | split("/") | last')
npx startup-builder do Startup.build --json '{"startup":"'"$STARTUP"'"}'
{
  "name": "do",
  "arguments": {
    "code": "const startup = await $.Startup.create({ name: 'Leaseline', idea: 'Tracks lease renewals for small property managers, $29 a month.' })\nreturn await $.Startup.build({ startup: startup.$id })"
  }
}

Change it

  • Call it Renewly instead.
  • Charge $49 a month for up to 500 units.
  • Sell to agencies as well as landlords.
  • Use the Solo SaaS template instead.

Under the hood

Systems
Sites, Billing, Ledger, CRM, Support
Nouns
Startup, Brand, App, Site, Domain, Offer, Team, Role
Events
Startup.created, Startup.built
Stripe objects
Account, Product, Price