Give it a one-line idea before bed. Wake up to a market read, brand kit, deployable landing page, influencer hit-list, and a domain to buy.
overnight-ideas is a CLI that turns a half-baked product idea into a structured first day of work. It runs nine stages against pay.sh services — Claude (orchestration), Perplexity (market research), ScreenshotOne (competitor capture), fal.ai (logo + hero generation), Social Intel (creator search), StableDomains (availability), and StableUpload (one-click hosting). Your pay wallet picks up the bill in stablecoins.
No API keys. No accounts. One funded pay wallet does everything — including publishing the landing page to a live URL.
overnight-ideas "AI co-pilot for property managers" --deploy
# → ./out/ai-co-pilot-for-property/
# ├── brief.md
# ├── market.md
# ├── competitors.md (with competitor screenshots)
# ├── brand/kit.json (palette, voice, logo, hero)
# ├── domains.md (availability across .com/.io/.ai/.dev/.app/.xyz)
# ├── influencers.md (top creators per niche, with emails)
# ├── landing/index.html (single-file landing page)
# ├── landing/DEPLOY.md (live URL — *.stableupload subdomain)
# └── SUMMARY.md (morning report — read this first)You need three things on PATH: Node 20+, the pay CLI, and a funded wallet.
# 1. Install pay (the toolchain for x402 / stablecoin-paid APIs)
npm i -g @solana/pay
# 2. Create a Solana wallet stored in your OS keychain
pay setup
# → prints your wallet address; save it
# 3. Fund the wallet with USDC. Easiest path: import from a mobile wallet
# or Venmo/PayPal via topup. A run with default settings spends ~$3–6.
pay topup
# → walks you through funding options (mobile wallet / fiat on-ramp)
# 4. Verify
pay whoami
# → should print your address with non-zero USDC balanceIf you'd rather use a hardware wallet or import an existing keypair, see pay account --help.
npm i -g overnight-ideas
# or, from source:
git clone https://github.com/SuperteamCanada/overnight-ideas
cd overnight-ideas && npm install && npm linkovernight-ideas "your one-line idea"Common flags:
| Flag | Default | Notes |
|---|---|---|
-o, --out <dir> |
./out |
Workspace root. Each idea gets its own slug subdir. |
-b, --budget <usd> |
5 |
Soft USDC ceiling. Stages skip themselves once exceeded. |
-s, --stages <list> |
(all) | e.g. --stages brief,brand,landing to re-run a subset. |
--account <name> |
(default) | Use a named pay account from ~/.config/pay/accounts.yml. |
--dry-run |
off | Print the planned pay calls and exit without spending. |
--deploy |
off | Publish landing/ to a *.stableupload subdomain via StableUpload. |
--deploy-tier <tier> |
short-10mb |
One of short-10mb ($0.005, 7d), short-100mb ($0.02, 7d), short-1gb ($0.10, 7d), 10mb ($0.02, 6mo), 100mb ($0.20, 6mo), 1gb ($2.00, 6mo). |
Workspaces are idempotent. If a stage's output file already exists in the workspace, it's skipped. Delete the file (or the whole subdir) to re-run a stage:
rm out/ai-co-pilot-for-property/landing/index.html
overnight-ideas "AI co-pilot for property managers" --stages landing| Stage | Service(s) | Per run |
|---|---|---|
| brief | pay claude |
~$0.05 |
| market | Perplexity Sonar (×3 questions) | ~$0.15 |
| competitors | pay claude + ScreenshotOne (×5 captures) |
~$0.15 |
| brand | pay claude + fal.ai FLUX Schnell (logo + hero) |
~$0.11 |
| domain | StableDomains /api/check (read-only) |
$0 |
| influencers | Social Intel /v1/search (×4 niches × $0.50) |
~$2.00 |
| landing | pay claude |
~$0.05 |
deploy (opt-in --deploy) |
StableUpload /api/site + /api/site/activate |
~$0.005 (short-10mb 7d) — $2.00 (1gb 6mo) |
| summary | local | $0 |
| total | ~$2.50–$5.00 (default) · ~$2.51 with --deploy |
These are estimates used for the budget gate, not exact charges. Real spend is whatever your wallet actually pays out. Check out/<slug>/spend.json after a run.
- Use
--dry-runfirst to see what would be called. - Set
--budget 1for a cheap preview; influencer searches will fall back to the free tier (3 results each, no payment). - Re-run with
--stages landingafter editingbrand/kit.jsonto regenerate just the page — costs ~$0.05.
overnight-ideas "<idea>" [--deploy]
│
▼
brief.json ─────────────────────────────┐
│ │
├─► market.md (Perplexity) │
├─► competitors.md (Claude + Shot) ├─► landing/index.html (Claude)
├─► brand/kit.json (Claude + fal) │ │
├─► domains.md (StableDomains) │ ▼
└─► influencers.md (Social Intel) │ landing/DEPLOY.md (StableUpload, opt-in)
▼
SUMMARY.md
Stage 1 runs alone (everything depends on the brief). Stages 2–6 fan out in parallel. Stage 7 (landing) reads brief + brand. Stage 8 (deploy, opt-in via --deploy) zips landing/ and ships it to a *.stableupload subdomain. Stage 9 stitches the morning report.
A single failed stage doesn't kill the run — downstream stages skip themselves cleanly when their input is missing.
Every external call goes through pay:
pay claudewraps the Claude Code CLI with x402 payment, so model calls bill to your wallet — noANTHROPIC_API_KEY.pay httpwraps HTTPie with x402 flow handling, so paid endpoints (Perplexity, fal, ScreenshotOne, Social Intel, StableDomains, StableUpload) authenticate themselves.
The --deploy flag is the same pattern: pay http POST https://stableupload.dev/api/site … buys a hosting slot, the returned presigned URL takes the zip, and pay http POST …/api/site/activate flips it live. There's no pay deploy subcommand — pay http is the universal door, and StableUpload is the static-site provider behind it.
That means: zero secrets in your env, zero per-vendor signups, one balance to top up.
v0.1 — works end-to-end against the listed services. Influencers stage assumes Social Intel's /v1/search schema; if it shifts, raise an issue. Brand-asset URLs from fal.ai expire; download them if you want to keep them. The landing page uses Tailwind via CDN — fine for MVP, swap for a build step before launch.
PRs welcome. See CONTRIBUTING.md. Add a new stage by dropping a file in src/stages/, exporting a Stage, and wiring it into src/cli.ts.
MIT — © 2026 Superteam Canada.