Work log: paulos social pipeline
What shipped today
The broken Zapier pipeline that turned blog posts into social media blurbs is now a proper CLI command. paulos social handles the full lifecycle: parse the RSS feed, generate platform-tuned blurbs using the LLM with Paul’s voice guidelines, and push them to Authexis for scheduling. Each step is independently runnable for debugging, or chained with paulos social run for automation.
The interesting engineering problem was character limits. Bluesky (300 chars) and Mastodon (500 chars) have hard ceilings, and those limits apply to the assembled post — content plus URL plus hashtags. LLMs fundamentally cannot count characters, so prompting alone produced ~50% over-limit posts. The fix: generate first, then programmatically measure and re-prompt with an explicit “shorten to N characters” instruction. Nuclear fallback truncates at the last sentence boundary. After that, every post came in under limit.
The blurb generation also surfaced a useful pattern around Authexis’s API design. The v2 social-posts endpoint was concatenating content, source_url, and hashtags into a single content field server-side, which made character budgeting from the caller’s side fragile and error-prone. Filed authexis#748 and it was resolved same-session — the API now stores them as separate fields and lets platform adapters handle assembly.
Completed
paulos socialcommand group (fetch, generate, push, run –dry-run)- authexis#748 — social-posts API field separation
Release progress
- March 2026: 10/12 closed
Carry-over
- Social blurbs generated and pushed for “Your biggest problems are the ones running fine” — 4 other unprocessed RSS entries remain
paulos social runnot yet tested end-to-end (individual steps verified)- Bluesky character limit enforcement could still occasionally miss by a few chars on the shorten retry — worth monitoring
Risks
- Authexis platform adapters need to correctly assemble content + URL + hashtags per platform when publishing. If the adapter logic doesn’t match what we assume (content + \n\n + url + \n\n + hashtags), posts could still exceed limits or look wrong.
Flags and watch-outs
- The
AUTHEXIS_SOCIAL_API_KEYis in the local.env— make sure it stays out of git - VOICE.md dependency: blurb generation reads
~/Projects/polymathic-h/VOICE.mdat runtime. If that file moves, generation falls back to a minimal prompt.
Next session
- Run
paulos social runend-to-end for remaining 4 unprocessed blog posts - Verify posts appear correctly in Authexis queue with proper platform assignments
- Test the full pipeline on the server (ssh deploy is done, but need to confirm .env has the key there too)
- Consider adding
paulos socialto a cron or scheduled trigger for automation
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.
Your process was built for a different speed
When work changes velocity, governance systems don't just fall behind. They become theater. And theater is worse than nothing—it gives you the feeling of control without any of the substance.
The difference between shipping and finishing
Shipping is mechanical. Finishing is a judgment call. And most organizations have quietly made it impossible to tell the difference.
Nothing is finished until you say it is
Continuous delivery removed the endings from work. That felt like progress. But without formal completion, you lose the ability to say what you actually accomplished — and more importantly, what you're done thinking about.