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

Work log — 2026-03-26

What shipped today

Eidos model repo scaffold

The biggest thing today was building the eidos starter template from scratch. The pwelty/eidos repo had been pure spec documents — CLAUDE.md, PRODUCT.md, a migration file, and some dotfiles — but no actual runnable code. The goal was to turn it into a real GitHub template that new projects can fork and have a working scaffold on day one.

Thirty-eight files landed in one commit, covering the full three-tier stack: a Next.js 16 web app (with Supabase auth, three correctly-typed Supabase client variants, proxy.ts replacing middleware.ts, a working app layout with parallel data fetching, admin guard, and auth callback route), a Python FastAPI engine (with the claim-then-process poller pattern, asyncpg connection pool with statement_cache_size=0 for Supabase’s transaction mode pooler, Dockerfile using shell-form CMD for Railway $PORT expansion), and Supabase migration scaffolding. All the gotchas from the authexis and eclectis pilot projects are baked in as comments — the .single() ordering requirement, the co-member RLS visibility policy, the asyncpg pooler constraints. The repo is marked as a GitHub template so the “Use this template” button works.

Reddit API client and health check

A Reddit API client landed (paulos/commands/reddit.py) along with a reddit-search marketing command and a Reddit credential check added to the health command. Reddit requires users to register a “script” app at reddit.com/prefs/apps to get a client ID and secret — that credential registration is a manual step, but once it’s done the client handles OAuth token exchange automatically.

Status report polish

The status report email got a project logo in the header, and the HTML template was cleaned up (real apostrophe instead of HTML entity). Small things, but they matter for the professionalism of the daily briefing.

Reflect skill: business/AI insight only

The /reflect skill was updated to go further than “lead with org insight first.” The new guidance explicitly says to read the technical work as raw material — source material for extracting insight — and then leave it behind. The listener should never know whether the day involved code, writing, or spreadsheets. There’s particular weight on AI implications: what does the day’s work suggest about how AI changes decisions, power, skill, organizational structure, or the value of human judgment?

This is a meaningful shift from the previous version, which still let technical details appear as evidence. The new version uses them as a thinking exercise and then discards them entirely.

Completed

  • #586 — Reddit API client and reddit-search marketing command
  • #606 — Project logo in status report email header
  • #634 — Integrate ROADMAP.md into skills
  • #633 — Add ROADMAP.md with paulos project roadmap
  • #630 / #631 — Integrate RISKS.md into skill workflows
  • #636 — Reddit credential check in health command
  • #132 — Add PIPELINE.md operational doc

Release progress

  • March 2026: 24/24 closed — complete
  • April 2026: 2/2 closed — complete

Carry-over

  • Reddit credentials: Paul needs to register a Reddit “script” app at reddit.com/prefs/apps and add REDDIT_CLIENT_ID / REDDIT_CLIENT_SECRET / REDDIT_USERNAME / REDDIT_PASSWORD to the env file before reddit-search will work.
  • Eidos: PRODUCT.md and entity/user flow sections are still placeholder text — each new project fills these in.

Risks

None new today.

Flags and watch-outs

  • The eidos scaffold uses Next.js 16.2.1. The --turbopack dev flag was removed since turbopack is now the default — projects inheriting the template should not add it back.
  • The validator (code-reviewer agent) incorrectly flagged new URL(request.url).searchParams in app/auth/callback/route.ts as needing await. This is a false positive — it’s the synchronous Web API URLSearchParams, not the async Next.js page prop. The pattern is correct as written.

Next session

  • Run /reflect and verify the new skill guidance produces scripts that never describe what was built — just the insight it implies.
  • Check whether REDDIT_CLIENT_ID etc. are populated (Paul was going to register the app) and test paulos marketing reddit-search.
  • Consider whether eidos needs a create-eidos-app CLI command or if “Use this template” on GitHub is enough.

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.

Designed to learn, built to ignore

The most dangerous organizational failures don't throw errors. They look fine, return results, and quietly stay frozen at the moment of their creation.

The variable that was never wired in

The gap between having a solution and using a solution is one of the most persistent failure modes in organizations. You see the escaped variable. You see the risk register. You assume the work is done.

Your empty queue isn't a problem

Dropping a column from a production database is the organizational equivalent of admitting you were wrong. Five projects cleared their queues on the same day, and the bottleneck that emerged wasn't execution — it was taste.