What I owned
Designing and building a pnpm + Turborepo monorepo: Next.js 15 dashboard for post queue and voice builder, Hono on Node 20 backend with cron worker and Telegram webhook, Plasmo MV3 browser extension for grabbing inspiration posts on linkedin.com, and shared packages for LLM (Gemini + Claude swappable wrapper with prompt-cache support), LinkedIn OAuth + UGC Posts + image upload, Tavily research + LLM fact extraction, Pollinations.ai image generation with satori SVG fallback, Telegram bot with inline-keyboard approval, and the voice DNA extractor + post drafter.
Constraints
- Voice DNA must blend up to 5 inspiration profiles plus the user's own voice
- Research must produce grounded claims with sources, not generic LLM output
- Free-tier stack: Gemini Flash, Pollinations.ai, Postgres on user's VPS
- Approval path must work from a phone in under 10 seconds
Process
- 01
Voice DNA extraction
User-supplied past posts and 1-5 inspiration profiles run through a style-fingerprint extractor that becomes in-context examples at draft time.
- 02
Daily research
Tavily search → LLM extracts grounded factual claims with source URLs, fed into the draft prompt.
- 03
Image generation
User uploads image, AI generates via Pollinations, or satori SVG template fallback.
- 04
Approval
Cron worker drafts daily, sends Telegram with inline approve/edit/skip buttons. Web dashboard mirror for full editing.
- 05
Publish
LinkedIn UGC Posts API publishes with image upload. Failure modes recorded for retry.
Approach
The architecture choice that mattered most was making the LLM swappable from day one. Gemini Flash for drafting (free), Claude for hard cases (paid), via a single wrapper with prompt-cache support. This made cost control a configuration concern rather than a rewrite. The browser extension was the second non-obvious call — letting users grab inspiration posts directly from LinkedIn beats asking them to copy-paste.
Deliverables
- Next.js 15 dashboard with post queue and voice builder
- Hono backend with cron, OAuth, and Telegram webhook
- Plasmo MV3 browser extension for LinkedIn
- Voice DNA extractor and post drafter
- Tavily-grounded research pipeline
- Pollinations.ai + satori SVG image generation
- Telegram bot with inline-keyboard approval
- PGlite for local dev, real Postgres for production
Outcomes
- Free-tier stack achieves $0/month operating cost for solo users
- Voice DNA produces drafts that pass blind reviewer tests against the user's actual writing
- Telegram approval path takes under 10 seconds end to end
- Three operating modes (auto/semi-auto/manual) cover the spectrum from full automation to assisted writing