Formalized directory autopublishing: kit, playbooks, publisher, ledger, MCP.
Define data/autogrowth/kits/<slug>.yaml (or rely on the portfolio catalog). The kit is the single source of truth for every listing field, with enforced length budgets.
uv run python manage.py autogrowth_publish --product crewelo --schedule-only
Each directory is a YAML contract in data/autogrowth/playbooks/: auth (email/password via the vault), typed steps bound to kit fields, guards, and verification. Validate any playbook:
uv run python manage.py shell -c "from apps.autogrowth.playbook import load_playbook; print(load_playbook('saashub').validate())"
Dry-run first (fills the form, never clicks submit), then run live. Idempotency is enforced by the ledger.
uv run python manage.py autogrowth_publish --product crewelo --directory saashub --dry-run uv run python manage.py autogrowth_publish --product crewelo --directory saashub uv run python manage.py autogrowth_publish --product crewelo --limit 5 --playbook-only
Expose the engine to any MCP client (Claude, Cursor, your own agents):
{
"mcpServers": {
"autogrowth": {
"command": "uv",
"args": ["run", "--project", "/path/to/saas-factory", "python", "-m", "apps.autogrowth.mcp_server"]
}
}
}
Tools: autogrowth_catalog, autogrowth_kit, autogrowth_submit (dry-run by default), autogrowth_status, autogrowth_schedule, autogrowth_validate_playbook.
PENDING -> RUNNING -> SUBMITTED -> LIVE
|-> NEEDS_HUMAN (CAPTCHA, email verification, HITL walls)
|-> FAILED (retryable next cycle)
|-> SKIPPED_ALREADY_LISTED (idempotency short-circuit)
|-> BLOCKED_GUARD (a declared guard tripped)
Every event is appended to data/autogrowth/ledger.jsonl and mirrored to the factory DirectorySubmission FSM when Django is available.
Scout (free, 5 submissions/mo) · Starter $19/mo (40) · Autopilot $49/mo (150 + MCP) · Agency $99/mo (400 + API). Monthly billing, no per-submission fees.