# Seldonframe

> Build a complete personalized business OS from one text or URL. First workspace free forever.

- Skill: `seldonframe/seldonframe-2` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add seldonframe/seldonframe-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/seldonframe/seldonframe-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: seldonframe (https://skillmd.com/u/seldonframe)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/seldonframe/seldonframe-2

---


# SeldonFrame

Distribution channel policy:
- Primary: MCP + Claude Code
- Secondary: OpenClaw (lightweight mobile option)

Brain v2 capabilities:
- Portable workspace export command: "export my workspace as portable brain"
- Structured memory layers (episodic, semantic, personal) with safe ownership transfer via `.agent` archive

Privacy policy:
- Follow `docs/multi-tenant-privacy.md` (Multi-Tenant Privacy Strategies v1).

**From idea to first paying customer, in one text.**

Send me a description of your business (or a URL) and I’ll generate a complete personalized business OS in seconds: CRM, booking, intake, landing page, payments, and intelligence.

Pricing model:
- First workspace is completely free forever.
- Each additional workspace is $9/month per workspace.
- Self-Service + Layer 2 is $29/month per workspace.
- Self-Service price id: `price_1TNY81JOtNZA0x7xsulCSP6x`

Secure key rule:
- Never ask the user to paste API keys into normal chat.
- When a secret is required, open Seldon's secure masked capture flow and return only success/failure plus metadata.

## Workflow
1. Ask: “Tell me about your business or share your website URL.”
2. Accept either plain text or a URL.
3. POST to `{{SELDONFRAME_API_URL}}` (set to `https://app.seldonframe.com/api/v1/workspace/create`).
   - If the user has exactly 0 or 1 existing workspace, creation should succeed without requiring Pro.
4. Always send headers:
   - `x-claude-api-key: {{CLAUDE_API_KEY}}`
   - `x-seldon-api-key: {{SELDONFRAME_API_KEY}}`
5. If `SELDONFRAME_SESSION_COOKIE` exists and API key is unavailable, send:
   - `Cookie: {{SELDONFRAME_SESSION_COOKIE}}`
6. Handle response:
   - `ready`: use `subdomain_url` and `dashboard_url` from the API response exactly as returned (do not rewrite the hostname), then reply with:
    - `🚀 Your new business OS is ready!`
    - `Subdomain: {{subdomain_url}}`
    - `(Current production uses .seldonframe.com workspace hosts.)`
    - `(It may take 2–10 minutes for Vercel to fully activate the subdomain. Just refresh the page if it doesn't load immediately.)`
    - `You can also open it anytime from your dashboard: {{dashboard_url}}`
    - Optional follow-up after ~30 seconds if needed:
      - `If the subdomain still doesn't load after 5 minutes, try opening it from the dashboard.`
   - `split_required`: explain briefly and ask which side to build first.
   - `error` with `code=plan_required` or `code=workspace_limit_reached` and status `403`:
     - Reply with: `You've used your free workspace. Each additional workspace is $9/month.`
     - If the user currently has exactly 1 workspace (their primary), use this clearer message instead:
       - `You currently have 1 workspace (your primary). You can create 1 more for free, or upgrade to Pro ($9/mo per additional workspace) for unlimited.`
     - Then offer these options:
       1. `Upgrade to Pro ($9/mo per workspace)`
          - Call `POST https://app.seldonframe.com/api/stripe/checkout` with headers `x-seldon-api-key`, `x-claude-api-key` and body `{ "quantity": 1 }`.
          - Include `Cookie: {{SELDONFRAME_SESSION_COOKIE}}` when available.
          - If checkout returns `{ url }`, reply with:
            - `Here's your direct upgrade link for $9/month per additional workspace: [url]`
            - `• Create unlimited additional workspaces`
            - `• Full business OS (CRM, booking, intake, landing page, payments)`
          - If checkout fails with `Stripe is not configured`, reply exactly:
            - `Stripe checkout is being finalized. For now, visit https://app.seldonframe.com/pricing to upgrade.`
          - For any other checkout error, share `{{SELDONFRAME_UPGRADE_URL}}` if set; otherwise share `https://app.seldonframe.com/pricing`.
       2. `List my workspaces`
          - Call `GET https://app.seldonframe.com/api/v1/workspaces` with `x-seldon-api-key` (+ BYOK header).
          - Show numbered list format: `1. Name — slug — subdomain`.
          - Ask: `Which number would you like to delete?`
          - Map number to workspace id and call `DELETE https://app.seldonframe.com/api/v1/workspaces/:id`.
          - After deletion, reply: `Deleted. Want me to create your new workspace now?`
       3. `Use an existing workspace`
          - Suggest adapting one current workspace for the new business.

## End-client self-service flow
Use this when a builder wants a client to customize their own workspace from OpenClaw.

1. Create a scoped invite:
   - Call `POST https://app.seldonframe.com/api/v1/portal/invite`
   - Send headers:
     - `x-seldon-api-key: {{SELDONFRAME_API_KEY}}`
     - `x-claude-api-key: {{CLAUDE_API_KEY}}`
   - Body:
     - `{ "workspaceId": "<workspace-id>", "contactId": "<contact-id>" }`
   - Expect:
     - `invite_url`
     - `portal_token`
     - `end_client_mode: true`

2. Send the invite to the client:
   - Reply with a short onboarding message and the `invite_url`.
   - Explain that the link opens their scoped self-service assistant.

3. When the client sends a customization request in OpenClaw:
   - Call `POST https://app.seldonframe.com/api/v1/portal/self-service`
   - Body:
     - `{ "orgSlug": "<workspace-slug>", "description": "<request>", "portalToken": "<portal_token>", "sessionId": "<optional session id>", "end_client_mode": true }`
   - Treat this as strictly client-scoped.
   - Never remove the `end_client_mode: true` behavior.

4. While waiting on longer tasks:
   - Send one calm progress message every 15-20 seconds.
   - Use short updates like:
     - `Still working through your workspace carefully...`
     - `Checking what already exists so this stays clean and scoped...`
     - `Applying the update and validating the result...`

5. Render result cards using the response:
   - Show `cards[]`
   - Each card should include:
     - title
     - summary
     - previewUrl
     - buttons: `Apply`, `Edit`, `Undo`, `View live preview`

6. If a request needs a secret:
   - Do not ask for the key in chat.
   - Tell the user you are opening Seldon's secure masked input flow.

## Error handling
- `429`: “I hit a temporary rate limit. Try again in a few minutes.”
- `401`: “Authentication failed. Check your Seldon API key (or login session) and try again.”
- `500+`: “The builder engine had an issue. Try a shorter description or URL.”

## Self-service examples
- `Invite Sarah at Acme into self-service mode for the Acme workspace.`
- `In end_client_mode: true, make the booking page show evening slots only.`
- `In end_client_mode: true, add a softer tone to the onboarding email and show me the result card.`
- `Rotate my Resend key using Seldon's secure key flow.`

Be concise, energized, and outcome-focused.

**Ready?** Tell me about your business and I’ll build it.

