Skip to main content
Paul Welty, PhD AI, WORK, AND STAYING HUMAN

2026-03-03 — Launch day

What shipped today

Eclectis went from a web app with no public face to a deployed, billable product at eclectis.io in a single session. The big push was M4 (Launch), which covered everything between “works locally” and “someone can sign up and pay.”

The landing page sets the tone — editorial intelligence aesthetic, dark navy with amber gold-foil accents, scroll-triggered reveals, dot-grid textures. Not a generic SaaS template. The page walks through the value prop (only see what matters), the three-step how-it-works, the four output surfaces (RSS, email briefings, podcast coming soon, read-later coming soon), differentiators, and pricing. Two tiers: Free ($0, BYOK) and Pro ($8/mo, we cover AI costs). Both CTAs route to signup.

Stripe billing is wired end-to-end. Checkout creates a subscription session, webhooks handle the full lifecycle (created, updated, canceled), and the Customer Portal lets Pro users manage their subscription. Feature gating is enforced both server-side and in the UI: free users get 10 feeds, 3 search terms, RSS output only. Email briefings are Pro-only with a clear upgrade prompt in settings. The webhook handler was hardened after QA — fail-safe defaults (unrecognized prices fall to free, not pro), DB error handling that returns 500 so Stripe retries, safe type extraction, and try/catch around all external API calls.

The session also landed four infrastructure issues via parallel grind agents: usage tracking for AI cost monitoring, PostHog analytics across all pages, Sentry error tracking with global error boundary, and SEO with OG image generation, structured data, sitemap, and robots.txt. The grind agents had isolation issues (shared working directory instead of proper worktrees) which required manual cherry-picking to untangle, but the work itself was solid.

Earlier in the session, the navigation was restructured based on product feedback — removed “Ideas” (Eclectis is about surfacing content, not generating ideas), reorganized into Reading/Sources/Publishing groups, and created a dedicated Publishing page for output management. The brand was moved from sidebar to header, and an optional right sidebar was added for future detail panels.

Completed

  • #22 Landing page
  • #23 Stripe billing (free + Pro tiers)
  • #24 Usage tracking for Pro tier
  • #25 PostHog analytics
  • #26 Sentry error tracking
  • #27 SEO + meta tags + OG images

Release progress

All four milestones are closed:

  • M1: Foundation — 5/5
  • M2: Scanning pipeline — 8/8
  • M3: Web app — 9/9
  • M4: Launch — 6/6

Total: 28 issues shipped across 4 milestones. No open milestones.

Carry-over

  • Production env vars not yet configured: SUPABASE_SERVICE_ROLE_KEY, STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET, STRIPE_PRICE_PRO. The site is live but billing and webhook handlers won’t work until these are set.
  • Stripe webhook endpoint needs to be registered in the Stripe dashboard pointing to https://www.eclectis.io/api/webhooks/stripe.
  • The billing migration (20260303500001_add_stripe_billing_columns.sql) needs to be run against the production Supabase instance.
  • Sentry and PostHog env vars are optional but should be configured for production observability.
  • NEXT_PUBLIC_SITE_URL should be verified as https://www.eclectis.io in Vercel env vars.

Risks

  • Grind agent isolation was fragile. Agents didn’t use proper worktrees and kept switching the main repo’s branch. Required manual cherry-picking to extract work. If using /grind again, need to ensure worktree isolation actually works or use a different parallelism strategy.
  • Sentry and PostHog packages were missing from the previous grind agents’ work — they created the config files but didn’t install the npm packages. Fixed by installing them in the Stripe billing PR. If there are other missing pieces from the grind, they’ll surface when those features are actually exercised.
  • BYOK enforcement is UI-only. The byokRequired flag exists in plans.ts but the engine doesn’t check it before running AI operations. A free user without an API key won’t crash, but they also won’t get scored content. This is a product gap, not a bug — the engine needs plan-aware gating.

Flags and watch-outs

  • The Vercel project is named eclectis under the synaxis org. Domain is www.eclectis.io.
  • The old “web” Vercel project was created during linking and may still exist — should clean up if so.
  • The web/.gitignore file (Vercel-generated, contains .vercel) and tsconfig.tsbuildinfo are untracked. Should be committed.

Next session

  1. Production env vars — set Stripe keys, service role key, Sentry DSN, PostHog key in Vercel. Run the billing migration on production Supabase. Register Stripe webhook endpoint.
  2. Smoke test the full flow — sign up a test user, add feeds, trigger a scan, verify RSS output, attempt Pro upgrade via Stripe test mode.
  3. Create M5 — candidates: Google OAuth (#30), Passkey auth (#31), Admin area (#40), Engagement telemetry (#41), Expense tracking (#42), Icon design (#28). Prioritize based on what blocks real user adoption.
  4. Engine-side plan gating — add BYOK check in the engine so free users without an API key get a clear error rather than silent failure.

Why customer tools are organized wrong

This article reveals a fundamental flaw in how customer support tools are designed—organizing by interaction type instead of by customer—and explains why this fragmentation wastes time and obscures the full picture you need to help users effectively.

Infrastructure shapes thought

The tools you build determine what kinds of thinking become possible. On infrastructure, friction, and building deliberately for thought rather than just throughput.

Server-side dashboard architecture: Why moving data fetching off the browser changes everything

How choosing server-side rendering solved security, CORS, and credential management problems I didn't know I had.

The work of being available now

A book on AI, judgment, and staying human at work.

The practice of work in progress

Practical essays on how work actually gets done.

The delegation problem nobody talks about

When your automated systems start finding real bugs instead of formatting issues, delegation has crossed a line most managers never see coming.

What your systems won't tell you

The most dangerous gap in any organization isn't between what you know and what you don't. It's between what your systems know and what they're willing to say.

Most of your infrastructure is decoration

Organizations are full of things that look like governance, strategy, and quality control but are actually decorative. The trigger conditions nobody reads, the dashboards nobody checks, the review processes that rubber-stamp. When you finally audit what's functional versus ornamental, the ratio is alarming.