Open questions
Things we're carrying. Not decisions — placeholders.
Pricing model
Three candidates:
- Per-seat ($X / user / month) — predictable for buyer, penalises invite-heavy teams
- Per-page ($Y / published page / month) — usage-aligned, complex to communicate
- Flat tiers ($Z / month) — simple, but caps usage on plans
Need 5 more pricing interviews before deciding. Talk to marketing leads at 10–50 person companies.
Webhook delivery semantics
We emit webhooks on page.published, page.updated, form.submitted.
Open: at-least-once or exactly-once?
- At-least-once (current) — receivers must dedupe
- Exactly-once — requires distributed ledger / message ID tracking
- Practical answer is probably at-least-once + a
webhook_idheader for receiver-side dedup
i18n strategy
Currently English-only. Korean is the next likely market based on inbound interest. Options:
next-intl(heavy, full framework)next-international(lighter)- Roll-our-own with route segments
/en/...and/ko/...
Lean toward option 3 because we only have ~30 strings to translate and we want SEO per locale.
Per-block vs per-page versioning
Currently versioning at the page level. Marketing users edit one
block at a time, so the version history is noisy ("v23: changed
headline by 2 words"). Consider block-level version log layered on
top — pages still version, but page_block_versions captures the
actual change shape.
Trade-off: more storage, more complex restore UI.
Cron jobs ownership
Right now cron lives in api/cron/* routes triggered by Vercel
crons. Works fine. Open: at scale, do we move heavy cron (re-rank
embedding refresh, abandoned-cart sweeps) to durable workflow
(Vercel WDK)?
Decide when we have one job that takes >2 minutes.