# 30-Day Build-in-Public Calendar

**SKU:** `bip-30-calendar`  
**Price:** $9 USD, paid in USDC on Base  
**Format:** 30 dated prompt cards + rules so you do not fake a company  
**Audience:** US indie hackers posting a real build for 30 days  
**Promise:** A posting calendar with a job for each day — not 30 variants of “shipped today.”

Build in public is a lab notebook, not a growth channel you owe theater. Skip a day rather than invent a metric.

## Rules (print these)

1. If you did not touch the work, post that you did not. Do not backfill a fake commit.
2. No revenue, waitlist, or user numbers unless you can export them.
3. One product for 30 days. Side quests go in a single parking-lot post (Day 11).
4. Each post includes: **what changed**, **what broke**, **next physical action** (90 minutes or less).
5. If you take a Sunday off, say so on Saturday.

Cadence: 8–15 minutes to write. If it takes an hour, you are drafting a blog post — cut it.

---

## Week 1 — Nail the job

**Day 1 — Constraint.**  
`I’m spending 30 days on [JOB] for [WHO]. Constraint: [X]. Today’s artifact: [LINK OR “private file”].`

**Day 2 — Workaround you are replacing.**  
`This is how I currently [JOB]. The failure is [FAILURE].` (Your screenshot. No competitor dunking.)

**Day 3 — Not-building list.**  
`Out of scope for 30 days: 1…5. If you need those, don’t wait on me.`

**Day 4 — Smallest paid shape.**  
`If I charged tomorrow, it would be a [SHAPE] at ~$[N] because [FLOOR LOGIC]. No checkout yet.`

**Day 5 — One user interview ask.**  
`I sent [N] asks for a 15-min call about [JOB]. Script: “[ONE SENTENCE].”`

**Day 6 — Ugly artifact.**  
`Draft of [ARTIFACT]. Tell me where you got lost — not what to add.`

**Day 7 — Week 1 recap (facts only).**  
Hours, messages sent, decisions locked, decisions still open. No inspiration paragraph.

---

## Week 2 — Make it usable

**Day 8 — First-win path.**  
`Pay → … → first win. Step times: … Total: [N] min.`

**Day 9 — Support policy.**  
`Support is [CHANNEL] for [N] days on “the page promised X and the file lacks X.”`

**Day 10 — Kill a darling.**  
`Cut [THING]. It served me, not the buyer’s first win.`

**Day 11 — Parking lot.**  
`Parking lot (will not build in these 30 days): …`

**Day 12 — Name and URL.**  
`Name locked: [NAME]. I’m not shopping five domains.`

**Day 13 — Payment rail rehearsal.**  
`Rail for v1: [RAIL]. I confirmed I can receive a test payment.` Never post seeds or private keys. “Base USDC: sent $1 to myself” is enough.

**Day 14 — Week 2 recap.**  
What a stranger can do with today’s artifact that they could not on Day 1.

---

## Week 3 — Make it buyable

**Day 15 — Offer page draft.**  
`Offer page v0. Price $[N]. Not for: [X].` Screenshot the draft.

**Day 16 — Refund sentence.**  
`If [CONDITION], I [REFUND / REPLACE]. Window: [N] days.`

**Day 17 — 10 private asks.**  
`Sent 10 private notes with the offer page.` Count only. No DM screenshots of other people.

**Day 18 — FAQ from real questions.**  
`FAQ (asked, not imagined): …` Max 6.

**Day 19 — Packaging.**  
`You pay → you email tx/receipt → I send [FILE]. Filename: [SKU]-v1.md`

**Day 20 — Dry-run fulfillment.**  
`Fulfillment dry run: [N] minutes. Broken bit I fixed: [X].`

**Day 21 — Week 3 recap.**  
Is it buyable? If no, name the single blocker.

---

## Week 4 — Sell or kill

**Day 22 — Public price.**  
`[NAME] is $[N] [RAIL]. Link: [URL]. Memo/SKU: [SLUG].` No fake 24-hour discount.

**Day 23 — Sit on the replies.**  
Answer questions only. If none: `No questions yet; I messaged [N] people.`

**Day 24 — Change log.**  
`Changed [X] because [PERSON TYPE] asked [Q].` or `No change. No new questions.`

**Day 25 — Second SKU decision.**  
Default is no. `Second SKU this month: no / yes because [DIFFERENT JOB].`

**Day 26 — Accounting note.**  
`I log date, SKU, amount, rail, tx id, buyer email.` This is not tax advice.

**Day 27 — Cadence after Day 30.**  
`After Day 30 I post [WEEKLY CHANGELOG / NOTHING / ONLY WHEN I SHIP].`

**Day 28 — Honest scoreboard.**  
`Hours: [N]. Asks: [N]. Sales: [N]. Open bugs: [LIST].` Zero sales is allowed and useful.

**Day 29 — Keep / kill / pause.**  
`Keep / kill / pause because [EVIDENCE]. Buyers already got [FILE].`

**Day 30 — Hand-off.**  
`Next 30 days: [ONE JOB]. Constraint: [X].` No teaser trailer.

---

## Tracking table

| Day | Posted? | Artifact | Hours | Notes (facts) |
|-----|---------|----------|-------|----------------|
| 1 |  |  |  |  |
| 2 |  |  |  |  |
| 3 |  |  |  |  |
| 4 |  |  |  |  |
| 5 |  |  |  |  |
| 6 |  |  |  |  |
| 7 |  |  |  |  |
| 8 |  |  |  |  |
| 9 |  |  |  |  |
| 10 |  |  |  |  |
| 11 |  |  |  |  |
| 12 |  |  |  |  |
| 13 |  |  |  |  |
| 14 |  |  |  |  |
| 15 |  |  |  |  |
| 16 |  |  |  |  |
| 17 |  |  |  |  |
| 18 |  |  |  |  |
| 19 |  |  |  |  |
| 20 |  |  |  |  |
| 21 |  |  |  |  |
| 22 |  |  |  |  |
| 23 |  |  |  |  |
| 24 |  |  |  |  |
| 25 |  |  |  |  |
| 26 |  |  |  |  |
| 27 |  |  |  |  |
| 28 |  |  |  |  |
| 29 |  |  |  |  |
| 30 |  |  |  |  |

## Missed-day filler (use at most twice)

`Missed yesterday. I [DID NOT TOUCH IT / DID TOUCH IT BUT DIDN’T POST]. Today: [90-MIN ACTION].`

If you miss three days, switch to a weekly note.

## Worked snippet (fictional Day 1)

`I’m spending 30 days on a Friday inbox review script for US solo founders who already live in Gmail. Constraint: markdown only, no new app. Today’s artifact: a private outline, not a checkout.`
