Five systems, one idea.
Each of these automates a process end to end. Each one keeps a person in the loop, but only on the decision that matters. Open any project to see how it works and where I stay involved.
Research-to-video production pipeline
One topic form in, one rendered and quality-checked video out. Seven stages, five tools, and a quality gate at every major step.
The problem
Making a researched, scripted, voiced and edited video is a long chain of manual steps. Each one waits on a person. Quality drifts from video to video. The bottleneck is never the work itself — it's the waiting between steps.
How it works
- A topic is submitted through a form and a tracked job is created.
- The input is cleaned, and the niche is decided automatically.
- Sources are searched and quality-checked, and claims are verified against them.
- A script is written from the verified claims, then a separate critic stage approves it, sends it back, or patches specific lines.
- Voiceover, captions, music and sound effects are produced and mixed.
- An AI model plans the shots, matching stock footage is collected, and the video is rendered.
- A final automated check decides whether the video passes.
Built with
- n8n
- Supabase
- Google Gemini
- NVIDIA Nemotron
- Local TTS
Design decisions
- A quality gate after each major stage
- Retries with adjusted input before anything is escalated
- Every run logged, so each video can be traced
- A kill switch that stops the pipeline cleanly
Where a person steps in
Only jobs that fail a quality gate are flagged. Everything that passes needs no human touch.
Local lead generation and outreach engine
Finds, studies, and scores local businesses, then drafts the first email. Runs at zero running cost, with a person approving every send.
The problem
Finding good prospects means searching, opening websites, judging each business, finding a contact, and writing a tailored email. It eats hours before a single conversation starts. Most of it is the same thing over and over.
How it works
- Search queries are built from one configuration step.
- Junk and directory pages are filtered out, and duplicates are removed, including leads found in earlier runs.
- Each homepage is fetched, and pages with too little content are dropped.
- A local AI model analyses the business, finds weaknesses, and writes a short opportunity summary.
- The lead is scored, and only qualified leads continue.
- A contact is found and a personalised draft is written.
- Everything is saved as one organised row per lead.
Built with
- n8n
- Ollama (local models)
- Google Sheets
- FastAPI
Guardrails
- Caps on queries and leads per run
- Protection against instructions hidden in scraped pages
- Automatic retries and rate-limit waits
- Nothing is ever sent without a person's approval
Where a person steps in
Emails are drafts only. A person reviews each one before anything is sent.
Auto-publishing case study and blog engine
The system that keeps this portfolio growing without manual updates. Slack submits, Supabase stores, Notion mirrors, and a person stays on the decision that matters.
The idea
A portfolio that only changes when its owner remembers to update it goes stale. This engine removes that dependency. You submit an idea, the system drafts it, and you decide whether it goes live — or the system publishes it for you after 48 hours if you do nothing.
How it works
- You send a short submission from Slack — title, type, and a few accomplishment bullets.
- A drafting stage writes the post in the right shape: case study, lesson learned, or blog post.
- A critic stage scores the draft, verifies the claims against what you submitted, and strips anything confidential.
- The draft lands in Supabase with a publish time set 48 hours out.
- A Slack card arrives with four buttons: Approve, Reject, Hold 7 days, Open in Notion.
- Approve publishes now. Reject buries it. Do nothing, and it publishes itself at 48 hours.
- The Notion portfolio mirrors every published post automatically, on its own clock.
Built with
- n8n
- Supabase
- Notion API
- Slack Bolt
- Ollama
Design decisions
- Supabase is the single source of truth. Notion is a mirror, not a co-author.
- The 48-hour timer lives in the database, so auto-publish works even when n8n is down.
- One writer per field, so there are no sync loops to break.
- A confidence score, not pass/fail, so a broken critic is visible instead of silent.
Where a person steps in
Every draft gets a Slack approval card. You can publish, reject, or hold — or let the 48-hour timer do it for you.
Gameflip Market Analyzer & Price Engine
A high-frequency market intelligence engine that scrapes thousands of listings, evaluates seller trust, and calculates dynamic pricing with anti-troll safeguards.
The problem
Monitoring a marketplace for pricing anomalies and genuine seller trust is impossible to do manually. Bait prices, troll listings, and untrusted sellers distort the market, making it hard to price items accurately or safely.
How it works
- Fetch Listings: Rotates through pet catalog searches, fetching up to 400 listings per run.
- Normalize: Uses regex to extract canonical item names, drops junk, and handles price conversions (cents to dollars).
- Seller Profiling: Fetches Gameflip profile data (feedback, account age, ID verification) with a 6-hour cache and TOTP authentication.
- Market Analysis: Aggregates listings by item and tier (Regular, FR, NFR, MFR), filtering out junk and troll titles.
- Trust Gate: Rejects sellers with low feedback percentages, too few reviews, or new accounts.
- Statistical Trimming: Uses median-based filtering to remove low-bait and high-troll outliers.
- Price Calculation: Applies dynamic markups (10% or 13%) based on market value and validates against historical anchors.
Built with
- n8n
- PostgreSQL
- JavaScript
- Gameflip API
- TOTP Auth
Design decisions
- Cached seller profiles to avoid API rate limits.
- One price per seller to prevent market skewing.
- Strict tier inversion checks (a higher tier can never be cheaper than a lower tier).
- Automated alert logging for suspicious price jumps.
Where a person steps in
Alerts for suspicious price jumps are logged for manual review. The system handles the math and data fetching, but a person decides if a market anomaly is real.
Multi-Platform Content Auto-Poster
An end-to-end content pipeline that transforms raw video into fully formatted, SEO-optimized posts across YouTube, Facebook, and Blogger.
The problem
Creating content for multiple platforms means writing captions, tags, and blog posts for each one manually. It's repetitive, time-consuming, and leads to inconsistency across channels.
How it works
- Discovery: Watches Google Drive folders for new video files.
- Transcription: Extracts audio with FFmpeg and transcribes locally using Whisper.
- Caption Generation: Uses Groq (GPT-OSS) to generate platform-specific captions and hashtags (YouTube, TikTok, IG, FB).
- YouTube Scheduling: Uploads video, sets thumbnail, and schedules natively.
- Facebook Scheduling: Uploads video and schedules natively to the correct Page.
- Blog Generation: NVIDIA Nemotron writes a full blog post from the transcript.
- Image Generation: Cloudflare Flux creates cinematic images for the blog.
- SEO Gate: Validates word count, headings, keywords, and banned words.
- Blogger Scheduling: Creates a draft and schedules it, embedding the YouTube video.
Built with
- n8n
- Groq
- NVIDIA Nemotron
- Cloudflare AI
- Blogger API
- YouTube API
- Facebook Graph API
- Whisper
- FFmpeg
Design decisions
- Human-in-the-loop via Google Sheets (statuses are tracked, errors logged).
- Strict SEO gate prevents AI fluff from being published.
- Dynamic tags and hashtags generated from transcript keywords.
- Native scheduling APIs used for each platform to ensure maximum reach.
Where a person steps in
Every video, caption, and blog post is logged in a Google Sheet. A person can review the queue and intervene before the automated scheduling takes over.
Source code and workflow files are confidential. These pages describe the design and results only.
Want one of these built for you?
If you have a process that's eating hours of your week, I'd like to hear about it. Most automation projects start with a conversation about what actually happens day to day.