Skip to main content
Poindexter is built as a kernel — the shared substrate of plugin registry, DI container, pipeline engine, and settings — that business modules (content, finance) rent, composing capability plugins (LLM, image, video, audio, TTS) on top. Each component runs as an independent process or container and they communicate exclusively through shared PostgreSQL tables — no direct imports across those boundaries. The result is a system you can monitor, restart, and reason about one piece at a time. For the full mastery-grade walk-through (components, data flow, technology choices, principles, and the request lifecycle), start with the architecture overview. The cards below jump straight to the topic you need.

Core concepts

System overview

The full architecture end-to-end. Components, data flow, technology choices, and the principles each subsystem upholds.

Multi-agent pipeline

Retired redirect — how the writer / critic / gate-reviewer model evolved into the qa.* rail atoms on the LangGraph canonical_blog graph_def.

Anti-hallucination layers

Three independent layers — prompts, LLM QA, programmatic validator — and the six OSS rails (DeepEval ×3, guardrails ×2, Ragas).

Plugin architecture

Twenty plugin entry-point groups (Tap, Probe, Job, Stage, LLMProvider, PublishAdapter, Module, and more) and how they compose.

Retrieval and routing

RAG retrieval stack

LlamaIndex BaseRetriever over the existing pgvector embeddings table. Hybrid (BM25 + vector + RRF) plus cross-encoder rerank.

Niches and RAG modes

Per-niche writer modes — TOPIC_ONLY, CITATION_BUDGET, STORY_SPINE, TWO_PASS — and when each is appropriate.

Model selection

Per-step *_model pins. Operators tune the model for each pipeline step instead of hardcoding names in code.

Prompt management

UnifiedPromptManager — Langfuse-first, then YAML defaults. Every production prompt lives in the DB and traces through Langfuse.

Data and infrastructure

Database schema

Every table, the modular database service layer, and the migration system.

Module v1

Business modules (ContentModule, FinanceModule overlay) — the orthogonal axis to capability plugins.

Static export pipeline

Push-only JSON export to any S3-compatible storage (R2, S3, B2, MinIO).

Worker container filesystem

Layout inside the worker container — bind mounts, generated assets, secret hygiene.

Specialized topics

URL scraper SSRF guard

SSRF protection on outbound HTTP — what’s blocked and why.

Poindexter as engine

The “engine plus employees” mental model and where it diverges from a classic agent framework.