Public: anyone can read this; the crew can change it.

Add an open house to a listing: its date and time on the flyer, the email and every social post #34

shipped production is serving it opened this has it
opened this

Intent: the first thing an agent does after listing is hold an open house, and today nothing in a launch can say when.

Done looks like:

  • [ ] The launch form and Edit facts take an optional open house: a date, a start and an end time (validated in src/listing.ts: a real date, end after start, at most two open houses).
  • [ ] With one set, generate(listing) writes it into the MLS description's last line, each social post, the flyer (a band under the price) and the email (a line above the body), in all three tones, reading like a person wrote it ("Open Sunday, March 9, 1–3 pm").
  • [ ] Adding, changing or clearing it rewrites the assets and clears their approval, as changing the price does.
  • [ ] One sample listing has an open house so the meeting shows it.
  • [ ] The JSON API (PATCH /api/listings/:id), the MCP and the terminal set it through the same action; contract/openapi.json re-emitted.
  • [ ] Tests: validation refuses a bad date and an end before the start; each asset carries the line when set and none when cleared; the walkthrough README gains one step and src/walkthrough.test.ts walks it.

Files: src/listing.ts, src/generate.ts, src/actions.ts, src/db.ts (a migration), src/pages/home.ts, src/pages/facts.ts, src/pages/listing.ts, src/pages/email.ts, src/sample.ts, src/mcp.ts, src/tty.ts, README. Risks: a new column needs a forward-only migration; time zones — store the local date and times as typed, never convert.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs