Paul Welty, PhD AI, WORK, AND STAYING HUMAN

What shipped today

Two parallel workstreams ran today: a grinder tab executing queued issues, and a design partner tab focused on architecture and planning for the next phase of the product.

Grinder output (tab 1)

The grinder shipped a massive batch of features across the web app. Citations shipped in full — four phases from source enrichment (GH-368) through citation-aware generation (GH-369), bibliography output (GH-370), and deliverable attribution (GH-371). The changelog system went end-to-end: a generator that creates weekly user-facing summaries from git history (GH-356), an in-app toast on login (GH-357), and changelog items woven into morning briefings (GH-375).

The onboarding and monetization layer got significant work: an admin scorecard dashboard with daily email (GH-359), trial status banners (GH-383), trial_ends_at set automatically on workspace creation (GH-382), a standalone pricing page (GH-387), unified plan name mapping (GH-388), and pricing alignment across all pages (GH-385). The re-engagement drip system, pipeline triggers, and outline caps shipped together (GH-358/335/364). Several smaller items rounded it out: briefing button for non-admin users (GH-334), concurrent intake scans (GH-336), PostHog event tracking (GH-342), content stage movement (GH-347), and interview script fixes (GH-348).

The grinder tab continued into a second context window, shipping four more batches: billing fixes (GH-382/386/388), briefings and pricing (GH-334/363/387), scorecard and trial banner (GH-359/383), and the scorecard-to-user-workflow merge (GH-373). Pricing was aligned with Paul’s decision — Individual $99/mo and Team $249/mo — across landing page, /pricing, and billing page, all reading from a single shared plans.ts config (GH-385). Trial enforcement (GH-384) was closed as nag-only — the banner handles it, no feature gating yet.

Design and architecture (tab 2)

The main design work was planning the universal Apple app and the API layer it requires.

Apple app infrastructure. Created a new multiplatform Xcode project in ./apple/ targeting iOS 17+, iPadOS 17+, and macOS 14+. Set up bundle ID (com.synaxis.authexis), push notifications capability, App Groups, and linked Supabase Swift SDK + MarkdownUI as SPM dependencies. Verified clean builds on both iOS simulator and Mac. Decided against retrofitting the old iOS-only codebase (too many UIKit dependencies) in favor of a fresh build.

API v2 design. Audited every server action in the web app to classify business logic: ~40% thin Supabase wrappers, ~35% real business logic (stage machine, content creation orchestration, queue management), ~25% external service calls. Designed a REST API architecture where authexis.app/api/v2/ serves all clients. Business logic gets extracted from server actions into shared modules that both server actions and API routes call. Created 7 grindable implementation issues (GH-401 through GH-407) covering auth middleware, contents CRUD, content pipeline actions, research endpoints, deliverables, distribution, and settings.

Issue triage and decomposition. Triaged the full todo queue. Backlogged GH-330 (newsletter), GH-354 (email provider eval), GH-362 (Threads). Decomposed GH-357/356 into three small issues. Updated GH-359 with full onboarding scorecard spec. Updated GH-363 with “always deliver a briefing” rule. Redesigned GH-56 (browser extension) with two-action UX. Created GH-373 (merge scorecard into onboarding), GH-377 (signup audit).

Completed

  • GH-334 — Make briefing button available to non-admin users
  • GH-335 — Pipeline trigger for re-engagement
  • GH-336 — Run intake scans concurrently in daily pipeline
  • GH-337 — Surface no qualifying articles state on briefings page
  • GH-342 — Add granular PostHog event tracking throughout the app
  • GH-347 — Add move content back to previous stage
  • GH-348 — Fix bad interview script generation for newsletters
  • GH-352 — Separate categories and tags into labeled sections
  • GH-356 — Changelog generator from git history
  • GH-357 — In-app changelog toast
  • GH-358 — Re-engagement drip system
  • GH-359 — Onboarding scorecard admin dashboard and daily email
  • GH-361 — Add forwarding for support/privacy/hello emails
  • GH-363 — Always deliver morning briefing with zero onboarding
  • GH-364 — Outline caps
  • GH-368 — Citations phase 1: source enrichment
  • GH-369 — Citations phase 2: citation-aware generation
  • GH-370 — Citations phase 3: bibliography output
  • GH-371 — Citations phase 4: deliverable attribution
  • GH-375 — Include changelog in morning briefing
  • GH-379 — Design and document full REST API (design complete, implementation in GH-401–407)
  • GH-382 — Set trial_ends_at on workspace creation
  • GH-383 — Trial status banner with upgrade CTA
  • GH-373 — Merge onboarding scorecard into user-facing workflow
  • GH-384 — Trial enforcement (closed as not-planned, nag only for now)
  • GH-385 — Align pricing across all pages (Individual $99, Team $249)
  • GH-386 — Handle billing success/canceled states after Stripe checkout
  • GH-387 — Standalone pricing page
  • GH-388 — Unify plan name mapping

Carry-over

  • GH-401 — API infra: auth middleware + rate limiting. Ready to grind. Foundation for all other API issues.
  • GH-402–407 — API v2 endpoint groups. Need augmenting with exact file paths and response shapes before they’re fully grindable.
  • GH-56 — Browser extension v2 (save + react UX). Issue body is well-specified. Paul mentioned a clarified spec from the other Claude tab — need to locate it before building.
  • STRIPE_PRICE_INDIVIDUAL and STRIPE_PRICE_TEAM env vars need to be created in Stripe and set in Vercel for the new $99/$249 pricing to work in checkout.
  • Apple app ./apple/ — Xcode project shell is set up and building clean. No app code yet — blocked on API endpoints.
  • iOS directory rename (Authexis-iosAuthexis) sitting uncommitted in working tree.

Risks

  • The pricing change (GH-385) updated Stripe env var names. If new Stripe products aren’t created and env vars aren’t set before deploy, checkout will break. Legacy price IDs are handled in the webhook for existing subscribers.
  • Multiple grinder agents committed directly to main instead of feature branches during some batches. No issues resulted, but branch mode wasn’t consistently enforced.

Flags and watch-outs

  • GH-401 was incorrectly auto-closed by ship_apply — reopened manually. Watch for this pattern when issue IDs appear in commit messages.
  • The old iOS project in ios/ is effectively dead. Don’t invest more time in it. All Apple work goes in apple/.
  • The re-engagement drip handler (GH-358) hasn’t been tested with real user data yet. Should trigger an admin test send before relying on the daily cron.
  • The citations system (GH-368–371) was built and shipped in one session without end-to-end testing on real content. Monitor first few generations for citation validation accuracy.
  • GH-302/303 (LinkedIn/Threads analytics) are blocked on API credentials.

Next session

  • Create Stripe products for Individual ($99) and Team ($249) tiers. Set STRIPE_PRICE_INDIVIDUAL and STRIPE_PRICE_TEAM in Vercel env vars. Test checkout flow end-to-end.
  • Locate browser extension spec from the other Claude tab and build GH-56 (save + react popup, new POST /api/v1/articles endpoint, context menu).
  • Augment GH-401–407 with exact file paths and response shapes so they’re fully grindable.
  • Start grinding GH-401 (API auth middleware) — this unblocks all other API issues and the Apple app.
  • Test citations pipeline on a real content piece — generate, check inline citations, verify bibliography output.
  • Test re-engagement drip by triggering an admin send for a test workspace.

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.

Universities missed the window to own AI literacy

In 2023 the question of who would own AI literacy was wide open. Universities spent two years forming committees while everyone else claimed the territory. Then a federal agency published the guidance higher education should have written.

Dev reflection - February 22, 2026

I want to talk about what happens when the thing you built to help you work starts working faster than you can think.

Dev reflection - February 21, 2026

I want to talk about invisible problems. Not the kind you ignore — the kind you literally cannot see until you change how you're looking.