A scheduled draft-and-audit system that converts the week's tax-news signal into fact-checked LinkedIn post drafts written in a consistent voice — architecture, engines, and the quality controls that govern it.
Overview
This is a scheduled, multi-stage system that turns tax-news signal into fact-checked LinkedIn post drafts written in a consistent personal voice. It is a drafting engine, not an autopilot: the pipeline researches, selects, writes, and audits, but the finished drafts are delivered to an email inbox for review, and each one is edited and posted manually. No content reaches LinkedIn without a human decision.
The design goal is leverage without loss of control. The pipeline removes the repetitive work — scanning sources, spotting what is worth saying, checking facts, and producing a clean first draft — while leaving editorial judgement and publishing with a person. Each stage writes its output to a file before the next stage reads it, so the process is transparent and any single stage can be inspected or re-run in isolation without repeating the whole run.
Execution environment
The pipeline runs locally on a PC on a fixed weekly schedule, triggered by the operating system's scheduler. Every AI call is routed through the local Claude CLI against a personal Claude subscription — there are no API keys, no external AI platforms, and no content sent to third-party drafting services. Two models are used deliberately, matched to the job: Claude Opus 4.8 for the reasoning-heavy work (topic strategy, drafting, fact-checking, and the audit passes) and Claude Haiku for high-volume, low-complexity extraction. Ingestion, orchestration, and delivery are handled by lightweight local components rather than any cloud service.
Weekly schedule
| Trigger | Mode | Focus | Yield |
|---|---|---|---|
| Tue 05:00 | EN | EU / international strategy | 3 drafts |
| Thu 05:00 | LT | Lithuanian market | 3 drafts |
| Fri 05:00 | LT | Short monthly digest | 1 draft |
| Sun 05:00 | Learn | Voice-model refresh | no posts |
The three drafting modes are separated by day and by audience, so the English strategic lane and the Lithuanian local lane never compete for the same slot. The Sunday run produces no posts; it exists only to keep the system's model of the writing voice current.
The pipeline, stage by stage
- Collect sources. Pulls recent posts from a curated set of LinkedIn profiles and companies, plus free news and the Lithuanian tax authority (VMI) feed, into a single normalised pool.
- Extract topics. A fast model structures the raw material into discrete, comparable topic records.
- Gap analysis. The reasoning model ranks the strongest angles for the audience and positioning, then hands them to the dedup auditor before anything proceeds.
- Ground & verify. Each candidate's claims are checked against real primary sources using live web search and fetch; unverifiable material is stripped out here.
- Draft. Each surviving opportunity is written as a full post, constrained by a persona guide and recent real-post samples so the register matches how the author actually writes.
- Verify & repair loop. Every draft is scored against a rubric; fixable problems are rewritten in place, and topics that cannot be made to pass are swapped out.
- Deliver to inbox. The cleared drafts, together with their audit report, are emailed for final review before posting manually.
Quality is enforced by three automated auditors
The system is built not to trust its own output. Three independent checks — combining deterministic logic with model judgement — gate every run. Each can reject work and force a correction; none can be skipped.
- Dedup auditor. Prevents repetition. It blocks any proposed topic that overlaps in substance with a post that was actually published, matched by a token-containment fingerprint over the real LinkedIn history — not over the pipeline's own past suggestions. That distinction matters: a topic the pipeline once drafted but never posted stays available, while a story genuinely covered is suppressed. Rejected candidates trigger a refill, so a full set of genuinely new angles is still produced.
- Source auditor. Enforces factual grounding. Every candidate's key claims are checked against primary sources through live web search and fetch. Claims that cannot be substantiated are removed, and the model is explicitly forbidden from inventing mechanisms or figures. A draft carrying unverifiable content does not advance to delivery — the pipeline would rather produce fewer posts than a confident but wrong one.
- Draft auditor. Enforces quality and voice. Each finished draft is scored against a rubric covering factual support, structure, and fidelity to the writing style. Problems that can be fixed are rewritten automatically in a short repair loop; topics that repeatedly fail are swapped for alternatives. Only drafts that clear the bar are delivered, and a run that cannot fill its quota delivers fewer posts rather than lowering the threshold.
Engines & components
- AI models
- Claude Opus 4.8 (reasoning, drafting, auditing) and Claude Haiku (extraction), via the local Claude CLI.
- Ingestion
- Apify LinkedIn scraper with a logged-in-browser fallback, Google News RSS, and the VMI tax-authority feed.
- Orchestration
- OS scheduler; authenticated Playwright session; file-based state passed between stages.
- Delivery
- Rendered drafts plus the audit report, emailed to an inbox for manual review.
Voice model
What keeps the drafts sounding human, rather than like generic AI output, is a separate weekly learning run. It reads the author's own recently published posts, measures which ones actually engaged, and updates the persona and style guide that constrain the drafting stage — weighting the guidance toward the formats and angles that performed. It also carries an explicit rule against the generic "AI-influencer" post template. Because drafting reads this guide on every run, improvements to the voice model take effect automatically the following week.